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

com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClient Maven / Gradle / Ivy

/*
 * 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.auth.presign.PresignerParams;
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.
 * 

*

* Amazon EC2 Simple Systems Manager (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: *

* */ @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) .withSupportsIon(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(DefaultAWSCredentialsProviderChain.getInstance(), 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(DefaultAWSCredentialsProviderChain.getInstance(), 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")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** *

* 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 (SSM agent for Linux * and EC2Config service for Windows) 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 (SSM agent for Linux * and EC2Config service for Windows) 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 200 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 (Linux), 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 200 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); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy