Files
weave-scope/vendor/github.com/aws/aws-sdk-go/service/ssm/service.go
2016-03-23 15:41:37 +00:00

154 lines
6.4 KiB
Go

// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
package ssm
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
"github.com/aws/aws-sdk-go/private/signer/v4"
)
// Simple Systems Manager (SSM) is a set of capabilities that can help you manage
// your Amazon EC2 instances running on Windows. SSM enables you to run scripts
// or other common administrative tasks on your instances using either SSM Run
// Command or SSM Config.
//
// Run Command extends the server administration capabilities of SSM by offering
// an on-demand experience for executing commands. You can use pre-defined Amazon
// SSM documents (formerly called configuration documents) to perform the actions
// listed later in this section, or you can create your own documents. With
// these document, you can then remotely configure your instances by sending
// commands using the AWS command line interface (CLI), AWS Tools for Windows
// PowerShell, or the Commands page in the Amazon EC2 console. Additionally,
// because Run Command enables you to execute PowerShell commands or scripts,
// you can administer your instances remotely using PowerShell as though you
// were logged on locally to the instance. 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.
//
// SSM Config is a lightweight instance configuration solution. 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.
//
// SSM is currently not supported on Linux instances.
//
// You can use Run Command and SSM Config to do the following:
//
// Join an AWS Directory Service directory (SSM Config and Run Command)
//
// Install, repair, or uninstall software using an MSI package (SSM Config
// and Run Command)
//
// Install PowerShell modules (SSM Config and Run Command)
//
// Configure CloudWatch Logs to monitor applications and systems (SSM Config
// and Run Command)
//
// Run PowerShell commands or scripts (Run Command only)
//
// Update the EC2Config service (Run Command only)
//
// Configure Windows Update settings (Run Command only)
//
// SSM documents run with administrative privilege on Windows instances
// because the EC2Config service runs in the Local System account. 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 SSM Config and Run Command 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 actions at your
// own risk. As a security best practice, we recommend that you assign access
// to "AWS-*" documents, especially the AWS-RunPowerShellScript document, to
// trusted administrators only. You can create low-level SSM documents for low
// security tasks and delegate access to non-administrators.
//The service client's operations are safe to be used concurrently.
// It is not safe to mutate any of the client's properties though.
type SSM struct {
*client.Client
}
// Used for custom client initialization logic
var initClient func(*client.Client)
// Used for custom request initialization logic
var initRequest func(*request.Request)
// A ServiceName is the name of the service the client will make API calls to.
const ServiceName = "ssm"
// New creates a new instance of the SSM client with a session.
// If additional configuration is needed for the client instance use the optional
// aws.Config parameter to add your extra config.
//
// Example:
// // Create a SSM client from just a session.
// svc := ssm.New(mySession)
//
// // Create a SSM client with additional configuration
// svc := ssm.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
func New(p client.ConfigProvider, cfgs ...*aws.Config) *SSM {
c := p.ClientConfig(ServiceName, cfgs...)
return newClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion)
}
// newClient creates, initializes and returns a new service client instance.
func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion string) *SSM {
svc := &SSM{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: ServiceName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2014-11-06",
JSONVersion: "1.1",
TargetPrefix: "AmazonSSM",
},
handlers,
),
}
// Handlers
svc.Handlers.Sign.PushBack(v4.Sign)
svc.Handlers.Build.PushBack(jsonrpc.Build)
svc.Handlers.Unmarshal.PushBack(jsonrpc.Unmarshal)
svc.Handlers.UnmarshalMeta.PushBack(jsonrpc.UnmarshalMeta)
svc.Handlers.UnmarshalError.PushBack(jsonrpc.UnmarshalError)
// Run custom client initialization if present
if initClient != nil {
initClient(svc.Client)
}
return svc
}
// newRequest creates a new request for a SSM operation and runs any
// custom request initialization.
func (c *SSM) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
// Run custom request initialization if present
if initRequest != nil {
initRequest(req)
}
return req
}