-
Notifications
You must be signed in to change notification settings - Fork 597
/
api_op_PutOrganizationConfigRule.go
163 lines (145 loc) · 6.26 KB
/
api_op_PutOrganizationConfigRule.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
// Code generated by smithy-go-codegen DO NOT EDIT.
package configservice
import (
"context"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/service/configservice/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Adds or updates organization Config rule for your entire organization evaluating
// whether your Amazon Web Services resources comply with your desired
// configurations. Only a master account and a delegated administrator can create
// or update an organization Config rule. When calling this API with a delegated
// administrator, you must ensure Organizations ListDelegatedAdministrator
// permissions are added. This API enables organization service access through the
// EnableAWSServiceAccess action and creates a service linked role
// AWSServiceRoleForConfigMultiAccountSetup in the master or delegated
// administrator account of your organization. The service linked role is created
// only when the role does not exist in the caller account. Config verifies the
// existence of role with GetRole action. To use this API with delegated
// administrator, register a delegated administrator by calling Amazon Web Services
// Organization register-delegated-administrator for
// config-multiaccountsetup.amazonaws.com. You can use this action to create both
// Config custom rules and Config managed rules. If you are adding a new Config
// custom rule, you must first create Lambda function in the master account or a
// delegated administrator that the rule invokes to evaluate your resources. You
// also need to create an IAM role in the managed-account that can be assumed by
// the Lambda function. When you use the PutOrganizationConfigRule action to add
// the rule to Config, you must specify the Amazon Resource Name (ARN) that Lambda
// assigns to the function. If you are adding an Config managed rule, specify the
// rule's identifier for the RuleIdentifier key. The maximum number of organization
// Config rules that Config supports is 150 and 3 delegated administrator per
// organization. Prerequisite: Ensure you call EnableAllFeatures API to enable all
// features in an organization. Specify either OrganizationCustomRuleMetadata or
// OrganizationManagedRuleMetadata.
func (c *Client) PutOrganizationConfigRule(ctx context.Context, params *PutOrganizationConfigRuleInput, optFns ...func(*Options)) (*PutOrganizationConfigRuleOutput, error) {
if params == nil {
params = &PutOrganizationConfigRuleInput{}
}
result, metadata, err := c.invokeOperation(ctx, "PutOrganizationConfigRule", params, optFns, c.addOperationPutOrganizationConfigRuleMiddlewares)
if err != nil {
return nil, err
}
out := result.(*PutOrganizationConfigRuleOutput)
out.ResultMetadata = metadata
return out, nil
}
type PutOrganizationConfigRuleInput struct {
// The name that you assign to an organization Config rule.
//
// This member is required.
OrganizationConfigRuleName *string
// A comma-separated list of accounts that you want to exclude from an organization
// Config rule.
ExcludedAccounts []string
// An object that specifies metadata for your organization's Config Custom Policy
// rule. The metadata includes the runtime system in use, which accounts have debug
// logging enabled, and other custom rule metadata, such as resource type, resource
// ID of Amazon Web Services resource, and organization trigger types that initiate
// Config to evaluate Amazon Web Services resources against a rule.
OrganizationCustomPolicyRuleMetadata *types.OrganizationCustomPolicyRuleMetadata
// An OrganizationCustomRuleMetadata object.
OrganizationCustomRuleMetadata *types.OrganizationCustomRuleMetadata
// An OrganizationManagedRuleMetadata object.
OrganizationManagedRuleMetadata *types.OrganizationManagedRuleMetadata
noSmithyDocumentSerde
}
type PutOrganizationConfigRuleOutput struct {
// The Amazon Resource Name (ARN) of an organization Config rule.
OrganizationConfigRuleArn *string
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationPutOrganizationConfigRuleMiddlewares(stack *middleware.Stack, options Options) (err error) {
err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutOrganizationConfigRule{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutOrganizationConfigRule{}, middleware.After)
if err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
return err
}
if err = addRetryMiddlewares(stack, options); err != nil {
return err
}
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
return err
}
if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addOpPutOrganizationConfigRuleValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutOrganizationConfigRule(options.Region), middleware.Before); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opPutOrganizationConfigRule(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
SigningName: "config",
OperationName: "PutOrganizationConfigRule",
}
}