From 9b2292d5ee10b1d02a601cc32c1e11d174174777 Mon Sep 17 00:00:00 2001 From: Clint Date: Tue, 14 Mar 2017 10:13:44 -0500 Subject: [PATCH] provider/aws: Bump aws/sdk to 1.7.9. Fixes at least 1 RDS bug (#12680) --- vendor/github.com/aws/aws-sdk-go/CHANGELOG.md | 32 + .../aws/aws-sdk-go/aws/endpoints/defaults.go | 2 + .../aws/aws-sdk-go/aws/session/doc.go | 24 +- .../aws/aws-sdk-go/aws/session/env_config.go | 20 + .../aws/aws-sdk-go/aws/session/session.go | 89 +- .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../service/cloudwatchevents/api.go | 674 ++++-- .../service/cloudwatchevents/errors.go | 7 +- .../service/cloudwatchevents/service.go | 8 +- .../aws/aws-sdk-go/service/codedeploy/api.go | 186 ++ .../aws/aws-sdk-go/service/emr/api.go | 1816 +++++++++++++++-- .../aws/aws-sdk-go/service/emr/waiters.go | 33 + .../aws-sdk-go/service/rds/customizations.go | 30 +- vendor/vendor.json | 648 +++--- 14 files changed, 2903 insertions(+), 668 deletions(-) diff --git a/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md index e3ea7f93e4..ebacd5ba40 100644 --- a/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go/CHANGELOG.md @@ -1,3 +1,35 @@ +Release v1.7.9 (2017-03-13) +=== + +Service Client Updates +--- +* `service/devicefarm`: Updates service API, documentation, paginators, and examples + * Network shaping allows users to simulate network connections and conditions while testing their Android, iOS, and web apps with AWS Device Farm. +* `service/cloudwatchevents`: Updates service API, documentation, and examples + +SDK Enhancement +=== +* `aws/session`: Add support for side loaded CA bundles (#1117) + * Adds supports for side loading Certificate Authority bundle files to the SDK using AWS_CA_BUNDLE environment variable or CustomCABundle session option. +* `service/s3/s3crypto`: Add support for AES/CBC/PKCS5Padding (#1124) + +SDK Bug +=== +* `service/rds`: Fixing issue when not providing `SourceRegion` on cross +region operations (#1127) +* `service/rds`: Enables cross region for `CopyDBClusterSnapshot` and +`CreateDBCluster` (#1128) + +Release v1.7.8 (2017-03-10) +=== + +Service Client Updates +--- +* `service/codedeploy`: Updates service paginators + * Add paginators for Codedeploy +* `service/emr`: Updates service API, documentation, and paginators + * This release includes support for instance fleets in Amazon EMR. + Release v1.7.7 (2017-03-09) === diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 3ed517b8cb..5f0f6dd37a 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -854,6 +854,7 @@ var awsPartition = partition{ "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, @@ -1454,6 +1455,7 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, + "eu-central-1": endpoint{}, "eu-west-1": endpoint{}, "us-east-1": endpoint{}, "us-east-2": endpoint{}, diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go index 9975e320ce..660d9bef98 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go @@ -96,7 +96,7 @@ handler logs every request and its payload made by a service client: // Create a session, and add additional handlers for all service // clients created with the Session to inherit. Adds logging handler. sess := session.Must(session.NewSession()) - + sess.Handlers.Send.PushFront(func(r *request.Request) { // Log every request made and its payload logger.Println("Request: %s/%s, Payload: %s", @@ -169,8 +169,8 @@ session option must be set to SharedConfigEnable, or AWS_SDK_LOAD_CONFIG environment variable set. The shared configuration instructs the SDK to assume an IAM role with MFA -when the mfa_serial configuration field is set in the shared config -(~/.aws/config) or shared credentials (~/.aws/credentials) file. +when the mfa_serial configuration field is set in the shared config +(~/.aws/config) or shared credentials (~/.aws/credentials) file. If mfa_serial is set in the configuration, the SDK will assume the role, and the AssumeRoleTokenProvider session option is not set an an error will @@ -251,6 +251,24 @@ $HOME/.aws/config on Linux/Unix based systems, and AWS_CONFIG_FILE=$HOME/my_shared_config +Path to a custom Credentials Authority (CA) bundle PEM file that the SDK +will use instead of the default system's root CA bundle. Use this only +if you want to replace the CA bundle the SDK uses for TLS requests. + AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle + +Enabling this option will attempt to merge the Transport into the SDK's HTTP +client. If the client's Transport is not a http.Transport an error will be +returned. If the Transport's TLS config is set this option will cause the SDK +to overwrite the Transport's TLS config's RootCAs value. If the CA bundle file +contains multiple certificates all of them will be loaded. + +The Session option CustomCABundle is also available when creating sessions +to also enable this feature. CustomCABundle session option field has priority +over the AWS_CA_BUNDLE environment variable, and will be used if both are set. + +Setting a custom HTTPClient in the aws.Config options will override this setting. +To use this option and custom HTTP client, the HTTP client needs to be provided +when creating the session. Not the service client. */ package session diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go index d2f0c84481..e6278a782c 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go @@ -75,6 +75,24 @@ type envConfig struct { // // AWS_CONFIG_FILE=$HOME/my_shared_config SharedConfigFile string + + // Sets the path to a custom Credentials Authroity (CA) Bundle PEM file + // that the SDK will use instead of the the system's root CA bundle. + // Only use this if you want to configure the SDK to use a custom set + // of CAs. + // + // Enabling this option will attempt to merge the Transport + // into the SDK's HTTP client. If the client's Transport is + // not a http.Transport an error will be returned. If the + // Transport's TLS config is set this option will cause the + // SDK to overwrite the Transport's TLS config's RootCAs value. + // + // Setting a custom HTTPClient in the aws.Config options will override this setting. + // To use this option and custom HTTP client, the HTTP client needs to be provided + // when creating the session. Not the service client. + // + // AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle + CustomCABundle string } var ( @@ -150,6 +168,8 @@ func envConfigLoad(enableSharedConfig bool) envConfig { cfg.SharedCredentialsFile = sharedCredentialsFilename() cfg.SharedConfigFile = sharedConfigFilename() + cfg.CustomCABundle = os.Getenv("AWS_CA_BUNDLE") + return cfg } diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go index 42ab3632e2..96c740d00f 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go @@ -1,7 +1,13 @@ package session import ( + "crypto/tls" + "crypto/x509" "fmt" + "io" + "io/ioutil" + "net/http" + "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" @@ -92,9 +98,10 @@ func New(cfgs ...*aws.Config) *Session { // control through code how the Session will be created. Such as specifying the // config profile, and controlling if shared config is enabled or not. func NewSession(cfgs ...*aws.Config) (*Session, error) { - envCfg := loadEnvConfig() + opts := Options{} + opts.Config.MergeIn(cfgs...) - return newSession(Options{}, envCfg, cfgs...) + return NewSessionWithOptions(opts) } // SharedConfigState provides the ability to optionally override the state @@ -167,6 +174,21 @@ type Options struct { // This field is only used if the shared configuration is enabled, and // the config enables assume role wit MFA via the mfa_serial field. AssumeRoleTokenProvider func() (string, error) + + // Reader for a custom Credentials Authority (CA) bundle in PEM format that + // the SDK will use instead of the default system's root CA bundle. Use this + // only if you want to replace the CA bundle the SDK uses for TLS requests. + // + // Enabling this option will attempt to merge the Transport into the SDK's HTTP + // client. If the client's Transport is not a http.Transport an error will be + // returned. If the Transport's TLS config is set this option will cause the SDK + // to overwrite the Transport's TLS config's RootCAs value. If the CA + // bundle reader contains multiple certificates all of them will be loaded. + // + // The Session option CustomCABundle is also available when creating sessions + // to also enable this feature. CustomCABundle session option field has priority + // over the AWS_CA_BUNDLE environment variable, and will be used if both are set. + CustomCABundle io.Reader } // NewSessionWithOptions returns a new Session created from SDK defaults, config files, @@ -217,6 +239,17 @@ func NewSessionWithOptions(opts Options) (*Session, error) { envCfg.EnableSharedConfig = true } + // Only use AWS_CA_BUNDLE if session option is not provided. + if len(envCfg.CustomCABundle) != 0 && opts.CustomCABundle == nil { + f, err := os.Open(envCfg.CustomCABundle) + if err != nil { + return nil, awserr.New("LoadCustomCABundleError", + "failed to open custom CA bundle PEM file", err) + } + defer f.Close() + opts.CustomCABundle = f + } + return newSession(opts, envCfg, &opts.Config) } @@ -297,9 +330,61 @@ func newSession(opts Options, envCfg envConfig, cfgs ...*aws.Config) (*Session, initHandlers(s) + // Setup HTTP client with custom cert bundle if enabled + if opts.CustomCABundle != nil { + if err := loadCustomCABundle(s, opts.CustomCABundle); err != nil { + return nil, err + } + } + return s, nil } +func loadCustomCABundle(s *Session, bundle io.Reader) error { + var t *http.Transport + switch v := s.Config.HTTPClient.Transport.(type) { + case *http.Transport: + t = v + default: + if s.Config.HTTPClient.Transport != nil { + return awserr.New("LoadCustomCABundleError", + "unable to load custom CA bundle, HTTPClient's transport unsupported type", nil) + } + } + if t == nil { + t = &http.Transport{} + } + + p, err := loadCertPool(bundle) + if err != nil { + return err + } + if t.TLSClientConfig == nil { + t.TLSClientConfig = &tls.Config{} + } + t.TLSClientConfig.RootCAs = p + + s.Config.HTTPClient.Transport = t + + return nil +} + +func loadCertPool(r io.Reader) (*x509.CertPool, error) { + b, err := ioutil.ReadAll(r) + if err != nil { + return nil, awserr.New("LoadCustomCABundleError", + "failed to read custom CA bundle PEM file", err) + } + + p := x509.NewCertPool() + if !p.AppendCertsFromPEM(b) { + return nil, awserr.New("LoadCustomCABundleError", + "failed to load custom CA bundle PEM file", err) + } + + return p, nil +} + func mergeConfigSrcs(cfg, userCfg *aws.Config, envCfg envConfig, sharedCfg sharedConfig, handlers request.Handlers, sessOpts Options) error { // Merge in user provided configuration cfg.MergeIn(userCfg) diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index a2b1e690cb..438506bf48 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.7.7" +const SDKVersion = "1.7.9" diff --git a/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/api.go b/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/api.go index 74f38b0939..d626b354fe 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/api.go @@ -60,12 +60,13 @@ func (c *CloudWatchEvents) DeleteRuleRequest(input *DeleteRuleInput) (req *reque // DeleteRule API operation for Amazon CloudWatch Events. // -// Deletes a rule. You must remove all targets from a rule using RemoveTargets -// before you can delete the rule. +// Deletes the specified rule. // -// Note: When you delete a rule, incoming events might still continue to match -// to the deleted rule. Please allow a short period of time for changes to take -// effect. +// You must remove all targets from a rule using RemoveTargets before you can +// delete the rule. +// +// When you delete a rule, incoming events might continue to match to the deleted +// rule. Please allow a short period of time for changes to take effect. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -76,7 +77,7 @@ func (c *CloudWatchEvents) DeleteRuleRequest(input *DeleteRuleInput) (req *reque // // Returned Error Codes: // * ErrCodeConcurrentModificationException "ConcurrentModificationException" -// This exception occurs if there is concurrent modification on rule or target. +// There is concurrent modification on a rule or target. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -133,7 +134,7 @@ func (c *CloudWatchEvents) DescribeRuleRequest(input *DescribeRuleInput) (req *r // DescribeRule API operation for Amazon CloudWatch Events. // -// Describes the details of the specified rule. +// Describes the specified rule. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -203,12 +204,11 @@ func (c *CloudWatchEvents) DisableRuleRequest(input *DisableRuleInput) (req *req // DisableRule API operation for Amazon CloudWatch Events. // -// Disables a rule. A disabled rule won't match any events, and won't self-trigger -// if it has a schedule expression. +// Disables the specified rule. A disabled rule won't match any events, and +// won't self-trigger if it has a schedule expression. // -// Note: When you disable a rule, incoming events might still continue to match -// to the disabled rule. Please allow a short period of time for changes to -// take effect. +// When you disable a rule, incoming events might continue to match to the disabled +// rule. Please allow a short period of time for changes to take effect. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -222,7 +222,7 @@ func (c *CloudWatchEvents) DisableRuleRequest(input *DisableRuleInput) (req *req // The rule does not exist. // // * ErrCodeConcurrentModificationException "ConcurrentModificationException" -// This exception occurs if there is concurrent modification on rule or target. +// There is concurrent modification on a rule or target. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -281,11 +281,11 @@ func (c *CloudWatchEvents) EnableRuleRequest(input *EnableRuleInput) (req *reque // EnableRule API operation for Amazon CloudWatch Events. // -// Enables a rule. If the rule does not exist, the operation fails. +// Enables the specified rule. If the rule does not exist, the operation fails. // -// Note: When you enable a rule, incoming events might not immediately start -// matching to a newly enabled rule. Please allow a short period of time for -// changes to take effect. +// When you enable a rule, incoming events might not immediately start matching +// to a newly enabled rule. Please allow a short period of time for changes +// to take effect. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -299,7 +299,7 @@ func (c *CloudWatchEvents) EnableRuleRequest(input *EnableRuleInput) (req *reque // The rule does not exist. // // * ErrCodeConcurrentModificationException "ConcurrentModificationException" -// This exception occurs if there is concurrent modification on rule or target. +// There is concurrent modification on a rule or target. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -356,12 +356,8 @@ func (c *CloudWatchEvents) ListRuleNamesByTargetRequest(input *ListRuleNamesByTa // ListRuleNamesByTarget API operation for Amazon CloudWatch Events. // -// Lists the names of the rules that the given target is put to. You can see -// which of the rules in Amazon CloudWatch Events can invoke a specific target -// in your account. If you have more rules in your account than the given limit, -// the results will be paginated. In that case, use the next token returned -// in the response and repeat ListRulesByTarget until the NextToken in the response -// is returned as null. +// Lists the rules for the specified target. You can see which of the rules +// in Amazon CloudWatch Events can invoke a specific target in your account. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -426,11 +422,8 @@ func (c *CloudWatchEvents) ListRulesRequest(input *ListRulesInput) (req *request // ListRules API operation for Amazon CloudWatch Events. // -// Lists the Amazon CloudWatch Events rules in your account. You can either -// list all the rules or you can provide a prefix to match to the rule names. -// If you have more rules in your account than the given limit, the results -// will be paginated. In that case, use the next token returned in the response -// and repeat ListRules until the NextToken in the response is returned as null. +// Lists your Amazon CloudWatch Events rules. You can either list all the rules +// or you can provide a prefix to match to the rule names. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -495,7 +488,7 @@ func (c *CloudWatchEvents) ListTargetsByRuleRequest(input *ListTargetsByRuleInpu // ListTargetsByRule API operation for Amazon CloudWatch Events. // -// Lists of targets assigned to the rule. +// Lists the targets assigned to the specified rule. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -629,20 +622,20 @@ func (c *CloudWatchEvents) PutRuleRequest(input *PutRuleInput) (req *request.Req // PutRule API operation for Amazon CloudWatch Events. // -// Creates or updates a rule. Rules are enabled by default, or based on value -// of the State parameter. You can disable a rule using DisableRule. +// Creates or updates the specified rule. Rules are enabled by default, or based +// on value of the state. You can disable a rule using DisableRule. // -// Note: When you create or update a rule, incoming events might not immediately -// start matching to new or updated rules. Please allow a short period of time -// for changes to take effect. +// When you create or update a rule, incoming events might not immediately start +// matching to new or updated rules. Please allow a short period of time for +// changes to take effect. // // A rule must contain at least an EventPattern or ScheduleExpression. Rules // with EventPatterns are triggered when a matching event is observed. Rules // with ScheduleExpressions self-trigger based on the given schedule. A rule // can have both an EventPattern and a ScheduleExpression, in which case the -// rule will trigger on matching events as well as on a schedule. +// rule triggers on matching events as well as on a schedule. // -// Note: Most services in AWS treat : or / as the same character in Amazon Resource +// Most services in AWS treat : or / as the same character in Amazon Resource // Names (ARNs). However, CloudWatch Events uses an exact match in event patterns // and rules. Be sure to use the correct ARN characters when creating event // patterns so that they match the ARN syntax in the event you want to match. @@ -656,14 +649,13 @@ func (c *CloudWatchEvents) PutRuleRequest(input *PutRuleInput) (req *request.Req // // Returned Error Codes: // * ErrCodeInvalidEventPatternException "InvalidEventPatternException" -// The event pattern is invalid. +// The event pattern is not valid. // // * ErrCodeLimitExceededException "LimitExceededException" -// This exception occurs if you try to create more rules or add more targets -// to a rule than allowed by default. +// You tried to create more rules or add more targets to a rule than is allowed. // // * ErrCodeConcurrentModificationException "ConcurrentModificationException" -// This exception occurs if there is concurrent modification on rule or target. +// There is concurrent modification on a rule or target. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -720,30 +712,49 @@ func (c *CloudWatchEvents) PutTargetsRequest(input *PutTargetsInput) (req *reque // PutTargets API operation for Amazon CloudWatch Events. // -// Adds target(s) to a rule. Targets are the resources that can be invoked when -// a rule is triggered. For example, AWS Lambda functions, Amazon Kinesis streams, -// and built-in targets. Updates the target(s) if they are already associated -// with the role. In other words, if there is already a target with the given -// target ID, then the target associated with that ID is updated. +// Adds the specified targets to the specified rule, or updates the targets +// if they are already associated with the rule. // -// In order to be able to make API calls against the resources you own, Amazon -// CloudWatch Events needs the appropriate permissions. For AWS Lambda and Amazon -// SNS resources, CloudWatch Events relies on resource-based policies. For Amazon -// Kinesis streams, CloudWatch Events relies on IAM roles. For more information, -// see Permissions for Sending Events to Targets (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventsTargetPermissions.html) -// in the Amazon CloudWatch Developer Guide. +// Targets are the resources that are invoked when a rule is triggered. Example +// targets include EC2 instances, AWS Lambda functions, Amazon Kinesis streams, +// Amazon ECS tasks, AWS Step Functions state machines, and built-in targets. +// Note that creating rules with built-in targets is supported only in the AWS +// Management Console. // -// Input and InputPath are mutually-exclusive and optional parameters of a target. -// When a rule is triggered due to a matched event, if for a target: +// For some target types, PutTargets provides target-specific parameters. If +// the target is an Amazon Kinesis stream, you can optionally specify which +// shard the event goes to by using the KinesisParameters argument. To invoke +// a command on multiple EC2 instances with one rule, you can use the RunCommandParameters +// field. // -// * Neither Input nor InputPath is specified, then the entire event is passed -// to the target in JSON form. -// * InputPath is specified in the form of JSONPath (e.g. $.detail), then -// only the part of the event specified in the path is passed to the target -// (e.g. only the detail part of the event is passed). -// * Input is specified in the form of a valid JSON, then the matched event +// To be able to make API calls against the resources that you own, Amazon CloudWatch +// Events needs the appropriate permissions. For AWS Lambda and Amazon SNS resources, +// CloudWatch Events relies on resource-based policies. For EC2 instances, Amazon +// Kinesis streams, and AWS Step Functions state machines, CloudWatch Events +// relies on IAM roles that you specify in the RoleARN argument in PutTarget. +// For more information, see Authentication and Access Control (http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/auth-and-access-control-cwe.html) +// in the Amazon CloudWatch Events User Guide. +// +// Input, InputPath and InputTransformer are mutually exclusive and optional +// parameters of a target. When a rule is triggered due to a matched event: +// +// * If none of the following arguments are specified for a target, then +// the entire event is passed to the target in JSON form (unless the target +// is Amazon EC2 Run Command or Amazon ECS task, in which case nothing from +// the event is passed to the target). +// +// * If Input is specified in the form of valid JSON, then the matched event // is overridden with this constant. -// Note: When you add targets to a rule, when the associated rule triggers, +// +// * If InputPath is specified in the form of JSONPath (for example, $.detail), +// then only the part of the event specified in the path is passed to the +// target (for example, only the detail part of the event is passed). +// +// * If InputTransformer is specified, then one or more specified JSONPaths +// are extracted from the event and used as values in a template that you +// specify as the input to the target. +// +// When you add targets to a rule and the associated rule triggers soon after, // new or updated targets might not be immediately invoked. Please allow a short // period of time for changes to take effect. // @@ -759,11 +770,10 @@ func (c *CloudWatchEvents) PutTargetsRequest(input *PutTargetsInput) (req *reque // The rule does not exist. // // * ErrCodeConcurrentModificationException "ConcurrentModificationException" -// This exception occurs if there is concurrent modification on rule or target. +// There is concurrent modification on a rule or target. // // * ErrCodeLimitExceededException "LimitExceededException" -// This exception occurs if you try to create more rules or add more targets -// to a rule than allowed by default. +// You tried to create more rules or add more targets to a rule than is allowed. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -820,12 +830,12 @@ func (c *CloudWatchEvents) RemoveTargetsRequest(input *RemoveTargetsInput) (req // RemoveTargets API operation for Amazon CloudWatch Events. // -// Removes target(s) from a rule so that when the rule is triggered, those targets -// will no longer be invoked. +// Removes the specified targets from the specified rule. When the rule is triggered, +// those targets are no longer be invoked. // -// Note: When you remove a target, when the associated rule triggers, removed -// targets might still continue to be invoked. Please allow a short period of -// time for changes to take effect. +// When you remove a target, when the associated rule triggers, removed targets +// might continue to be invoked. Please allow a short period of time for changes +// to take effect. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -839,7 +849,7 @@ func (c *CloudWatchEvents) RemoveTargetsRequest(input *RemoveTargetsInput) (req // The rule does not exist. // // * ErrCodeConcurrentModificationException "ConcurrentModificationException" -// This exception occurs if there is concurrent modification on rule or target. +// There is concurrent modification on a rule or target. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -896,9 +906,9 @@ func (c *CloudWatchEvents) TestEventPatternRequest(input *TestEventPatternInput) // TestEventPattern API operation for Amazon CloudWatch Events. // -// Tests whether an event pattern matches the provided event. +// Tests whether the specified event pattern matches the provided event. // -// Note: Most services in AWS treat : or / as the same character in Amazon Resource +// Most services in AWS treat : or / as the same character in Amazon Resource // Names (ARNs). However, CloudWatch Events uses an exact match in event patterns // and rules. Be sure to use the correct ARN characters when creating event // patterns so that they match the ARN syntax in the event you want to match. @@ -912,7 +922,7 @@ func (c *CloudWatchEvents) TestEventPatternRequest(input *TestEventPatternInput) // // Returned Error Codes: // * ErrCodeInvalidEventPatternException "InvalidEventPatternException" -// The event pattern is invalid. +// The event pattern is not valid. // // * ErrCodeInternalException "InternalException" // This exception occurs due to unexpected causes. @@ -924,12 +934,11 @@ func (c *CloudWatchEvents) TestEventPattern(input *TestEventPatternInput) (*Test return out, err } -// Container for the parameters to the DeleteRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/DeleteRuleRequest type DeleteRuleInput struct { _ struct{} `type:"structure"` - // The name of the rule to be deleted. + // The name of the rule. // // Name is a required field Name *string `min:"1" type:"string" required:"true"` @@ -982,12 +991,11 @@ func (s DeleteRuleOutput) GoString() string { return s.String() } -// Container for the parameters to the DescribeRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/DescribeRuleRequest type DescribeRuleInput struct { _ struct{} `type:"structure"` - // The name of the rule you want to describe details for. + // The name of the rule. // // Name is a required field Name *string `min:"1" type:"string" required:"true"` @@ -1025,21 +1033,20 @@ func (s *DescribeRuleInput) SetName(v string) *DescribeRuleInput { return s } -// The result of the DescribeRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/DescribeRuleResponse type DescribeRuleOutput struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) associated with the rule. + // The Amazon Resource Name (ARN) of the rule. Arn *string `min:"1" type:"string"` - // The rule's description. + // The description of the rule. Description *string `type:"string"` // The event pattern. EventPattern *string `type:"string"` - // The rule's name. + // The name of the rule. Name *string `min:"1" type:"string"` // The Amazon Resource Name (ARN) of the IAM role associated with the rule. @@ -1104,12 +1111,11 @@ func (s *DescribeRuleOutput) SetState(v string) *DescribeRuleOutput { return s } -// Container for the parameters to the DisableRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/DisableRuleRequest type DisableRuleInput struct { _ struct{} `type:"structure"` - // The name of the rule you want to disable. + // The name of the rule. // // Name is a required field Name *string `min:"1" type:"string" required:"true"` @@ -1162,12 +1168,68 @@ func (s DisableRuleOutput) GoString() string { return s.String() } -// Container for the parameters to the EnableRule operation. +// The custom parameters to be used when the target is an Amazon ECS cluster. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/EcsParameters +type EcsParameters struct { + _ struct{} `type:"structure"` + + // The number of tasks to create based on the TaskDefinition. The default is + // one. + TaskCount *int64 `min:"1" type:"integer"` + + // The ARN of the task definition to use if the event target is an Amazon ECS + // cluster. + // + // TaskDefinitionArn is a required field + TaskDefinitionArn *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s EcsParameters) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s EcsParameters) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *EcsParameters) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "EcsParameters"} + if s.TaskCount != nil && *s.TaskCount < 1 { + invalidParams.Add(request.NewErrParamMinValue("TaskCount", 1)) + } + if s.TaskDefinitionArn == nil { + invalidParams.Add(request.NewErrParamRequired("TaskDefinitionArn")) + } + if s.TaskDefinitionArn != nil && len(*s.TaskDefinitionArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TaskDefinitionArn", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetTaskCount sets the TaskCount field's value. +func (s *EcsParameters) SetTaskCount(v int64) *EcsParameters { + s.TaskCount = &v + return s +} + +// SetTaskDefinitionArn sets the TaskDefinitionArn field's value. +func (s *EcsParameters) SetTaskDefinitionArn(v string) *EcsParameters { + s.TaskDefinitionArn = &v + return s +} + // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/EnableRuleRequest type EnableRuleInput struct { _ struct{} `type:"structure"` - // The name of the rule that you want to enable. + // The name of the rule. // // Name is a required field Name *string `min:"1" type:"string" required:"true"` @@ -1220,7 +1282,106 @@ func (s EnableRuleOutput) GoString() string { return s.String() } -// Container for the parameters to the ListRuleNamesByTarget operation. +// Contains the parameters needed for you to provide custom input to a target +// based on one or more pieces of data extracted from the event. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/InputTransformer +type InputTransformer struct { + _ struct{} `type:"structure"` + + // Map of JSON paths to be extracted from the event. These are key-value pairs, + // where each value is a JSON path. + InputPathsMap map[string]*string `type:"map"` + + // Input template where you can use the values of the keys from InputPathsMap + // to customize the data sent to the target. + // + // InputTemplate is a required field + InputTemplate *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s InputTransformer) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InputTransformer) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InputTransformer) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InputTransformer"} + if s.InputTemplate == nil { + invalidParams.Add(request.NewErrParamRequired("InputTemplate")) + } + if s.InputTemplate != nil && len(*s.InputTemplate) < 1 { + invalidParams.Add(request.NewErrParamMinLen("InputTemplate", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInputPathsMap sets the InputPathsMap field's value. +func (s *InputTransformer) SetInputPathsMap(v map[string]*string) *InputTransformer { + s.InputPathsMap = v + return s +} + +// SetInputTemplate sets the InputTemplate field's value. +func (s *InputTransformer) SetInputTemplate(v string) *InputTransformer { + s.InputTemplate = &v + return s +} + +// This object enables you to specify a JSON path to extract from the event +// and use as the partition key for the Amazon Kinesis stream, so that you can +// control the shard to which the event goes. If you do not include this parameter, +// the default is to use the eventId as the partition key. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/KinesisParameters +type KinesisParameters struct { + _ struct{} `type:"structure"` + + // The JSON path to be extracted from the event and used as the partition key. + // For more information, see Amazon Kinesis Streams Key Concepts (http://docs.aws.amazon.com/streams/latest/dev/key-concepts.html#partition-key) + // in the Amazon Kinesis Streams Developer Guide. + // + // PartitionKeyPath is a required field + PartitionKeyPath *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s KinesisParameters) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s KinesisParameters) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *KinesisParameters) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "KinesisParameters"} + if s.PartitionKeyPath == nil { + invalidParams.Add(request.NewErrParamRequired("PartitionKeyPath")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPartitionKeyPath sets the PartitionKeyPath field's value. +func (s *KinesisParameters) SetPartitionKeyPath(v string) *KinesisParameters { + s.PartitionKeyPath = &v + return s +} + // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/ListRuleNamesByTargetRequest type ListRuleNamesByTargetInput struct { _ struct{} `type:"structure"` @@ -1228,12 +1389,10 @@ type ListRuleNamesByTargetInput struct { // The maximum number of results to return. Limit *int64 `min:"1" type:"integer"` - // The token returned by a previous call to indicate that there is more data - // available. + // The token returned by a previous call to retrieve the next set of results. NextToken *string `min:"1" type:"string"` - // The Amazon Resource Name (ARN) of the target resource that you want to list - // the rules for. + // The Amazon Resource Name (ARN) of the target resource. // // TargetArn is a required field TargetArn *string `min:"1" type:"string" required:"true"` @@ -1289,15 +1448,15 @@ func (s *ListRuleNamesByTargetInput) SetTargetArn(v string) *ListRuleNamesByTarg return s } -// The result of the ListRuleNamesByTarget operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/ListRuleNamesByTargetResponse type ListRuleNamesByTargetOutput struct { _ struct{} `type:"structure"` - // Indicates that there are additional results to retrieve. + // Indicates whether there are additional results to retrieve. If there are + // no more results, the value is null. NextToken *string `min:"1" type:"string"` - // List of rules names that can invoke the given target. + // The names of the rules that can invoke the given target. RuleNames []*string `type:"list"` } @@ -1323,7 +1482,6 @@ func (s *ListRuleNamesByTargetOutput) SetRuleNames(v []*string) *ListRuleNamesBy return s } -// Container for the parameters to the ListRules operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/ListRulesRequest type ListRulesInput struct { _ struct{} `type:"structure"` @@ -1334,8 +1492,7 @@ type ListRulesInput struct { // The prefix matching the rule name. NamePrefix *string `min:"1" type:"string"` - // The token returned by a previous call to indicate that there is more data - // available. + // The token returned by a previous call to retrieve the next set of results. NextToken *string `min:"1" type:"string"` } @@ -1386,15 +1543,15 @@ func (s *ListRulesInput) SetNextToken(v string) *ListRulesInput { return s } -// The result of the ListRules operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/ListRulesResponse type ListRulesOutput struct { _ struct{} `type:"structure"` - // Indicates that there are additional results to retrieve. + // Indicates whether there are additional results to retrieve. If there are + // no more results, the value is null. NextToken *string `min:"1" type:"string"` - // List of rules matching the specified criteria. + // The rules that match the specified criteria. Rules []*Rule `type:"list"` } @@ -1420,7 +1577,6 @@ func (s *ListRulesOutput) SetRules(v []*Rule) *ListRulesOutput { return s } -// Container for the parameters to the ListTargetsByRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/ListTargetsByRuleRequest type ListTargetsByRuleInput struct { _ struct{} `type:"structure"` @@ -1428,11 +1584,10 @@ type ListTargetsByRuleInput struct { // The maximum number of results to return. Limit *int64 `min:"1" type:"integer"` - // The token returned by a previous call to indicate that there is more data - // available. + // The token returned by a previous call to retrieve the next set of results. NextToken *string `min:"1" type:"string"` - // The name of the rule whose targets you want to list. + // The name of the rule. // // Rule is a required field Rule *string `min:"1" type:"string" required:"true"` @@ -1488,16 +1643,16 @@ func (s *ListTargetsByRuleInput) SetRule(v string) *ListTargetsByRuleInput { return s } -// The result of the ListTargetsByRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/ListTargetsByRuleResponse type ListTargetsByRuleOutput struct { _ struct{} `type:"structure"` - // Indicates that there are additional results to retrieve. + // Indicates whether there are additional results to retrieve. If there are + // no more results, the value is null. NextToken *string `min:"1" type:"string"` - // Lists the targets assigned to the rule. - Targets []*Target `type:"list"` + // The targets assigned to the rule. + Targets []*Target `min:"1" type:"list"` } // String returns the string representation @@ -1522,7 +1677,6 @@ func (s *ListTargetsByRuleOutput) SetTargets(v []*Target) *ListTargetsByRuleOutp return s } -// Container for the parameters to the PutEvents operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutEventsRequest type PutEventsInput struct { _ struct{} `type:"structure"` @@ -1567,15 +1721,13 @@ func (s *PutEventsInput) SetEntries(v []*PutEventsRequestEntry) *PutEventsInput return s } -// The result of the PutEvents operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutEventsResponse type PutEventsOutput struct { _ struct{} `type:"structure"` - // A list of successfully and unsuccessfully ingested events results. If the - // ingestion was successful, the entry will have the event ID in it. If not, - // then the ErrorCode and ErrorMessage can be used to identify the problem with - // the entry. + // The successfully and unsuccessfully ingested events results. If the ingestion + // was successful, the entry has the event ID in it. Otherwise, you can use + // the error code and error message to identify the problem with the entry. Entries []*PutEventsResultEntry `type:"list"` // The number of failed entries. @@ -1604,13 +1756,13 @@ func (s *PutEventsOutput) SetFailedEntryCount(v int64) *PutEventsOutput { return s } -// Contains information about the event to be used in PutEvents. +// Represents an event to be submitted. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutEventsRequestEntry type PutEventsRequestEntry struct { _ struct{} `type:"structure"` // In the JSON sense, an object containing fields, which may also contain nested - // sub-objects. No constraints are imposed on its contents. + // subobjects. No constraints are imposed on its contents. Detail *string `type:"string"` // Free-form string used to decide what fields to expect in the event detail. @@ -1623,9 +1775,8 @@ type PutEventsRequestEntry struct { // The source of the event. Source *string `type:"string"` - // Timestamp of event, per RFC3339 (https://www.rfc-editor.org/rfc/rfc3339.txt). - // If no timestamp is provided, the timestamp of the PutEvents call will be - // used. + // The timestamp of the event, per RFC3339 (https://www.rfc-editor.org/rfc/rfc3339.txt). + // If no timestamp is provided, the timestamp of the PutEvents call is used. Time *time.Time `type:"timestamp" timestampFormat:"unix"` } @@ -1669,18 +1820,18 @@ func (s *PutEventsRequestEntry) SetTime(v time.Time) *PutEventsRequestEntry { return s } -// A PutEventsResult contains a list of PutEventsResultEntry. +// Represents an event that failed to be submitted. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutEventsResultEntry type PutEventsResultEntry struct { _ struct{} `type:"structure"` - // The error code representing why the event submission failed on this entry. + // The error code that indicates why the event submission failed. ErrorCode *string `type:"string"` - // The error message explaining why the event submission failed on this entry. + // The error message that explains why the event submission failed. ErrorMessage *string `type:"string"` - // The ID of the event submitted to Amazon CloudWatch Events. + // The ID of the event. EventId *string `type:"string"` } @@ -1712,7 +1863,6 @@ func (s *PutEventsResultEntry) SetEventId(v string) *PutEventsResultEntry { return s } -// Container for the parameters to the PutRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutRuleRequest type PutRuleInput struct { _ struct{} `type:"structure"` @@ -1803,12 +1953,11 @@ func (s *PutRuleInput) SetState(v string) *PutRuleInput { return s } -// The result of the PutRule operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutRuleResponse type PutRuleOutput struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) that identifies the rule. + // The Amazon Resource Name (ARN) of the rule. RuleArn *string `min:"1" type:"string"` } @@ -1828,20 +1977,19 @@ func (s *PutRuleOutput) SetRuleArn(v string) *PutRuleOutput { return s } -// Container for the parameters to the PutTargets operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutTargetsRequest type PutTargetsInput struct { _ struct{} `type:"structure"` - // The name of the rule you want to add targets to. + // The name of the rule. // // Rule is a required field Rule *string `min:"1" type:"string" required:"true"` - // List of targets you want to update or add to the rule. + // The targets to update or add to the rule. // // Targets is a required field - Targets []*Target `type:"list" required:"true"` + Targets []*Target `min:"1" type:"list" required:"true"` } // String returns the string representation @@ -1866,6 +2014,9 @@ func (s *PutTargetsInput) Validate() error { if s.Targets == nil { invalidParams.Add(request.NewErrParamRequired("Targets")) } + if s.Targets != nil && len(s.Targets) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Targets", 1)) + } if s.Targets != nil { for i, v := range s.Targets { if v == nil { @@ -1895,12 +2046,11 @@ func (s *PutTargetsInput) SetTargets(v []*Target) *PutTargetsInput { return s } -// The result of the PutTargets operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutTargetsResponse type PutTargetsOutput struct { _ struct{} `type:"structure"` - // An array of failed target entries. + // The failed target entries. FailedEntries []*PutTargetsResultEntry `type:"list"` // The number of failed entries. @@ -1929,18 +2079,18 @@ func (s *PutTargetsOutput) SetFailedEntryCount(v int64) *PutTargetsOutput { return s } -// A PutTargetsResult contains a list of PutTargetsResultEntry. +// Represents a target that failed to be added to a rule. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/PutTargetsResultEntry type PutTargetsResultEntry struct { _ struct{} `type:"structure"` - // The error code representing why the target submission failed on this entry. + // The error code that indicates why the target addition failed. ErrorCode *string `type:"string"` - // The error message explaining why the target submission failed on this entry. + // The error message that explains why the target addition failed. ErrorMessage *string `type:"string"` - // The ID of the target submitted to Amazon CloudWatch Events. + // The ID of the target. TargetId *string `min:"1" type:"string"` } @@ -1972,17 +2122,16 @@ func (s *PutTargetsResultEntry) SetTargetId(v string) *PutTargetsResultEntry { return s } -// Container for the parameters to the RemoveTargets operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/RemoveTargetsRequest type RemoveTargetsInput struct { _ struct{} `type:"structure"` - // The list of target IDs to remove from the rule. + // The IDs of the targets to remove from the rule. // // Ids is a required field Ids []*string `min:"1" type:"list" required:"true"` - // The name of the rule you want to remove targets from. + // The name of the rule. // // Rule is a required field Rule *string `min:"1" type:"string" required:"true"` @@ -2032,12 +2181,11 @@ func (s *RemoveTargetsInput) SetRule(v string) *RemoveTargetsInput { return s } -// The result of the RemoveTargets operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/RemoveTargetsResponse type RemoveTargetsOutput struct { _ struct{} `type:"structure"` - // An array of failed target entries. + // The failed target entries. FailedEntries []*RemoveTargetsResultEntry `type:"list"` // The number of failed entries. @@ -2066,19 +2214,18 @@ func (s *RemoveTargetsOutput) SetFailedEntryCount(v int64) *RemoveTargetsOutput return s } -// The ID of the target requested to be removed from the rule by Amazon CloudWatch -// Events. +// Represents a target that failed to be removed from a rule. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/RemoveTargetsResultEntry type RemoveTargetsResultEntry struct { _ struct{} `type:"structure"` - // The error code representing why the target removal failed on this entry. + // The error code that indicates why the target removal failed. ErrorCode *string `type:"string"` - // The error message explaining why the target removal failed on this entry. + // The error message that explains why the target removal failed. ErrorMessage *string `type:"string"` - // The ID of the target requested to be removed by Amazon CloudWatch Events. + // The ID of the target. TargetId *string `min:"1" type:"string"` } @@ -2110,8 +2257,7 @@ func (s *RemoveTargetsResultEntry) SetTargetId(v string) *RemoveTargetsResultEnt return s } -// Contains information about a rule in Amazon CloudWatch Events. A ListRulesResult -// contains a list of Rules. +// Contains information about a rule in Amazon CloudWatch Events. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/Rule type Rule struct { _ struct{} `type:"structure"` @@ -2125,17 +2271,16 @@ type Rule struct { // The event pattern of the rule. EventPattern *string `type:"string"` - // The rule's name. + // The name of the rule. Name *string `min:"1" type:"string"` - // The Amazon Resource Name (ARN) associated with the role that is used for - // target invocation. + // The Amazon Resource Name (ARN) of the role that is used for target invocation. RoleArn *string `min:"1" type:"string"` // The scheduling expression. For example, "cron(0 20 * * ? *)", "rate(5 minutes)". ScheduleExpression *string `type:"string"` - // The rule's state. + // The state of the rule. State *string `type:"string" enum:"RuleState"` } @@ -2191,41 +2336,175 @@ func (s *Rule) SetState(v string) *Rule { return s } -// Targets are the resources that can be invoked when a rule is triggered. For -// example, AWS Lambda functions, Amazon Kinesis streams, and built-in targets. -// -// Input and InputPath are mutually-exclusive and optional parameters of a target. -// When a rule is triggered due to a matched event, if for a target: -// -// * Neither Input nor InputPath is specified, then the entire event is passed -// to the target in JSON form. -// * InputPath is specified in the form of JSONPath (e.g. $.detail), then -// only the part of the event specified in the path is passed to the target -// (e.g. only the detail part of the event is passed). -// * Input is specified in the form of a valid JSON, then the matched event -// is overridden with this constant. +// This parameter contains the criteria (either InstanceIds or a tag) used to +// specify which EC2 instances are to be sent the command. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/RunCommandParameters +type RunCommandParameters struct { + _ struct{} `type:"structure"` + + // Currently, we support including only one RunCommandTarget block, which specifies + // either an array of InstanceIds or a tag. + // + // RunCommandTargets is a required field + RunCommandTargets []*RunCommandTarget `min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s RunCommandParameters) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RunCommandParameters) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RunCommandParameters) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RunCommandParameters"} + if s.RunCommandTargets == nil { + invalidParams.Add(request.NewErrParamRequired("RunCommandTargets")) + } + if s.RunCommandTargets != nil && len(s.RunCommandTargets) < 1 { + invalidParams.Add(request.NewErrParamMinLen("RunCommandTargets", 1)) + } + if s.RunCommandTargets != nil { + for i, v := range s.RunCommandTargets { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RunCommandTargets", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRunCommandTargets sets the RunCommandTargets field's value. +func (s *RunCommandParameters) SetRunCommandTargets(v []*RunCommandTarget) *RunCommandParameters { + s.RunCommandTargets = v + return s +} + +// Information about the EC2 instances that are to be sent the command, specified +// as key-value pairs. Each RunCommandTarget block can include only one key, +// but this key may specify multiple values. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/RunCommandTarget +type RunCommandTarget struct { + _ struct{} `type:"structure"` + + // Can be either tag:tag-key or InstanceIds. + // + // Key is a required field + Key *string `min:"1" type:"string" required:"true"` + + // If Key is tag:tag-key, Values is a list of tag values. If Key is InstanceIds, + // Values is a list of Amazon EC2 instance IDs. + // + // Values is a required field + Values []*string `min:"1" type:"list" required:"true"` +} + +// String returns the string representation +func (s RunCommandTarget) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RunCommandTarget) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RunCommandTarget) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RunCommandTarget"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Key != nil && len(*s.Key) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Key", 1)) + } + if s.Values == nil { + invalidParams.Add(request.NewErrParamRequired("Values")) + } + if s.Values != nil && len(s.Values) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Values", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *RunCommandTarget) SetKey(v string) *RunCommandTarget { + s.Key = &v + return s +} + +// SetValues sets the Values field's value. +func (s *RunCommandTarget) SetValues(v []*string) *RunCommandTarget { + s.Values = v + return s +} + +// Targets are the resources to be invoked when a rule is triggered. Target +// types include EC2 instances, AWS Lambda functions, Amazon Kinesis streams, +// Amazon ECS tasks, AWS Step Functions state machines, Run Command, and built-in +// targets. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/Target type Target struct { _ struct{} `type:"structure"` - // The Amazon Resource Name (ARN) associated of the target. + // The Amazon Resource Name (ARN) of the target. // // Arn is a required field Arn *string `min:"1" type:"string" required:"true"` - // The unique target assignment ID. + // Contains the Amazon ECS task definition and task count to be used, if the + // event target is an Amazon ECS task. For more information about Amazon ECS + // tasks, see Task Definitions (http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html) + // in the Amazon EC2 Container Service Developer Guide. + EcsParameters *EcsParameters `type:"structure"` + + // The ID of the target. // // Id is a required field Id *string `min:"1" type:"string" required:"true"` - // Valid JSON text passed to the target. For more information about JSON text, - // see The JavaScript Object Notation (JSON) Data Interchange Format (http://www.rfc-editor.org/rfc/rfc7159.txt). + // Valid JSON text passed to the target. In this case, nothing from the event + // itself is passed to the target. For more information, see The JavaScript + // Object Notation (JSON) Data Interchange Format (http://www.rfc-editor.org/rfc/rfc7159.txt). Input *string `type:"string"` // The value of the JSONPath that is used for extracting part of the matched // event when passing it to the target. For more information about JSON paths, // see JSONPath (http://goessner.net/articles/JsonPath/). InputPath *string `type:"string"` + + // Settings to enable you to provide custom input to a target based on certain + // event data. You can extract one or more key-value pairs from the event and + // then use that data to send customized input to the target. + InputTransformer *InputTransformer `type:"structure"` + + // The custom parameter you can use to control shard assignment, when the target + // is an Amazon Kinesis stream. If you do not include this parameter, the default + // is to use the eventId as the partition key. + KinesisParameters *KinesisParameters `type:"structure"` + + // The Amazon Resource Name (ARN) of the IAM role to be used for this target + // when the rule is triggered. If one rule triggers multiple targets, you can + // use a different IAM role for each target. + RoleArn *string `min:"1" type:"string"` + + // Parameters used when you are using the rule to invoke Amazon EC2 Run Command. + RunCommandParameters *RunCommandParameters `type:"structure"` } // String returns the string representation @@ -2253,6 +2532,29 @@ func (s *Target) Validate() error { if s.Id != nil && len(*s.Id) < 1 { invalidParams.Add(request.NewErrParamMinLen("Id", 1)) } + if s.RoleArn != nil && len(*s.RoleArn) < 1 { + invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1)) + } + if s.EcsParameters != nil { + if err := s.EcsParameters.Validate(); err != nil { + invalidParams.AddNested("EcsParameters", err.(request.ErrInvalidParams)) + } + } + if s.InputTransformer != nil { + if err := s.InputTransformer.Validate(); err != nil { + invalidParams.AddNested("InputTransformer", err.(request.ErrInvalidParams)) + } + } + if s.KinesisParameters != nil { + if err := s.KinesisParameters.Validate(); err != nil { + invalidParams.AddNested("KinesisParameters", err.(request.ErrInvalidParams)) + } + } + if s.RunCommandParameters != nil { + if err := s.RunCommandParameters.Validate(); err != nil { + invalidParams.AddNested("RunCommandParameters", err.(request.ErrInvalidParams)) + } + } if invalidParams.Len() > 0 { return invalidParams @@ -2266,6 +2568,12 @@ func (s *Target) SetArn(v string) *Target { return s } +// SetEcsParameters sets the EcsParameters field's value. +func (s *Target) SetEcsParameters(v *EcsParameters) *Target { + s.EcsParameters = v + return s +} + // SetId sets the Id field's value. func (s *Target) SetId(v string) *Target { s.Id = &v @@ -2284,17 +2592,40 @@ func (s *Target) SetInputPath(v string) *Target { return s } -// Container for the parameters to the TestEventPattern operation. +// SetInputTransformer sets the InputTransformer field's value. +func (s *Target) SetInputTransformer(v *InputTransformer) *Target { + s.InputTransformer = v + return s +} + +// SetKinesisParameters sets the KinesisParameters field's value. +func (s *Target) SetKinesisParameters(v *KinesisParameters) *Target { + s.KinesisParameters = v + return s +} + +// SetRoleArn sets the RoleArn field's value. +func (s *Target) SetRoleArn(v string) *Target { + s.RoleArn = &v + return s +} + +// SetRunCommandParameters sets the RunCommandParameters field's value. +func (s *Target) SetRunCommandParameters(v *RunCommandParameters) *Target { + s.RunCommandParameters = v + return s +} + // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/TestEventPatternRequest type TestEventPatternInput struct { _ struct{} `type:"structure"` - // The event in the JSON format to test against the event pattern. + // The event, in JSON format, to test against the event pattern. // // Event is a required field Event *string `type:"string" required:"true"` - // The event pattern you want to test. + // The event pattern. // // EventPattern is a required field EventPattern *string `type:"string" required:"true"` @@ -2338,7 +2669,6 @@ func (s *TestEventPatternInput) SetEventPattern(v string) *TestEventPatternInput return s } -// The result of the TestEventPattern operation. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07/TestEventPatternResponse type TestEventPatternOutput struct { _ struct{} `type:"structure"` diff --git a/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/errors.go b/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/errors.go index f0d17b88d5..fe9ecb8f8c 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/errors.go +++ b/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/errors.go @@ -7,7 +7,7 @@ const ( // ErrCodeConcurrentModificationException for service response error code // "ConcurrentModificationException". // - // This exception occurs if there is concurrent modification on rule or target. + // There is concurrent modification on a rule or target. ErrCodeConcurrentModificationException = "ConcurrentModificationException" // ErrCodeInternalException for service response error code @@ -19,14 +19,13 @@ const ( // ErrCodeInvalidEventPatternException for service response error code // "InvalidEventPatternException". // - // The event pattern is invalid. + // The event pattern is not valid. ErrCodeInvalidEventPatternException = "InvalidEventPatternException" // ErrCodeLimitExceededException for service response error code // "LimitExceededException". // - // This exception occurs if you try to create more rules or add more targets - // to a rule than allowed by default. + // You tried to create more rules or add more targets to a rule than is allowed. ErrCodeLimitExceededException = "LimitExceededException" // ErrCodeResourceNotFoundException for service response error code diff --git a/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/service.go b/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/service.go index 1e814137b0..569d91ed8a 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/service.go +++ b/vendor/github.com/aws/aws-sdk-go/service/cloudwatchevents/service.go @@ -12,7 +12,7 @@ import ( ) // Amazon CloudWatch Events helps you to respond to state changes in your AWS -// resources. When your resources change state they automatically send events +// resources. When your resources change state, they automatically send events // into an event stream. You can create rules that match selected events in // the stream and route them to targets to take action. You can also use rules // to take action on a pre-determined schedule. For example, you can configure @@ -23,10 +23,12 @@ import ( // // * Direct specific API records from CloudTrail to an Amazon Kinesis stream // for detailed analysis of potential security or availability risks. +// // * Periodically invoke a built-in target to create a snapshot of an Amazon // EBS volume. -// For more information about Amazon CloudWatch Events features, see the Amazon -// CloudWatch Developer Guide (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide). +// +// For more information about the features of Amazon CloudWatch Events, see +// the Amazon CloudWatch Events User Guide (http://docs.aws.amazon.com/AmazonCloudWatch/latest/events). // The service client's operations are safe to be used concurrently. // It is not safe to mutate any of the client's properties though. // Please also see https://docs.aws.amazon.com/goto/WebAPI/events-2015-10-07 diff --git a/vendor/github.com/aws/aws-sdk-go/service/codedeploy/api.go b/vendor/github.com/aws/aws-sdk-go/service/codedeploy/api.go index 8b4986235d..1004323da9 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/codedeploy/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/codedeploy/api.go @@ -1921,6 +1921,12 @@ func (c *CodeDeploy) ListApplicationRevisionsRequest(input *ListApplicationRevis Name: opListApplicationRevisions, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "", + TruncationToken: "", + }, } if input == nil { @@ -1982,6 +1988,31 @@ func (c *CodeDeploy) ListApplicationRevisions(input *ListApplicationRevisionsInp return out, err } +// ListApplicationRevisionsPages iterates over the pages of a ListApplicationRevisions operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListApplicationRevisions method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListApplicationRevisions operation. +// pageNum := 0 +// err := client.ListApplicationRevisionsPages(params, +// func(page *ListApplicationRevisionsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CodeDeploy) ListApplicationRevisionsPages(input *ListApplicationRevisionsInput, fn func(p *ListApplicationRevisionsOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListApplicationRevisionsRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListApplicationRevisionsOutput), lastPage) + }) +} + const opListApplications = "ListApplications" // ListApplicationsRequest generates a "aws/request.Request" representing the @@ -2014,6 +2045,12 @@ func (c *CodeDeploy) ListApplicationsRequest(input *ListApplicationsInput) (req Name: opListApplications, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "", + TruncationToken: "", + }, } if input == nil { @@ -2047,6 +2084,31 @@ func (c *CodeDeploy) ListApplications(input *ListApplicationsInput) (*ListApplic return out, err } +// ListApplicationsPages iterates over the pages of a ListApplications operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListApplications method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListApplications operation. +// pageNum := 0 +// err := client.ListApplicationsPages(params, +// func(page *ListApplicationsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CodeDeploy) ListApplicationsPages(input *ListApplicationsInput, fn func(p *ListApplicationsOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListApplicationsRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListApplicationsOutput), lastPage) + }) +} + const opListDeploymentConfigs = "ListDeploymentConfigs" // ListDeploymentConfigsRequest generates a "aws/request.Request" representing the @@ -2079,6 +2141,12 @@ func (c *CodeDeploy) ListDeploymentConfigsRequest(input *ListDeploymentConfigsIn Name: opListDeploymentConfigs, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "", + TruncationToken: "", + }, } if input == nil { @@ -2112,6 +2180,31 @@ func (c *CodeDeploy) ListDeploymentConfigs(input *ListDeploymentConfigsInput) (* return out, err } +// ListDeploymentConfigsPages iterates over the pages of a ListDeploymentConfigs operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListDeploymentConfigs method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListDeploymentConfigs operation. +// pageNum := 0 +// err := client.ListDeploymentConfigsPages(params, +// func(page *ListDeploymentConfigsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CodeDeploy) ListDeploymentConfigsPages(input *ListDeploymentConfigsInput, fn func(p *ListDeploymentConfigsOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListDeploymentConfigsRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListDeploymentConfigsOutput), lastPage) + }) +} + const opListDeploymentGroups = "ListDeploymentGroups" // ListDeploymentGroupsRequest generates a "aws/request.Request" representing the @@ -2144,6 +2237,12 @@ func (c *CodeDeploy) ListDeploymentGroupsRequest(input *ListDeploymentGroupsInpu Name: opListDeploymentGroups, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "", + TruncationToken: "", + }, } if input == nil { @@ -2187,6 +2286,31 @@ func (c *CodeDeploy) ListDeploymentGroups(input *ListDeploymentGroupsInput) (*Li return out, err } +// ListDeploymentGroupsPages iterates over the pages of a ListDeploymentGroups operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListDeploymentGroups method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListDeploymentGroups operation. +// pageNum := 0 +// err := client.ListDeploymentGroupsPages(params, +// func(page *ListDeploymentGroupsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CodeDeploy) ListDeploymentGroupsPages(input *ListDeploymentGroupsInput, fn func(p *ListDeploymentGroupsOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListDeploymentGroupsRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListDeploymentGroupsOutput), lastPage) + }) +} + const opListDeploymentInstances = "ListDeploymentInstances" // ListDeploymentInstancesRequest generates a "aws/request.Request" representing the @@ -2219,6 +2343,12 @@ func (c *CodeDeploy) ListDeploymentInstancesRequest(input *ListDeploymentInstanc Name: opListDeploymentInstances, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "", + TruncationToken: "", + }, } if input == nil { @@ -2273,6 +2403,31 @@ func (c *CodeDeploy) ListDeploymentInstances(input *ListDeploymentInstancesInput return out, err } +// ListDeploymentInstancesPages iterates over the pages of a ListDeploymentInstances operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListDeploymentInstances method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListDeploymentInstances operation. +// pageNum := 0 +// err := client.ListDeploymentInstancesPages(params, +// func(page *ListDeploymentInstancesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CodeDeploy) ListDeploymentInstancesPages(input *ListDeploymentInstancesInput, fn func(p *ListDeploymentInstancesOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListDeploymentInstancesRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListDeploymentInstancesOutput), lastPage) + }) +} + const opListDeployments = "ListDeployments" // ListDeploymentsRequest generates a "aws/request.Request" representing the @@ -2305,6 +2460,12 @@ func (c *CodeDeploy) ListDeploymentsRequest(input *ListDeploymentsInput) (req *r Name: opListDeployments, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "", + TruncationToken: "", + }, } if input == nil { @@ -2364,6 +2525,31 @@ func (c *CodeDeploy) ListDeployments(input *ListDeploymentsInput) (*ListDeployme return out, err } +// ListDeploymentsPages iterates over the pages of a ListDeployments operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListDeployments method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListDeployments operation. +// pageNum := 0 +// err := client.ListDeploymentsPages(params, +// func(page *ListDeploymentsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *CodeDeploy) ListDeploymentsPages(input *ListDeploymentsInput, fn func(p *ListDeploymentsOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListDeploymentsRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListDeploymentsOutput), lastPage) + }) +} + const opListOnPremisesInstances = "ListOnPremisesInstances" // ListOnPremisesInstancesRequest generates a "aws/request.Request" representing the diff --git a/vendor/github.com/aws/aws-sdk-go/service/emr/api.go b/vendor/github.com/aws/aws-sdk-go/service/emr/api.go index f036a451a7..169ba4e3a4 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/emr/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/emr/api.go @@ -13,6 +13,77 @@ import ( "github.com/aws/aws-sdk-go/private/protocol/jsonrpc" ) +const opAddInstanceFleet = "AddInstanceFleet" + +// AddInstanceFleetRequest generates a "aws/request.Request" representing the +// client's request for the AddInstanceFleet operation. The "output" return +// value can be used to capture response data after the request's "Send" method +// is called. +// +// See AddInstanceFleet for usage and error information. +// +// Creating a request object using this method should be used when you want to inject +// custom logic into the request's lifecycle using a custom handler, or if you want to +// access properties on the request object before or after sending the request. If +// you just want the service response, call the AddInstanceFleet method directly +// instead. +// +// Note: You must call the "Send" method on the returned request object in order +// to execute the request. +// +// // Example sending a request using the AddInstanceFleetRequest method. +// req, resp := client.AddInstanceFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet +func (c *EMR) AddInstanceFleetRequest(input *AddInstanceFleetInput) (req *request.Request, output *AddInstanceFleetOutput) { + op := &request.Operation{ + Name: opAddInstanceFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AddInstanceFleetInput{} + } + + output = &AddInstanceFleetOutput{} + req = c.newRequest(op, input, output) + return +} + +// AddInstanceFleet API operation for Amazon Elastic MapReduce. +// +// Adds an instance fleet to a running cluster. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic MapReduce's +// API operation AddInstanceFleet for usage and error information. +// +// Returned Error Codes: +// * ErrCodeInternalServerException "InternalServerException" +// This exception occurs when there is an internal failure in the EMR service. +// +// * ErrCodeInvalidRequestException "InvalidRequestException" +// This exception occurs when there is something wrong with user input. +// +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet +func (c *EMR) AddInstanceFleet(input *AddInstanceFleetInput) (*AddInstanceFleetOutput, error) { + req, out := c.AddInstanceFleetRequest(input) + err := req.Send() + return out, err +} + const opAddInstanceGroups = "AddInstanceGroups" // AddInstanceGroupsRequest generates a "aws/request.Request" representing the @@ -124,19 +195,19 @@ func (c *EMR) AddJobFlowStepsRequest(input *AddJobFlowStepsInput) (req *request. // AddJobFlowSteps API operation for Amazon Elastic MapReduce. // -// AddJobFlowSteps adds new steps to a running job flow. A maximum of 256 steps +// AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps // are allowed in each job flow. // -// If your job flow is long-running (such as a Hive data warehouse) or complex, +// If your cluster is long-running (such as a Hive data warehouse) or complex, // you may require more than 256 steps to process your data. You can bypass -// the 256-step limitation in various ways, including using the SSH shell to -// connect to the master node and submitting queries directly to the software -// running on the master node, such as Hive and Hadoop. For more information -// on how to do this, see Add More than 256 Steps to a Job Flow (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html) -// in the Amazon EMR Developer's Guide. +// the 256-step limitation in various ways, including using SSH to connect to +// the master node and submitting queries directly to the software running on +// the master node, such as Hive and Hadoop. For more information on how to +// do this, see Add More than 256 Steps to a Cluster (http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/AddMoreThan256Steps.html) +// in the Amazon EMR Management Guide. // // A step specifies the location of a JAR file stored either on the master node -// of the job flow or in Amazon S3. Each step is performed by the main function +// of the cluster or in Amazon S3. Each step is performed by the main function // of the main class of the JAR file. The main class can be specified either // in the manifest of the JAR or by using the MainFunction parameter of the // step. @@ -145,7 +216,7 @@ func (c *EMR) AddJobFlowStepsRequest(input *AddJobFlowStepsInput) (req *request. // complete, the main function must exit with a zero exit code and all Hadoop // jobs started while the step was running must have completed and run successfully. // -// You can only add steps to a job flow that is in one of the following states: +// You can only add steps to a cluster that is in one of the following states: // STARTING, BOOTSTRAPPING, RUNNING, or WAITING. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -944,6 +1015,108 @@ func (c *EMR) ListClustersPages(input *ListClustersInput, fn func(p *ListCluster }) } +const opListInstanceFleets = "ListInstanceFleets" + +// ListInstanceFleetsRequest generates a "aws/request.Request" representing the +// client's request for the ListInstanceFleets operation. The "output" return +// value can be used to capture response data after the request's "Send" method +// is called. +// +// See ListInstanceFleets for usage and error information. +// +// Creating a request object using this method should be used when you want to inject +// custom logic into the request's lifecycle using a custom handler, or if you want to +// access properties on the request object before or after sending the request. If +// you just want the service response, call the ListInstanceFleets method directly +// instead. +// +// Note: You must call the "Send" method on the returned request object in order +// to execute the request. +// +// // Example sending a request using the ListInstanceFleetsRequest method. +// req, resp := client.ListInstanceFleetsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets +func (c *EMR) ListInstanceFleetsRequest(input *ListInstanceFleetsInput) (req *request.Request, output *ListInstanceFleetsOutput) { + op := &request.Operation{ + Name: opListInstanceFleets, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"Marker"}, + OutputTokens: []string{"Marker"}, + LimitToken: "", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListInstanceFleetsInput{} + } + + output = &ListInstanceFleetsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListInstanceFleets API operation for Amazon Elastic MapReduce. +// +// Lists all available details about the instance fleets in a cluster. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic MapReduce's +// API operation ListInstanceFleets for usage and error information. +// +// Returned Error Codes: +// * ErrCodeInternalServerException "InternalServerException" +// This exception occurs when there is an internal failure in the EMR service. +// +// * ErrCodeInvalidRequestException "InvalidRequestException" +// This exception occurs when there is something wrong with user input. +// +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets +func (c *EMR) ListInstanceFleets(input *ListInstanceFleetsInput) (*ListInstanceFleetsOutput, error) { + req, out := c.ListInstanceFleetsRequest(input) + err := req.Send() + return out, err +} + +// ListInstanceFleetsPages iterates over the pages of a ListInstanceFleets operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListInstanceFleets method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListInstanceFleets operation. +// pageNum := 0 +// err := client.ListInstanceFleetsPages(params, +// func(page *ListInstanceFleetsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EMR) ListInstanceFleetsPages(input *ListInstanceFleetsInput, fn func(p *ListInstanceFleetsOutput, lastPage bool) (shouldContinue bool)) error { + page, _ := c.ListInstanceFleetsRequest(input) + page.Handlers.Build.PushBack(request.MakeAddToUserAgentFreeFormHandler("Paginator")) + return page.EachPage(func(p interface{}, lastPage bool) bool { + return fn(p.(*ListInstanceFleetsOutput), lastPage) + }) +} + const opListInstanceGroups = "ListInstanceGroups" // ListInstanceGroupsRequest generates a "aws/request.Request" representing the @@ -1317,6 +1490,81 @@ func (c *EMR) ListStepsPages(input *ListStepsInput, fn func(p *ListStepsOutput, }) } +const opModifyInstanceFleet = "ModifyInstanceFleet" + +// ModifyInstanceFleetRequest generates a "aws/request.Request" representing the +// client's request for the ModifyInstanceFleet operation. The "output" return +// value can be used to capture response data after the request's "Send" method +// is called. +// +// See ModifyInstanceFleet for usage and error information. +// +// Creating a request object using this method should be used when you want to inject +// custom logic into the request's lifecycle using a custom handler, or if you want to +// access properties on the request object before or after sending the request. If +// you just want the service response, call the ModifyInstanceFleet method directly +// instead. +// +// Note: You must call the "Send" method on the returned request object in order +// to execute the request. +// +// // Example sending a request using the ModifyInstanceFleetRequest method. +// req, resp := client.ModifyInstanceFleetRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet +func (c *EMR) ModifyInstanceFleetRequest(input *ModifyInstanceFleetInput) (req *request.Request, output *ModifyInstanceFleetOutput) { + op := &request.Operation{ + Name: opModifyInstanceFleet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyInstanceFleetInput{} + } + + output = &ModifyInstanceFleetOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Remove(jsonrpc.UnmarshalHandler) + req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler) + return +} + +// ModifyInstanceFleet API operation for Amazon Elastic MapReduce. +// +// Modifies the target On-Demand and target Spot capacities for the instance +// fleet with the specified InstanceFleetID within the cluster specified using +// ClusterID. The call either succeeds or fails atomically. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic MapReduce's +// API operation ModifyInstanceFleet for usage and error information. +// +// Returned Error Codes: +// * ErrCodeInternalServerException "InternalServerException" +// This exception occurs when there is an internal failure in the EMR service. +// +// * ErrCodeInvalidRequestException "InvalidRequestException" +// This exception occurs when there is something wrong with user input. +// +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet +func (c *EMR) ModifyInstanceFleet(input *ModifyInstanceFleetInput) (*ModifyInstanceFleetOutput, error) { + req, out := c.ModifyInstanceFleetRequest(input) + err := req.Send() + return out, err +} + const opModifyInstanceGroups = "ModifyInstanceGroups" // ModifyInstanceGroupsRequest generates a "aws/request.Request" representing the @@ -1630,30 +1878,34 @@ func (c *EMR) RunJobFlowRequest(input *RunJobFlowInput) (req *request.Request, o // RunJobFlow API operation for Amazon Elastic MapReduce. // -// RunJobFlow creates and starts running a new job flow. The job flow will run -// the steps specified. After the job flow completes, the cluster is stopped -// and the HDFS partition is lost. To prevent loss of data, configure the last -// step of the job flow to store results in Amazon S3. If the JobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps -// parameter is set to TRUE, the job flow will transition to the WAITING state -// rather than shutting down after the steps have completed. +// RunJobFlow creates and starts running a new cluster (job flow). The cluster +// runs the steps specified. After the steps complete, the cluster stops and +// the HDFS partition is lost. To prevent loss of data, configure the last step +// of the job flow to store results in Amazon S3. If the JobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps +// parameter is set to TRUE, the cluster transitions to the WAITING state rather +// than shutting down after the steps have completed. // // For additional protection, you can set the JobFlowInstancesConfigTerminationProtected -// parameter to TRUE to lock the job flow and prevent it from being terminated +// parameter to TRUE to lock the cluster and prevent it from being terminated // by API call, user intervention, or in the event of a job flow error. // // A maximum of 256 steps are allowed in each job flow. // -// If your job flow is long-running (such as a Hive data warehouse) or complex, +// If your cluster is long-running (such as a Hive data warehouse) or complex, // you may require more than 256 steps to process your data. You can bypass // the 256-step limitation in various ways, including using the SSH shell to // connect to the master node and submitting queries directly to the software // running on the master node, such as Hive and Hadoop. For more information -// on how to do this, see Add More than 256 Steps to a Job Flow (http://docs.aws.amazon.com/ElasticMapReduce/latest/Management/Guide/AddMoreThan256Steps.html) +// on how to do this, see Add More than 256 Steps to a Cluster (http://docs.aws.amazon.com/ElasticMapReduce/latest/Management/Guide/AddMoreThan256Steps.html) // in the Amazon EMR Management Guide. // -// For long running job flows, we recommend that you periodically store your +// For long running clusters, we recommend that you periodically store your // results. // +// The instance fleets configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain +// InstanceFleets parameters or InstanceGroups parameters, but not both. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -1720,23 +1972,23 @@ func (c *EMR) SetTerminationProtectionRequest(input *SetTerminationProtectionInp // SetTerminationProtection API operation for Amazon Elastic MapReduce. // -// SetTerminationProtection locks a job flow so the EC2 instances in the cluster -// cannot be terminated by user intervention, an API call, or in the event of -// a job-flow error. The cluster still terminates upon successful completion -// of the job flow. Calling SetTerminationProtection on a job flow is analogous -// to calling the Amazon EC2 DisableAPITermination API on all of the EC2 instances -// in a cluster. +// SetTerminationProtection locks a cluster (job flow) so the EC2 instances +// in the cluster cannot be terminated by user intervention, an API call, or +// in the event of a job-flow error. The cluster still terminates upon successful +// completion of the job flow. Calling SetTerminationProtection on a cluster +// is similar to calling the Amazon EC2 DisableAPITermination API on all EC2 +// instances in a cluster. // -// SetTerminationProtection is used to prevent accidental termination of a job -// flow and to ensure that in the event of an error, the instances will persist -// so you can recover any data stored in their ephemeral instance storage. +// SetTerminationProtection is used to prevent accidental termination of a cluster +// and to ensure that in the event of an error, the instances persist so that +// you can recover any data stored in their ephemeral instance storage. // -// To terminate a job flow that has been locked by setting SetTerminationProtection +// To terminate a cluster that has been locked by setting SetTerminationProtection // to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection // in which you set the value to false. // -// For more information, seeProtecting a Job Flow from Termination (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_TerminationProtection.html) -// in the Amazon EMR Guide. +// For more information, seeManaging Cluster Termination (http://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html) +// in the Amazon EMR Management Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1805,11 +2057,11 @@ func (c *EMR) SetVisibleToAllUsersRequest(input *SetVisibleToAllUsersInput) (req // SetVisibleToAllUsers API operation for Amazon Elastic MapReduce. // // Sets whether all AWS Identity and Access Management (IAM) users under your -// account can access the specified job flows. This action works on running -// job flows. You can also set the visibility of a job flow when you launch -// it using the VisibleToAllUsers parameter of RunJobFlow. The SetVisibleToAllUsers -// action can be called only by an IAM user who created the job flow or the -// AWS account that owns the job flow. +// account can access the specified clusters (job flows). This action works +// on running clusters. You can also set the visibility of a cluster when you +// launch it using the VisibleToAllUsers parameter of RunJobFlow. The SetVisibleToAllUsers +// action can be called only by an IAM user who created the cluster or the AWS +// account that owns the cluster. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1877,14 +2129,15 @@ func (c *EMR) TerminateJobFlowsRequest(input *TerminateJobFlowsInput) (req *requ // TerminateJobFlows API operation for Amazon Elastic MapReduce. // -// TerminateJobFlows shuts a list of job flows down. When a job flow is shut -// down, any step not yet completed is canceled and the EC2 instances on which -// the job flow is running are stopped. Any log files not already saved are -// uploaded to Amazon S3 if a LogUri was specified when the job flow was created. +// TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow +// is shut down, any step not yet completed is canceled and the EC2 instances +// on which the cluster is running are stopped. Any log files not already saved +// are uploaded to Amazon S3 if a LogUri was specified when the cluster was +// created. // -// The maximum number of JobFlows allowed is 10. The call to TerminateJobFlows -// is asynchronous. Depending on the configuration of the job flow, it may take -// up to 1-5 minutes for the job flow to completely terminate and release allocated +// The maximum number of clusters allowed is 10. The call to TerminateJobFlows +// is asynchronous. Depending on the configuration of the cluster, it may take +// up to 1-5 minutes for the cluster to completely terminate and release allocated // resources, such as Amazon EC2 instances. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1906,6 +2159,97 @@ func (c *EMR) TerminateJobFlows(input *TerminateJobFlowsInput) (*TerminateJobFlo return out, err } +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleetInput +type AddInstanceFleetInput struct { + _ struct{} `type:"structure"` + + // The unique identifier of the cluster. + // + // ClusterId is a required field + ClusterId *string `type:"string" required:"true"` + + // Specifies the configuration of the instance fleet. + // + // InstanceFleet is a required field + InstanceFleet *InstanceFleetConfig `type:"structure" required:"true"` +} + +// String returns the string representation +func (s AddInstanceFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddInstanceFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *AddInstanceFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "AddInstanceFleetInput"} + if s.ClusterId == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterId")) + } + if s.InstanceFleet == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceFleet")) + } + if s.InstanceFleet != nil { + if err := s.InstanceFleet.Validate(); err != nil { + invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterId sets the ClusterId field's value. +func (s *AddInstanceFleetInput) SetClusterId(v string) *AddInstanceFleetInput { + s.ClusterId = &v + return s +} + +// SetInstanceFleet sets the InstanceFleet field's value. +func (s *AddInstanceFleetInput) SetInstanceFleet(v *InstanceFleetConfig) *AddInstanceFleetInput { + s.InstanceFleet = v + return s +} + +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleetOutput +type AddInstanceFleetOutput struct { + _ struct{} `type:"structure"` + + // The unique identifier of the cluster. + ClusterId *string `type:"string"` + + // The unique identifier of the instance fleet. + InstanceFleetId *string `type:"string"` +} + +// String returns the string representation +func (s AddInstanceFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddInstanceFleetOutput) GoString() string { + return s.String() +} + +// SetClusterId sets the ClusterId field's value. +func (s *AddInstanceFleetOutput) SetClusterId(v string) *AddInstanceFleetOutput { + s.ClusterId = &v + return s +} + +// SetInstanceFleetId sets the InstanceFleetId field's value. +func (s *AddInstanceFleetOutput) SetInstanceFleetId(v string) *AddInstanceFleetOutput { + s.InstanceFleetId = &v + return s +} + // Input to an AddInstanceGroups call. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroupsInput type AddInstanceGroupsInput struct { @@ -2172,16 +2516,16 @@ func (s AddTagsOutput) GoString() string { // the cluster. This structure contains a list of strings that indicates the // software to use with the cluster and accepts a user argument list. Amazon // EMR accepts and forwards the argument list to the corresponding installation -// script as bootstrap action argument. For more information, see Launch a Job -// Flow on the MapR Distribution for Hadoop (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html). +// script as bootstrap action argument. For more information, see Using the +// MapR Distribution for Hadoop (http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-mapr.html). // Currently supported values are: // -// * "mapr-m3" - launch the job flow using MapR M3 Edition. +// * "mapr-m3" - launch the cluster using MapR M3 Edition. // -// * "mapr-m5" - launch the job flow using MapR M5 Edition. +// * "mapr-m5" - launch the cluster using MapR M5 Edition. // // * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" -// - launch the job flow using MapR M3 or M5 Edition, respectively. +// - launch the cluster using MapR M3 or M5 Edition, respectively. // // In Amazon EMR releases 4.0 and greater, the only accepted parameter is the // application name. To pass arguments to applications, you supply a configuration @@ -2368,7 +2712,7 @@ type AutoScalingPolicyStateChangeReason struct { // The code indicating the reason for the change in status.USER_REQUEST indicates // that the scaling policy status was changed by a user. PROVISION_FAILURE indicates // that the status change was because the policy failed to provision. CLEANUP_FAILURE - // indicates something unclean happened.--> + // indicates an error. Code *string `type:"string" enum:"AutoScalingPolicyStateChangeReasonCode"` // A friendly, more verbose message that accompanies an automatic scaling policy @@ -2403,6 +2747,7 @@ func (s *AutoScalingPolicyStateChangeReason) SetMessage(v string) *AutoScalingPo type AutoScalingPolicyStatus struct { _ struct{} `type:"structure"` + // Indicates the status of the automatic scaling policy. State *string `type:"string" enum:"AutoScalingPolicyState"` // The reason for a change in status. @@ -2490,7 +2835,7 @@ func (s *BootstrapActionConfig) SetScriptBootstrapAction(v *ScriptBootstrapActio return s } -// Reports the configuration of a bootstrap action in a job flow. +// Reports the configuration of a bootstrap action in a cluster (job flow). // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/BootstrapActionDetail type BootstrapActionDetail struct { _ struct{} `type:"structure"` @@ -2515,14 +2860,19 @@ func (s *BootstrapActionDetail) SetBootstrapActionConfig(v *BootstrapActionConfi return s } +// Specification of the status of a CancelSteps request. Available only in Amazon +// EMR version 4.8.0 and later, excluding version 5.0.0. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelStepsInfo type CancelStepsInfo struct { _ struct{} `type:"structure"` + // The reason for the failure if the CancelSteps request fails. Reason *string `type:"string"` + // The status of a CancelSteps Request. The value may be SUBMITTED or FAILED. Status *string `type:"string" enum:"CancelStepsRequestStatus"` + // The encrypted StepId of a step. StepId *string `type:"string"` } @@ -2781,6 +3131,14 @@ type Cluster struct { // The unique identifier for the cluster. Id *string `type:"string"` + // The instance fleet configuration is available only in Amazon EMR versions + // 4.8.0 and later, excluding 5.0.x versions. + // + // The instance group configuration of the cluster. A value of INSTANCE_GROUP + // indicates a uniform instance group configuration. A value of INSTANCE_FLEET + // indicates an instance fleets configuration. + InstanceCollectionType *string `type:"string" enum:"InstanceCollectionType"` + // The path to the Amazon S3 location where logs for this cluster are stored. LogUri *string `type:"string"` @@ -2790,7 +3148,7 @@ type Cluster struct { // The name of the cluster. Name *string `type:"string"` - // An approximation of the cost of the job flow, represented in m1.small/hours. + // An approximation of the cost of the cluster, represented in m1.small/hours. // This value is incremented one time for every hour an m1.small instance runs. // Larger instances are weighted more, so an EC2 instance that is roughly four // times more expensive would result in the normalized instance hours being @@ -2840,9 +3198,9 @@ type Cluster struct { // of a cluster error. TerminationProtected *bool `type:"boolean"` - // Indicates whether the job flow is visible to all IAM users of the AWS account - // associated with the job flow. If this value is set to true, all IAM users - // of that AWS account can view and manage the job flow if they have the proper + // Indicates whether the cluster is visible to all IAM users of the AWS account + // associated with the cluster. If this value is set to true, all IAM users + // of that AWS account can view and manage the cluster if they have the proper // policy permissions set. If this value is false, only the IAM user that created // the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers // action. @@ -2895,6 +3253,12 @@ func (s *Cluster) SetId(v string) *Cluster { return s } +// SetInstanceCollectionType sets the InstanceCollectionType field's value. +func (s *Cluster) SetInstanceCollectionType(v string) *Cluster { + s.InstanceCollectionType = &v + return s +} + // SetLogUri sets the LogUri field's value. func (s *Cluster) SetLogUri(v string) *Cluster { s.LogUri = &v @@ -3068,7 +3432,7 @@ type ClusterSummary struct { // The name of the cluster. Name *string `type:"string"` - // An approximation of the cost of the job flow, represented in m1.small/hours. + // An approximation of the cost of the cluster, represented in m1.small/hours. // This value is incremented one time for every hour an m1.small instance runs. // Larger instances are weighted more, so an EC2 instance that is roughly four // times more expensive would result in the normalized instance hours being @@ -3202,23 +3566,23 @@ func (s *Command) SetScriptPath(v string) *Command { // Amazon EMR releases 4.x or later. // -// Specifies a hardware and software configuration of the EMR cluster. This -// includes configurations for applications and software bundled with Amazon -// EMR. The Configuration object is a JSON object which is defined by a classification -// and a set of properties. Configurations can be nested, so a configuration -// may have its own Configuration objects listed. +// An optional configuration specification to be used when provisioning cluster +// instances, which can include configurations for applications and software +// bundled with Amazon EMR. A configuration consists of a classification, properties, +// and optional nested configurations. A classification refers to an application-specific +// configuration file. Properties are the settings you want to change in that +// file. For more information, see Configuring Applications (http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html). // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/Configuration type Configuration struct { _ struct{} `type:"structure"` - // The classification of a configuration. For more information see, Amazon EMR - // Configurations (http://docs.aws.amazon.com/ElasticMapReduce/latest/API/EmrConfigurations.html). + // The classification within a configuration. Classification *string `type:"string"` - // A list of configurations you apply to this configuration object. + // A list of additional configurations to apply within a configuration object. Configurations []*Configuration `type:"list"` - // A set of properties supplied to the Configuration object. + // A set of properties specified within a configuration classification. Properties map[string]*string `type:"map"` } @@ -3896,14 +4260,14 @@ type Ec2InstanceAttributes struct { // the master node as a user named "hadoop". Ec2KeyName *string `type:"string"` - // To launch the job flow in Amazon VPC, set this parameter to the identifier - // of the Amazon VPC subnet where you want the job flow to launch. If you do - // not specify this value, the job flow is launched in the normal AWS cloud, + // To launch the cluster in Amazon VPC, set this parameter to the identifier + // of the Amazon VPC subnet where you want the cluster to launch. If you do + // not specify this value, the cluster is launched in the normal AWS cloud, // outside of a VPC. // // Amazon VPC currently does not support cluster compute quadruple extra large // (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance - // type for nodes of a job flow launched in a VPC. + // type for nodes of a cluster launched in a VPC. Ec2SubnetId *string `type:"string"` // The identifier of the Amazon EC2 security group for the master node. @@ -3912,10 +4276,26 @@ type Ec2InstanceAttributes struct { // The identifier of the Amazon EC2 security group for the slave nodes. EmrManagedSlaveSecurityGroup *string `type:"string"` - // The IAM role that was specified when the job flow was launched. The EC2 instances - // of the job flow assume this role. + // The IAM role that was specified when the cluster was launched. The EC2 instances + // of the cluster assume this role. IamInstanceProfile *string `type:"string"` + // Applies to clusters configured with the The list of availability zones to + // choose from. The service will choose the availability zone with the best + // mix of available capacity and lowest cost to launch the cluster. If you do + // not specify this value, the cluster is launched in any availability zone + // that the customer account has access to. + RequestedEc2AvailabilityZones []*string `type:"list"` + + // Applies to clusters configured with the instance fleets option. Specifies + // the unique identifier of one or more Amazon EC2 subnets in which to launch + // EC2 cluster instances. Amazon EMR chooses the EC2 subnet with the best performance + // and cost characteristics from among the list of RequestedEc2SubnetIds and + // launches all cluster instances within that subnet. If this value is not specified, + // and the account supports EC2-Classic networks, the cluster launches instances + // in the EC2-Classic network and uses Requested + RequestedEc2SubnetIds []*string `type:"list"` + // The identifier of the Amazon EC2 security group for the Amazon EMR service // to access clusters in VPC private subnets. ServiceAccessSecurityGroup *string `type:"string"` @@ -3979,6 +4359,18 @@ func (s *Ec2InstanceAttributes) SetIamInstanceProfile(v string) *Ec2InstanceAttr return s } +// SetRequestedEc2AvailabilityZones sets the RequestedEc2AvailabilityZones field's value. +func (s *Ec2InstanceAttributes) SetRequestedEc2AvailabilityZones(v []*string) *Ec2InstanceAttributes { + s.RequestedEc2AvailabilityZones = v + return s +} + +// SetRequestedEc2SubnetIds sets the RequestedEc2SubnetIds field's value. +func (s *Ec2InstanceAttributes) SetRequestedEc2SubnetIds(v []*string) *Ec2InstanceAttributes { + s.RequestedEc2SubnetIds = v + return s +} + // SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value. func (s *Ec2InstanceAttributes) SetServiceAccessSecurityGroup(v string) *Ec2InstanceAttributes { s.ServiceAccessSecurityGroup = &v @@ -4177,9 +4569,18 @@ type Instance struct { // The unique identifier for the instance in Amazon EMR. Id *string `type:"string"` + // The unique identifier of the instance fleet to which an EC2 instance belongs. + InstanceFleetId *string `type:"string"` + // The identifier of the instance group to which this instance belongs. InstanceGroupId *string `type:"string"` + // The EC2 instance type, for example m3.xlarge. + InstanceType *string `min:"1" type:"string"` + + // The instance purchasing option. Valid values are ON_DEMAND or SPOT. + Market *string `type:"string" enum:"MarketType"` + // The private DNS name of the instance. PrivateDnsName *string `type:"string"` @@ -4224,12 +4625,30 @@ func (s *Instance) SetId(v string) *Instance { return s } +// SetInstanceFleetId sets the InstanceFleetId field's value. +func (s *Instance) SetInstanceFleetId(v string) *Instance { + s.InstanceFleetId = &v + return s +} + // SetInstanceGroupId sets the InstanceGroupId field's value. func (s *Instance) SetInstanceGroupId(v string) *Instance { s.InstanceGroupId = &v return s } +// SetInstanceType sets the InstanceType field's value. +func (s *Instance) SetInstanceType(v string) *Instance { + s.InstanceType = &v + return s +} + +// SetMarket sets the Market field's value. +func (s *Instance) SetMarket(v string) *Instance { + s.Market = &v + return s +} + // SetPrivateDnsName sets the PrivateDnsName field's value. func (s *Instance) SetPrivateDnsName(v string) *Instance { s.PrivateDnsName = &v @@ -4260,6 +4679,536 @@ func (s *Instance) SetStatus(v *InstanceStatus) *Instance { return s } +// Describes an instance fleet, which is a group of EC2 instances that host +// a particular node type (master, core, or task) in an Amazon EMR cluster. +// Instance fleets can consist of a mix of instance types and On-Demand and +// Spot instances, which are provisioned to meet a defined target capacity. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleet +type InstanceFleet struct { + _ struct{} `type:"structure"` + + // The unique identifier of the instance fleet. + Id *string `type:"string"` + + // The node type that the instance fleet hosts. Valid values are MASTER, CORE, + // or TASK. + InstanceFleetType *string `type:"string" enum:"InstanceFleetType"` + + // The specification for the instance types that comprise an instance fleet. + // Up to five unique instance specifications may be defined for each instance + // fleet. + InstanceTypeSpecifications []*InstanceTypeSpecification `type:"list"` + + // Describes the launch specification for an instance fleet. + LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"` + + // A friendly name for the instance fleet. + Name *string `type:"string"` + + // The number of On-Demand units that have been provisioned for the instance + // fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might + // be less than or greater than TargetOnDemandCapacity. + ProvisionedOnDemandCapacity *int64 `type:"integer"` + + // The number of Spot units that have been provisioned for this instance fleet + // to fulfill TargetSpotCapacity. This provisioned capacity might be less than + // or greater than TargetSpotCapacity. + ProvisionedSpotCapacity *int64 `type:"integer"` + + // The current status of the instance fleet. + Status *InstanceFleetStatus `type:"structure"` + + // The target capacity of On-Demand units for the instance fleet, which determines + // how many On-Demand instances to provision. When the instance fleet launches, + // Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig. + // Each instance configuration has a specified WeightedCapacity. When an On-Demand + // instance is provisioned, the WeightedCapacity units count toward the target + // capacity. Amazon EMR provisions instances until the target capacity is totally + // fulfilled, even if this results in an overage. For example, if there are + // 2 units remaining to fulfill capacity, and Amazon EMR can only provision + // an instance with a WeightedCapacity of 5 units, the instance is provisioned, + // and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedOnDemandCapacity + // to determine the Spot capacity units that have been provisioned for the instance + // fleet. + // + // If not specified or set to 0, only Spot instances are provisioned for the + // instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity + // and TargetOnDemandCapacity should be greater than 0. For a master instance + // fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified, + // and its value must be 1. + TargetOnDemandCapacity *int64 `type:"integer"` + + // The target capacity of Spot units for the instance fleet, which determines + // how many Spot instances to provision. When the instance fleet launches, Amazon + // EMR tries to provision Spot instances as specified by InstanceTypeConfig. + // Each instance configuration has a specified WeightedCapacity. When a Spot + // instance is provisioned, the WeightedCapacity units count toward the target + // capacity. Amazon EMR provisions instances until the target capacity is totally + // fulfilled, even if this results in an overage. For example, if there are + // 2 units remaining to fulfill capacity, and Amazon EMR can only provision + // an instance with a WeightedCapacity of 5 units, the instance is provisioned, + // and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedSpotCapacity + // to determine the Spot capacity units that have been provisioned for the instance + // fleet. + // + // If not specified or set to 0, only On-Demand instances are provisioned for + // the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity + // should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity + // and TargetOnDemandCapacity can be specified, and its value must be 1. + TargetSpotCapacity *int64 `type:"integer"` +} + +// String returns the string representation +func (s InstanceFleet) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleet) GoString() string { + return s.String() +} + +// SetId sets the Id field's value. +func (s *InstanceFleet) SetId(v string) *InstanceFleet { + s.Id = &v + return s +} + +// SetInstanceFleetType sets the InstanceFleetType field's value. +func (s *InstanceFleet) SetInstanceFleetType(v string) *InstanceFleet { + s.InstanceFleetType = &v + return s +} + +// SetInstanceTypeSpecifications sets the InstanceTypeSpecifications field's value. +func (s *InstanceFleet) SetInstanceTypeSpecifications(v []*InstanceTypeSpecification) *InstanceFleet { + s.InstanceTypeSpecifications = v + return s +} + +// SetLaunchSpecifications sets the LaunchSpecifications field's value. +func (s *InstanceFleet) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleet { + s.LaunchSpecifications = v + return s +} + +// SetName sets the Name field's value. +func (s *InstanceFleet) SetName(v string) *InstanceFleet { + s.Name = &v + return s +} + +// SetProvisionedOnDemandCapacity sets the ProvisionedOnDemandCapacity field's value. +func (s *InstanceFleet) SetProvisionedOnDemandCapacity(v int64) *InstanceFleet { + s.ProvisionedOnDemandCapacity = &v + return s +} + +// SetProvisionedSpotCapacity sets the ProvisionedSpotCapacity field's value. +func (s *InstanceFleet) SetProvisionedSpotCapacity(v int64) *InstanceFleet { + s.ProvisionedSpotCapacity = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *InstanceFleet) SetStatus(v *InstanceFleetStatus) *InstanceFleet { + s.Status = v + return s +} + +// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value. +func (s *InstanceFleet) SetTargetOnDemandCapacity(v int64) *InstanceFleet { + s.TargetOnDemandCapacity = &v + return s +} + +// SetTargetSpotCapacity sets the TargetSpotCapacity field's value. +func (s *InstanceFleet) SetTargetSpotCapacity(v int64) *InstanceFleet { + s.TargetSpotCapacity = &v + return s +} + +// The configuration that defines an instance fleet. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleetConfig +type InstanceFleetConfig struct { + _ struct{} `type:"structure"` + + // The node type that the instance fleet hosts. Valid values are MASTER,CORE,and + // TASK. + // + // InstanceFleetType is a required field + InstanceFleetType *string `type:"string" required:"true" enum:"InstanceFleetType"` + + // The instance type configurations that define the EC2 instances in the instance + // fleet. + InstanceTypeConfigs []*InstanceTypeConfig `type:"list"` + + // The launch specification for the instance fleet. + LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"` + + // The friendly name of the instance fleet. + Name *string `type:"string"` + + // The target capacity of On-Demand units for the instance fleet, which determines + // how many On-Demand instances to provision. When the instance fleet launches, + // Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig. + // Each instance configuration has a specified WeightedCapacity. When an On-Demand + // instance is provisioned, the WeightedCapacity units count toward the target + // capacity. Amazon EMR provisions instances until the target capacity is totally + // fulfilled, even if this results in an overage. For example, if there are + // 2 units remaining to fulfill capacity, and Amazon EMR can only provision + // an instance with a WeightedCapacity of 5 units, the instance is provisioned, + // and the target capacity is exceeded by 3 units. + // + // If not specified or set to 0, only Spot instances are provisioned for the + // instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity + // and TargetOnDemandCapacity should be greater than 0. For a master instance + // fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified, + // and its value must be 1. + TargetOnDemandCapacity *int64 `type:"integer"` + + // The target capacity of Spot units for the instance fleet, which determines + // how many Spot instances to provision. When the instance fleet launches, Amazon + // EMR tries to provision Spot instances as specified by InstanceTypeConfig. + // Each instance configuration has a specified WeightedCapacity. When a Spot + // instance is provisioned, the WeightedCapacity units count toward the target + // capacity. Amazon EMR provisions instances until the target capacity is totally + // fulfilled, even if this results in an overage. For example, if there are + // 2 units remaining to fulfill capacity, and Amazon EMR can only provision + // an instance with a WeightedCapacity of 5 units, the instance is provisioned, + // and the target capacity is exceeded by 3 units. + // + // If not specified or set to 0, only On-Demand instances are provisioned for + // the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity + // should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity + // and TargetOnDemandCapacity can be specified, and its value must be 1. + TargetSpotCapacity *int64 `type:"integer"` +} + +// String returns the string representation +func (s InstanceFleetConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleetConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InstanceFleetConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InstanceFleetConfig"} + if s.InstanceFleetType == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceFleetType")) + } + if s.InstanceTypeConfigs != nil { + for i, v := range s.InstanceTypeConfigs { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceTypeConfigs", i), err.(request.ErrInvalidParams)) + } + } + } + if s.LaunchSpecifications != nil { + if err := s.LaunchSpecifications.Validate(); err != nil { + invalidParams.AddNested("LaunchSpecifications", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceFleetType sets the InstanceFleetType field's value. +func (s *InstanceFleetConfig) SetInstanceFleetType(v string) *InstanceFleetConfig { + s.InstanceFleetType = &v + return s +} + +// SetInstanceTypeConfigs sets the InstanceTypeConfigs field's value. +func (s *InstanceFleetConfig) SetInstanceTypeConfigs(v []*InstanceTypeConfig) *InstanceFleetConfig { + s.InstanceTypeConfigs = v + return s +} + +// SetLaunchSpecifications sets the LaunchSpecifications field's value. +func (s *InstanceFleetConfig) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleetConfig { + s.LaunchSpecifications = v + return s +} + +// SetName sets the Name field's value. +func (s *InstanceFleetConfig) SetName(v string) *InstanceFleetConfig { + s.Name = &v + return s +} + +// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value. +func (s *InstanceFleetConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetConfig { + s.TargetOnDemandCapacity = &v + return s +} + +// SetTargetSpotCapacity sets the TargetSpotCapacity field's value. +func (s *InstanceFleetConfig) SetTargetSpotCapacity(v int64) *InstanceFleetConfig { + s.TargetSpotCapacity = &v + return s +} + +// Configuration parameters for an instance fleet modification request. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleetModifyConfig +type InstanceFleetModifyConfig struct { + _ struct{} `type:"structure"` + + // A unique identifier for the instance fleet. + // + // InstanceFleetId is a required field + InstanceFleetId *string `type:"string" required:"true"` + + // The target capacity of On-Demand units for the instance fleet. For more information + // see InstanceFleetConfig$TargetOnDemandCapacity. + TargetOnDemandCapacity *int64 `type:"integer"` + + // The target capacity of Spot units for the instance fleet. For more information, + // see InstanceFleetConfig$TargetSpotCapacity. + TargetSpotCapacity *int64 `type:"integer"` +} + +// String returns the string representation +func (s InstanceFleetModifyConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleetModifyConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InstanceFleetModifyConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InstanceFleetModifyConfig"} + if s.InstanceFleetId == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceFleetId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceFleetId sets the InstanceFleetId field's value. +func (s *InstanceFleetModifyConfig) SetInstanceFleetId(v string) *InstanceFleetModifyConfig { + s.InstanceFleetId = &v + return s +} + +// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value. +func (s *InstanceFleetModifyConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetModifyConfig { + s.TargetOnDemandCapacity = &v + return s +} + +// SetTargetSpotCapacity sets the TargetSpotCapacity field's value. +func (s *InstanceFleetModifyConfig) SetTargetSpotCapacity(v int64) *InstanceFleetModifyConfig { + s.TargetSpotCapacity = &v + return s +} + +// The launch specification for Spot instances in the fleet, which determines +// the defined duration and provisioning timeout behavior. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleetProvisioningSpecifications +type InstanceFleetProvisioningSpecifications struct { + _ struct{} `type:"structure"` + + // The launch specification for Spot instances in the fleet, which determines + // the defined duration and provisioning timeout behavior. + // + // SpotSpecification is a required field + SpotSpecification *SpotProvisioningSpecification `type:"structure" required:"true"` +} + +// String returns the string representation +func (s InstanceFleetProvisioningSpecifications) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleetProvisioningSpecifications) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InstanceFleetProvisioningSpecifications) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InstanceFleetProvisioningSpecifications"} + if s.SpotSpecification == nil { + invalidParams.Add(request.NewErrParamRequired("SpotSpecification")) + } + if s.SpotSpecification != nil { + if err := s.SpotSpecification.Validate(); err != nil { + invalidParams.AddNested("SpotSpecification", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSpotSpecification sets the SpotSpecification field's value. +func (s *InstanceFleetProvisioningSpecifications) SetSpotSpecification(v *SpotProvisioningSpecification) *InstanceFleetProvisioningSpecifications { + s.SpotSpecification = v + return s +} + +// Provides status change reason details for the instance fleet. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleetStateChangeReason +type InstanceFleetStateChangeReason struct { + _ struct{} `type:"structure"` + + // A code corresponding to the reason the state change occurred. + Code *string `type:"string" enum:"InstanceFleetStateChangeReasonCode"` + + // An explanatory message. + Message *string `type:"string"` +} + +// String returns the string representation +func (s InstanceFleetStateChangeReason) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleetStateChangeReason) GoString() string { + return s.String() +} + +// SetCode sets the Code field's value. +func (s *InstanceFleetStateChangeReason) SetCode(v string) *InstanceFleetStateChangeReason { + s.Code = &v + return s +} + +// SetMessage sets the Message field's value. +func (s *InstanceFleetStateChangeReason) SetMessage(v string) *InstanceFleetStateChangeReason { + s.Message = &v + return s +} + +// The status of the instance fleet. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleetStatus +type InstanceFleetStatus struct { + _ struct{} `type:"structure"` + + // A code representing the instance fleet status. + State *string `type:"string" enum:"InstanceFleetState"` + + // Provides status change reason details for the instance fleet. + StateChangeReason *InstanceFleetStateChangeReason `type:"structure"` + + // Provides historical timestamps for the instance fleet, including the time + // of creation, the time it became ready to run jobs, and the time of termination. + Timeline *InstanceFleetTimeline `type:"structure"` +} + +// String returns the string representation +func (s InstanceFleetStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleetStatus) GoString() string { + return s.String() +} + +// SetState sets the State field's value. +func (s *InstanceFleetStatus) SetState(v string) *InstanceFleetStatus { + s.State = &v + return s +} + +// SetStateChangeReason sets the StateChangeReason field's value. +func (s *InstanceFleetStatus) SetStateChangeReason(v *InstanceFleetStateChangeReason) *InstanceFleetStatus { + s.StateChangeReason = v + return s +} + +// SetTimeline sets the Timeline field's value. +func (s *InstanceFleetStatus) SetTimeline(v *InstanceFleetTimeline) *InstanceFleetStatus { + s.Timeline = v + return s +} + +// Provides historical timestamps for the instance fleet, including the time +// of creation, the time it became ready to run jobs, and the time of termination. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceFleetTimeline +type InstanceFleetTimeline struct { + _ struct{} `type:"structure"` + + // The time and date the instance fleet was created. + CreationDateTime *time.Time `type:"timestamp" timestampFormat:"unix"` + + // The time and date the instance fleet terminated. + EndDateTime *time.Time `type:"timestamp" timestampFormat:"unix"` + + // The time and date the instance fleet was ready to run jobs. + ReadyDateTime *time.Time `type:"timestamp" timestampFormat:"unix"` +} + +// String returns the string representation +func (s InstanceFleetTimeline) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceFleetTimeline) GoString() string { + return s.String() +} + +// SetCreationDateTime sets the CreationDateTime field's value. +func (s *InstanceFleetTimeline) SetCreationDateTime(v time.Time) *InstanceFleetTimeline { + s.CreationDateTime = &v + return s +} + +// SetEndDateTime sets the EndDateTime field's value. +func (s *InstanceFleetTimeline) SetEndDateTime(v time.Time) *InstanceFleetTimeline { + s.EndDateTime = &v + return s +} + +// SetReadyDateTime sets the ReadyDateTime field's value. +func (s *InstanceFleetTimeline) SetReadyDateTime(v time.Time) *InstanceFleetTimeline { + s.ReadyDateTime = &v + return s +} + // This entity represents an instance group, which is a group of instances that // have common purpose. For example, CORE instance group is used for HDFS. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceGroup @@ -5069,7 +6018,208 @@ func (s *InstanceTimeline) SetReadyDateTime(v time.Time) *InstanceTimeline { return s } -// A description of a job flow. +// An instance type configuration for each instance type in an instance fleet, +// which determines the EC2 instances Amazon EMR attempts to provision to fulfill +// On-Demand and Spot target capacities. There can be a maximum of 5 instance +// type configurations in a fleet. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceTypeConfig +type InstanceTypeConfig struct { + _ struct{} `type:"structure"` + + // The bid price for each EC2 Spot instance type as defined by InstanceType. + // Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice + // is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%. + BidPrice *string `type:"string"` + + // The bid price, as a percentage of On-Demand price, for each EC2 Spot instance + // as defined by InstanceType. Expressed as a number between 0 and 1000 (for + // example, 20 specifies 20%). If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice + // is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%. + BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"` + + // A configuration classification that applies when provisioning cluster instances, + // which can include configurations for applications and software that run on + // the cluster. + Configurations []*Configuration `type:"list"` + + // The configuration of Amazon Elastic Block Storage (EBS) attached to each + // instance as defined by InstanceType. + EbsConfiguration *EbsConfiguration `type:"structure"` + + // An EC2 instance type, such as m3.xlarge. + // + // InstanceType is a required field + InstanceType *string `min:"1" type:"string" required:"true"` + + // The number of units that a provisioned instance of this type provides toward + // fulfilling the target capacities defined in InstanceFleetConfig. This value + // is 1 for a master instance fleet, and must be greater than 0 for core and + // task instance fleets. + WeightedCapacity *int64 `type:"integer"` +} + +// String returns the string representation +func (s InstanceTypeConfig) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceTypeConfig) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *InstanceTypeConfig) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "InstanceTypeConfig"} + if s.InstanceType == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceType")) + } + if s.InstanceType != nil && len(*s.InstanceType) < 1 { + invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1)) + } + if s.EbsConfiguration != nil { + if err := s.EbsConfiguration.Validate(); err != nil { + invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBidPrice sets the BidPrice field's value. +func (s *InstanceTypeConfig) SetBidPrice(v string) *InstanceTypeConfig { + s.BidPrice = &v + return s +} + +// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value. +func (s *InstanceTypeConfig) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeConfig { + s.BidPriceAsPercentageOfOnDemandPrice = &v + return s +} + +// SetConfigurations sets the Configurations field's value. +func (s *InstanceTypeConfig) SetConfigurations(v []*Configuration) *InstanceTypeConfig { + s.Configurations = v + return s +} + +// SetEbsConfiguration sets the EbsConfiguration field's value. +func (s *InstanceTypeConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceTypeConfig { + s.EbsConfiguration = v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *InstanceTypeConfig) SetInstanceType(v string) *InstanceTypeConfig { + s.InstanceType = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *InstanceTypeConfig) SetWeightedCapacity(v int64) *InstanceTypeConfig { + s.WeightedCapacity = &v + return s +} + +// The configuration specification for each instance type in an instance fleet. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/InstanceTypeSpecification +type InstanceTypeSpecification struct { + _ struct{} `type:"structure"` + + // The bid price for each EC2 Spot instance type as defined by InstanceType. + // Expressed in USD. + BidPrice *string `type:"string"` + + // The bid price, as a percentage of On-Demand price, for each EC2 Spot instance + // as defined by InstanceType. Expressed as a number (for example, 20 specifies + // 20%). + BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"` + + // A configuration classification that applies when provisioning cluster instances, + // which can include configurations for applications and software bundled with + // Amazon EMR. + Configurations []*Configuration `type:"list"` + + // The configuration of Amazon Elastic Block Storage (EBS) attached to each + // instance as defined by InstanceType. + EbsBlockDevices []*EbsBlockDevice `type:"list"` + + // Evaluates to TRUE when the specified InstanceType is EBS-optimized. + EbsOptimized *bool `type:"boolean"` + + // The EC2 instance type, for example m3.xlarge. + InstanceType *string `min:"1" type:"string"` + + // The number of units that a provisioned instance of this type provides toward + // fulfilling the target capacities defined in InstanceFleetConfig. Capacity + // values represent performance characteristics such as vCPUs, memory, or I/O. + // If not specified, the default value is 1. + WeightedCapacity *int64 `type:"integer"` +} + +// String returns the string representation +func (s InstanceTypeSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InstanceTypeSpecification) GoString() string { + return s.String() +} + +// SetBidPrice sets the BidPrice field's value. +func (s *InstanceTypeSpecification) SetBidPrice(v string) *InstanceTypeSpecification { + s.BidPrice = &v + return s +} + +// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value. +func (s *InstanceTypeSpecification) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeSpecification { + s.BidPriceAsPercentageOfOnDemandPrice = &v + return s +} + +// SetConfigurations sets the Configurations field's value. +func (s *InstanceTypeSpecification) SetConfigurations(v []*Configuration) *InstanceTypeSpecification { + s.Configurations = v + return s +} + +// SetEbsBlockDevices sets the EbsBlockDevices field's value. +func (s *InstanceTypeSpecification) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceTypeSpecification { + s.EbsBlockDevices = v + return s +} + +// SetEbsOptimized sets the EbsOptimized field's value. +func (s *InstanceTypeSpecification) SetEbsOptimized(v bool) *InstanceTypeSpecification { + s.EbsOptimized = &v + return s +} + +// SetInstanceType sets the InstanceType field's value. +func (s *InstanceTypeSpecification) SetInstanceType(v string) *InstanceTypeSpecification { + s.InstanceType = &v + return s +} + +// SetWeightedCapacity sets the WeightedCapacity field's value. +func (s *InstanceTypeSpecification) SetWeightedCapacity(v int64) *InstanceTypeSpecification { + s.WeightedCapacity = &v + return s +} + +// A description of a cluster (job flow). // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/JobFlowDetail type JobFlowDetail struct { _ struct{} `type:"structure"` @@ -5142,12 +6292,12 @@ type JobFlowDetail struct { // is empty. SupportedProducts []*string `type:"list"` - // Specifies whether the job flow is visible to all IAM users of the AWS account - // associated with the job flow. If this value is set to true, all IAM users + // Specifies whether the cluster is visible to all IAM users of the AWS account + // associated with the cluster. If this value is set to true, all IAM users // of that AWS account can view and (if they have the proper policy permissions - // set) manage the job flow. If it is set to false, only the IAM user that created - // the job flow can view and manage it. This value can be changed using the - // SetVisibleToAllUsers action. + // set) manage the cluster. If it is set to false, only the IAM user that created + // the cluster can view and manage it. This value can be changed using the SetVisibleToAllUsers + // action. VisibleToAllUsers *bool `type:"boolean"` } @@ -5245,7 +6395,7 @@ func (s *JobFlowDetail) SetVisibleToAllUsers(v bool) *JobFlowDetail { return s } -// Describes the status of the job flow. +// Describes the status of the cluster (job flow). // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/JobFlowExecutionStatusDetail type JobFlowExecutionStatusDetail struct { _ struct{} `type:"structure"` @@ -5320,10 +6470,11 @@ func (s *JobFlowExecutionStatusDetail) SetState(v string) *JobFlowExecutionStatu return s } -// A description of the Amazon EC2 instance running the job flow. A valid JobFlowInstancesConfig -// must contain at least InstanceGroups, which is the recommended configuration. -// However, a valid alternative is to have MasterInstanceType, SlaveInstanceType, -// and InstanceCount (all three must be present). +// A description of the Amazon EC2 instance on which the cluster (job flow) +// runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or +// InstanceFleets, which is the recommended configuration. They cannot be used +// together. You may also have MasterInstanceType, SlaveInstanceType, and InstanceCount +// (all three must be present), but we don't recommend this configuration. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/JobFlowInstancesConfig type JobFlowInstancesConfig struct { _ struct{} `type:"structure"` @@ -5338,43 +6489,61 @@ type JobFlowInstancesConfig struct { // the user called "hadoop." Ec2KeyName *string `type:"string"` - // To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC), set - // this parameter to the identifier of the Amazon VPC subnet where you want - // the job flow to launch. If you do not specify this value, the job flow is - // launched in the normal Amazon Web Services cloud, outside of an Amazon VPC. + // Applies to clusters that use the uniform instance group configuration. To + // launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this + // parameter to the identifier of the Amazon VPC subnet where you want the cluster + // to launch. If you do not specify this value, the cluster launches in the + // normal Amazon Web Services cloud, outside of an Amazon VPC, if the account + // launching the cluster supports EC2 Classic networks in the region where the + // cluster launches. // // Amazon VPC currently does not support cluster compute quadruple extra large // (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance - // type for nodes of a job flow launched in a Amazon VPC. + // type for clusters launched in an Amazon VPC. Ec2SubnetId *string `type:"string"` + // Applies to clusters that use the instance fleet configuration. When multiple + // EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances + // in the optimal subnet. + // + // The instance fleet configuration is available only in Amazon EMR versions + // 4.8.0 and later, excluding 5.0.x versions. + Ec2SubnetIds []*string `type:"list"` + // The identifier of the Amazon EC2 security group for the master node. EmrManagedMasterSecurityGroup *string `type:"string"` // The identifier of the Amazon EC2 security group for the slave nodes. EmrManagedSlaveSecurityGroup *string `type:"string"` - // The Hadoop version for the job flow. Valid inputs are "0.18" (deprecated), + // The Hadoop version for the cluster. Valid inputs are "0.18" (deprecated), // "0.20" (deprecated), "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". // If you do not set this value, the default of 0.18 is used, unless the AmiVersion // parameter is set in the RunJobFlow call, in which case the default version // of Hadoop for that AMI version is used. HadoopVersion *string `type:"string"` - // The number of EC2 instances used to execute the job flow. + // The number of EC2 instances in the cluster. InstanceCount *int64 `type:"integer"` - // Configuration for the job flow's instance groups. + // The instance fleet configuration is available only in Amazon EMR versions + // 4.8.0 and later, excluding 5.0.x versions. + // + // Describes the EC2 instances and instance configurations for clusters that + // use the instance fleet configuration. + InstanceFleets []*InstanceFleetConfig `type:"list"` + + // Configuration for the instance groups in a cluster. InstanceGroups []*InstanceGroupConfig `type:"list"` - // Specifies whether the job flow should be kept alive after completing all + // Specifies whether the cluster should remain available after completing all // steps. KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"` // The EC2 instance type of the master node. MasterInstanceType *string `min:"1" type:"string"` - // The Availability Zone the job flow will run in. + // The Availability Zone in which the cluster runs. Placement *PlacementType `type:"structure"` // The identifier of the Amazon EC2 security group for the Amazon EMR service @@ -5384,9 +6553,9 @@ type JobFlowInstancesConfig struct { // The EC2 instance type of the slave nodes. SlaveInstanceType *string `min:"1" type:"string"` - // Specifies whether to lock the job flow to prevent the Amazon EC2 instances + // Specifies whether to lock the cluster to prevent the Amazon EC2 instances // from being terminated by API call, user intervention, or in the event of - // a job flow error. + // a job-flow error. TerminationProtected *bool `type:"boolean"` } @@ -5409,6 +6578,16 @@ func (s *JobFlowInstancesConfig) Validate() error { if s.SlaveInstanceType != nil && len(*s.SlaveInstanceType) < 1 { invalidParams.Add(request.NewErrParamMinLen("SlaveInstanceType", 1)) } + if s.InstanceFleets != nil { + for i, v := range s.InstanceFleets { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceFleets", i), err.(request.ErrInvalidParams)) + } + } + } if s.InstanceGroups != nil { for i, v := range s.InstanceGroups { if v == nil { @@ -5419,11 +6598,6 @@ func (s *JobFlowInstancesConfig) Validate() error { } } } - if s.Placement != nil { - if err := s.Placement.Validate(); err != nil { - invalidParams.AddNested("Placement", err.(request.ErrInvalidParams)) - } - } if invalidParams.Len() > 0 { return invalidParams @@ -5455,6 +6629,12 @@ func (s *JobFlowInstancesConfig) SetEc2SubnetId(v string) *JobFlowInstancesConfi return s } +// SetEc2SubnetIds sets the Ec2SubnetIds field's value. +func (s *JobFlowInstancesConfig) SetEc2SubnetIds(v []*string) *JobFlowInstancesConfig { + s.Ec2SubnetIds = v + return s +} + // SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value. func (s *JobFlowInstancesConfig) SetEmrManagedMasterSecurityGroup(v string) *JobFlowInstancesConfig { s.EmrManagedMasterSecurityGroup = &v @@ -5479,6 +6659,12 @@ func (s *JobFlowInstancesConfig) SetInstanceCount(v int64) *JobFlowInstancesConf return s } +// SetInstanceFleets sets the InstanceFleets field's value. +func (s *JobFlowInstancesConfig) SetInstanceFleets(v []*InstanceFleetConfig) *JobFlowInstancesConfig { + s.InstanceFleets = v + return s +} + // SetInstanceGroups sets the InstanceGroups field's value. func (s *JobFlowInstancesConfig) SetInstanceGroups(v []*InstanceGroupConfig) *JobFlowInstancesConfig { s.InstanceGroups = v @@ -5521,20 +6707,21 @@ func (s *JobFlowInstancesConfig) SetTerminationProtected(v bool) *JobFlowInstanc return s } -// Specify the type of Amazon EC2 instances to run the job flow on. +// Specify the type of Amazon EC2 instances that the cluster (job flow) runs +// on. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/JobFlowInstancesDetail type JobFlowInstancesDetail struct { _ struct{} `type:"structure"` // The name of an Amazon EC2 key pair that can be used to ssh to the master - // node of job flow. + // node. Ec2KeyName *string `type:"string"` - // For job flows launched within Amazon Virtual Private Cloud, this value specifies - // the identifier of the subnet where the job flow was launched. + // For clusters launched within Amazon Virtual Private Cloud, this is the identifier + // of the subnet where the cluster was launched. Ec2SubnetId *string `type:"string"` - // The Hadoop version for the job flow. + // The Hadoop version for the cluster. HadoopVersion *string `type:"string"` // The number of Amazon EC2 instances in the cluster. If the value is 1, the @@ -5544,10 +6731,11 @@ type JobFlowInstancesDetail struct { // InstanceCount is a required field InstanceCount *int64 `type:"integer" required:"true"` - // Details about the job flow's instance groups. + // Details about the instance groups in a cluster. InstanceGroups []*InstanceGroupDetail `type:"list"` - // Specifies whether the job flow should terminate after completing all steps. + // Specifies whether the cluster should remain available after completing all + // steps. KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"` // The Amazon EC2 instance identifier of the master node. @@ -5561,7 +6749,7 @@ type JobFlowInstancesDetail struct { // The DNS name of the master node. MasterPublicDnsName *string `type:"string"` - // An approximation of the cost of the job flow, represented in m1.small/hours. + // An approximation of the cost of the cluster, represented in m1.small/hours. // This value is incremented one time for every hour that an m1.small runs. // Larger instances are weighted more, so an Amazon EC2 instance that is roughly // four times more expensive would result in the normalized instance hours being @@ -5569,7 +6757,7 @@ type JobFlowInstancesDetail struct { // the actual billing rate. NormalizedInstanceHours *int64 `type:"integer"` - // The Amazon EC2 Availability Zone for the job flow. + // The Amazon EC2 Availability Zone for the cluster. Placement *PlacementType `type:"structure"` // The Amazon EC2 slave node instance type. @@ -5578,7 +6766,7 @@ type JobFlowInstancesDetail struct { SlaveInstanceType *string `min:"1" type:"string" required:"true"` // Specifies whether the Amazon EC2 instances in the cluster are protected from - // termination by API calls, user intervention, or in the event of a job flow + // termination by API calls, user intervention, or in the event of a job-flow // error. TerminationProtected *bool `type:"boolean"` } @@ -5876,6 +7064,87 @@ func (s *ListClustersOutput) SetMarker(v string) *ListClustersOutput { return s } +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleetsInput +type ListInstanceFleetsInput struct { + _ struct{} `type:"structure"` + + // The unique identifier of the cluster. + // + // ClusterId is a required field + ClusterId *string `type:"string" required:"true"` + + // The pagination token that indicates the next set of results to retrieve. + Marker *string `type:"string"` +} + +// String returns the string representation +func (s ListInstanceFleetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListInstanceFleetsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListInstanceFleetsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListInstanceFleetsInput"} + if s.ClusterId == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterId sets the ClusterId field's value. +func (s *ListInstanceFleetsInput) SetClusterId(v string) *ListInstanceFleetsInput { + s.ClusterId = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListInstanceFleetsInput) SetMarker(v string) *ListInstanceFleetsInput { + s.Marker = &v + return s +} + +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleetsOutput +type ListInstanceFleetsOutput struct { + _ struct{} `type:"structure"` + + // The list of instance fleets for the cluster and given filters. + InstanceFleets []*InstanceFleet `type:"list"` + + // The pagination token that indicates the next set of results to retrieve. + Marker *string `type:"string"` +} + +// String returns the string representation +func (s ListInstanceFleetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListInstanceFleetsOutput) GoString() string { + return s.String() +} + +// SetInstanceFleets sets the InstanceFleets field's value. +func (s *ListInstanceFleetsOutput) SetInstanceFleets(v []*InstanceFleet) *ListInstanceFleetsOutput { + s.InstanceFleets = v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListInstanceFleetsOutput) SetMarker(v string) *ListInstanceFleetsOutput { + s.Marker = &v + return s +} + // This input determines which instance groups to retrieve. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroupsInput type ListInstanceGroupsInput struct { @@ -5969,6 +7238,12 @@ type ListInstancesInput struct { // ClusterId is a required field ClusterId *string `type:"string" required:"true"` + // The unique identifier of the instance fleet. + InstanceFleetId *string `type:"string"` + + // The node type of the instance fleet. For example MASTER, CORE, or TASK. + InstanceFleetType *string `type:"string" enum:"InstanceFleetType"` + // The identifier of the instance group for which to list the instances. InstanceGroupId *string `type:"string"` @@ -6012,6 +7287,18 @@ func (s *ListInstancesInput) SetClusterId(v string) *ListInstancesInput { return s } +// SetInstanceFleetId sets the InstanceFleetId field's value. +func (s *ListInstancesInput) SetInstanceFleetId(v string) *ListInstancesInput { + s.InstanceFleetId = &v + return s +} + +// SetInstanceFleetType sets the InstanceFleetType field's value. +func (s *ListInstancesInput) SetInstanceFleetType(v string) *ListInstancesInput { + s.InstanceFleetType = &v + return s +} + // SetInstanceGroupId sets the InstanceGroupId field's value. func (s *ListInstancesInput) SetInstanceGroupId(v string) *ListInstancesInput { s.InstanceGroupId = &v @@ -6234,9 +7521,8 @@ func (s *ListStepsOutput) SetSteps(v []*StepSummary) *ListStepsOutput { // A CloudWatch dimension, which is specified using a Key (known as a Name in // CloudWatch), Value pair. By default, Amazon EMR uses one dimension whose // Key is JobFlowID and Value is a variable representing the cluster ID, which -// is ${emr:cluster_id}. This enables the rule to bootstrap when the cluster -// ID becomes available, and also enables a single automatic scaling policy -// to be reused for multiple clusters and instance groups. +// is ${emr.clusterId}. This enables the rule to bootstrap when the cluster +// ID becomes available. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/MetricDimension type MetricDimension struct { _ struct{} `type:"structure"` @@ -6270,6 +7556,79 @@ func (s *MetricDimension) SetValue(v string) *MetricDimension { return s } +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleetInput +type ModifyInstanceFleetInput struct { + _ struct{} `type:"structure"` + + // The unique identifier of the cluster. + // + // ClusterId is a required field + ClusterId *string `type:"string" required:"true"` + + // The unique identifier of the instance fleet. + // + // InstanceFleet is a required field + InstanceFleet *InstanceFleetModifyConfig `type:"structure" required:"true"` +} + +// String returns the string representation +func (s ModifyInstanceFleetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceFleetInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyInstanceFleetInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceFleetInput"} + if s.ClusterId == nil { + invalidParams.Add(request.NewErrParamRequired("ClusterId")) + } + if s.InstanceFleet == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceFleet")) + } + if s.InstanceFleet != nil { + if err := s.InstanceFleet.Validate(); err != nil { + invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClusterId sets the ClusterId field's value. +func (s *ModifyInstanceFleetInput) SetClusterId(v string) *ModifyInstanceFleetInput { + s.ClusterId = &v + return s +} + +// SetInstanceFleet sets the InstanceFleet field's value. +func (s *ModifyInstanceFleetInput) SetInstanceFleet(v *InstanceFleetModifyConfig) *ModifyInstanceFleetInput { + s.InstanceFleet = v + return s +} + +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleetOutput +type ModifyInstanceFleetOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ModifyInstanceFleetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyInstanceFleetOutput) GoString() string { + return s.String() +} + // Change the size of some instance groups. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroupsInput type ModifyInstanceGroupsInput struct { @@ -6339,15 +7698,24 @@ func (s ModifyInstanceGroupsOutput) GoString() string { return s.String() } -// The Amazon EC2 location for the job flow. +// The Amazon EC2 Availability Zone configuration of the cluster (job flow). // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PlacementType type PlacementType struct { _ struct{} `type:"structure"` - // The Amazon EC2 Availability Zone for the job flow. + // The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used + // for uniform instance groups, while AvailabilityZones (plural) is used for + // instance fleets. + AvailabilityZone *string `type:"string"` + + // When multiple Availability Zones are specified, Amazon EMR evaluates them + // and launches instances in the optimal Availability Zone. AvailabilityZones + // is used for instance fleets, while AvailabilityZone (singular) is used for + // uniform instance groups. // - // AvailabilityZone is a required field - AvailabilityZone *string `type:"string" required:"true"` + // The instance fleet configuration is available only in Amazon EMR versions + // 4.8.0 and later, excluding 5.0.x versions. + AvailabilityZones []*string `type:"list"` } // String returns the string representation @@ -6360,25 +7728,18 @@ func (s PlacementType) GoString() string { return s.String() } -// Validate inspects the fields of the type to determine if they are valid. -func (s *PlacementType) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "PlacementType"} - if s.AvailabilityZone == nil { - invalidParams.Add(request.NewErrParamRequired("AvailabilityZone")) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - // SetAvailabilityZone sets the AvailabilityZone field's value. func (s *PlacementType) SetAvailabilityZone(v string) *PlacementType { s.AvailabilityZone = &v return s } +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *PlacementType) SetAvailabilityZones(v []*string) *PlacementType { + s.AvailabilityZones = v + return s +} + // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicyInput type PutAutoScalingPolicyInput struct { _ struct{} `type:"structure"` @@ -6678,8 +8039,7 @@ type RunJobFlowInput struct { // to launch and terminate EC2 instances in an instance group. AutoScalingRole *string `type:"string"` - // A list of bootstrap actions that will be run before Hadoop is started on - // the cluster nodes. + // A list of bootstrap actions to run before Hadoop starts on the cluster nodes. BootstrapActions []*BootstrapActionConfig `type:"list"` // Amazon EMR releases 4.x or later. @@ -6687,8 +8047,7 @@ type RunJobFlowInput struct { // The list of configurations supplied for the EMR cluster you are creating. Configurations []*Configuration `type:"list"` - // A specification of the number and type of Amazon EC2 instances on which to - // run the job flow. + // A specification of the number and type of Amazon EC2 instances. // // Instances is a required field Instances *JobFlowInstancesConfig `type:"structure" required:"true"` @@ -6714,9 +8073,9 @@ type RunJobFlowInput struct { // A list of strings that indicates third-party software to use with the job // flow that accepts a user argument list. EMR accepts and forwards the argument // list to the corresponding installation script as bootstrap action arguments. - // For more information, see Launch a Job Flow on the MapR Distribution for - // Hadoop (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html). - // Currently supported values are: + // For more information, see "Launch a Job Flow on the MapR Distribution for + // Hadoop" in the Amazon EMR Developer Guide (http://docs.aws.amazon.com/http:/docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf). + // Supported values are: // // * "mapr-m3" - launch the cluster using MapR M3 Edition. // @@ -6763,15 +8122,14 @@ type RunJobFlowInput struct { // resources on your behalf. ServiceRole *string `type:"string"` - // A list of steps to be executed by the job flow. + // A list of steps to run. Steps []*StepConfig `type:"list"` // For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and greater, // use Applications. // - // A list of strings that indicates third-party software to use with the job - // flow. For more information, see Use Third Party Applications with Amazon - // EMR (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html). + // A list of strings that indicates third-party software to use. For more information, + // see Use Third Party Applications with Amazon EMR (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html). // Currently supported values are: // // * "mapr-m3" - launch the job flow using MapR M3 Edition. @@ -6782,11 +8140,11 @@ type RunJobFlowInput struct { // A list of tags to associate with a cluster and propagate to Amazon EC2 instances. Tags []*Tag `type:"list"` - // Whether the job flow is visible to all IAM users of the AWS account associated - // with the job flow. If this value is set to true, all IAM users of that AWS + // Whether the cluster is visible to all IAM users of the AWS account associated + // with the cluster. If this value is set to true, all IAM users of that AWS // account can view and (if they have the proper policy permissions set) manage - // the job flow. If it is set to false, only the IAM user that created the job - // flow can view and manage it. + // the cluster. If it is set to false, only the IAM user that created the cluster + // can view and manage it. VisibleToAllUsers *bool `type:"boolean"` } @@ -7324,16 +8682,16 @@ func (s *SecurityConfigurationSummary) SetName(v string) *SecurityConfigurationS type SetTerminationProtectionInput struct { _ struct{} `type:"structure"` - // A list of strings that uniquely identify the job flows to protect. This identifier + // A list of strings that uniquely identify the clusters to protect. This identifier // is returned by RunJobFlow and can also be obtained from DescribeJobFlows // . // // JobFlowIds is a required field JobFlowIds []*string `type:"list" required:"true"` - // A Boolean that indicates whether to protect the job flow and prevent the - // Amazon EC2 instances in the cluster from shutting down due to API calls, - // user intervention, or job-flow error. + // A Boolean that indicates whether to protect the cluster and prevent the Amazon + // EC2 instances in the cluster from shutting down due to API calls, user intervention, + // or job-flow error. // // TerminationProtected is a required field TerminationProtected *bool `type:"boolean" required:"true"` @@ -7402,11 +8760,11 @@ type SetVisibleToAllUsersInput struct { // JobFlowIds is a required field JobFlowIds []*string `type:"list" required:"true"` - // Whether the specified job flows are visible to all IAM users of the AWS account - // associated with the job flow. If this value is set to True, all IAM users + // Whether the specified clusters are visible to all IAM users of the AWS account + // associated with the cluster. If this value is set to True, all IAM users // of that AWS account can view and, if they have the proper IAM policy permissions - // set, manage the job flows. If it is set to False, only the IAM user that - // created a job flow can view and manage it. + // set, manage the clusters. If it is set to False, only the IAM user that created + // a cluster can view and manage it. // // VisibleToAllUsers is a required field VisibleToAllUsers *bool `type:"boolean" required:"true"` @@ -7515,7 +8873,7 @@ type SimpleScalingPolicyConfiguration struct { // indicates that the EC2 instance count increments or decrements by ScalingAdjustment, // which should be expressed as an integer. PERCENT_CHANGE_IN_CAPACITY indicates // the instance count increments or decrements by the percentage specified by - // ScalingAdjustment, which should be expressed as a decimal, for example, 0.20 + // ScalingAdjustment, which should be expressed as a decimal. For example, 0.20 // indicates an increase in 20% increments of cluster capacity. EXACT_CAPACITY // indicates the scaling activity results in an instance group with the number // of EC2 instances specified by ScalingAdjustment, which should be expressed @@ -7580,6 +8938,86 @@ func (s *SimpleScalingPolicyConfiguration) SetScalingAdjustment(v int64) *Simple return s } +// The launch specification for Spot instances in the instance fleet, which +// determines the defined duration and provisioning timeout behavior. +// +// The instance fleet configuration is available only in Amazon EMR versions +// 4.8.0 and later, excluding 5.0.x versions. +// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SpotProvisioningSpecification +type SpotProvisioningSpecification struct { + _ struct{} `type:"structure"` + + // The defined duration for Spot instances (also known as Spot blocks) in minutes. + // When specified, the Spot instance does not terminate before the defined duration + // expires, and defined duration pricing for Spot instances applies. Valid values + // are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as + // a Spot instance receives its instance ID. At the end of the duration, Amazon + // EC2 marks the Spot instance for termination and provides a Spot instance + // termination notice, which gives the instance a two-minute warning before + // it terminates. + BlockDurationMinutes *int64 `type:"integer"` + + // The action to take when TargetSpotCapacity has not been fulfilled when the + // TimeoutDurationMinutes has expired. Spot instances are not uprovisioned within + // the Spot provisioining timeout. Valid values are TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND + // to fulfill the remaining capacity. + // + // TimeoutAction is a required field + TimeoutAction *string `type:"string" required:"true" enum:"SpotProvisioningTimeoutAction"` + + // The spot provisioning timeout period in minutes. If Spot instances are not + // provisioned within this time period, the TimeOutAction is taken. Minimum + // value is 5 and maximum value is 1440. The timeout applies only during initial + // provisioning, when the cluster is first created. + // + // TimeoutDurationMinutes is a required field + TimeoutDurationMinutes *int64 `type:"integer" required:"true"` +} + +// String returns the string representation +func (s SpotProvisioningSpecification) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s SpotProvisioningSpecification) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *SpotProvisioningSpecification) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "SpotProvisioningSpecification"} + if s.TimeoutAction == nil { + invalidParams.Add(request.NewErrParamRequired("TimeoutAction")) + } + if s.TimeoutDurationMinutes == nil { + invalidParams.Add(request.NewErrParamRequired("TimeoutDurationMinutes")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBlockDurationMinutes sets the BlockDurationMinutes field's value. +func (s *SpotProvisioningSpecification) SetBlockDurationMinutes(v int64) *SpotProvisioningSpecification { + s.BlockDurationMinutes = &v + return s +} + +// SetTimeoutAction sets the TimeoutAction field's value. +func (s *SpotProvisioningSpecification) SetTimeoutAction(v string) *SpotProvisioningSpecification { + s.TimeoutAction = &v + return s +} + +// SetTimeoutDurationMinutes sets the TimeoutDurationMinutes field's value. +func (s *SpotProvisioningSpecification) SetTimeoutDurationMinutes(v int64) *SpotProvisioningSpecification { + s.TimeoutDurationMinutes = &v + return s +} + // This represents a step in a cluster. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/Step type Step struct { @@ -7642,20 +9080,20 @@ func (s *Step) SetStatus(v *StepStatus) *Step { return s } -// Specification of a job flow step. +// Specification of a cluster (job flow) step. // Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/StepConfig type StepConfig struct { _ struct{} `type:"structure"` - // The action to take if the job flow step fails. + // The action to take if the step fails. ActionOnFailure *string `type:"string" enum:"ActionOnFailure"` - // The JAR file used for the job flow step. + // The JAR file used for the step. // // HadoopJarStep is a required field HadoopJarStep *HadoopJarStepConfig `type:"structure" required:"true"` - // The name of the job flow step. + // The name of the step. // // Name is a required field Name *string `type:"string" required:"true"` @@ -7767,7 +9205,7 @@ type StepExecutionStatusDetail struct { // The start date and time of the step. StartDateTime *time.Time `type:"timestamp" timestampFormat:"unix"` - // The state of the job flow step. + // The state of the step. // // State is a required field State *string `type:"string" required:"true" enum:"StepExecutionState"` @@ -8326,6 +9764,62 @@ const ( ComparisonOperatorLessThanOrEqual = "LESS_THAN_OR_EQUAL" ) +const ( + // InstanceCollectionTypeInstanceFleet is a InstanceCollectionType enum value + InstanceCollectionTypeInstanceFleet = "INSTANCE_FLEET" + + // InstanceCollectionTypeInstanceGroup is a InstanceCollectionType enum value + InstanceCollectionTypeInstanceGroup = "INSTANCE_GROUP" +) + +const ( + // InstanceFleetStateProvisioning is a InstanceFleetState enum value + InstanceFleetStateProvisioning = "PROVISIONING" + + // InstanceFleetStateBootstrapping is a InstanceFleetState enum value + InstanceFleetStateBootstrapping = "BOOTSTRAPPING" + + // InstanceFleetStateRunning is a InstanceFleetState enum value + InstanceFleetStateRunning = "RUNNING" + + // InstanceFleetStateResizing is a InstanceFleetState enum value + InstanceFleetStateResizing = "RESIZING" + + // InstanceFleetStateSuspended is a InstanceFleetState enum value + InstanceFleetStateSuspended = "SUSPENDED" + + // InstanceFleetStateTerminating is a InstanceFleetState enum value + InstanceFleetStateTerminating = "TERMINATING" + + // InstanceFleetStateTerminated is a InstanceFleetState enum value + InstanceFleetStateTerminated = "TERMINATED" +) + +const ( + // InstanceFleetStateChangeReasonCodeInternalError is a InstanceFleetStateChangeReasonCode enum value + InstanceFleetStateChangeReasonCodeInternalError = "INTERNAL_ERROR" + + // InstanceFleetStateChangeReasonCodeValidationError is a InstanceFleetStateChangeReasonCode enum value + InstanceFleetStateChangeReasonCodeValidationError = "VALIDATION_ERROR" + + // InstanceFleetStateChangeReasonCodeInstanceFailure is a InstanceFleetStateChangeReasonCode enum value + InstanceFleetStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE" + + // InstanceFleetStateChangeReasonCodeClusterTerminated is a InstanceFleetStateChangeReasonCode enum value + InstanceFleetStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED" +) + +const ( + // InstanceFleetTypeMaster is a InstanceFleetType enum value + InstanceFleetTypeMaster = "MASTER" + + // InstanceFleetTypeCore is a InstanceFleetType enum value + InstanceFleetTypeCore = "CORE" + + // InstanceFleetTypeTask is a InstanceFleetType enum value + InstanceFleetTypeTask = "TASK" +) + const ( // InstanceGroupStateProvisioning is a InstanceGroupState enum value InstanceGroupStateProvisioning = "PROVISIONING" @@ -8471,6 +9965,14 @@ const ( ScaleDownBehaviorTerminateAtTaskCompletion = "TERMINATE_AT_TASK_COMPLETION" ) +const ( + // SpotProvisioningTimeoutActionSwitchToOnDemand is a SpotProvisioningTimeoutAction enum value + SpotProvisioningTimeoutActionSwitchToOnDemand = "SWITCH_TO_ON_DEMAND" + + // SpotProvisioningTimeoutActionTerminateCluster is a SpotProvisioningTimeoutAction enum value + SpotProvisioningTimeoutActionTerminateCluster = "TERMINATE_CLUSTER" +) + const ( // StatisticSampleCount is a Statistic enum value StatisticSampleCount = "SAMPLE_COUNT" diff --git a/vendor/github.com/aws/aws-sdk-go/service/emr/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/emr/waiters.go index ccf17eb963..443240d3da 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/emr/waiters.go +++ b/vendor/github.com/aws/aws-sdk-go/service/emr/waiters.go @@ -57,6 +57,39 @@ func (c *EMR) WaitUntilClusterRunning(input *DescribeClusterInput) error { return w.Wait() } +// WaitUntilClusterTerminated uses the Amazon EMR API operation +// DescribeCluster to wait for a condition to be met before returning. +// If the condition is not meet within the max attempt window an error will +// be returned. +func (c *EMR) WaitUntilClusterTerminated(input *DescribeClusterInput) error { + waiterCfg := waiter.Config{ + Operation: "DescribeCluster", + Delay: 30, + MaxAttempts: 60, + Acceptors: []waiter.WaitAcceptor{ + { + State: "success", + Matcher: "path", + Argument: "Cluster.Status.State", + Expected: "TERMINATED", + }, + { + State: "failure", + Matcher: "path", + Argument: "Cluster.Status.State", + Expected: "TERMINATED_WITH_ERRORS", + }, + }, + } + + w := waiter.Waiter{ + Client: c, + Input: input, + Config: waiterCfg, + } + return w.Wait() +} + // WaitUntilStepComplete uses the Amazon EMR API operation // DescribeStep to wait for a condition to be met before returning. // If the condition is not meet within the max attempt window an error will diff --git a/vendor/github.com/aws/aws-sdk-go/service/rds/customizations.go b/vendor/github.com/aws/aws-sdk-go/service/rds/customizations.go index d3023d1f76..d412fb282b 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/rds/customizations.go +++ b/vendor/github.com/aws/aws-sdk-go/service/rds/customizations.go @@ -29,6 +29,8 @@ func fillPresignedURL(r *request.Request) { fns := map[string]func(r *request.Request){ opCopyDBSnapshot: copyDBSnapshotPresign, opCreateDBInstanceReadReplica: createDBInstanceReadReplicaPresign, + opCopyDBClusterSnapshot: copyDBClusterSnapshotPresign, + opCreateDBCluster: createDBClusterPresign, } if !r.ParamsFilled() { return @@ -41,7 +43,7 @@ func fillPresignedURL(r *request.Request) { func copyDBSnapshotPresign(r *request.Request) { originParams := r.Params.(*CopyDBSnapshotInput) - if originParams.PreSignedUrl != nil || originParams.DestinationRegion != nil { + if originParams.SourceRegion == nil || originParams.PreSignedUrl != nil || originParams.DestinationRegion != nil { return } @@ -53,7 +55,7 @@ func copyDBSnapshotPresign(r *request.Request) { func createDBInstanceReadReplicaPresign(r *request.Request) { originParams := r.Params.(*CreateDBInstanceReadReplicaInput) - if originParams.PreSignedUrl != nil || originParams.DestinationRegion != nil { + if originParams.SourceRegion == nil || originParams.PreSignedUrl != nil || originParams.DestinationRegion != nil { return } @@ -62,6 +64,30 @@ func createDBInstanceReadReplicaPresign(r *request.Request) { originParams.PreSignedUrl = presignURL(r, originParams.SourceRegion, newParams) } +func copyDBClusterSnapshotPresign(r *request.Request) { + originParams := r.Params.(*CopyDBClusterSnapshotInput) + + if originParams.SourceRegion == nil || originParams.PreSignedUrl != nil || originParams.DestinationRegion != nil { + return + } + + originParams.DestinationRegion = r.Config.Region + newParams := awsutil.CopyOf(r.Params).(*CopyDBClusterSnapshotInput) + originParams.PreSignedUrl = presignURL(r, originParams.SourceRegion, newParams) +} + +func createDBClusterPresign(r *request.Request) { + originParams := r.Params.(*CreateDBClusterInput) + + if originParams.SourceRegion == nil || originParams.PreSignedUrl != nil || originParams.DestinationRegion != nil { + return + } + + originParams.DestinationRegion = r.Config.Region + newParams := awsutil.CopyOf(r.Params).(*CreateDBClusterInput) + originParams.PreSignedUrl = presignURL(r, originParams.SourceRegion, newParams) +} + // presignURL will presign the request by using SoureRegion to sign with. SourceRegion is not // sent to the service, and is only used to not have the SDKs parsing ARNs. func presignURL(r *request.Request, sourceRegion *string, newParams interface{}) *string { diff --git a/vendor/vendor.json b/vendor/vendor.json index f6fec3d436..257ef5ea65 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -480,636 +480,636 @@ "revisionTime": "2017-01-23T00:46:44Z" }, { - "checksumSHA1": "iQKronDAjUfVphsnnZEFfy/Ht0o=", + "checksumSHA1": "vgQ6NEtijFyvN0+Ulc48KPhRLQ8=", "path": "github.com/aws/aws-sdk-go", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "YCAXeLuQ7CN2IHmCC6rXvQ6JTKs=", + "checksumSHA1": "TZ18dAT4T7uCQT1XESgmvLuyG9I=", "path": "github.com/aws/aws-sdk-go/aws", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Y9W+4GimK4Fuxq+vyIskVYFRnX4=", "path": "github.com/aws/aws-sdk-go/aws/awserr", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "yyYr41HZ1Aq0hWc3J5ijXwYEcac=", "path": "github.com/aws/aws-sdk-go/aws/awsutil", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "iThCyNRL/oQFD9CF2SYgBGl+aww=", "path": "github.com/aws/aws-sdk-go/aws/client", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "ieAJ+Cvp/PKv1LpUEnUXpc3OI6E=", "path": "github.com/aws/aws-sdk-go/aws/client/metadata", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Fl8vRSCY0MbM04cmiz/0MID+goA=", "path": "github.com/aws/aws-sdk-go/aws/corehandlers", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "zu5C95rmCZff6NYZb62lEaT5ibE=", "path": "github.com/aws/aws-sdk-go/aws/credentials", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "u3GOAJLmdvbuNUeUEcZSEAOeL/0=", "path": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "NUJUTWlc1sV8b7WjfiYc4JZbXl0=", "path": "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "6cj/zsRmcxkE1TLS+v910GbQYg0=", "path": "github.com/aws/aws-sdk-go/aws/credentials/stscreds", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "lqh3fG7wCochvB4iHAZJuhhEJW0=", "path": "github.com/aws/aws-sdk-go/aws/defaults", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "/EXbk/z2TWjWc1Hvb4QYs3Wmhb8=", "path": "github.com/aws/aws-sdk-go/aws/ec2metadata", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "2i7kEdcSb57ldUquW8qIOmKyhN4=", + "checksumSHA1": "Y/H3JXynvwx55rAbQg6g2hCouB8=", "path": "github.com/aws/aws-sdk-go/aws/endpoints", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "M78rTxU55Qagqr3MYj91im2031E=", "path": "github.com/aws/aws-sdk-go/aws/request", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "u6tKvFGcRQ1xtby1ONjgyUTgcpg=", + "checksumSHA1": "5pzA5afgeU1alfACFh8z2CDUMao=", "path": "github.com/aws/aws-sdk-go/aws/session", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "0FvPLvkBUpTElfUc/FZtPsJfuV0=", "path": "github.com/aws/aws-sdk-go/aws/signer/v4", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "wk7EyvDaHwb5qqoOP/4d3cV0708=", "path": "github.com/aws/aws-sdk-go/private/protocol", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "1QmQ3FqV37w0Zi44qv8pA1GeR0A=", "path": "github.com/aws/aws-sdk-go/private/protocol/ec2query", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "O6hcK24yI6w7FA+g4Pbr+eQ7pys=", "path": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "R00RL5jJXRYq1iiK1+PGvMfvXyM=", "path": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "ZqY5RWavBLWTo6j9xqdyBEaNFRk=", "path": "github.com/aws/aws-sdk-go/private/protocol/query", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Drt1JfLMa0DQEZLWrnMlTWaIcC8=", "path": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "szZSLm3BlYkL3vqlZhNAlYk8iwM=", "path": "github.com/aws/aws-sdk-go/private/protocol/rest", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Rpu8KBtHZgvhkwHxUfaky+qW+G4=", "path": "github.com/aws/aws-sdk-go/private/protocol/restjson", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "ODo+ko8D6unAxZuN1jGzMcN4QCc=", "path": "github.com/aws/aws-sdk-go/private/protocol/restxml", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "lZ1z4xAbT8euCzKoAsnEYic60VE=", "path": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "F6mth+G7dXN1GI+nktaGo8Lx8aE=", "path": "github.com/aws/aws-sdk-go/private/signer/v2", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Eo9yODN5U99BK0pMzoqnBm7PCrY=", "path": "github.com/aws/aws-sdk-go/private/waiter", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "9n/Gdm1mNIxB7eXRZR+LP2pLjr8=", "path": "github.com/aws/aws-sdk-go/service/acm", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Ykf7vcT+gAM+nsZ2vfRbWR51iqM=", "path": "github.com/aws/aws-sdk-go/service/apigateway", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "vywzqp8jtu1rUKkb/4LEld2yOgQ=", "path": "github.com/aws/aws-sdk-go/service/applicationautoscaling", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "0/2niio3ok72EAFl/s3S/E/yabc=", "path": "github.com/aws/aws-sdk-go/service/autoscaling", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "rKlCBX8p5aFkljRSWug8chDKOsU=", "path": "github.com/aws/aws-sdk-go/service/cloudformation", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "FKms6qE/E3ZLLV90G877CrXJwpk=", "path": "github.com/aws/aws-sdk-go/service/cloudfront", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "JkCPEbRbVHODZ8hw8fRRB0ow0+s=", "path": "github.com/aws/aws-sdk-go/service/cloudtrail", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "ZnIZiTYeRgS2393kOcYxNL0qAUQ=", "path": "github.com/aws/aws-sdk-go/service/cloudwatch", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "wlq1vQbXSJ4NK6fzlVrPDZwyw8A=", + "checksumSHA1": "eil1c4KFMkqPN+ng7GsMlBV8TFc=", "path": "github.com/aws/aws-sdk-go/service/cloudwatchevents", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "TMRiIJYbg0/5naYSnYk3DQnaDkk=", "path": "github.com/aws/aws-sdk-go/service/cloudwatchlogs", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "8T0+kiovp+vGclOMZMajizGsG54=", "path": "github.com/aws/aws-sdk-go/service/codebuild", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "JKGhzZ6hg3myUEnNndjUyamloN4=", "path": "github.com/aws/aws-sdk-go/service/codecommit", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "Lzj28Igm2Nazp9iY1qt3nJQ8vv4=", + "checksumSHA1": "Lw5wzTslFwdkfXupmArobCYb6G8=", "path": "github.com/aws/aws-sdk-go/service/codedeploy", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "LXjLQyMAadcANG0UURWuw4di2YE=", "path": "github.com/aws/aws-sdk-go/service/codepipeline", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "NYRd4lqocAcZdkEvLHAZYyXz8Bs=", "path": "github.com/aws/aws-sdk-go/service/configservice", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "fcYSy6jPQjLB7mtOfxsMqWnjobU=", "path": "github.com/aws/aws-sdk-go/service/databasemigrationservice", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "efnIi8bx7cQJ46T9mtzg/SFRqLI=", "path": "github.com/aws/aws-sdk-go/service/directoryservice", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "D5tbr+FKR8BUU0HxxGB9pS9Dlrc=", "path": "github.com/aws/aws-sdk-go/service/dynamodb", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "ecCVL8+SptmQlojrGtL8mQdaJ6E=", "path": "github.com/aws/aws-sdk-go/service/ec2", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "B6qHy1+Rrp9lQCBR/JDRT72kuCI=", "path": "github.com/aws/aws-sdk-go/service/ecr", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "UFpKfwRxhzQk3pCbBrBa2RsPL24=", "path": "github.com/aws/aws-sdk-go/service/ecs", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "jTTOfudaj/nYDyLCig9SKlDFFHk=", "path": "github.com/aws/aws-sdk-go/service/efs", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "5ZYWoEnb0SID/9cKRb1oGPrrhsA=", "path": "github.com/aws/aws-sdk-go/service/elasticache", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "oVV/BlLfwPI+iycKd9PIQ7oLm/4=", "path": "github.com/aws/aws-sdk-go/service/elasticbeanstalk", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "yvQhmYq5ZKkKooTgkZ+M6032Vr0=", "path": "github.com/aws/aws-sdk-go/service/elasticsearchservice", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "M1+iJ/A2Ml8bxSJFrBr/jWsv9w0=", "path": "github.com/aws/aws-sdk-go/service/elastictranscoder", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "BjzlDfZp1UvDoFfFnkwBxJxtylg=", "path": "github.com/aws/aws-sdk-go/service/elb", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "42TACCjZnJKGuF4ijfLpKUpw4/I=", "path": "github.com/aws/aws-sdk-go/service/elbv2", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "x+ykEiXwI53Wm6Ypb4XgFf/6HaI=", + "checksumSHA1": "lJcieoov9dRhwpuEBasKweL7Mzo=", "path": "github.com/aws/aws-sdk-go/service/emr", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "1O87s9AddHMbwCu6ooNULcW9iE8=", "path": "github.com/aws/aws-sdk-go/service/firehose", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "g5xmBO7nAUGV2yT8SAL2tfP8DUU=", "path": "github.com/aws/aws-sdk-go/service/glacier", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "7JybKGBdRMLcnHP+126VLsnVghM=", "path": "github.com/aws/aws-sdk-go/service/iam", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Bk6ExT97T4NMOyXthMr6Avm34mg=", "path": "github.com/aws/aws-sdk-go/service/inspector", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "lUmFKbtBQn9S4qrD5GOd57PIU1c=", "path": "github.com/aws/aws-sdk-go/service/kinesis", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "l1NpLkHXS+eDybfk4Al9Afhyf/4=", "path": "github.com/aws/aws-sdk-go/service/kms", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "8kUY3AExG/gcAJ2I2a5RCSoxx5I=", "path": "github.com/aws/aws-sdk-go/service/lambda", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Ab4YFGFLtEBEIpr8kHkLjB7ydGY=", "path": "github.com/aws/aws-sdk-go/service/lightsail", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "c3N3uwWuXjwio6NNDAlDr0oUUXk=", "path": "github.com/aws/aws-sdk-go/service/opsworks", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { - "checksumSHA1": "jlUKUEyZw9qh+qLaPaRzWS5bxEk=", + "checksumSHA1": "ra0UNwqr9Ic/fsEGk41dvl5jqbs=", "path": "github.com/aws/aws-sdk-go/service/rds", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "09fncNHyk8Tcw9Ailvi0pi9F1Xc=", "path": "github.com/aws/aws-sdk-go/service/redshift", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "VWVMEqjfDDgB14lgsv0Zq3dQclU=", "path": "github.com/aws/aws-sdk-go/service/route53", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "eEWM4wKzVbRqAwIy3MdMCDUGs2s=", "path": "github.com/aws/aws-sdk-go/service/s3", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "4NNi2Ab0iPu/MRGo/kn20mTNxg4=", "path": "github.com/aws/aws-sdk-go/service/ses", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "KpqdFUB/0gBsouCqZmflQ4YPXB0=", "path": "github.com/aws/aws-sdk-go/service/sfn", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "cRGam+7Yt9Ys4WQH6TNYg+Fjf20=", "path": "github.com/aws/aws-sdk-go/service/simpledb", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "3wN8qn+1be7xe/0zXrOM502s+8M=", "path": "github.com/aws/aws-sdk-go/service/sns", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "pMyhp8ffTMnHDoF+Wu0rcvhVoNE=", "path": "github.com/aws/aws-sdk-go/service/sqs", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "UEVVPCLpzuLRBIZI7X1A8mIpSuA=", "path": "github.com/aws/aws-sdk-go/service/ssm", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "Knj17ZMPWkGYTm2hZxEgnuboMM4=", "path": "github.com/aws/aws-sdk-go/service/sts", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "C99KOCRh6qMcFwKFZy3r8we9NNE=", "path": "github.com/aws/aws-sdk-go/service/waf", - "revision": "0484dc540811ee0df1acfee287786cb5b0150ab3", - "revisionTime": "2017-03-09T23:20:29Z", - "version": "v1.7.7", - "versionExact": "v1.7.7" + "revision": "695fe24acaf9afe80b0ce261d4637f42ba0b4c7d", + "revisionTime": "2017-03-13T22:48:26Z", + "version": "v1", + "versionExact": "v1.7.9" }, { "checksumSHA1": "nqw2Qn5xUklssHTubS5HDvEL9L4=",