All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.config.AmazonConfigClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS Config module holds the client classes that are used for communicating with AWS Config Service

There is a newer version: 1.11.9
Show newest version
/*
 * Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights
 * Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package com.amazonaws.services.config;

import org.w3c.dom.*;

import java.net.*;
import java.util.*;
import java.util.Map.Entry;

import org.apache.commons.logging.*;

import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.handlers.*;
import com.amazonaws.http.*;
import com.amazonaws.internal.*;
import com.amazonaws.metrics.*;
import com.amazonaws.regions.*;
import com.amazonaws.transform.*;
import com.amazonaws.util.*;
import com.amazonaws.protocol.json.*;
import com.amazonaws.util.AWSRequestMetrics.Field;
import com.amazonaws.annotation.ThreadSafe;

import com.amazonaws.services.config.model.*;
import com.amazonaws.services.config.model.transform.*;

/**
 * Client for accessing Config Service. All service calls made using this client
 * are blocking, and will not return until the service call completes.
 * 

* AWS Config *

* AWS Config provides a way to keep track of the configurations of all the AWS * resources associated with your AWS account. You can use AWS Config to get the * current and historical configurations of each AWS resource and also to get * information about the relationship between the resources. An AWS resource can * be an Amazon Compute Cloud (Amazon EC2) instance, an Elastic Block Store * (EBS) volume, an Elastic network Interface (ENI), or a security group. For a * complete list of resources currently supported by AWS Config, see Supported AWS Resources. *

*

* You can access and manage AWS Config through the AWS Management Console, the * AWS Command Line Interface (AWS CLI), the AWS Config API, or the AWS SDKs for * AWS Config *

*

* This reference guide contains documentation for the AWS Config API and the * AWS CLI commands that you can use to manage AWS Config. *

*

* The AWS Config API uses the Signature Version 4 protocol for signing * requests. For more information about how to sign a request with this * protocol, see Signature Version 4 Signing Process. *

*

* For detailed information about AWS Config features and their associated * actions or commands, as well as how to work with AWS Management Console, see * What Is AWS Config? in the AWS Config Developer Guide. *

*/ @ThreadSafe public class AmazonConfigClient extends AmazonWebServiceClient implements AmazonConfig { /** Provider for AWS credentials. */ private AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AmazonConfig.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "config"; /** * Client configuration factory providing ClientConfigurations tailored to * this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); private final SdkJsonProtocolFactory protocolFactory = new SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.1") .withSupportsCbor(false) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("ResourceInUseException") .withModeledClass( com.amazonaws.services.config.model.ResourceInUseException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "NoAvailableDeliveryChannelException") .withModeledClass( com.amazonaws.services.config.model.NoAvailableDeliveryChannelException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidResultTokenException") .withModeledClass( com.amazonaws.services.config.model.InvalidResultTokenException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidParameterValueException") .withModeledClass( com.amazonaws.services.config.model.InvalidParameterValueException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("InvalidLimitException") .withModeledClass( com.amazonaws.services.config.model.InvalidLimitException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidConfigurationRecorderNameException") .withModeledClass( com.amazonaws.services.config.model.InvalidConfigurationRecorderNameException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "MaxNumberOfConfigurationRecordersExceededException") .withModeledClass( com.amazonaws.services.config.model.MaxNumberOfConfigurationRecordersExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "LastDeliveryChannelDeleteFailedException") .withModeledClass( com.amazonaws.services.config.model.LastDeliveryChannelDeleteFailedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("ValidationException") .withModeledClass( com.amazonaws.services.config.model.ValidationException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("InvalidNextTokenException") .withModeledClass( com.amazonaws.services.config.model.InvalidNextTokenException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidS3KeyPrefixException") .withModeledClass( com.amazonaws.services.config.model.InvalidS3KeyPrefixException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "NoSuchConfigurationRecorderException") .withModeledClass( com.amazonaws.services.config.model.NoSuchConfigurationRecorderException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("InvalidTimeRangeException") .withModeledClass( com.amazonaws.services.config.model.InvalidTimeRangeException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidSNSTopicARNException") .withModeledClass( com.amazonaws.services.config.model.InvalidSNSTopicARNException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "NoAvailableConfigurationRecorderException") .withModeledClass( com.amazonaws.services.config.model.NoAvailableConfigurationRecorderException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidRecordingGroupException") .withModeledClass( com.amazonaws.services.config.model.InvalidRecordingGroupException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "NoSuchDeliveryChannelException") .withModeledClass( com.amazonaws.services.config.model.NoSuchDeliveryChannelException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "MaxNumberOfConfigRulesExceededException") .withModeledClass( com.amazonaws.services.config.model.MaxNumberOfConfigRulesExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("NoSuchConfigRuleException") .withModeledClass( com.amazonaws.services.config.model.NoSuchConfigRuleException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "MaxNumberOfDeliveryChannelsExceededException") .withModeledClass( com.amazonaws.services.config.model.MaxNumberOfDeliveryChannelsExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("InvalidRoleException") .withModeledClass( com.amazonaws.services.config.model.InvalidRoleException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InsufficientPermissionsException") .withModeledClass( com.amazonaws.services.config.model.InsufficientPermissionsException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "ResourceNotDiscoveredException") .withModeledClass( com.amazonaws.services.config.model.ResourceNotDiscoveredException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidDeliveryChannelNameException") .withModeledClass( com.amazonaws.services.config.model.InvalidDeliveryChannelNameException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InsufficientDeliveryPolicyException") .withModeledClass( com.amazonaws.services.config.model.InsufficientDeliveryPolicyException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "NoRunningConfigurationRecorderException") .withModeledClass( com.amazonaws.services.config.model.NoRunningConfigurationRecorderException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("NoSuchBucketException") .withModeledClass( com.amazonaws.services.config.model.NoSuchBucketException.class))); /** * Constructs a new client to invoke service methods on Config Service. A * credentials provider chain will be used that searches for credentials in * this order: *
    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 * metadata service
  • *
* *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ public AmazonConfigClient() { this(new DefaultAWSCredentialsProviderChain(), configFactory .getConfig()); } /** * Constructs a new client to invoke service methods on Config Service. A * credentials provider chain will be used that searches for credentials in * this order: *

    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 * metadata service
  • *
* *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param clientConfiguration * The client configuration options controlling how this client * connects to Config Service (ex: proxy settings, retry counts, * etc.). * * @see DefaultAWSCredentialsProviderChain */ public AmazonConfigClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on Config Service using * the specified AWS account credentials. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. */ public AmazonConfigClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on Config Service using * the specified AWS account credentials and client configuration options. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to Config Service (ex: proxy settings, retry counts, * etc.). */ public AmazonConfigClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider( awsCredentials); init(); } /** * Constructs a new client to invoke service methods on Config Service using * the specified AWS account credentials provider. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. */ public AmazonConfigClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on Config Service using * the specified AWS account credentials provider and client configuration * options. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to Config Service (ex: proxy settings, retry counts, * etc.). */ public AmazonConfigClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on Config Service using * the specified AWS account credentials provider, client configuration * options, and request metric collector. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to Config Service (ex: proxy settings, retry counts, * etc.). * @param requestMetricCollector * optional request metric collector */ public AmazonConfigClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly setEndpoint("config.us-east-1.amazonaws.com/"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s .addAll(chainFactory .newRequestHandlerChain("/com/amazonaws/services/config/request.handlers")); requestHandler2s .addAll(chainFactory .newRequestHandler2Chain("/com/amazonaws/services/config/request.handler2s")); } /** *

* Deletes the specified AWS Config rule and all of its evaluation results. *

*

* AWS Config sets the state of a rule to DELETING until the * deletion is complete. You cannot update a rule while it is in this state. * If you make a PutConfigRule or DeleteConfigRule * request for the rule, you will receive a * ResourceInUseException. *

*

* You can check the state of a rule by using the * DescribeConfigRules request. *

* * @param deleteConfigRuleRequest * @return Result of the DeleteConfigRule operation returned by the service. * @throws NoSuchConfigRuleException * One or more AWS Config rules in the request are invalid. Verify * that the rule names are correct and try again. * @throws ResourceInUseException * The rule is currently being deleted. Wait for a while and try * again. * @sample AmazonConfig.DeleteConfigRule */ @Override public DeleteConfigRuleResult deleteConfigRule( DeleteConfigRuleRequest deleteConfigRuleRequest) { ExecutionContext executionContext = createExecutionContext(deleteConfigRuleRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteConfigRuleRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(deleteConfigRuleRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DeleteConfigRuleResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes the specified delivery channel. *

*

* The delivery channel cannot be deleted if it is the only delivery channel * and the configuration recorder is still running. To delete the delivery * channel, stop the running configuration recorder using the * StopConfigurationRecorder action. *

* * @param deleteDeliveryChannelRequest * The input for the DeleteDeliveryChannel action. The action * accepts the following data in JSON format. * @return Result of the DeleteDeliveryChannel operation returned by the * service. * @throws NoSuchDeliveryChannelException * You have specified a delivery channel that does not exist. * @throws LastDeliveryChannelDeleteFailedException * You cannot delete the delivery channel you specified because the * configuration recorder is running. * @sample AmazonConfig.DeleteDeliveryChannel */ @Override public DeleteDeliveryChannelResult deleteDeliveryChannel( DeleteDeliveryChannelRequest deleteDeliveryChannelRequest) { ExecutionContext executionContext = createExecutionContext(deleteDeliveryChannelRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteDeliveryChannelRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(deleteDeliveryChannelRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DeleteDeliveryChannelResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Schedules delivery of a configuration snapshot to the Amazon S3 bucket in * the specified delivery channel. After the delivery has started, AWS * Config sends following notifications using an Amazon SNS topic that you * have specified. *

*
    *
  • Notification of starting the delivery.
  • *
  • Notification of delivery completed, if the delivery was successfully * completed.
  • *
  • Notification of delivery failure, if the delivery failed to complete. *
  • *
* * @param deliverConfigSnapshotRequest * The input for the DeliverConfigSnapshot action. * @return Result of the DeliverConfigSnapshot operation returned by the * service. * @throws NoSuchDeliveryChannelException * You have specified a delivery channel that does not exist. * @throws NoAvailableConfigurationRecorderException * There are no configuration recorders available to provide the * role needed to describe your resources. Create a configuration * recorder. * @throws NoRunningConfigurationRecorderException * There is no configuration recorder running. * @sample AmazonConfig.DeliverConfigSnapshot */ @Override public DeliverConfigSnapshotResult deliverConfigSnapshot( DeliverConfigSnapshotRequest deliverConfigSnapshotRequest) { ExecutionContext executionContext = createExecutionContext(deliverConfigSnapshotRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeliverConfigSnapshotRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(deliverConfigSnapshotRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DeliverConfigSnapshotResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Indicates whether the specified AWS Config rules are compliant. If a rule * is noncompliant, this action returns the number of AWS resources that do * not comply with the rule. *

*

* A rule is compliant if all of the evaluated resources comply with it, and * it is noncompliant if any of these resources do not comply. *

*

* If AWS Config has no current evaluation results for the rule, it returns * INSUFFICIENT_DATA. This result might indicate one of the * following conditions: *

    *
  • AWS Config has never invoked an evaluation for the rule. To check * whether it has, use the DescribeConfigRuleEvaluationStatus * action to get the LastSuccessfulInvocationTime and * LastFailedInvocationTime.
  • *
  • The rule's AWS Lambda function is failing to send evaluation results * to AWS Config. Verify that the role that you assigned to your * configuration recorder includes the config:PutEvaluations * permission. If the rule is a customer managed rule, verify that the AWS * Lambda execution role includes the config:PutEvaluations * permission.
  • *
  • The rule's AWS Lambda function has returned * NOT_APPLICABLE for all evaluation results. This can occur if * the resources were deleted or removed from the rule's scope.
  • *
*

* * @param describeComplianceByConfigRuleRequest * @return Result of the DescribeComplianceByConfigRule operation returned * by the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @throws NoSuchConfigRuleException * One or more AWS Config rules in the request are invalid. Verify * that the rule names are correct and try again. * @sample AmazonConfig.DescribeComplianceByConfigRule */ @Override public DescribeComplianceByConfigRuleResult describeComplianceByConfigRule( DescribeComplianceByConfigRuleRequest describeComplianceByConfigRuleRequest) { ExecutionContext executionContext = createExecutionContext(describeComplianceByConfigRuleRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeComplianceByConfigRuleRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(describeComplianceByConfigRuleRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeComplianceByConfigRuleResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeComplianceByConfigRuleResult describeComplianceByConfigRule() { return describeComplianceByConfigRule(new DescribeComplianceByConfigRuleRequest()); } /** *

* Indicates whether the specified AWS resources are compliant. If a * resource is noncompliant, this action returns the number of AWS Config * rules that the resource does not comply with. *

*

* A resource is compliant if it complies with all the AWS Config rules that * evaluate it. It is noncompliant if it does not comply with one or more of * these rules. *

*

* If AWS Config has no current evaluation results for the resource, it * returns INSUFFICIENT_DATA. This result might indicate one of * the following conditions about the rules that evaluate the resource: *

    *
  • AWS Config has never invoked an evaluation for the rule. To check * whether it has, use the DescribeConfigRuleEvaluationStatus * action to get the LastSuccessfulInvocationTime and * LastFailedInvocationTime.
  • *
  • The rule's AWS Lambda function is failing to send evaluation results * to AWS Config. Verify that the role that you assigned to your * configuration recorder includes the config:PutEvaluations * permission. If the rule is a customer managed rule, verify that the AWS * Lambda execution role includes the config:PutEvaluations * permission.
  • *
  • The rule's AWS Lambda function has returned * NOT_APPLICABLE for all evaluation results. This can occur if * the resources were deleted or removed from the rule's scope.
  • *
*

* * @param describeComplianceByResourceRequest * @return Result of the DescribeComplianceByResource operation returned by * the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @throws InvalidNextTokenException * The specified next token is invalid. Specify the * nextToken string that was returned in the previous * response to get the next page of results. * @sample AmazonConfig.DescribeComplianceByResource */ @Override public DescribeComplianceByResourceResult describeComplianceByResource( DescribeComplianceByResourceRequest describeComplianceByResourceRequest) { ExecutionContext executionContext = createExecutionContext(describeComplianceByResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeComplianceByResourceRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(describeComplianceByResourceRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeComplianceByResourceResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeComplianceByResourceResult describeComplianceByResource() { return describeComplianceByResource(new DescribeComplianceByResourceRequest()); } /** *

* Returns status information for each of your AWS managed Config rules. The * status includes information such as the last time AWS Config invoked the * rule, the last time AWS Config failed to invoke the rule, and the related * error for the last failure. *

* * @param describeConfigRuleEvaluationStatusRequest * @return Result of the DescribeConfigRuleEvaluationStatus operation * returned by the service. * @throws NoSuchConfigRuleException * One or more AWS Config rules in the request are invalid. Verify * that the rule names are correct and try again. * @sample AmazonConfig.DescribeConfigRuleEvaluationStatus */ @Override public DescribeConfigRuleEvaluationStatusResult describeConfigRuleEvaluationStatus( DescribeConfigRuleEvaluationStatusRequest describeConfigRuleEvaluationStatusRequest) { ExecutionContext executionContext = createExecutionContext(describeConfigRuleEvaluationStatusRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeConfigRuleEvaluationStatusRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(describeConfigRuleEvaluationStatusRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeConfigRuleEvaluationStatusResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeConfigRuleEvaluationStatusResult describeConfigRuleEvaluationStatus() { return describeConfigRuleEvaluationStatus(new DescribeConfigRuleEvaluationStatusRequest()); } /** *

* Returns details about your AWS Config rules. *

* * @param describeConfigRulesRequest * @return Result of the DescribeConfigRules operation returned by the * service. * @throws NoSuchConfigRuleException * One or more AWS Config rules in the request are invalid. Verify * that the rule names are correct and try again. * @sample AmazonConfig.DescribeConfigRules */ @Override public DescribeConfigRulesResult describeConfigRules( DescribeConfigRulesRequest describeConfigRulesRequest) { ExecutionContext executionContext = createExecutionContext(describeConfigRulesRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeConfigRulesRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(describeConfigRulesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeConfigRulesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeConfigRulesResult describeConfigRules() { return describeConfigRules(new DescribeConfigRulesRequest()); } /** *

* Returns the current status of the specified configuration recorder. If a * configuration recorder is not specified, this action returns the status * of all configuration recorder associated with the account. *

* Currently, you can specify only one configuration recorder per * account. * * @param describeConfigurationRecorderStatusRequest * The input for the DescribeConfigurationRecorderStatus * action. * @return Result of the DescribeConfigurationRecorderStatus operation * returned by the service. * @throws NoSuchConfigurationRecorderException * You have specified a configuration recorder that does not exist. * @sample AmazonConfig.DescribeConfigurationRecorderStatus */ @Override public DescribeConfigurationRecorderStatusResult describeConfigurationRecorderStatus( DescribeConfigurationRecorderStatusRequest describeConfigurationRecorderStatusRequest) { ExecutionContext executionContext = createExecutionContext(describeConfigurationRecorderStatusRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeConfigurationRecorderStatusRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(describeConfigurationRecorderStatusRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeConfigurationRecorderStatusResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeConfigurationRecorderStatusResult describeConfigurationRecorderStatus() { return describeConfigurationRecorderStatus(new DescribeConfigurationRecorderStatusRequest()); } /** *

* Returns the name of one or more specified configuration recorders. If the * recorder name is not specified, this action returns the names of all the * configuration recorders associated with the account. *

* *

* Currently, you can specify only one configuration recorder per account. *

*
* * @param describeConfigurationRecordersRequest * The input for the DescribeConfigurationRecorders action. * @return Result of the DescribeConfigurationRecorders operation returned * by the service. * @throws NoSuchConfigurationRecorderException * You have specified a configuration recorder that does not exist. * @sample AmazonConfig.DescribeConfigurationRecorders */ @Override public DescribeConfigurationRecordersResult describeConfigurationRecorders( DescribeConfigurationRecordersRequest describeConfigurationRecordersRequest) { ExecutionContext executionContext = createExecutionContext(describeConfigurationRecordersRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeConfigurationRecordersRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(describeConfigurationRecordersRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeConfigurationRecordersResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeConfigurationRecordersResult describeConfigurationRecorders() { return describeConfigurationRecorders(new DescribeConfigurationRecordersRequest()); } /** *

* Returns the current status of the specified delivery channel. If a * delivery channel is not specified, this action returns the current status * of all delivery channels associated with the account. *

* Currently, you can specify only one delivery channel per * account. * * @param describeDeliveryChannelStatusRequest * The input for the DeliveryChannelStatus action. * @return Result of the DescribeDeliveryChannelStatus operation returned by * the service. * @throws NoSuchDeliveryChannelException * You have specified a delivery channel that does not exist. * @sample AmazonConfig.DescribeDeliveryChannelStatus */ @Override public DescribeDeliveryChannelStatusResult describeDeliveryChannelStatus( DescribeDeliveryChannelStatusRequest describeDeliveryChannelStatusRequest) { ExecutionContext executionContext = createExecutionContext(describeDeliveryChannelStatusRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeDeliveryChannelStatusRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(describeDeliveryChannelStatusRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeDeliveryChannelStatusResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeDeliveryChannelStatusResult describeDeliveryChannelStatus() { return describeDeliveryChannelStatus(new DescribeDeliveryChannelStatusRequest()); } /** *

* Returns details about the specified delivery channel. If a delivery * channel is not specified, this action returns the details of all delivery * channels associated with the account. *

* *

* Currently, you can specify only one delivery channel per account. *

*
* * @param describeDeliveryChannelsRequest * The input for the DescribeDeliveryChannels action. * @return Result of the DescribeDeliveryChannels operation returned by the * service. * @throws NoSuchDeliveryChannelException * You have specified a delivery channel that does not exist. * @sample AmazonConfig.DescribeDeliveryChannels */ @Override public DescribeDeliveryChannelsResult describeDeliveryChannels( DescribeDeliveryChannelsRequest describeDeliveryChannelsRequest) { ExecutionContext executionContext = createExecutionContext(describeDeliveryChannelsRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeDeliveryChannelsRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(describeDeliveryChannelsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DescribeDeliveryChannelsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public DescribeDeliveryChannelsResult describeDeliveryChannels() { return describeDeliveryChannels(new DescribeDeliveryChannelsRequest()); } /** *

* Returns the evaluation results for the specified AWS Config rule. The * results indicate which AWS resources were evaluated by the rule, when * each resource was last evaluated, and whether each resource complies with * the rule. *

* * @param getComplianceDetailsByConfigRuleRequest * @return Result of the GetComplianceDetailsByConfigRule operation returned * by the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @throws InvalidNextTokenException * The specified next token is invalid. Specify the * nextToken string that was returned in the previous * response to get the next page of results. * @throws NoSuchConfigRuleException * One or more AWS Config rules in the request are invalid. Verify * that the rule names are correct and try again. * @sample AmazonConfig.GetComplianceDetailsByConfigRule */ @Override public GetComplianceDetailsByConfigRuleResult getComplianceDetailsByConfigRule( GetComplianceDetailsByConfigRuleRequest getComplianceDetailsByConfigRuleRequest) { ExecutionContext executionContext = createExecutionContext(getComplianceDetailsByConfigRuleRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetComplianceDetailsByConfigRuleRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(getComplianceDetailsByConfigRuleRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetComplianceDetailsByConfigRuleResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the evaluation results for the specified AWS resource. The * results indicate which AWS Config rules were used to evaluate the * resource, when each rule was last used, and whether the resource complies * with each rule. *

* * @param getComplianceDetailsByResourceRequest * @return Result of the GetComplianceDetailsByResource operation returned * by the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @sample AmazonConfig.GetComplianceDetailsByResource */ @Override public GetComplianceDetailsByResourceResult getComplianceDetailsByResource( GetComplianceDetailsByResourceRequest getComplianceDetailsByResourceRequest) { ExecutionContext executionContext = createExecutionContext(getComplianceDetailsByResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetComplianceDetailsByResourceRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(getComplianceDetailsByResourceRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetComplianceDetailsByResourceResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the number of AWS Config rules that are compliant and * noncompliant, up to a maximum of 25 for each. *

* * @param getComplianceSummaryByConfigRuleRequest * @return Result of the GetComplianceSummaryByConfigRule operation returned * by the service. * @sample AmazonConfig.GetComplianceSummaryByConfigRule */ @Override public GetComplianceSummaryByConfigRuleResult getComplianceSummaryByConfigRule( GetComplianceSummaryByConfigRuleRequest getComplianceSummaryByConfigRuleRequest) { ExecutionContext executionContext = createExecutionContext(getComplianceSummaryByConfigRuleRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetComplianceSummaryByConfigRuleRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(getComplianceSummaryByConfigRuleRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetComplianceSummaryByConfigRuleResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public GetComplianceSummaryByConfigRuleResult getComplianceSummaryByConfigRule() { return getComplianceSummaryByConfigRule(new GetComplianceSummaryByConfigRuleRequest()); } /** *

* Returns the number of resources that are compliant and the number that * are noncompliant. You can specify one or more resource types to get these * numbers for each resource type. The maximum number returned is 100. *

* * @param getComplianceSummaryByResourceTypeRequest * @return Result of the GetComplianceSummaryByResourceType operation * returned by the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @sample AmazonConfig.GetComplianceSummaryByResourceType */ @Override public GetComplianceSummaryByResourceTypeResult getComplianceSummaryByResourceType( GetComplianceSummaryByResourceTypeRequest getComplianceSummaryByResourceTypeRequest) { ExecutionContext executionContext = createExecutionContext(getComplianceSummaryByResourceTypeRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetComplianceSummaryByResourceTypeRequestMarshaller( protocolFactory) .marshall(super .beforeMarshalling(getComplianceSummaryByResourceTypeRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetComplianceSummaryByResourceTypeResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public GetComplianceSummaryByResourceTypeResult getComplianceSummaryByResourceType() { return getComplianceSummaryByResourceType(new GetComplianceSummaryByResourceTypeRequest()); } /** *

* Returns a list of configuration items for the specified resource. The * list contains details about each state of the resource during the * specified time interval. *

*

* The response is paginated, and by default, AWS Config returns a limit of * 10 configuration items per page. You can customize this number with the * limit parameter. The response includes a * nextToken string, and to get the next page of results, run * the request again and enter this string for the nextToken * parameter. *

* *

* Each call to the API is limited to span a duration of seven days. It is * likely that the number of records returned is smaller than the specified * limit. In such cases, you can make another call, using the * nextToken. *

*
* * @param getResourceConfigHistoryRequest * The input for the GetResourceConfigHistory action. * @return Result of the GetResourceConfigHistory operation returned by the * service. * @throws ValidationException * The requested action is not valid. * @throws InvalidTimeRangeException * The specified time range is not valid. The earlier time is not * chronologically before the later time. * @throws InvalidLimitException * The specified limit is outside the allowable range. * @throws InvalidNextTokenException * The specified next token is invalid. Specify the * nextToken string that was returned in the previous * response to get the next page of results. * @throws NoAvailableConfigurationRecorderException * There are no configuration recorders available to provide the * role needed to describe your resources. Create a configuration * recorder. * @throws ResourceNotDiscoveredException * You have specified a resource that is either unknown or has not * been discovered. * @sample AmazonConfig.GetResourceConfigHistory */ @Override public GetResourceConfigHistoryResult getResourceConfigHistory( GetResourceConfigHistoryRequest getResourceConfigHistoryRequest) { ExecutionContext executionContext = createExecutionContext(getResourceConfigHistoryRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetResourceConfigHistoryRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(getResourceConfigHistoryRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetResourceConfigHistoryResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Accepts a resource type and returns a list of resource identifiers for * the resources of that type. A resource identifier includes the resource * type, ID, and (if available) the custom resource name. The results * consist of resources that AWS Config has discovered, including those that * AWS Config is not currently recording. You can narrow the results to * include only resources that have specific resource IDs or a resource * name. *

* You can specify either resource IDs or a resource name but not both * in the same request. *

* The response is paginated, and by default AWS Config lists 100 resource * identifiers on each page. You can customize this number with the * limit parameter. The response includes a * nextToken string, and to get the next page of results, run * the request again and enter this string for the nextToken * parameter. *

* * @param listDiscoveredResourcesRequest * @return Result of the ListDiscoveredResources operation returned by the * service. * @throws ValidationException * The requested action is not valid. * @throws InvalidLimitException * The specified limit is outside the allowable range. * @throws InvalidNextTokenException * The specified next token is invalid. Specify the * nextToken string that was returned in the previous * response to get the next page of results. * @throws NoAvailableConfigurationRecorderException * There are no configuration recorders available to provide the * role needed to describe your resources. Create a configuration * recorder. * @sample AmazonConfig.ListDiscoveredResources */ @Override public ListDiscoveredResourcesResult listDiscoveredResources( ListDiscoveredResourcesRequest listDiscoveredResourcesRequest) { ExecutionContext executionContext = createExecutionContext(listDiscoveredResourcesRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListDiscoveredResourcesRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(listDiscoveredResourcesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new ListDiscoveredResourcesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Adds or updates an AWS Config rule for evaluating whether your AWS * resources comply with your desired configurations. *

*

* You can use this action for customer managed Config rules and AWS managed * Config rules. A customer managed Config rule is a custom rule that you * develop and maintain. An AWS managed Config rule is a customizable, * predefined rule that is provided by AWS Config. *

*

* If you are adding a new customer managed Config rule, you must first * create the AWS Lambda function that the rule invokes to evaluate your * resources. When you use the PutConfigRule action to add the * rule to AWS Config, you must specify the Amazon Resource Name (ARN) that * AWS Lambda assigns to the function. Specify the ARN for the * SourceIdentifier key. This key is part of the * Source object, which is part of the ConfigRule * object. *

*

* If you are adding a new AWS managed Config rule, specify the rule's * identifier for the SourceIdentifier key. To reference AWS * managed Config rule identifiers, see Using AWS Managed Config Rules. *

*

* For any new rule that you add, specify the ConfigRuleName in * the ConfigRule object. Do not specify the * ConfigRuleArn or the ConfigRuleId. These values * are generated by AWS Config for new rules. *

*

* If you are updating a rule that you have added previously, specify the * rule's ConfigRuleName, ConfigRuleId, or * ConfigRuleArn in the ConfigRule data type that * you use in this request. *

*

* The maximum number of rules that AWS Config supports is 25. *

*

* For more information about developing and using AWS Config rules, see Evaluating AWS Resource Configurations with AWS Config in the AWS * Config Developer Guide. *

*

* * @param putConfigRuleRequest * @return Result of the PutConfigRule operation returned by the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @throws MaxNumberOfConfigRulesExceededException * Failed to add the AWS Config rule because the account already * contains the maximum number of 25 rules. Consider deleting any * deactivated rules before adding new rules. * @throws ResourceInUseException * The rule is currently being deleted. Wait for a while and try * again. * @throws InsufficientPermissionsException * Indicates one of the following errors: *

*
    *
  • The rule cannot be created because the IAM role assigned to * AWS Config lacks permissions to perform the config:Put* action.
  • *
  • The AWS Lambda function cannot be invoked. Check the function * ARN, and check the function's permissions.
  • * @sample AmazonConfig.PutConfigRule */ @Override public PutConfigRuleResult putConfigRule( PutConfigRuleRequest putConfigRuleRequest) { ExecutionContext executionContext = createExecutionContext(putConfigRuleRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutConfigRuleRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(putConfigRuleRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new PutConfigRuleResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

    * Creates a new configuration recorder to record the selected resource * configurations. *

    *

    * You can use this action to change the role roleARN and/or * the recordingGroup of an existing recorder. To change the * role, call the action on the existing configuration recorder and specify * a role. *

    * *

    * Currently, you can specify only one configuration recorder per account. *

    *

    * If ConfigurationRecorder does not have the * recordingGroup parameter specified, the default is to record all * supported resource types. *

    *
    * * @param putConfigurationRecorderRequest * The input for the PutConfigurationRecorder action. * @return Result of the PutConfigurationRecorder operation returned by the * service. * @throws MaxNumberOfConfigurationRecordersExceededException * You have reached the limit on the number of recorders you can * create. * @throws InvalidConfigurationRecorderNameException * You have provided a configuration recorder name that is not * valid. * @throws InvalidRoleException * You have provided a null or empty role ARN. * @throws InvalidRecordingGroupException * AWS Config throws an exception if the recording group does not * contain a valid list of resource types. Invalid values could also * be incorrectly formatted. * @sample AmazonConfig.PutConfigurationRecorder */ @Override public PutConfigurationRecorderResult putConfigurationRecorder( PutConfigurationRecorderRequest putConfigurationRecorderRequest) { ExecutionContext executionContext = createExecutionContext(putConfigurationRecorderRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutConfigurationRecorderRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(putConfigurationRecorderRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new PutConfigurationRecorderResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

    * Creates a new delivery channel object to deliver the configuration * information to an Amazon S3 bucket, and to an Amazon SNS topic. *

    *

    * You can use this action to change the Amazon S3 bucket or an Amazon SNS * topic of the existing delivery channel. To change the Amazon S3 bucket or * an Amazon SNS topic, call this action and specify the changed values for * the S3 bucket and the SNS topic. If you specify a different value for * either the S3 bucket or the SNS topic, this action will keep the existing * value for the parameter that is not changed. *

    * *

    * Currently, you can specify only one delivery channel per account. *

    *
    * * @param putDeliveryChannelRequest * The input for the PutDeliveryChannel action. * @return Result of the PutDeliveryChannel operation returned by the * service. * @throws MaxNumberOfDeliveryChannelsExceededException * You have reached the limit on the number of delivery channels you * can create. * @throws NoAvailableConfigurationRecorderException * There are no configuration recorders available to provide the * role needed to describe your resources. Create a configuration * recorder. * @throws InvalidDeliveryChannelNameException * The specified delivery channel name is not valid. * @throws NoSuchBucketException * The specified Amazon S3 bucket does not exist. * @throws InvalidS3KeyPrefixException * The specified Amazon S3 key prefix is not valid. * @throws InvalidSNSTopicARNException * The specified Amazon SNS topic does not exist. * @throws InsufficientDeliveryPolicyException * Your Amazon S3 bucket policy does not permit AWS Config to write * to it. * @sample AmazonConfig.PutDeliveryChannel */ @Override public PutDeliveryChannelResult putDeliveryChannel( PutDeliveryChannelRequest putDeliveryChannelRequest) { ExecutionContext executionContext = createExecutionContext(putDeliveryChannelRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutDeliveryChannelRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(putDeliveryChannelRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new PutDeliveryChannelResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

    * Used by an AWS Lambda function to deliver evaluation results to AWS * Config. This action is required in every AWS Lambda function that is * invoked by an AWS Config rule. *

    * * @param putEvaluationsRequest * @return Result of the PutEvaluations operation returned by the service. * @throws InvalidParameterValueException * One or more of the specified parameters are invalid. Verify that * your parameters are valid and try again. * @throws InvalidResultTokenException * The result token is invalid. * @throws NoSuchConfigRuleException * One or more AWS Config rules in the request are invalid. Verify * that the rule names are correct and try again. * @sample AmazonConfig.PutEvaluations */ @Override public PutEvaluationsResult putEvaluations( PutEvaluationsRequest putEvaluationsRequest) { ExecutionContext executionContext = createExecutionContext(putEvaluationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PutEvaluationsRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(putEvaluationsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new PutEvaluationsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

    * Starts recording configurations of the AWS resources you have selected to * record in your AWS account. *

    *

    * You must have created at least one delivery channel to successfully start * the configuration recorder. *

    * * @param startConfigurationRecorderRequest * The input for the StartConfigurationRecorder action. * @return Result of the StartConfigurationRecorder operation returned by * the service. * @throws NoSuchConfigurationRecorderException * You have specified a configuration recorder that does not exist. * @throws NoAvailableDeliveryChannelException * There is no delivery channel available to record configurations. * @sample AmazonConfig.StartConfigurationRecorder */ @Override public StartConfigurationRecorderResult startConfigurationRecorder( StartConfigurationRecorderRequest startConfigurationRecorderRequest) { ExecutionContext executionContext = createExecutionContext(startConfigurationRecorderRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new StartConfigurationRecorderRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(startConfigurationRecorderRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new StartConfigurationRecorderResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

    * Stops recording configurations of the AWS resources you have selected to * record in your AWS account. *

    * * @param stopConfigurationRecorderRequest *

    * The input for the StopConfigurationRecorder action. *

    * @return Result of the StopConfigurationRecorder operation returned by the * service. * @throws NoSuchConfigurationRecorderException * You have specified a configuration recorder that does not exist. * @sample AmazonConfig.StopConfigurationRecorder */ @Override public StopConfigurationRecorderResult stopConfigurationRecorder( StopConfigurationRecorderRequest stopConfigurationRecorderRequest) { ExecutionContext executionContext = createExecutionContext(stopConfigurationRecorderRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new StopConfigurationRecorderRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(stopConfigurationRecorderRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new StopConfigurationRecorderResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, * request, typically used for debugging issues where a service isn't acting * as expected. This data isn't considered part of the result data returned * by an operation, so it's available through this separate, diagnostic * interface. *

    * Response metadata is only cached for a limited period of time, so if you * need to access this extra diagnostic information for an executed request, * you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none * is available. */ public ResponseMetadata getCachedResponseMetadata( AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be * overriden at the request level. **/ private Response invoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { executionContext.setCredentialsProvider(CredentialUtils .getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext); } /** * Invoke with no authentication. Credentials are not required and any * credentials set on the client or request will be ignored for this * operation. **/ private Response anonymousInvoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext); } /** * Invoke the request using the http client. Assumes credentials (or lack * thereof) have been configured in the ExecutionContext beforehand. **/ private Response doInvoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); HttpResponseHandler errorResponseHandler = protocolFactory .createErrorResponseHandler(new JsonErrorResponseMetadata()); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy