
com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClient Maven / Gradle / Ivy
Show all versions of aws-java-sdk-osgi Show documentation
/*
* Copyright 2011-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.simplesystemsmanagement;
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.internal.auth.*;
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.client.AwsSyncClientParams;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.simplesystemsmanagement.model.*;
import com.amazonaws.services.simplesystemsmanagement.model.transform.*;
/**
* Client for accessing Amazon SSM. All service calls made using this client are
* blocking, and will not return until the service call completes.
*
*
* This is the Amazon EC2 Simple Systems Manager (SSM) API Reference. SSM
* enables you to remotely manage the configuration of your Amazon EC2
* instances, virtual machines (VMs), or servers in your on-premises environment
* or in an environment provided by other cloud providers using scripts,
* commands, or the Amazon EC2 console. SSM includes an on-demand solution
* called Amazon EC2 Run Command and a lightweight instance configuration
* solution called SSM Config.
*
*
* This references is intended to be used with the EC2 Run Command User Guide
* for Linux or Windows.
*
*
*
* You must register your on-premises servers and VMs through an activation
* process before you can configure them using Run Command. Registered servers
* and VMs are called managed instances. For more information, see Setting Up Run Command On Managed Instances (On-Premises Servers and VMs) on
* Linux or Setting Up Run Command On Managed Instances (On-Premises Servers and VMs) on
* Windows.
*
*
*
* Run Command
*
*
* Run Command provides an on-demand experience for executing commands. You can
* use pre-defined SSM documents to perform the actions listed later in this
* section, or you can create your own documents. With these documents, you can
* remotely configure your instances by sending commands using the
* Commands page in the Amazon EC2 console, AWS Tools for Windows PowerShell, the AWS
* CLI, or AWS SDKs.
*
*
* Run Command reports the status of the command execution for each instance
* targeted by a command. You can also audit the command execution to understand
* who executed commands, when, and what changes were made. By switching between
* different SSM documents, you can quickly configure your instances with
* different types of commands. To get started with Run Command, verify that
* your environment meets the prerequisites for remotely running commands on EC2
* instances (Linux or Windows).
*
*
*
* SSM Config
*
*
* SSM Config is a lightweight instance configuration solution. SSM Config is
* currently only available for Windows instances. With SSM Config, you can
* specify a setup configuration for your instances. SSM Config is similar to
* EC2 User Data, which is another way of running one-time scripts or applying
* settings during instance launch. SSM Config is an extension of this
* capability. Using SSM documents, you can specify which actions the system
* should perform on your instances, including which applications to install,
* which AWS Directory Service directory to join, which Microsoft PowerShell
* modules to install, etc. If an instance is missing one or more of these
* configurations, the system makes those changes. By default, the system checks
* every five minutes to see if there is a new configuration to apply as defined
* in a new SSM document. If so, the system updates the instances accordingly.
* In this way, you can remotely maintain a consistent configuration baseline on
* your instances. SSM Config is available using the AWS CLI or the AWS Tools
* for Windows PowerShell. For more information, see Managing Windows Instance Configuration.
*
*
* SSM Config and Run Command include the following pre-defined documents.
*
*
* Linux
*
*
* -
*
* AWS-RunShellScript to run shell scripts
*
*
* -
*
* AWS-UpdateSSMAgent to update the Amazon SSM agent
*
*
*
*
*
* Windows
*
*
* -
*
* AWS-JoinDirectoryServiceDomain to join an AWS Directory
*
*
* -
*
* AWS-RunPowerShellScript to run PowerShell commands or scripts
*
*
* -
*
* AWS-UpdateEC2Config to update the EC2Config service
*
*
* -
*
* AWS-ConfigureWindowsUpdate to configure Windows Update settings
*
*
* -
*
* AWS-InstallApplication to install, repair, or uninstall software using
* an MSI package
*
*
* -
*
* AWS-InstallPowerShellModule to install PowerShell modules
*
*
* -
*
* AWS-ConfigureCloudWatch to configure Amazon CloudWatch Logs to monitor
* applications and systems
*
*
* -
*
* AWS-ListWindowsInventory to collect information about an EC2 instance
* running in Windows.
*
*
* -
*
* AWS-FindWindowsUpdates to scan an instance and determines which
* updates are missing.
*
*
* -
*
* AWS-InstallMissingWindowsUpdates to install missing updates on your
* EC2 instance.
*
*
* -
*
* AWS-InstallSpecificWindowsUpdates to install one or more specific
* updates.
*
*
*
*
*
* The commands or scripts specified in SSM documents run with administrative
* privilege on your instances because the Amazon SSM agent runs as root on
* Linux and the EC2Config service runs in the Local System account on Windows.
* If a user has permission to execute any of the pre-defined SSM documents (any
* document that begins with AWS-*) then that user also has administrator access
* to the instance. Delegate access to Run Command and SSM Config judiciously.
* This becomes extremely important if you create your own SSM documents. Amazon
* Web Services does not provide guidance about how to create secure SSM
* documents. You create SSM documents and delegate access to Run Command at
* your own risk. As a security best practice, we recommend that you assign
* access to "AWS-*" documents, especially the AWS-RunShellScript document on
* Linux and the AWS-RunPowerShellScript document on Windows, to trusted
* administrators only. You can create SSM documents for specific tasks and
* delegate access to non-administrators.
*
*
*
* For information about creating and sharing SSM documents, see the following
* topics in the SSM User Guide:
*
*
* -
*
* Creating SSM Documents and Sharing SSM Documents (Linux)
*
*
* -
*
* Creating SSM Documents and Sharing SSM Documents (Windows)
*
*
*
*/
@ThreadSafe
public class AWSSimpleSystemsManagementClient extends AmazonWebServiceClient
implements AWSSimpleSystemsManagement {
/** Provider for AWS credentials. */
private final AWSCredentialsProvider awsCredentialsProvider;
private static final Log log = LogFactory
.getLog(AWSSimpleSystemsManagement.class);
/** Default signing name for the service. */
private static final String DEFAULT_SIGNING_NAME = "ssm";
/**
* 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("InvalidPermissionType")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidPermissionTypeException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidDocument")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidDocumentException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidParameters")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidParametersException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidOutputFolder")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidOutputFolderException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidDocumentOperation")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidDocumentOperationException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidFilter")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidFilterException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidResourceType")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidResourceTypeException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidNotificationConfig")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidNotificationConfigException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidCommandId")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidCommandIdException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DocumentPermissionLimit")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.DocumentPermissionLimitException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DocumentLimitExceeded")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.DocumentLimitExceededException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidInstanceId")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidInstanceIdException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidActivation")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidActivationException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidNextToken")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidNextTokenException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("AssociationAlreadyExists")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.AssociationAlreadyExistsException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DuplicateInstanceId")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.DuplicateInstanceIdException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("TooManyUpdates")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.TooManyUpdatesException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidActivationId")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidActivationIdException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DocumentAlreadyExists")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.DocumentAlreadyExistsException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidDocumentContent")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidDocumentContentException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode(
"InvalidInstanceInformationFilterValue")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidInstanceInformationFilterValueException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("AssociationLimitExceeded")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.AssociationLimitExceededException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("StatusUnchanged")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.StatusUnchangedException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("AssociationDoesNotExist")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.AssociationDoesNotExistException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("UnsupportedPlatformType")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.UnsupportedPlatformTypeException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("MaxDocumentSizeExceeded")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.MaxDocumentSizeExceededException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidRole")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidRoleException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("AssociatedInstances")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.AssociatedInstancesException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidResourceId")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidResourceIdException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InvalidFilterKey")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InvalidFilterKeyException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("InternalServerError")
.withModeledClass(
com.amazonaws.services.simplesystemsmanagement.model.InternalServerErrorException.class))
.withBaseServiceExceptionClass(
com.amazonaws.services.simplesystemsmanagement.model.AWSSimpleSystemsManagementException.class));
/**
* Constructs a new client to invoke service methods on Amazon SSM. 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 AWSSimpleSystemsManagementClient() {
this(new DefaultAWSCredentialsProviderChain(), configFactory
.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon SSM. 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 Amazon SSM (ex: proxy settings, retry counts, etc.).
*
* @see DefaultAWSCredentialsProviderChain
*/
public AWSSimpleSystemsManagementClient(
ClientConfiguration clientConfiguration) {
this(new DefaultAWSCredentialsProviderChain(), clientConfiguration);
}
/**
* Constructs a new client to invoke service methods on Amazon SSM 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 AWSSimpleSystemsManagementClient(AWSCredentials awsCredentials) {
this(awsCredentials, configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon SSM 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 Amazon SSM (ex: proxy settings, retry counts, etc.).
*/
public AWSSimpleSystemsManagementClient(AWSCredentials awsCredentials,
ClientConfiguration clientConfiguration) {
super(clientConfiguration);
this.awsCredentialsProvider = new StaticCredentialsProvider(
awsCredentials);
init();
}
/**
* Constructs a new client to invoke service methods on Amazon SSM 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 AWSSimpleSystemsManagementClient(
AWSCredentialsProvider awsCredentialsProvider) {
this(awsCredentialsProvider, configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon SSM 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 Amazon SSM (ex: proxy settings, retry counts, etc.).
*/
public AWSSimpleSystemsManagementClient(
AWSCredentialsProvider awsCredentialsProvider,
ClientConfiguration clientConfiguration) {
this(awsCredentialsProvider, clientConfiguration, null);
}
/**
* Constructs a new client to invoke service methods on Amazon SSM 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 Amazon SSM (ex: proxy settings, retry counts, etc.).
* @param requestMetricCollector
* optional request metric collector
*/
public AWSSimpleSystemsManagementClient(
AWSCredentialsProvider awsCredentialsProvider,
ClientConfiguration clientConfiguration,
RequestMetricCollector requestMetricCollector) {
super(clientConfiguration, requestMetricCollector);
this.awsCredentialsProvider = awsCredentialsProvider;
init();
}
/**
* Constructs a new client to invoke service methods on Amazon SSM using the
* specified parameters.
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param clientParams
* Object providing client parameters.
*/
AWSSimpleSystemsManagementClient(AwsSyncClientParams clientParams) {
super(clientParams);
this.awsCredentialsProvider = clientParams.getCredentialsProvider();
init();
}
private void init() {
setServiceNameIntern(DEFAULT_SIGNING_NAME);
setEndpointPrefix(ENDPOINT_PREFIX);
// calling this.setEndPoint(...) will also modify the signer accordingly
setEndpoint("https://ssm.us-east-1.amazonaws.com");
HandlerChainFactory chainFactory = new HandlerChainFactory();
requestHandler2s
.addAll(chainFactory
.newRequestHandlerChain("/com/amazonaws/services/simplesystemsmanagement/request.handlers"));
requestHandler2s
.addAll(chainFactory
.newRequestHandler2Chain("/com/amazonaws/services/simplesystemsmanagement/request.handler2s"));
}
/**
*
* Adds or overwrites one or more tags for the specified resource. Tags are
* metadata that you assign to your managed instances. Tags enable you to
* categorize your managed instances in different ways, for example, by
* purpose, owner, or environment. Each tag consists of a key and an
* optional value, both of which you define. For example, you could define a
* set of tags for your account's managed instances that helps you track
* each instance's owner and stack level. For example: Key=Owner and
* Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production,
* Pre-Production, or Test. Each resource can have a maximum of 10 tags.
*
*
* We recommend that you devise a set of tag keys that meets your needs for
* each resource type. Using a consistent set of tag keys makes it easier
* for you to manage your resources. You can search and filter the resources
* based on the tags you add. Tags don't have any semantic meaning to Amazon
* EC2 and are interpreted strictly as a string of characters.
*
*
* For more information about tags, see Tagging Your Amazon EC2 Resources in the Amazon EC2 User Guide.
*
*
* @param addTagsToResourceRequest
* @return Result of the AddTagsToResource operation returned by the
* service.
* @throws InvalidResourceTypeException
* The resource type is not valid. If you are attempting to tag an
* instance, the instance must be a registered, managed instance.
* @throws InvalidResourceIdException
* The resource ID is not valid. Verify that you entered the correct
* ID and try again.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.AddTagsToResource
*/
@Override
public AddTagsToResourceResult addTagsToResource(
AddTagsToResourceRequest addTagsToResourceRequest) {
ExecutionContext executionContext = createExecutionContext(addTagsToResourceRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new AddTagsToResourceRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(addTagsToResourceRequest));
// 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 AddTagsToResourceResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Attempts to cancel the command specified by the Command ID. There is no
* guarantee that the command will be terminated and the underlying process
* stopped.
*
*
* @param cancelCommandRequest
* @return Result of the CancelCommand operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidCommandIdException
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws DuplicateInstanceIdException
* You cannot specify an instance ID in more than one association.
* @sample AWSSimpleSystemsManagement.CancelCommand
*/
@Override
public CancelCommandResult cancelCommand(
CancelCommandRequest cancelCommandRequest) {
ExecutionContext executionContext = createExecutionContext(cancelCommandRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CancelCommandRequestMarshaller(protocolFactory)
.marshall(super.beforeMarshalling(cancelCommandRequest));
// 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 CancelCommandResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Registers your on-premises server or virtual machine with Amazon EC2 so
* that you can manage these resources using Run Command. An on-premises
* server or virtual machine that has been registered with EC2 is called a
* managed instance. For more information about activations, see Setting Up Managed Instances (Linux) or Setting Up Managed Instances (Windows) in the Amazon EC2 User Guide.
*
*
* @param createActivationRequest
* @return Result of the CreateActivation operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.CreateActivation
*/
@Override
public CreateActivationResult createActivation(
CreateActivationRequest createActivationRequest) {
ExecutionContext executionContext = createExecutionContext(createActivationRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CreateActivationRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(createActivationRequest));
// 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 CreateActivationResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Associates the specified SSM document with the specified instance.
*
*
* When you associate an SSM document with an instance, the configuration
* agent on the instance processes the document and configures the instance
* as specified.
*
*
* If you associate a document with an instance that already has an
* associated document, the system throws the AssociationAlreadyExists
* exception.
*
*
* @param createAssociationRequest
* @return Result of the CreateAssociation operation returned by the
* service.
* @throws AssociationAlreadyExistsException
* The specified association already exists.
* @throws AssociationLimitExceededException
* You can have at most 2,000 active associations.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws UnsupportedPlatformTypeException
* The document does not support the platform type of the given
* instance ID(s). For example, you sent an SSM document for a
* Windows instance to a Linux instance.
* @throws InvalidParametersException
* You must specify values for all required parameters in the SSM
* document. You can only supply values to parameters defined in the
* SSM document.
* @sample AWSSimpleSystemsManagement.CreateAssociation
*/
@Override
public CreateAssociationResult createAssociation(
CreateAssociationRequest createAssociationRequest) {
ExecutionContext executionContext = createExecutionContext(createAssociationRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CreateAssociationRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(createAssociationRequest));
// 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 CreateAssociationResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Associates the specified SSM document with the specified instances.
*
*
* When you associate an SSM document with an instance, the configuration
* agent on the instance processes the document and configures the instance
* as specified.
*
*
* If you associate a document with an instance that already has an
* associated document, the system throws the AssociationAlreadyExists
* exception.
*
*
* @param createAssociationBatchRequest
* @return Result of the CreateAssociationBatch operation returned by the
* service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InvalidParametersException
* You must specify values for all required parameters in the SSM
* document. You can only supply values to parameters defined in the
* SSM document.
* @throws DuplicateInstanceIdException
* You cannot specify an instance ID in more than one association.
* @throws AssociationLimitExceededException
* You can have at most 2,000 active associations.
* @throws UnsupportedPlatformTypeException
* The document does not support the platform type of the given
* instance ID(s). For example, you sent an SSM document for a
* Windows instance to a Linux instance.
* @sample AWSSimpleSystemsManagement.CreateAssociationBatch
*/
@Override
public CreateAssociationBatchResult createAssociationBatch(
CreateAssociationBatchRequest createAssociationBatchRequest) {
ExecutionContext executionContext = createExecutionContext(createAssociationBatchRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CreateAssociationBatchRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(createAssociationBatchRequest));
// 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 CreateAssociationBatchResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Creates an SSM document.
*
*
* After you create an SSM document, you can use CreateAssociation to
* associate it with one or more running instances.
*
*
* @param createDocumentRequest
* @return Result of the CreateDocument operation returned by the service.
* @throws DocumentAlreadyExistsException
* The specified SSM document already exists.
* @throws MaxDocumentSizeExceededException
* The size limit of an SSM document is 64 KB.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentContentException
* The content for the SSM document is not valid.
* @throws DocumentLimitExceededException
* You can have at most 100 active SSM documents.
* @sample AWSSimpleSystemsManagement.CreateDocument
*/
@Override
public CreateDocumentResult createDocument(
CreateDocumentRequest createDocumentRequest) {
ExecutionContext executionContext = createExecutionContext(createDocumentRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CreateDocumentRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(createDocumentRequest));
// 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 CreateDocumentResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Deletes an activation. You are not required to delete an activation. If
* you delete an activation, you can no longer use it to register additional
* managed instances. Deleting an activation does not de-register managed
* instances. You must manually de-register managed instances.
*
*
* @param deleteActivationRequest
* @return Result of the DeleteActivation operation returned by the service.
* @throws InvalidActivationIdException
* The activation ID is not valid. Verify the you entered the
* correct ActivationId or ActivationCode and try again.
* @throws InvalidActivationException
* The activation is not valid. The activation might have been
* deleted, or the ActivationId and the ActivationCode do not match.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.DeleteActivation
*/
@Override
public DeleteActivationResult deleteActivation(
DeleteActivationRequest deleteActivationRequest) {
ExecutionContext executionContext = createExecutionContext(deleteActivationRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteActivationRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(deleteActivationRequest));
// 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 DeleteActivationResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Disassociates the specified SSM document from the specified instance.
*
*
* When you disassociate an SSM document from an instance, it does not
* change the configuration of the instance. To change the configuration
* state of an instance after you disassociate a document, you must create a
* new document with the desired configuration and associate it with the
* instance.
*
*
* @param deleteAssociationRequest
* @return Result of the DeleteAssociation operation returned by the
* service.
* @throws AssociationDoesNotExistException
* The specified association does not exist.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws TooManyUpdatesException
* There are concurrent updates for a resource that supports one
* update at a time.
* @sample AWSSimpleSystemsManagement.DeleteAssociation
*/
@Override
public DeleteAssociationResult deleteAssociation(
DeleteAssociationRequest deleteAssociationRequest) {
ExecutionContext executionContext = createExecutionContext(deleteAssociationRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteAssociationRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(deleteAssociationRequest));
// 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 DeleteAssociationResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Deletes the SSM document and all instance associations to the document.
*
*
* Before you delete the SSM document, we recommend that you use
* DeleteAssociation to disassociate all instances that are associated with
* the document.
*
*
* @param deleteDocumentRequest
* @return Result of the DeleteDocument operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidDocumentOperationException
* You attempted to delete a document while it is still shared. You
* must stop sharing the document before you can delete it.
* @throws AssociatedInstancesException
* You must disassociate an SSM document from all instances before
* you can delete it.
* @sample AWSSimpleSystemsManagement.DeleteDocument
*/
@Override
public DeleteDocumentResult deleteDocument(
DeleteDocumentRequest deleteDocumentRequest) {
ExecutionContext executionContext = createExecutionContext(deleteDocumentRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteDocumentRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(deleteDocumentRequest));
// 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 DeleteDocumentResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Removes the server or virtual machine from the list of registered
* servers. You can reregister the instance again at any time. If you don’t
* plan to use Run Command on the server, we suggest uninstalling the SSM
* agent first.
*
*
* @param deregisterManagedInstanceRequest
* @return Result of the DeregisterManagedInstance operation returned by the
* service.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.DeregisterManagedInstance
*/
@Override
public DeregisterManagedInstanceResult deregisterManagedInstance(
DeregisterManagedInstanceRequest deregisterManagedInstanceRequest) {
ExecutionContext executionContext = createExecutionContext(deregisterManagedInstanceRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeregisterManagedInstanceRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(deregisterManagedInstanceRequest));
// 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 DeregisterManagedInstanceResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Details about the activation, including: the date and time the activation
* was created, the expiration date, the IAM role assigned to the instances
* in the activation, and the number of instances activated by this
* registration.
*
*
* @param describeActivationsRequest
* @return Result of the DescribeActivations operation returned by the
* service.
* @throws InvalidFilterException
* The filter name is not valid. Verify the you entered the correct
* name and try again.
* @throws InvalidNextTokenException
* The specified token is not valid.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.DescribeActivations
*/
@Override
public DescribeActivationsResult describeActivations(
DescribeActivationsRequest describeActivationsRequest) {
ExecutionContext executionContext = createExecutionContext(describeActivationsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeActivationsRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeActivationsRequest));
// 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 DescribeActivationsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Describes the associations for the specified SSM document or instance.
*
*
* @param describeAssociationRequest
* @return Result of the DescribeAssociation operation returned by the
* service.
* @throws AssociationDoesNotExistException
* The specified association does not exist.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @sample AWSSimpleSystemsManagement.DescribeAssociation
*/
@Override
public DescribeAssociationResult describeAssociation(
DescribeAssociationRequest describeAssociationRequest) {
ExecutionContext executionContext = createExecutionContext(describeAssociationRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeAssociationRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeAssociationRequest));
// 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 DescribeAssociationResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Describes the specified SSM document.
*
*
* @param describeDocumentRequest
* @return Result of the DescribeDocument operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @sample AWSSimpleSystemsManagement.DescribeDocument
*/
@Override
public DescribeDocumentResult describeDocument(
DescribeDocumentRequest describeDocumentRequest) {
ExecutionContext executionContext = createExecutionContext(describeDocumentRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeDocumentRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(describeDocumentRequest));
// 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 DescribeDocumentResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Describes the permissions for an SSM document. If you created the
* document, you are the owner. If a document is shared, it can either be
* shared privately (by specifying a user’s AWS account ID) or publicly
* (All).
*
*
* @param describeDocumentPermissionRequest
* @return Result of the DescribeDocumentPermission operation returned by
* the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidPermissionTypeException
* The permission type is not supported. Share is the only
* supported permission type.
* @sample AWSSimpleSystemsManagement.DescribeDocumentPermission
*/
@Override
public DescribeDocumentPermissionResult describeDocumentPermission(
DescribeDocumentPermissionRequest describeDocumentPermissionRequest) {
ExecutionContext executionContext = createExecutionContext(describeDocumentPermissionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeDocumentPermissionRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeDocumentPermissionRequest));
// 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 DescribeDocumentPermissionResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Describes one or more of your instances. You can use this to get
* information about instances like the operating system platform, the SSM
* agent version, status etc. If you specify one or more instance IDs, it
* returns information for those instances. If you do not specify instance
* IDs, it returns information for all your instances. If you specify an
* instance ID that is not valid or an instance that you do not own, you
* receive an error.
*
*
* @param describeInstanceInformationRequest
* @return Result of the DescribeInstanceInformation operation returned by
* the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InvalidNextTokenException
* The specified token is not valid.
* @throws InvalidInstanceInformationFilterValueException
* The specified filter value is not valid.
* @throws InvalidFilterKeyException
* The specified key is not valid.
* @sample AWSSimpleSystemsManagement.DescribeInstanceInformation
*/
@Override
public DescribeInstanceInformationResult describeInstanceInformation(
DescribeInstanceInformationRequest describeInstanceInformationRequest) {
ExecutionContext executionContext = createExecutionContext(describeInstanceInformationRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeInstanceInformationRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeInstanceInformationRequest));
// 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 DescribeInstanceInformationResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Gets the contents of the specified SSM document.
*
*
* @param getDocumentRequest
* @return Result of the GetDocument operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @sample AWSSimpleSystemsManagement.GetDocument
*/
@Override
public GetDocumentResult getDocument(GetDocumentRequest getDocumentRequest) {
ExecutionContext executionContext = createExecutionContext(getDocumentRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetDocumentRequestMarshaller(protocolFactory)
.marshall(super.beforeMarshalling(getDocumentRequest));
// 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 GetDocumentResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Lists the associations for the specified SSM document or instance.
*
*
* @param listAssociationsRequest
* @return Result of the ListAssociations operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidNextTokenException
* The specified token is not valid.
* @sample AWSSimpleSystemsManagement.ListAssociations
*/
@Override
public ListAssociationsResult listAssociations(
ListAssociationsRequest listAssociationsRequest) {
ExecutionContext executionContext = createExecutionContext(listAssociationsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListAssociationsRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(listAssociationsRequest));
// 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 ListAssociationsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* An invocation is copy of a command sent to a specific instance. A command
* can apply to one or more instances. A command invocation applies to one
* instance. For example, if a user executes SendCommand against three
* instances, then a command invocation is created for each requested
* instance ID. ListCommandInvocations provide status about command
* execution.
*
*
* @param listCommandInvocationsRequest
* @return Result of the ListCommandInvocations operation returned by the
* service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidCommandIdException
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InvalidFilterKeyException
* The specified key is not valid.
* @throws InvalidNextTokenException
* The specified token is not valid.
* @sample AWSSimpleSystemsManagement.ListCommandInvocations
*/
@Override
public ListCommandInvocationsResult listCommandInvocations(
ListCommandInvocationsRequest listCommandInvocationsRequest) {
ExecutionContext executionContext = createExecutionContext(listCommandInvocationsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListCommandInvocationsRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(listCommandInvocationsRequest));
// 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 ListCommandInvocationsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Lists the commands requested by users of the AWS account.
*
*
* @param listCommandsRequest
* @return Result of the ListCommands operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidCommandIdException
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InvalidFilterKeyException
* The specified key is not valid.
* @throws InvalidNextTokenException
* The specified token is not valid.
* @sample AWSSimpleSystemsManagement.ListCommands
*/
@Override
public ListCommandsResult listCommands(
ListCommandsRequest listCommandsRequest) {
ExecutionContext executionContext = createExecutionContext(listCommandsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListCommandsRequestMarshaller(protocolFactory)
.marshall(super.beforeMarshalling(listCommandsRequest));
// 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 ListCommandsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Describes one or more of your SSM documents.
*
*
* @param listDocumentsRequest
* @return Result of the ListDocuments operation returned by the service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidNextTokenException
* The specified token is not valid.
* @throws InvalidFilterKeyException
* The specified key is not valid.
* @sample AWSSimpleSystemsManagement.ListDocuments
*/
@Override
public ListDocumentsResult listDocuments(
ListDocumentsRequest listDocumentsRequest) {
ExecutionContext executionContext = createExecutionContext(listDocumentsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListDocumentsRequestMarshaller(protocolFactory)
.marshall(super.beforeMarshalling(listDocumentsRequest));
// 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 ListDocumentsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
@Override
public ListDocumentsResult listDocuments() {
return listDocuments(new ListDocumentsRequest());
}
/**
*
* Returns a list of the tags assigned to the specified resource.
*
*
* @param listTagsForResourceRequest
* @return Result of the ListTagsForResource operation returned by the
* service.
* @throws InvalidResourceTypeException
* The resource type is not valid. If you are attempting to tag an
* instance, the instance must be a registered, managed instance.
* @throws InvalidResourceIdException
* The resource ID is not valid. Verify that you entered the correct
* ID and try again.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.ListTagsForResource
*/
@Override
public ListTagsForResourceResult listTagsForResource(
ListTagsForResourceRequest listTagsForResourceRequest) {
ExecutionContext executionContext = createExecutionContext(listTagsForResourceRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListTagsForResourceRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(listTagsForResourceRequest));
// 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 ListTagsForResourceResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Share a document publicly or privately. If you share a document
* privately, you must specify the AWS user account IDs for those people who
* can use the document. If you share a document publicly, you must specify
* All as the account ID.
*
*
* @param modifyDocumentPermissionRequest
* @return Result of the ModifyDocumentPermission operation returned by the
* service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidPermissionTypeException
* The permission type is not supported. Share is the only
* supported permission type.
* @throws DocumentPermissionLimitException
* The document cannot be shared with more AWS user accounts. You
* can share a document with a maximum of 20 accounts. You can
* publicly share up to five documents. If you need to increase this
* limit, contact AWS Support.
* @throws DocumentLimitExceededException
* You can have at most 100 active SSM documents.
* @sample AWSSimpleSystemsManagement.ModifyDocumentPermission
*/
@Override
public ModifyDocumentPermissionResult modifyDocumentPermission(
ModifyDocumentPermissionRequest modifyDocumentPermissionRequest) {
ExecutionContext executionContext = createExecutionContext(modifyDocumentPermissionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ModifyDocumentPermissionRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(modifyDocumentPermissionRequest));
// 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 ModifyDocumentPermissionResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Removes all tags from the specified resource.
*
*
* @param removeTagsFromResourceRequest
* @return Result of the RemoveTagsFromResource operation returned by the
* service.
* @throws InvalidResourceTypeException
* The resource type is not valid. If you are attempting to tag an
* instance, the instance must be a registered, managed instance.
* @throws InvalidResourceIdException
* The resource ID is not valid. Verify that you entered the correct
* ID and try again.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.RemoveTagsFromResource
*/
@Override
public RemoveTagsFromResourceResult removeTagsFromResource(
RemoveTagsFromResourceRequest removeTagsFromResourceRequest) {
ExecutionContext executionContext = createExecutionContext(removeTagsFromResourceRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RemoveTagsFromResourceRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(removeTagsFromResourceRequest));
// 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 RemoveTagsFromResourceResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Executes commands on one or more remote instances.
*
*
* @param sendCommandRequest
* @return Result of the SendCommand operation returned by the service.
* @throws DuplicateInstanceIdException
* You cannot specify an instance ID in more than one association.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws InvalidOutputFolderException
* The S3 bucket does not exist.
* @throws InvalidParametersException
* You must specify values for all required parameters in the SSM
* document. You can only supply values to parameters defined in the
* SSM document.
* @throws UnsupportedPlatformTypeException
* The document does not support the platform type of the given
* instance ID(s). For example, you sent an SSM document for a
* Windows instance to a Linux instance.
* @throws MaxDocumentSizeExceededException
* The size limit of an SSM document is 64 KB.
* @throws InvalidRoleException
* The role name can't contain invalid characters. Also verify that
* you specified an IAM role for notifications that includes the
* required trust policy. For information about configuring the IAM
* role for SSM notifications, see Configuring SNS Notifications SSM in the Amazon Elastic
* Compute Cloud User Guide .
* @throws InvalidNotificationConfigException
* One or more configuration items is not valid. Verify that a valid
* Amazon Resource Name (ARN) was provided for an Amazon SNS topic.
* @sample AWSSimpleSystemsManagement.SendCommand
*/
@Override
public SendCommandResult sendCommand(SendCommandRequest sendCommandRequest) {
ExecutionContext executionContext = createExecutionContext(sendCommandRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new SendCommandRequestMarshaller(protocolFactory)
.marshall(super.beforeMarshalling(sendCommandRequest));
// 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 SendCommandResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Updates the status of the SSM document associated with the specified
* instance.
*
*
* @param updateAssociationStatusRequest
* @return Result of the UpdateAssociationStatus operation returned by the
* service.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InvalidDocumentException
* The specified document does not exist.
* @throws AssociationDoesNotExistException
* The specified association does not exist.
* @throws StatusUnchangedException
* The updated status is the same as the current status.
* @throws TooManyUpdatesException
* There are concurrent updates for a resource that supports one
* update at a time.
* @sample AWSSimpleSystemsManagement.UpdateAssociationStatus
*/
@Override
public UpdateAssociationStatusResult updateAssociationStatus(
UpdateAssociationStatusRequest updateAssociationStatusRequest) {
ExecutionContext executionContext = createExecutionContext(updateAssociationStatusRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new UpdateAssociationStatusRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(updateAssociationStatusRequest));
// 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 UpdateAssociationStatusResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Assigns or changes an Amazon Identity and Access Management (IAM) role to
* the managed instance.
*
*
* @param updateManagedInstanceRoleRequest
* @return Result of the UpdateManagedInstanceRole operation returned by the
* service.
* @throws InvalidInstanceIdException
* The instance is not in valid state. Valid states are: Running,
* Pending, Stopped, Stopping. Invalid states are: Shutting-down and
* Terminated.
* @throws InternalServerErrorException
* An error occurred on the server side.
* @sample AWSSimpleSystemsManagement.UpdateManagedInstanceRole
*/
@Override
public UpdateManagedInstanceRoleResult updateManagedInstanceRole(
UpdateManagedInstanceRoleRequest updateManagedInstanceRoleRequest) {
ExecutionContext executionContext = createExecutionContext(updateManagedInstanceRoleRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new UpdateManagedInstanceRoleRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(updateManagedInstanceRoleRequest));
// 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 UpdateManagedInstanceRoleResultJsonUnmarshaller());
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);
}
}