putOrganizationConformancePack method
Deploys conformance packs across member accounts in an Amazon Web Services Organization. For information on how many organization conformance packs and how many Config rules you can have per account, see Service Limits in the Config Developer Guide.
Only a management account and a delegated administrator can call this API.
When calling this API with a delegated administrator, you must ensure
Organizations ListDelegatedAdministrator permissions are
added. An organization can have up to 3 delegated administrators.
This API uses the AWSServiceRoleForConfigConforms
service-linked role in each member account to create conformance pack
resources. This service-linked role includes the permissions to create
Config rules and remediation configurations, even if member account IAM
policies explicitly deny these actions.
This API enables organization service access for
config-multiaccountsetup.amazonaws.com through the
EnableAWSServiceAccess action and creates a service-linked
role AWSServiceRoleForConfigMultiAccountSetup in the
management or delegated administrator account of your organization. The
service-linked role is created only when the role does not exist in the
caller account. To use this API with delegated administrator, register a
delegated administrator by calling Amazon Web Services Organization
register-delegate-admin for
config-multiaccountsetup.amazonaws.com.
You must specify either the TemplateS3Uri or the
TemplateBody parameter, but not both. If you provide both
Config uses the TemplateS3Uri parameter and ignores the
TemplateBody parameter.
Config sets the state of a conformance pack to CREATE_IN_PROGRESS and UPDATE_IN_PROGRESS until the conformance pack is created or updated. You cannot update a conformance pack while it is in this state.
May throw InsufficientPermissionsException.
May throw MaxNumberOfOrganizationConformancePacksExceededException.
May throw NoAvailableOrganizationException.
May throw OrganizationAccessDeniedException.
May throw OrganizationAllFeaturesNotEnabledException.
May throw OrganizationConformancePackTemplateValidationException.
May throw ResourceInUseException.
May throw ValidationException.
Parameter organizationConformancePackName :
Name of the organization conformance pack you want to create.
Parameter conformancePackInputParameters :
A list of ConformancePackInputParameter objects.
Parameter deliveryS3Bucket :
The name of the Amazon S3 bucket where Config stores conformance pack
templates.
Parameter deliveryS3KeyPrefix :
The prefix for the Amazon S3 bucket.
Parameter excludedAccounts :
A list of Amazon Web Services accounts to be excluded from an organization
conformance pack while deploying a conformance pack.
Parameter templateBody :
A string that contains the full conformance pack template body. Structure
containing the template body with a minimum length of 1 byte and a maximum
length of 51,200 bytes.
Parameter templateS3Uri :
Location of file containing the template body. The uri must point to the
conformance pack template (max size: 300 KB).
Implementation
Future<PutOrganizationConformancePackResponse>
putOrganizationConformancePack({
required String organizationConformancePackName,
List<ConformancePackInputParameter>? conformancePackInputParameters,
String? deliveryS3Bucket,
String? deliveryS3KeyPrefix,
List<String>? excludedAccounts,
String? templateBody,
String? templateS3Uri,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'StarlingDoveService.PutOrganizationConformancePack'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'OrganizationConformancePackName': organizationConformancePackName,
if (conformancePackInputParameters != null)
'ConformancePackInputParameters': conformancePackInputParameters,
if (deliveryS3Bucket != null) 'DeliveryS3Bucket': deliveryS3Bucket,
if (deliveryS3KeyPrefix != null)
'DeliveryS3KeyPrefix': deliveryS3KeyPrefix,
if (excludedAccounts != null) 'ExcludedAccounts': excludedAccounts,
if (templateBody != null) 'TemplateBody': templateBody,
if (templateS3Uri != null) 'TemplateS3Uri': templateS3Uri,
},
);
return PutOrganizationConformancePackResponse.fromJson(jsonResponse.body);
}