@SdkInternalApi
    final PutRemediationConfigurationsResult executePutRemediationConfigurations(PutRemediationConfigurationsRequest putRemediationConfigurationsRequest) {

        ExecutionContext executionContext = createExecutionContext(putRemediationConfigurationsRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<PutRemediationConfigurationsRequest> request = null;
        Response<PutRemediationConfigurationsResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new PutRemediationConfigurationsRequestProtocolMarshaller(protocolFactory).marshall(super
                        .beforeMarshalling(putRemediationConfigurationsRequest));
                // Binds the request metrics to the current request.
                request.setAWSRequestMetrics(awsRequestMetrics);
                request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
                request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
                request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
                request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Config Service");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "PutRemediationConfigurations");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

            } finally {
                awsRequestMetrics.endEvent(Field.RequestMarshallTime);
            }

            HttpResponseHandler<AmazonWebServiceResponse<PutRemediationConfigurationsResult>> responseHandler = protocolFactory.createResponseHandler(
                    new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
                    new PutRemediationConfigurationsResultJsonUnmarshaller());
            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Adds or updates the remediation configuration with a specific Config rule with the selected target or action. The
API creates the <code>RemediationConfiguration</code> object for the Config rule. The Config rule must already
exist for you to add a remediation configuration. The target (SSM document) must exist and have permissions to
use the target.
</p>
<note>
<p>
<b>Be aware of backward incompatible changes</b>
</p>
<p>
If you make backward incompatible changes to the SSM document, you must call this again to ensure the
remediations can run.
</p>
<p>
This API does not support adding remediation configurations for service-linked Config Rules such as Organization
Config rules, the rules deployed by conformance packs, and rules deployed by Amazon Web Services Security Hub.
</p>
</note> <note>
<p>
<b>Required fields</b>
</p>
<p>
For manual remediation configuration, you need to provide a value for <code>automationAssumeRole</code> or use a
value in the <code>assumeRole</code>field to remediate your resources. The SSM automation document can use either
as long as it maps to a valid parameter.
</p>
<p>
However, for automatic remediation configuration, the only valid <code>assumeRole</code> field value is
<code>AutomationAssumeRole</code> and you need to provide a value for <code>AutomationAssumeRole</code> to
remediate your resources.
</p>
</note> <note>
<p>
<b>Auto remediation can be initiated even for compliant resources</b>
</p>
<p>
If you enable auto remediation for a specific Config rule using the <a
href="https://docs.aws.amazon.com/config/latest/APIReference/emAPI_PutRemediationConfigurations.html"
>PutRemediationConfigurations</a> API or the Config console, it initiates the remediation process for all
non-compliant resources for that specific rule. The auto remediation process relies on the compliance data
snapshot which is captured on a periodic basis. Any non-compliant resource that is updated between the snapshot
schedule will continue to be remediated based on the last known compliance data snapshot.
</p>
<p>
This means that in some cases auto remediation can be initiated even for compliant resources, since the bootstrap
processor uses a database that can have stale evaluation results based on the last known compliance data
snapshot.
</p>
</note>

@param putRemediationConfigurationsRequest
@return Result of the PutRemediationConfigurations operation returned by the service.
@throws InsufficientPermissionsException
        Indicates one of the following errors:</p>
        <ul>
        <li>
        <p>
        For PutConfigRule, the rule cannot be created because the IAM role assigned to Config lacks permissions
        to perform the config:Put* action.
        </p>
        </li>
        <li>
        <p>
        For PutConfigRule, the Lambda function cannot be invoked. Check the function ARN, and check the
        function's permissions.
        </p>
        </li>
        <li>
        <p>
        For PutOrganizationConfigRule, organization Config rule cannot be created because you do not have
        permissions to call IAM <code>GetRole</code> action or create a service-linked role.
        </p>
        </li>
        <li>
        <p>
        For PutConformancePack and PutOrganizationConformancePack, a conformance pack cannot be created because
        you do not have the following permissions:
        </p>
        <ul>
        <li>
        <p>
        You do not have permission to call IAM <code>GetRole</code> action or create a service-linked role.
        </p>
        </li>
        <li>
        <p>
        You do not have permission to read Amazon S3 bucket or call SSM:GetDocument.
        </p>
        </li>
        </ul>
        </li>
@throws InvalidParameterValueException
        One or more of the specified parameters are not valid. Verify that your parameters are valid and try
        again.
@sample AmazonConfig.PutRemediationConfigurations
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/PutRemediationConfigurations"
     target="_top">AWS API Documentation</a>
aws-java-sdk-config/src/main/java/com/amazonaws/services/config/AmazonConfigClient.java