
com.amazonaws.services.config.AmazonConfigClient Maven / Gradle / Ivy
Show all versions of aws-java-sdk-config Show documentation
/*
* 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);
}
}