diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 132dd9323788..545a69c16064 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -227,143 +227,143 @@ }, { "ImportPath": "github.com/aws/aws-sdk-go/aws", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/awserr", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/awsutil", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/client", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/client/metadata", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/corehandlers", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/defaults", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/ec2metadata", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/request", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/aws/session", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/endpoints", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/ec2query", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/restjson", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/restxml", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/signer/v4", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/private/waiter", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/apigateway", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/autoscaling", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/cloudformation", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/cloudfront", @@ -372,148 +372,148 @@ }, { "ImportPath": "github.com/aws/aws-sdk-go/service/cloudtrail", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/cloudwatch", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/cloudwatchevents", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/cloudwatchlogs", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/codecommit", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/codedeploy", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/directoryservice", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/dynamodb", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/ec2", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/ecr", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/ecs", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/efs", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/elasticache", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/elasticbeanstalk", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/elasticsearchservice", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/elb", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/firehose", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/glacier", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/iam", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/kinesis", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/kms", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/lambda", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/opsworks", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/rds", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/redshift", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/route53", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/s3", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/sns", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/aws/aws-sdk-go/service/sqs", - "Comment": "v1.1.14", - "Rev": "6876e9922ff299adf36e43e04c94820077968b3b" + "Comment": "v1.1.15", + "Rev": "e7cf1e5986499eea7d4a87868f1eb578c8f2045a" }, { "ImportPath": "github.com/bgentry/speakeasy", diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go b/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go index 83badef7cc81..f664caf0946e 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go @@ -32,19 +32,37 @@ func (d DefaultRetryer) MaxRetries() int { // RetryRules returns the delay duration before retrying this request again func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration { // Set the upper limit of delay in retrying at ~five minutes + minTime := 30 + throttle := d.shouldThrottle(r) + if throttle { + minTime = 1000 + } + retryCount := r.RetryCount if retryCount > 13 { retryCount = 13 + } else if throttle && retryCount > 8 { + retryCount = 8 } - delay := (1 << uint(retryCount)) * (rand.Intn(30) + 30) + delay := (1 << uint(retryCount)) * (rand.Intn(30) + minTime) return time.Duration(delay) * time.Millisecond } -// ShouldRetry returns if the request should be retried. +// ShouldRetry returns true if the request should be retried. func (d DefaultRetryer) ShouldRetry(r *request.Request) bool { if r.HTTPResponse.StatusCode >= 500 { return true } - return r.IsErrorRetryable() + return r.IsErrorRetryable() || d.shouldThrottle(r) +} + +// ShouldThrottle returns true if the request should be throttled. +func (d DefaultRetryer) shouldThrottle(r *request.Request) bool { + if r.HTTPResponse.StatusCode == 502 || + r.HTTPResponse.StatusCode == 503 || + r.HTTPResponse.StatusCode == 504 { + return true + } + return r.IsErrorThrottle() } diff --git a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go index 8edcfc926bd9..669c813a00d5 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go @@ -2,6 +2,7 @@ package ec2metadata import ( "encoding/json" + "fmt" "path" "strings" "time" @@ -49,7 +50,7 @@ func (c *EC2Metadata) GetInstanceIdentityDocument() (EC2InstanceIdentityDocument resp, err := c.GetDynamicData("instance-identity/document") if err != nil { return EC2InstanceIdentityDocument{}, - awserr.New("EC2RoleRequestError", + awserr.New("EC2MetadataRequestError", "failed to get EC2 instance identity document", err) } @@ -63,6 +64,31 @@ func (c *EC2Metadata) GetInstanceIdentityDocument() (EC2InstanceIdentityDocument return doc, nil } +// IAMInfo retrieves IAM info from the metadata API +func (c *EC2Metadata) IAMInfo() (EC2IAMInfo, error) { + resp, err := c.GetMetadata("iam/info") + if err != nil { + return EC2IAMInfo{}, + awserr.New("EC2MetadataRequestError", + "failed to get EC2 IAM info", err) + } + + info := EC2IAMInfo{} + if err := json.NewDecoder(strings.NewReader(resp)).Decode(&info); err != nil { + return EC2IAMInfo{}, + awserr.New("SerializationError", + "failed to decode EC2 IAM info", err) + } + + if info.Code != "Success" { + errMsg := fmt.Sprintf("failed to get EC2 IAM Info (%s)", info.Code) + return EC2IAMInfo{}, + awserr.New("EC2MetadataError", errMsg, nil) + } + + return info, nil +} + // Region returns the region the instance is running in. func (c *EC2Metadata) Region() (string, error) { resp, err := c.GetMetadata("placement/availability-zone") @@ -85,6 +111,15 @@ func (c *EC2Metadata) Available() bool { return true } +// An EC2IAMInfo provides the shape for unmarshalling +// an IAM info from the metadata API +type EC2IAMInfo struct { + Code string + LastUpdated time.Time + InstanceProfileArn string + InstanceProfileID string +} + // An EC2InstanceIdentityDocument provides the shape for unmarshalling // an instance identity document type EC2InstanceIdentityDocument struct { diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go b/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go index ab6fff5ac842..8cc8b015ae6c 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go @@ -26,8 +26,11 @@ func WithRetryer(cfg *aws.Config, retryer Retryer) *aws.Config { // retryableCodes is a collection of service response codes which are retry-able // without any further action. var retryableCodes = map[string]struct{}{ - "RequestError": {}, - "RequestTimeout": {}, + "RequestError": {}, + "RequestTimeout": {}, +} + +var throttleCodes = map[string]struct{}{ "ProvisionedThroughputExceededException": {}, "Throttling": {}, "ThrottlingException": {}, @@ -46,6 +49,11 @@ var credsExpiredCodes = map[string]struct{}{ "RequestExpired": {}, // EC2 Only } +func isCodeThrottle(code string) bool { + _, ok := throttleCodes[code] + return ok +} + func isCodeRetryable(code string) bool { if _, ok := retryableCodes[code]; ok { return true @@ -70,6 +78,17 @@ func (r *Request) IsErrorRetryable() bool { return false } +// IsErrorThrottle returns whether the error is to be throttled based on its code. +// Returns false if the request has no Error set +func (r *Request) IsErrorThrottle() bool { + if r.Error != nil { + if err, ok := r.Error.(awserr.Error); ok { + return isCodeThrottle(err.Code()) + } + } + return false +} + // IsErrorExpired returns whether the error code is a credential expiry error. // Returns false if the request has no Error set. func (r *Request) IsErrorExpired() bool { diff --git a/vendor/github.com/aws/aws-sdk-go/aws/types.go b/vendor/github.com/aws/aws-sdk-go/aws/types.go index 0f067c57f4e2..fa014b49e1d7 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/types.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/types.go @@ -61,23 +61,41 @@ func (r ReaderSeekerCloser) Close() error { type WriteAtBuffer struct { buf []byte m sync.Mutex + + // GrowthCoeff defines the growth rate of the internal buffer. By + // default, the growth rate is 1, where expanding the internal + // buffer will allocate only enough capacity to fit the new expected + // length. + GrowthCoeff float64 +} + +// NewWriteAtBuffer creates a WriteAtBuffer with an internal buffer +// provided by buf. +func NewWriteAtBuffer(buf []byte) *WriteAtBuffer { + return &WriteAtBuffer{buf: buf} } // WriteAt writes a slice of bytes to a buffer starting at the position provided // The number of bytes written will be returned, or error. Can overwrite previous // written slices if the write ats overlap. func (b *WriteAtBuffer) WriteAt(p []byte, pos int64) (n int, err error) { + pLen := len(p) + expLen := pos + int64(pLen) b.m.Lock() defer b.m.Unlock() - - expLen := pos + int64(len(p)) if int64(len(b.buf)) < expLen { - newBuf := make([]byte, expLen) - copy(newBuf, b.buf) - b.buf = newBuf + if int64(cap(b.buf)) < expLen { + if b.GrowthCoeff < 1 { + b.GrowthCoeff = 1 + } + newBuf := make([]byte, expLen, int64(b.GrowthCoeff*float64(expLen))) + copy(newBuf, b.buf) + b.buf = newBuf + } + b.buf = b.buf[:expLen] } copy(b.buf[pos:], p) - return len(p), nil + return pLen, nil } // Bytes returns a slice of bytes written to the buffer. 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 458620f88b4e..805dc711dbb0 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.1.14" +const SDKVersion = "1.1.15" diff --git a/vendor/github.com/aws/aws-sdk-go/service/autoscaling/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/autoscaling/waiters.go index 42ffccb852dc..42595d2178b0 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/autoscaling/waiters.go +++ b/vendor/github.com/aws/aws-sdk-go/service/autoscaling/waiters.go @@ -14,15 +14,15 @@ func (c *AutoScaling) WaitUntilGroupExists(input *DescribeAutoScalingGroupsInput Acceptors: []waiter.WaitAcceptor{ { State: "success", - Matcher: "pathAll", - Argument: "length(AutoScalingGroups)", - Expected: 1, + Matcher: "path", + Argument: "length(AutoScalingGroups) > `0`", + Expected: true, }, { State: "retry", - Matcher: "pathAll", - Argument: "length(AutoScalingGroups)", - Expected: 0, + Matcher: "path", + Argument: "length(AutoScalingGroups) > `0`", + Expected: false, }, }, } @@ -43,13 +43,13 @@ func (c *AutoScaling) WaitUntilGroupInService(input *DescribeAutoScalingGroupsIn Acceptors: []waiter.WaitAcceptor{ { State: "success", - Matcher: "pathAll", + Matcher: "path", Argument: "contains(AutoScalingGroups[].[length(Instances[?LifecycleState=='InService']) >= MinSize][], `false`)", Expected: false, }, { State: "retry", - Matcher: "pathAll", + Matcher: "path", Argument: "contains(AutoScalingGroups[].[length(Instances[?LifecycleState=='InService']) >= MinSize][], `false`)", Expected: true, }, @@ -72,15 +72,15 @@ func (c *AutoScaling) WaitUntilGroupNotExists(input *DescribeAutoScalingGroupsIn Acceptors: []waiter.WaitAcceptor{ { State: "success", - Matcher: "pathAll", - Argument: "length(AutoScalingGroups)", - Expected: 0, + Matcher: "path", + Argument: "length(AutoScalingGroups) > `0`", + Expected: false, }, { State: "retry", - Matcher: "pathAll", - Argument: "length(AutoScalingGroups)", - Expected: 1, + Matcher: "path", + Argument: "length(AutoScalingGroups) > `0`", + Expected: true, }, }, } diff --git a/vendor/github.com/aws/aws-sdk-go/service/cloudformation/api.go b/vendor/github.com/aws/aws-sdk-go/service/cloudformation/api.go index ca79c979cfa2..7ace19458c8a 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/cloudformation/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/cloudformation/api.go @@ -83,6 +83,46 @@ func (c *CloudFormation) ContinueUpdateRollback(input *ContinueUpdateRollbackInp return out, err } +const opCreateChangeSet = "CreateChangeSet" + +// CreateChangeSetRequest generates a request for the CreateChangeSet operation. +func (c *CloudFormation) CreateChangeSetRequest(input *CreateChangeSetInput) (req *request.Request, output *CreateChangeSetOutput) { + op := &request.Operation{ + Name: opCreateChangeSet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateChangeSetInput{} + } + + req = c.newRequest(op, input, output) + output = &CreateChangeSetOutput{} + req.Data = output + return +} + +// Creates a list of changes for a stack. AWS CloudFormation generates the change +// set by comparing the stack's information with the information that you submit. +// A change set can help you understand which resources AWS CloudFormation will +// change and how it will change them before you update your stack. Change sets +// allow you to check before you make a change so that you don't delete or replace +// critical resources. +// +// AWS CloudFormation doesn't make any changes to the stack when you create +// a change set. To make the specified changes, you must execute the change +// set by using the ExecuteChangeSet action. +// +// After the call successfully completes, AWS CloudFormation starts creating +// the change set. To check the status of the change set, use the DescribeChangeSet +// action. +func (c *CloudFormation) CreateChangeSet(input *CreateChangeSetInput) (*CreateChangeSetOutput, error) { + req, out := c.CreateChangeSetRequest(input) + err := req.Send() + return out, err +} + const opCreateStack = "CreateStack" // CreateStackRequest generates a request for the CreateStack operation. @@ -112,6 +152,37 @@ func (c *CloudFormation) CreateStack(input *CreateStackInput) (*CreateStackOutpu return out, err } +const opDeleteChangeSet = "DeleteChangeSet" + +// DeleteChangeSetRequest generates a request for the DeleteChangeSet operation. +func (c *CloudFormation) DeleteChangeSetRequest(input *DeleteChangeSetInput) (req *request.Request, output *DeleteChangeSetOutput) { + op := &request.Operation{ + Name: opDeleteChangeSet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteChangeSetInput{} + } + + req = c.newRequest(op, input, output) + output = &DeleteChangeSetOutput{} + req.Data = output + return +} + +// Deletes the specified change set. Deleting change sets ensures that no one +// executes the wrong change set. +// +// If the call successfully completes, AWS CloudFormation successfully deleted +// the change set. +func (c *CloudFormation) DeleteChangeSet(input *DeleteChangeSetInput) (*DeleteChangeSetOutput, error) { + req, out := c.DeleteChangeSetRequest(input) + err := req.Send() + return out, err +} + const opDeleteStack = "DeleteStack" // DeleteStackRequest generates a request for the DeleteStack operation. @@ -171,6 +242,36 @@ func (c *CloudFormation) DescribeAccountLimits(input *DescribeAccountLimitsInput return out, err } +const opDescribeChangeSet = "DescribeChangeSet" + +// DescribeChangeSetRequest generates a request for the DescribeChangeSet operation. +func (c *CloudFormation) DescribeChangeSetRequest(input *DescribeChangeSetInput) (req *request.Request, output *DescribeChangeSetOutput) { + op := &request.Operation{ + Name: opDescribeChangeSet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DescribeChangeSetInput{} + } + + req = c.newRequest(op, input, output) + output = &DescribeChangeSetOutput{} + req.Data = output + return +} + +// Returns the inputs for the change set and a list of changes that AWS CloudFormation +// will make if you execute the change set. For more information, see Updating +// Stacks Using Change Sets (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html) +// in the AWS CloudFormation User Guide. +func (c *CloudFormation) DescribeChangeSet(input *DescribeChangeSetInput) (*DescribeChangeSetOutput, error) { + req, out := c.DescribeChangeSetRequest(input) + err := req.Send() + return out, err +} + const opDescribeStackEvents = "DescribeStackEvents" // DescribeStackEventsRequest generates a request for the DescribeStackEvents operation. @@ -361,6 +462,44 @@ func (c *CloudFormation) EstimateTemplateCost(input *EstimateTemplateCostInput) return out, err } +const opExecuteChangeSet = "ExecuteChangeSet" + +// ExecuteChangeSetRequest generates a request for the ExecuteChangeSet operation. +func (c *CloudFormation) ExecuteChangeSetRequest(input *ExecuteChangeSetInput) (req *request.Request, output *ExecuteChangeSetOutput) { + op := &request.Operation{ + Name: opExecuteChangeSet, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ExecuteChangeSetInput{} + } + + req = c.newRequest(op, input, output) + output = &ExecuteChangeSetOutput{} + req.Data = output + return +} + +// Updates a stack using the input information that was provided when the specified +// change set was created. After the call successfully completes, AWS CloudFormation +// starts updating the stack. Use the DescribeStacks action to view the status +// of the update. +// +// When you execute a change set, AWS CloudFormation deletes all other change +// sets associated with the stack because they aren't valid for the updated +// stack. +// +// If a stack policy is associated with the stack, AWS CloudFormation enforces +// the policy during the update. You can't specify a temporary stack policy +// that overrides the current policy. +func (c *CloudFormation) ExecuteChangeSet(input *ExecuteChangeSetInput) (*ExecuteChangeSetOutput, error) { + req, out := c.ExecuteChangeSetRequest(input) + err := req.Send() + return out, err +} + const opGetStackPolicy = "GetStackPolicy" // GetStackPolicyRequest generates a request for the GetStackPolicy operation. @@ -458,6 +597,35 @@ func (c *CloudFormation) GetTemplateSummary(input *GetTemplateSummaryInput) (*Ge return out, err } +const opListChangeSets = "ListChangeSets" + +// ListChangeSetsRequest generates a request for the ListChangeSets operation. +func (c *CloudFormation) ListChangeSetsRequest(input *ListChangeSetsInput) (req *request.Request, output *ListChangeSetsOutput) { + op := &request.Operation{ + Name: opListChangeSets, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListChangeSetsInput{} + } + + req = c.newRequest(op, input, output) + output = &ListChangeSetsOutput{} + req.Data = output + return +} + +// Returns the ID and status of each active change set for a stack. For example, +// AWS CloudFormation lists change sets that are in the CREATE_IN_PROGRESS or +// CREATE_PENDING state. +func (c *CloudFormation) ListChangeSets(input *ListChangeSetsInput) (*ListChangeSetsOutput, error) { + req, out := c.ListChangeSetsRequest(input) + err := req.Send() + return out, err +} + const opListStackResources = "ListStackResources" // ListStackResourcesRequest generates a request for the ListStackResources operation. @@ -725,6 +893,72 @@ func (s CancelUpdateStackOutput) GoString() string { return s.String() } +// The Change structure describes the changes AWS CloudFormation will perform +// if you execute the change set. +type Change struct { + _ struct{} `type:"structure"` + + // A ResourceChange structure that describes the resource and action that AWS + // CloudFormation will perform. + ResourceChange *ResourceChange `type:"structure"` + + // The type of entity that AWS CloudFormation changes. Currently, the only entity + // type is Resource. + Type *string `type:"string" enum:"ChangeType"` +} + +// String returns the string representation +func (s Change) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Change) GoString() string { + return s.String() +} + +// The ChangeSetSummary structure describes a change set, its status, and the +// stack with which it's associated. +type ChangeSetSummary struct { + _ struct{} `type:"structure"` + + // The ID of the change set. + ChangeSetId *string `min:"1" type:"string"` + + // The name of the change set. + ChangeSetName *string `min:"1" type:"string"` + + // The start time when the change set was created, in UTC. + CreationTime *time.Time `type:"timestamp" timestampFormat:"iso8601"` + + // Descriptive information about the change set. + Description *string `min:"1" type:"string"` + + // The ID of the stack with which the change set is associated. + StackId *string `type:"string"` + + // The name of the stack with which the change set is associated. + StackName *string `type:"string"` + + // The state of the change set, such as CREATE_IN_PROGRESS, CREATE_COMPLETE, + // or FAILED. + Status *string `type:"string" enum:"ChangeSetStatus"` + + // A description of the change set's status. For example, if your change set + // is in the FAILED state, AWS CloudFormation shows the error message. + StatusReason *string `type:"string"` +} + +// String returns the string representation +func (s ChangeSetSummary) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ChangeSetSummary) GoString() string { + return s.String() +} + // The input for the ContinueUpdateRollback action. type ContinueUpdateRollbackInput struct { _ struct{} `type:"structure"` @@ -759,13 +993,137 @@ func (s ContinueUpdateRollbackOutput) GoString() string { return s.String() } +// The input for the CreateChangeSet action. +type CreateChangeSetInput struct { + _ struct{} `type:"structure"` + + // A list of capabilities that you must specify before AWS CloudFormation can + // update certain stacks. Some stack templates might include resources that + // can affect permissions in your AWS account, for example, by creating new + // AWS Identity and Access Management (IAM) users. For those stacks, you must + // explicitly acknowledge their capabilities by specifying this parameter. + // + // Currently, the only valid value is CAPABILITY_IAM, which is required for + // the following resources: AWS::IAM::AccessKey (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html), + // AWS::IAM::Group (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html), + // AWS::IAM::InstanceProfile (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html), + // AWS::IAM::Policy (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html), + // AWS::IAM::Role (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html), + // AWS::IAM::User (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html), + // and AWS::IAM::UserToGroupAddition (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html). + // If your stack template contains these resources, we recommend that you review + // all permissions associated with them and edit their permissions if necessary. + // If your template contains any of the listed resources and you don't specify + // this parameter, this action returns an InsufficientCapabilities error. + Capabilities []*string `type:"list"` + + // The name of the change set. The name must be unique among all change sets + // that are associated with the specified stack. + // + // A change set name can contain only alphanumeric, case sensitive characters + // and hyphens. It must start with an alphabetic character and cannot exceed + // 128 characters. + ChangeSetName *string `min:"1" type:"string" required:"true"` + + // A unique identifier for this CreateChangeSet request. Specify this token + // if you plan to retry requests so that AWS CloudFormation knows that you're + // not attempting to create another change set with the same name. You might + // retry CreateChangeSet requests to ensure that AWS CloudFormation successfully + // received them. + ClientToken *string `min:"1" type:"string"` + + // A description to help you identify this change set. + Description *string `min:"1" type:"string"` + + // The Amazon Resource Names (ARNs) of Amazon Simple Notification Service (Amazon + // SNS) topics that AWS CloudFormation associates with the stack. To remove + // all associated notification topics, specify an empty list. + NotificationARNs []*string `type:"list"` + + // A list of Parameter structures that specify input parameters for the change + // set. For more information, see the Parameter (http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html) + // data type. + Parameters []*Parameter `type:"list"` + + // The template resource types that you have permissions to work with if you + // execute this change set, such as AWS::EC2::Instance, AWS::EC2::*, or Custom::MyCustomInstance. + // + // If the list of resource types doesn't include a resource type that you're + // updating, the stack update fails. By default, AWS CloudFormation grants permissions + // to all resource types. AWS Identity and Access Management (IAM) uses this + // parameter for condition keys in IAM policies for AWS CloudFormation. For + // more information, see Controlling Access with AWS Identity and Access Management + // (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) + // in the AWS CloudFormation User Guide. + ResourceTypes []*string `type:"list"` + + // The name or the unique ID of the stack for which you are creating a change + // set. AWS CloudFormation generates the change set by comparing this stack's + // information with the information that you submit, such as a modified template + // or different parameter input values. + StackName *string `min:"1" type:"string" required:"true"` + + // Key-value pairs to associate with this stack. AWS CloudFormation also propagates + // these tags to resources in the stack. You can specify a maximum of 10 tags. + Tags []*Tag `type:"list"` + + // A structure that contains the body of the revised template, with a minimum + // length of 1 byte and a maximum length of 51,200 bytes. AWS CloudFormation + // generates the change set by comparing this template with the template of + // the stack that you specified. + // + // Conditional: You must specify only TemplateBody or TemplateURL. + TemplateBody *string `min:"1" type:"string"` + + // The location of the file that contains the revised template. The URL must + // point to a template (max size: 460,800 bytes) that is located in an S3 bucket. + // AWS CloudFormation generates the change set by comparing this template with + // the stack that you specified. + // + // Conditional: You must specify only TemplateBody or TemplateURL. + TemplateURL *string `min:"1" type:"string"` + + // Whether to reuse the template that is associated with the stack to create + // the change set. + UsePreviousTemplate *bool `type:"boolean"` +} + +// String returns the string representation +func (s CreateChangeSetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateChangeSetInput) GoString() string { + return s.String() +} + +// The output for the CreateChangeSet action. +type CreateChangeSetOutput struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the change set. + Id *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s CreateChangeSetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateChangeSetOutput) GoString() string { + return s.String() +} + // The input for CreateStack action. type CreateStackInput struct { _ struct{} `type:"structure"` // A list of capabilities that you must specify before AWS CloudFormation can - // create or update certain stacks. Some stack templates might include resources - // that can affect permissions in your AWS account. For those stacks, you must + // create certain stacks. Some stack templates might include resources that + // can affect permissions in your AWS account, for example, by creating new + // AWS Identity and Access Management (IAM) users. For those stacks, you must // explicitly acknowledge their capabilities by specifying this parameter. // // Currently, the only valid value is CAPABILITY_IAM, which is required for @@ -777,8 +1135,9 @@ type CreateStackInput struct { // AWS::IAM::User (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html), // and AWS::IAM::UserToGroupAddition (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html). // If your stack template contains these resources, we recommend that you review - // any permissions associated with them. If you don't specify this parameter, - // this action returns an InsufficientCapabilities error. + // all permissions associated with them and edit their permissions if necessary. + // If your template contains any of the listed resources and you don't specify + // this parameter, this action returns an InsufficientCapabilities error. Capabilities []*string `type:"list"` // Set to true to disable rollback of the stack if stack creation failed. You @@ -897,6 +1256,44 @@ func (s CreateStackOutput) GoString() string { return s.String() } +// The input for the DeleteChangeSet action. +type DeleteChangeSetInput struct { + _ struct{} `type:"structure"` + + // The name or Amazon Resource Name (ARN) of the change set that you want to + // delete. + ChangeSetName *string `min:"1" type:"string" required:"true"` + + // If you specified the name of a change set to delete, specify the stack name + // or ID (ARN) that is associated with it. + StackName *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s DeleteChangeSetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteChangeSetInput) GoString() string { + return s.String() +} + +// The output for the DeleteChangeSet action. +type DeleteChangeSetOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s DeleteChangeSetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteChangeSetOutput) GoString() string { + return s.String() +} + // The input for DeleteStack action. type DeleteStackInput struct { _ struct{} `type:"structure"` @@ -978,6 +1375,100 @@ func (s DescribeAccountLimitsOutput) GoString() string { return s.String() } +// The input for the DescribeChangeSet action. +type DescribeChangeSetInput struct { + _ struct{} `type:"structure"` + + // The name or Amazon Resource Name (ARN) of the change set that you want to + // describe. + ChangeSetName *string `min:"1" type:"string" required:"true"` + + // A string (provided by the DescribeChangeSet response output) that identifies + // the next page of information that you want to retrieve. + NextToken *string `min:"1" type:"string"` + + // If you specified the name of a change set, specify the stack name or ID (ARN) + // of the change set you want to describe. + StackName *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s DescribeChangeSetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeChangeSetInput) GoString() string { + return s.String() +} + +// The output for the DescribeChangeSet action. +type DescribeChangeSetOutput struct { + _ struct{} `type:"structure"` + + // If you execute the change set, the list of capabilities that were explicitly + // acknowledged when the change set was created. + Capabilities []*string `type:"list"` + + // The ARN of the change set. + ChangeSetId *string `min:"1" type:"string"` + + // The name of the change set. + ChangeSetName *string `min:"1" type:"string"` + + // A list of Change structures that describes the resources AWS CloudFormation + // changes if you execute the change set. + Changes []*Change `type:"list"` + + // The start time when the change set was created, in UTC. + CreationTime *time.Time `type:"timestamp" timestampFormat:"iso8601"` + + // Information about the change set. + Description *string `min:"1" type:"string"` + + // If the output exceeds 1 MB, a string that identifies the next page of changes. + // If there is no additional page, this value is null. + NextToken *string `min:"1" type:"string"` + + // The ARNs of the Amazon Simple Notification Service (Amazon SNS) topics that + // will be associated with the stack if you execute the change set. + NotificationARNs []*string `type:"list"` + + // A list of Parameter structures that describes the input parameters and their + // values used to create the change set. For more information, see the Parameter + // (http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html) + // data type. + Parameters []*Parameter `type:"list"` + + // The ARN of the stack that is associated with the change set. + StackId *string `type:"string"` + + // The name of the stack that is associated with the change set. + StackName *string `type:"string"` + + // The current status of the change set, such as CREATE_IN_PROGRESS, CREATE_COMPLETE, + // or FAILED. + Status *string `type:"string" enum:"ChangeSetStatus"` + + // A description of the change set's status. For example, if your attempt to + // create a change set failed, AWS CloudFormation shows the error message. + StatusReason *string `type:"string"` + + // If you execute the change set, the tags that will be associated with the + // stack. + Tags []*Tag `type:"list"` +} + +// String returns the string representation +func (s DescribeChangeSetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeChangeSetOutput) GoString() string { + return s.String() +} + // The input for DescribeStackEvents action. type DescribeStackEventsInput struct { _ struct{} `type:"structure"` @@ -1238,6 +1729,44 @@ func (s EstimateTemplateCostOutput) GoString() string { return s.String() } +// The input for the ExecuteChangeSet action. +type ExecuteChangeSetInput struct { + _ struct{} `type:"structure"` + + // The name or ARN of the change set that you want use to update the specified + // stack. + ChangeSetName *string `min:"1" type:"string" required:"true"` + + // If you specified the name of a change set, specify the stack name or ID (ARN) + // that is associated with the change set you want to execute. + StackName *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s ExecuteChangeSetInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExecuteChangeSetInput) GoString() string { + return s.String() +} + +// The output for the ExecuteChangeSet action. +type ExecuteChangeSetOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s ExecuteChangeSetOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ExecuteChangeSetOutput) GoString() string { + return s.String() +} + // The input for the GetStackPolicy action. type GetStackPolicyInput struct { _ struct{} `type:"structure"` @@ -1378,7 +1907,7 @@ type GetTemplateSummaryOutput struct { CapabilitiesReason *string `type:"string"` // The value that is defined in the Description property of the template. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // The value that is defined for the Metadata property of the template. Metadata *string `type:"string"` @@ -1406,6 +1935,52 @@ func (s GetTemplateSummaryOutput) GoString() string { return s.String() } +// The input for the ListChangeSets action. +type ListChangeSetsInput struct { + _ struct{} `type:"structure"` + + // A string (provided by the ListChangeSets response output) that identifies + // the next page of change sets that you want to retrieve. + NextToken *string `min:"1" type:"string"` + + // The name or the Amazon Resource Name (ARN) of the stack for which you want + // to list change sets. + StackName *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListChangeSetsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListChangeSetsInput) GoString() string { + return s.String() +} + +// The output for the ListChangeSets action. +type ListChangeSetsOutput struct { + _ struct{} `type:"structure"` + + // If the output exceeds 1 MB, a string that identifies the next page of change + // sets. If there is no additional page, this value is null. + NextToken *string `min:"1" type:"string"` + + // A list of ChangeSetSummary structures that provides the ID and status of + // each change set for the specified stack. + Summaries []*ChangeSetSummary `type:"list"` +} + +// String returns the string representation +func (s ListChangeSetsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListChangeSetsOutput) GoString() string { + return s.String() +} + // The input for the ListStackResource action. type ListStackResourcesInput struct { _ struct{} `type:"structure"` @@ -1437,8 +2012,8 @@ func (s ListStackResourcesInput) GoString() string { type ListStackResourcesOutput struct { _ struct{} `type:"structure"` - // If the output exceeds 1 MB in size, a string that identifies the next page - // of stack resources. If no additional page exists, this value is null. + // If the output exceeds 1 MB, a string that identifies the next page of stack + // resources. If no additional page exists, this value is null. NextToken *string `min:"1" type:"string"` // A list of StackResourceSummary structures. @@ -1506,7 +2081,7 @@ type Output struct { _ struct{} `type:"structure"` // User defined description associated with the output. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // The key associated with the output. OutputKey *string `type:"string"` @@ -1581,7 +2156,7 @@ type ParameterDeclaration struct { DefaultValue *string `type:"string"` // The description that is associate with the parameter. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // Flag that indicates whether the parameter value is shown as plain text in // logs and in the AWS Management Console. @@ -1607,6 +2182,152 @@ func (s ParameterDeclaration) GoString() string { return s.String() } +// The ResourceChange structure describes the resource and the action that AWS +// CloudFormation will perform on it if you execute this change set. +type ResourceChange struct { + _ struct{} `type:"structure"` + + // The action that AWS CloudFormation takes on the resource, such as Add (adds + // a new resource), Modify (changes a resource), or Remove (deletes a resource). + Action *string `type:"string" enum:"ChangeAction"` + + // For the Modify action, a list of ResourceChangeDetail structures that describes + // the changes that AWS CloudFormation will make to the resource. + Details []*ResourceChangeDetail `type:"list"` + + // The resource's logical ID, which is defined in the stack's template. + LogicalResourceId *string `type:"string"` + + // The resource's physical ID (resource name). Resources that you are adding + // don't have physical IDs because they haven't been created. + PhysicalResourceId *string `type:"string"` + + // For the Modify action, indicates whether AWS CloudFormation will replace + // the resource by creating a new one and deleting the old one. This value depends + // on the value of the RequiresRecreation property in the ResourceTargetDefinition + // structure. For example, if the RequiresRecreation field is Always and the + // Evaluation field is Static, Replacement is True. If the RequiresRecreation + // field is Always and the Evaluation field is Dynamic, Replacement is Conditionally. + // + // If you have multiple changes with different RequiresRecreation values, the + // Replacement value depends on the change with the most impact. A RequiresRecreation + // value of Always has the most impact, followed by Conditionally, and then + // Never. + Replacement *string `type:"string" enum:"Replacement"` + + // The type of AWS CloudFormation resource, such as AWS::S3::Bucket. + ResourceType *string `min:"1" type:"string"` + + // For the Modify action, indicates which resource attribute is triggering this + // update, such as a change in the resource attribute's Metadata, Properties, + // or Tags. + Scope []*string `type:"list"` +} + +// String returns the string representation +func (s ResourceChange) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceChange) GoString() string { + return s.String() +} + +// For a resource with Modify as the action, the ResourceChange structure describes +// the changes AWS CloudFormation will make to that resource. +type ResourceChangeDetail struct { + _ struct{} `type:"structure"` + + // The identity of the entity that triggered this change. This entity is a member + // of the group that is specified by the ChangeSource field. For example, if + // you modified the value of the KeyPairName parameter, the CausingEntity is + // the name of the parameter (KeyPairName). + // + // If the ChangeSource value is DirectModification, no value is given for CausingEntity. + CausingEntity *string `type:"string"` + + // The group to which the CausingEntity value belongs. There are five entity + // groups: + // + // ResourceReference entities are Ref intrinsic functions that refer to resources + // in the template, such as { "Ref" : "MyEC2InstanceResource" }. ParameterReference + // entities are Ref intrinsic functions that get template parameter values, + // such as { "Ref" : "MyPasswordParameter" }. ResourceAttribute entities are + // Fn::GetAtt intrinsic functions that get resource attribute values, such as + // { "Fn::GetAtt" : [ "MyEC2InstanceResource", "PublicDnsName" ] }. DirectModification + // entities are changes that are made directly to the template. Automatic entities + // are AWS::CloudFormation::Stack resource types, which are also known as nested + // stacks. If you made no changes to the AWS::CloudFormation::Stack resource, + // AWS CloudFormation sets the ChangeSource to Automatic because the nested + // stack's template might have changed. Changes to a nested stack's template + // aren't visible to AWS CloudFormation until you run an update on the parent + // stack. + ChangeSource *string `type:"string" enum:"ChangeSource"` + + // Indicates whether AWS CloudFormation can determine the target value, and + // whether the target value will change before you execute a change set. + // + // For Static evaluations, AWS CloudFormation can determine that the target + // value will change, and its value. For example, if you directly modify the + // InstanceType property of an EC2 instance, AWS CloudFormation knows that this + // property value will change, and its value, so this is a Static evaluation. + // + // For Dynamic evaluations, cannot determine the target value because it depends + // on the result of an intrinsic function, such as a Ref or Fn::GetAtt intrinsic + // function, when the stack is updated. For example, if your template includes + // a reference to a resource that is conditionally recreated, the value of the + // reference (the physical ID of the resource) might change, depending on if + // the resource is recreated. If the resource is recreated, it will have a new + // physical ID, so all references to that resource will also be updated. + Evaluation *string `type:"string" enum:"EvaluationType"` + + // A ResourceTargetDefinition structure that describes the field that AWS CloudFormation + // will change and whether the resource will be recreated. + Target *ResourceTargetDefinition `type:"structure"` +} + +// String returns the string representation +func (s ResourceChangeDetail) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceChangeDetail) GoString() string { + return s.String() +} + +// The field that AWS CloudFormation will change, such as the name of a resource's +// property, and whether the resource will be recreated. +type ResourceTargetDefinition struct { + _ struct{} `type:"structure"` + + // Indicates which resource attribute is triggering this update, such as a change + // in the resource attribute's Metadata, Properties, or Tags. + Attribute *string `type:"string" enum:"ResourceAttribute"` + + // If the Attribute value is Properties, the name of the property. For all other + // attributes, the value is null. + Name *string `type:"string"` + + // If the Attribute value is Properties, indicates whether a change to this + // property causes the resource to be recreated. The value can be Never, Always, + // or Conditionally. To determine the conditions for a Conditionally recreation, + // see the update behavior for that property (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) + // in the AWS CloudFormation User Guide. + RequiresRecreation *string `type:"string" enum:"RequiresRecreation"` +} + +// String returns the string representation +func (s ResourceTargetDefinition) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceTargetDefinition) GoString() string { + return s.String() +} + // The input for the SetStackPolicy action. type SetStackPolicyInput struct { _ struct{} `type:"structure"` @@ -1621,7 +2342,7 @@ type SetStackPolicyInput struct { StackPolicyBody *string `min:"1" type:"string"` // Location of a file containing the stack policy. The URL must point to a policy - // (max size: 16KB) located in an S3 bucket in the same region as the stack. + // (maximum size: 16 KB) located in an S3 bucket in the same region as the stack. // You can specify either the StackPolicyBody or the StackPolicyURL parameter, // but not both. StackPolicyURL *string `min:"1" type:"string"` @@ -1709,7 +2430,7 @@ type Stack struct { CreationTime *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"` // A user-defined description associated with the stack. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // Boolean to enable or disable rollback on stack creation failures: // @@ -1741,7 +2462,7 @@ type Stack struct { // Success/failure message associated with the stack status. StackStatusReason *string `type:"string"` - // A list of Tags that specify cost allocation information for the stack. + // A list of Tags that specify information about the stack. Tags []*Tag `type:"list"` // The amount of time within which stack creation should complete. @@ -1784,7 +2505,7 @@ type StackEvent struct { // Type of resource. (For more information, go to AWS Resource Types Reference // (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) // in the AWS CloudFormation User Guide.) - ResourceType *string `type:"string"` + ResourceType *string `min:"1" type:"string"` // The unique ID name of the instance of the stack. StackId *string `type:"string" required:"true"` @@ -1811,7 +2532,7 @@ type StackResource struct { _ struct{} `type:"structure"` // User defined description associated with the resource. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // The logical name of the resource specified in the template. LogicalResourceId *string `type:"string" required:"true"` @@ -1829,7 +2550,7 @@ type StackResource struct { // Type of resource. (For more information, go to AWS Resource Types Reference // (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) // in the AWS CloudFormation User Guide.) - ResourceType *string `type:"string" required:"true"` + ResourceType *string `min:"1" type:"string" required:"true"` // Unique identifier of the stack. StackId *string `type:"string"` @@ -1856,7 +2577,7 @@ type StackResourceDetail struct { _ struct{} `type:"structure"` // User defined description associated with the resource. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // Time the status was updated. LastUpdatedTimestamp *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"` @@ -1882,7 +2603,7 @@ type StackResourceDetail struct { // Type of resource. ((For more information, go to AWS Resource Types Reference // (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) // in the AWS CloudFormation User Guide.) - ResourceType *string `type:"string" required:"true"` + ResourceType *string `min:"1" type:"string" required:"true"` // Unique identifier of the stack. StackId *string `type:"string"` @@ -1924,7 +2645,7 @@ type StackResourceSummary struct { // Type of resource. (For more information, go to AWS Resource Types Reference // (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) // in the AWS CloudFormation User Guide.) - ResourceType *string `type:"string" required:"true"` + ResourceType *string `min:"1" type:"string" required:"true"` } // String returns the string representation @@ -1977,9 +2698,8 @@ func (s StackSummary) GoString() string { return s.String() } -// The Tag type is used by CreateStack in the Tags parameter. It allows you -// to specify a key-value pair that can be used to store information related -// to cost allocation for an AWS CloudFormation stack. +// The Tag type enables you to specify a key-value pair that can be used to +// store information about an AWS CloudFormation stack. type Tag struct { _ struct{} `type:"structure"` @@ -2011,7 +2731,7 @@ type TemplateParameter struct { DefaultValue *string `type:"string"` // User defined description associated with the parameter. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // Flag indicating whether the parameter should be displayed as plain text in // logs and UIs. @@ -2036,11 +2756,13 @@ type UpdateStackInput struct { _ struct{} `type:"structure"` // A list of capabilities that you must specify before AWS CloudFormation can - // create or update certain stacks. Some stack templates might include resources - // that can affect permissions in your AWS account. For those stacks, you must - // explicitly acknowledge their capabilities by specifying this parameter. Currently, - // the only valid value is CAPABILITY_IAM, which is required for the following - // resources: AWS::IAM::AccessKey (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html), + // update certain stacks. Some stack templates might include resources that + // can affect permissions in your AWS account, for example, by creating new + // AWS Identity and Access Management (IAM) users. For those stacks, you must + // explicitly acknowledge their capabilities by specifying this parameter. + // + // Currently, the only valid value is CAPABILITY_IAM, which is required for + // the following resources: AWS::IAM::AccessKey (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html), // AWS::IAM::Group (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html), // AWS::IAM::InstanceProfile (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html), // AWS::IAM::Policy (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html), @@ -2048,8 +2770,9 @@ type UpdateStackInput struct { // AWS::IAM::User (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html), // and AWS::IAM::UserToGroupAddition (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html). // If your stack template contains these resources, we recommend that you review - // any permissions associated with them. If you don't specify this parameter, - // this action returns an InsufficientCapabilities error. + // all permissions associated with them and edit their permissions if necessary. + // If your template contains any of the listed resources and you don't specify + // this parameter, this action returns an InsufficientCapabilities error. Capabilities []*string `type:"list"` // Amazon Simple Notification Service topic Amazon Resource Names (ARNs) that @@ -2222,7 +2945,7 @@ type ValidateTemplateOutput struct { CapabilitiesReason *string `type:"string"` // The description found within the template. - Description *string `type:"string"` + Description *string `min:"1" type:"string"` // A list of TemplateParameter structures. Parameters []*TemplateParameter `type:"list"` @@ -2243,6 +2966,53 @@ const ( CapabilityCapabilityIam = "CAPABILITY_IAM" ) +const ( + // @enum ChangeAction + ChangeActionAdd = "Add" + // @enum ChangeAction + ChangeActionModify = "Modify" + // @enum ChangeAction + ChangeActionRemove = "Remove" +) + +const ( + // @enum ChangeSetStatus + ChangeSetStatusCreatePending = "CREATE_PENDING" + // @enum ChangeSetStatus + ChangeSetStatusCreateInProgress = "CREATE_IN_PROGRESS" + // @enum ChangeSetStatus + ChangeSetStatusCreateComplete = "CREATE_COMPLETE" + // @enum ChangeSetStatus + ChangeSetStatusDeleteComplete = "DELETE_COMPLETE" + // @enum ChangeSetStatus + ChangeSetStatusFailed = "FAILED" +) + +const ( + // @enum ChangeSource + ChangeSourceResourceReference = "ResourceReference" + // @enum ChangeSource + ChangeSourceParameterReference = "ParameterReference" + // @enum ChangeSource + ChangeSourceResourceAttribute = "ResourceAttribute" + // @enum ChangeSource + ChangeSourceDirectModification = "DirectModification" + // @enum ChangeSource + ChangeSourceAutomatic = "Automatic" +) + +const ( + // @enum ChangeType + ChangeTypeResource = "Resource" +) + +const ( + // @enum EvaluationType + EvaluationTypeStatic = "Static" + // @enum EvaluationType + EvaluationTypeDynamic = "Dynamic" +) + const ( // @enum OnFailure OnFailureDoNothing = "DO_NOTHING" @@ -2252,6 +3022,39 @@ const ( OnFailureDelete = "DELETE" ) +const ( + // @enum Replacement + ReplacementTrue = "True" + // @enum Replacement + ReplacementFalse = "False" + // @enum Replacement + ReplacementConditional = "Conditional" +) + +const ( + // @enum RequiresRecreation + RequiresRecreationNever = "Never" + // @enum RequiresRecreation + RequiresRecreationConditionally = "Conditionally" + // @enum RequiresRecreation + RequiresRecreationAlways = "Always" +) + +const ( + // @enum ResourceAttribute + ResourceAttributeProperties = "Properties" + // @enum ResourceAttribute + ResourceAttributeMetadata = "Metadata" + // @enum ResourceAttribute + ResourceAttributeCreationPolicy = "CreationPolicy" + // @enum ResourceAttribute + ResourceAttributeUpdatePolicy = "UpdatePolicy" + // @enum ResourceAttribute + ResourceAttributeDeletionPolicy = "DeletionPolicy" + // @enum ResourceAttribute + ResourceAttributeTags = "Tags" +) + const ( // @enum ResourceSignalStatus ResourceSignalStatusSuccess = "SUCCESS" diff --git a/vendor/github.com/aws/aws-sdk-go/service/cloudformation/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/cloudformation/waiters.go index cd90e41d7af8..f8ca675144dd 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/cloudformation/waiters.go +++ b/vendor/github.com/aws/aws-sdk-go/service/cloudformation/waiters.go @@ -10,7 +10,7 @@ func (c *CloudFormation) WaitUntilStackCreateComplete(input *DescribeStacksInput waiterCfg := waiter.Config{ Operation: "DescribeStacks", Delay: 30, - MaxAttempts: 50, + MaxAttempts: 120, Acceptors: []waiter.WaitAcceptor{ { State: "success", @@ -24,6 +24,48 @@ func (c *CloudFormation) WaitUntilStackCreateComplete(input *DescribeStacksInput Argument: "Stacks[].StackStatus", Expected: "CREATE_FAILED", }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "DELETE_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "DELETE_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "DELETE_FAILED", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "ROLLBACK_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "ROLLBACK_FAILED", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "ROLLBACK_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "error", + Argument: "", + Expected: "ValidationError", + }, }, } @@ -39,7 +81,7 @@ func (c *CloudFormation) WaitUntilStackDeleteComplete(input *DescribeStacksInput waiterCfg := waiter.Config{ Operation: "DescribeStacks", Delay: 30, - MaxAttempts: 25, + MaxAttempts: 120, Acceptors: []waiter.WaitAcceptor{ { State: "success", @@ -59,6 +101,113 @@ func (c *CloudFormation) WaitUntilStackDeleteComplete(input *DescribeStacksInput Argument: "Stacks[].StackStatus", Expected: "DELETE_FAILED", }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "CREATE_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "CREATE_FAILED", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "CREATE_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "ROLLBACK_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "ROLLBACK_FAILED", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "ROLLBACK_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_FAILED", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_IN_PROGRESS", + }, + }, + } + + w := waiter.Waiter{ + Client: c, + Input: input, + Config: waiterCfg, + } + return w.Wait() +} + +func (c *CloudFormation) WaitUntilStackExists(input *DescribeStacksInput) error { + waiterCfg := waiter.Config{ + Operation: "DescribeStacks", + Delay: 5, + MaxAttempts: 20, + Acceptors: []waiter.WaitAcceptor{ + { + State: "success", + Matcher: "status", + Argument: "", + Expected: 200, + }, + { + State: "retry", + Matcher: "error", + Argument: "", + Expected: "ValidationError", + }, }, } @@ -74,7 +223,7 @@ func (c *CloudFormation) WaitUntilStackUpdateComplete(input *DescribeStacksInput waiterCfg := waiter.Config{ Operation: "DescribeStacks", Delay: 30, - MaxAttempts: 5, + MaxAttempts: 120, Acceptors: []waiter.WaitAcceptor{ { State: "success", @@ -88,6 +237,36 @@ func (c *CloudFormation) WaitUntilStackUpdateComplete(input *DescribeStacksInput Argument: "Stacks[].StackStatus", Expected: "UPDATE_FAILED", }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_COMPLETE", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_FAILED", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "pathAny", + Argument: "Stacks[].StackStatus", + Expected: "UPDATE_ROLLBACK_IN_PROGRESS", + }, + { + State: "failure", + Matcher: "error", + Argument: "", + Expected: "ValidationError", + }, }, } 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 7bc6da339abc..c4cf4891961a 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 @@ -2803,7 +2803,7 @@ type ListDeploymentsInput struct { // queued deployments in the resulting list. In Progress: Include in-progress // deployments in the resulting list. Succeeded: Include successful deployments // in the resulting list. Failed: Include failed deployments in the resulting - // list. Aborted: Include aborted deployments in the resulting list. + // list. Stopped: Include stopped deployments in the resulting list. IncludeOnlyStatuses []*string `locationName:"includeOnlyStatuses" type:"list"` // An identifier returned from the previous list deployments call. It can be diff --git a/vendor/github.com/aws/aws-sdk-go/service/elasticache/api.go b/vendor/github.com/aws/aws-sdk-go/service/elasticache/api.go index c381d3381137..907aa394d55f 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/elasticache/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/elasticache/api.go @@ -1884,8 +1884,6 @@ type CopySnapshotInput struct { // The name of an existing snapshot from which to copy. SourceSnapshotName *string `type:"string" required:"true"` - TargetBucket *string `type:"string"` - // A name for the copied snapshot. TargetSnapshotName *string `type:"string" required:"true"` } @@ -4737,7 +4735,7 @@ type ResetCacheParameterGroupInput struct { // An array of parameter names to be reset. If you are not resetting the entire // cache parameter group, you must specify at least one parameter name. - ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"` + ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"` // If true, all parameters in the cache parameter group will be reset to default // values. If false, no such action occurs. diff --git a/vendor/github.com/aws/aws-sdk-go/service/elb/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/elb/waiters.go index 5d5755d049a0..b1c9a526aaec 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/elb/waiters.go +++ b/vendor/github.com/aws/aws-sdk-go/service/elb/waiters.go @@ -29,6 +29,35 @@ func (c *ELB) WaitUntilAnyInstanceInService(input *DescribeInstanceHealthInput) return w.Wait() } +func (c *ELB) WaitUntilInstanceDeregistered(input *DescribeInstanceHealthInput) error { + waiterCfg := waiter.Config{ + Operation: "DescribeInstanceHealth", + Delay: 15, + MaxAttempts: 40, + Acceptors: []waiter.WaitAcceptor{ + { + State: "success", + Matcher: "pathAll", + Argument: "InstanceStates[].State", + Expected: "OutOfService", + }, + { + State: "success", + Matcher: "error", + Argument: "", + Expected: "InvalidInstance", + }, + }, + } + + w := waiter.Waiter{ + Client: c, + Input: input, + Config: waiterCfg, + } + return w.Wait() +} + func (c *ELB) WaitUntilInstanceInService(input *DescribeInstanceHealthInput) error { waiterCfg := waiter.Config{ Operation: "DescribeInstanceHealth", diff --git a/vendor/github.com/aws/aws-sdk-go/service/redshift/api.go b/vendor/github.com/aws/aws-sdk-go/service/redshift/api.go index 69315d35e8a0..0a250ba953eb 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/redshift/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/redshift/api.go @@ -1696,9 +1696,9 @@ func (c *Redshift) DescribeTableRestoreStatusRequest(input *DescribeTableRestore // Lists the status of one or more table restore requests made using the RestoreTableFromClusterSnapshot // API action. If you don't specify a value for the TableRestoreRequestId parameter, -// then DescribeTableRestoreStatus returns the status of all in-progress table -// restore requests. Otherwise DescribeTableRestoreStatus returns the status -// of the table specified by TableRestoreRequestId. +// then DescribeTableRestoreStatus returns the status of all table restore requests +// ordered by the date and time of the request in ascending order. Otherwise +// DescribeTableRestoreStatus returns the status of the table specified by TableRestoreRequestId. func (c *Redshift) DescribeTableRestoreStatus(input *DescribeTableRestoreStatusInput) (*DescribeTableRestoreStatusOutput, error) { req, out := c.DescribeTableRestoreStatusRequest(input) err := req.Send() @@ -1903,6 +1903,36 @@ func (c *Redshift) ModifyCluster(input *ModifyClusterInput) (*ModifyClusterOutpu return out, err } +const opModifyClusterIamRoles = "ModifyClusterIamRoles" + +// ModifyClusterIamRolesRequest generates a request for the ModifyClusterIamRoles operation. +func (c *Redshift) ModifyClusterIamRolesRequest(input *ModifyClusterIamRolesInput) (req *request.Request, output *ModifyClusterIamRolesOutput) { + op := &request.Operation{ + Name: opModifyClusterIamRoles, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyClusterIamRolesInput{} + } + + req = c.newRequest(op, input, output) + output = &ModifyClusterIamRolesOutput{} + req.Data = output + return +} + +// Modifies the list of AWS Identity and Access Management (IAM) roles that +// can be used by the cluster to access other AWS services. +// +// A cluster can have up to 10 IAM roles associated at any time. +func (c *Redshift) ModifyClusterIamRoles(input *ModifyClusterIamRolesInput) (*ModifyClusterIamRolesOutput, error) { + req, out := c.ModifyClusterIamRolesRequest(input) + err := req.Send() + return out, err +} + const opModifyClusterParameterGroup = "ModifyClusterParameterGroup" // ModifyClusterParameterGroupRequest generates a request for the ModifyClusterParameterGroup operation. @@ -2492,6 +2522,10 @@ type Cluster struct { // Values: active, applying HsmStatus *HsmStatus `type:"structure"` + // A list of AWS Identity and Access Management (IAM) roles that can be used + // by the cluster to access other AWS services. + IamRoles []*ClusterIamRole `locationNameList:"ClusterIamRole" type:"list"` + // The AWS Key Management Service (KMS) key ID of the encryption key used to // encrypt data in the cluster. KmsKeyId *string `type:"string"` @@ -2545,6 +2579,34 @@ func (s Cluster) GoString() string { return s.String() } +// An AWS Identity and Access Management (IAM) role that can be used by the +// associated Amazon Redshift cluster to access other AWS services. +type ClusterIamRole struct { + _ struct{} `type:"structure"` + + // Describes the status of the IAM role's association with an Amazon Redshift + // cluster. + // + // The following are possible statuses and descriptions. in-sync: The role + // is available for use by the cluster. adding: The role is in the process of + // being associated with the cluster. removing: The role is in the process of + // being disassociated with the cluster. + ApplyStatus *string `type:"string"` + + // The Amazon Resource Name (ARN) of the IAM role. For example, arn:aws:iam::123456789012:role/RedshiftCopyUnload. + IamRoleArn *string `type:"string"` +} + +// String returns the string representation +func (s ClusterIamRole) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ClusterIamRole) GoString() string { + return s.String() +} + // The identifier of a node in a cluster. type ClusterNode struct { _ struct{} `type:"structure"` @@ -3011,6 +3073,14 @@ type CreateClusterInput struct { // the Amazon Redshift cluster can use to retrieve and store keys in an HSM. HsmConfigurationIdentifier *string `type:"string"` + // A list of AWS Identity and Access Management (IAM) roles that can be used + // by the cluster to access other AWS services. You must supply the IAM roles + // in their Amazon Resource Name (ARN) format. You can supply up to 10 IAM roles + // in a single request. + // + // A cluster can have up to 10 IAM roles associated at any time. + IamRoles []*string `locationNameList:"IamRoleArn" type:"list"` + // The AWS Key Management Service (KMS) key ID of the encryption key that you // want to use to encrypt data in the cluster. KmsKeyId *string `type:"string"` @@ -6005,6 +6075,50 @@ func (s LoggingStatus) GoString() string { return s.String() } +type ModifyClusterIamRolesInput struct { + _ struct{} `type:"structure"` + + // Zero or more IAM roles (in their ARN format) to associate with the cluster. + // You can associate up to 10 IAM roles with a single cluster in a single request. + AddIamRoles []*string `locationNameList:"IamRoleArn" type:"list"` + + // The unique identifier of the cluster for which you want to associate or disassociate + // IAM roles. + ClusterIdentifier *string `type:"string" required:"true"` + + // Zero or more IAM roles (in their ARN format) to disassociate from the cluster. + // You can disassociate up to 10 IAM roles from a single cluster in a single + // request. + RemoveIamRoles []*string `locationNameList:"IamRoleArn" type:"list"` +} + +// String returns the string representation +func (s ModifyClusterIamRolesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyClusterIamRolesInput) GoString() string { + return s.String() +} + +type ModifyClusterIamRolesOutput struct { + _ struct{} `type:"structure"` + + // Describes a cluster. + Cluster *Cluster `type:"structure"` +} + +// String returns the string representation +func (s ModifyClusterIamRolesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyClusterIamRolesOutput) GoString() string { + return s.String() +} + type ModifyClusterInput struct { _ struct{} `type:"structure"` @@ -6816,6 +6930,14 @@ type RestoreFromClusterSnapshotInput struct { // the Amazon Redshift cluster can use to retrieve and store keys in an HSM. HsmConfigurationIdentifier *string `type:"string"` + // A list of AWS Identity and Access Management (IAM) roles that can be used + // by the cluster to access other AWS services. You must supply the IAM roles + // in their Amazon Resource Name (ARN) format. You can supply up to 10 IAM roles + // in a single request. + // + // A cluster can have up to 10 IAM roles associated at any time. + IamRoles []*string `locationNameList:"IamRoleArn" type:"list"` + // The AWS Key Management Service (KMS) key ID of the encryption key that you // want to use to encrypt data in the cluster that you restore from a shared // snapshot. @@ -6965,7 +7087,8 @@ type RestoreTableFromClusterSnapshotInput struct { // The name of the source database that contains the table to restore from. SourceDatabaseName *string `type:"string" required:"true"` - // The name of the source schema that contains the table to restore from. + // The name of the source schema that contains the table to restore from. If + // you do not specify a SourceSchemaName value, the default is public. SourceSchemaName *string `type:"string"` // The name of the source table to restore from. @@ -7316,7 +7439,7 @@ type TableRestoreStatus struct { ClusterIdentifier *string `type:"string"` // A description of the status of the table restore request. Status values include - // SUCCEEDED, FAILED, CANCELLED, PENDING, IN_PROGRESS. + // SUCCEEDED, FAILED, CANCELED, PENDING, IN_PROGRESS. Message *string `type:"string"` // The name of the table to create as a result of the table restore request. @@ -7343,7 +7466,7 @@ type TableRestoreStatus struct { // A value that describes the current state of the table restore request. // - // Valid Values: SUCCEEDED, FAILED, CANCELLED, PENDING, IN_PROGRESS + // Valid Values: SUCCEEDED, FAILED, CANCELED, PENDING, IN_PROGRESS Status *string `type:"string" enum:"TableRestoreStatusType"` // The unique identifier for the table restore request. diff --git a/vendor/github.com/aws/aws-sdk-go/service/route53/waiters.go b/vendor/github.com/aws/aws-sdk-go/service/route53/waiters.go new file mode 100644 index 000000000000..04786169e2a6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/route53/waiters.go @@ -0,0 +1,30 @@ +// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. + +package route53 + +import ( + "github.com/aws/aws-sdk-go/private/waiter" +) + +func (c *Route53) WaitUntilResourceRecordSetsChanged(input *GetChangeInput) error { + waiterCfg := waiter.Config{ + Operation: "GetChange", + Delay: 30, + MaxAttempts: 60, + Acceptors: []waiter.WaitAcceptor{ + { + State: "success", + Matcher: "path", + Argument: "ChangeInfo.Status", + Expected: "INSYNC", + }, + }, + } + + w := waiter.Waiter{ + Client: c, + Input: input, + Config: waiterCfg, + } + return w.Wait() +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sqs/api.go b/vendor/github.com/aws/aws-sdk-go/service/sqs/api.go index 8671d162728c..103abb3c8016 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/sqs/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/sqs/api.go @@ -47,9 +47,7 @@ func (c *SQS) AddPermissionRequest(input *AddPermissionInput) (req *request.Requ // // Some API actions take lists of parameters. These lists are specified using // the param.n notation. Values of n are integers starting from 1. For example, -// a parameter list with two elements looks like this: &Attribute.1=this -// -// &Attribute.2=that +// a parameter list with two elements looks like this: func (c *SQS) AddPermission(input *AddPermissionInput) (*AddPermissionOutput, error) { req, out := c.AddPermissionRequest(input) err := req.Send() @@ -145,9 +143,7 @@ func (c *SQS) ChangeMessageVisibilityBatchRequest(input *ChangeMessageVisibility // returns an HTTP status code of 200. Some API actions take lists of parameters. // These lists are specified using the param.n notation. Values of n are integers // starting from 1. For example, a parameter list with two elements looks like -// this: &Attribute.1=this -// -// &Attribute.2=that +// this: func (c *SQS) ChangeMessageVisibilityBatch(input *ChangeMessageVisibilityBatchInput) (*ChangeMessageVisibilityBatchOutput, error) { req, out := c.ChangeMessageVisibilityBatchRequest(input) err := req.Send() @@ -196,9 +192,7 @@ func (c *SQS) CreateQueueRequest(input *CreateQueueInput) (req *request.Request, // // Some API actions take lists of parameters. These lists are specified using // the param.n notation. Values of n are integers starting from 1. For example, -// a parameter list with two elements looks like this: &Attribute.1=this -// -// &Attribute.2=that +// a parameter list with two elements looks like this: func (c *SQS) CreateQueue(input *CreateQueueInput) (*CreateQueueOutput, error) { req, out := c.CreateQueueRequest(input) err := req.Send() @@ -283,9 +277,7 @@ func (c *SQS) DeleteMessageBatchRequest(input *DeleteMessageBatchInput) (req *re // // Some API actions take lists of parameters. These lists are specified using // the param.n notation. Values of n are integers starting from 1. For example, -// a parameter list with two elements looks like this: &Attribute.1=this -// -// &Attribute.2=that +// a parameter list with two elements looks like this: func (c *SQS) DeleteMessageBatch(input *DeleteMessageBatchInput) (*DeleteMessageBatchOutput, error) { req, out := c.DeleteMessageBatchRequest(input) err := req.Send() @@ -358,27 +350,27 @@ func (c *SQS) GetQueueAttributesRequest(input *GetQueueAttributesInput) (req *re } // Gets attributes for the specified queue. The following attributes are supported: -// All - returns all values. ApproximateNumberOfMessages - returns the approximate +// All - returns all values. ApproximateNumberOfMessages - returns the approximate // number of visible messages in a queue. For more information, see Resources // Required to Process Messages (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ApproximateNumber.html) -// in the Amazon SQS Developer Guide. ApproximateNumberOfMessagesNotVisible +// in the Amazon SQS Developer Guide. ApproximateNumberOfMessagesNotVisible // - returns the approximate number of messages that are not timed-out and not // deleted. For more information, see Resources Required to Process Messages // (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ApproximateNumber.html) -// in the Amazon SQS Developer Guide. VisibilityTimeout - returns the visibility +// in the Amazon SQS Developer Guide. VisibilityTimeout - returns the visibility // timeout for the queue. For more information about visibility timeout, see // Visibility Timeout (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html) -// in the Amazon SQS Developer Guide. CreatedTimestamp - returns the time when -// the queue was created (epoch time in seconds). LastModifiedTimestamp - returns -// the time when the queue was last changed (epoch time in seconds). Policy -// - returns the queue's policy. MaximumMessageSize - returns the limit of -// how many bytes a message can contain before Amazon SQS rejects it. MessageRetentionPeriod -// - returns the number of seconds Amazon SQS retains a message. QueueArn - -// returns the queue's Amazon resource name (ARN). ApproximateNumberOfMessagesDelayed +// in the Amazon SQS Developer Guide. CreatedTimestamp - returns the time when +// the queue was created (epoch time in seconds). LastModifiedTimestamp - returns +// the time when the queue was last changed (epoch time in seconds). Policy +// - returns the queue's policy. MaximumMessageSize - returns the limit of how +// many bytes a message can contain before Amazon SQS rejects it. MessageRetentionPeriod +// - returns the number of seconds Amazon SQS retains a message. QueueArn - +// returns the queue's Amazon resource name (ARN). ApproximateNumberOfMessagesDelayed // - returns the approximate number of messages that are pending to be added -// to the queue. DelaySeconds - returns the default delay on the queue in seconds. -// ReceiveMessageWaitTimeSeconds - returns the time for which a ReceiveMessage -// call will wait for a message to arrive. RedrivePolicy - returns the parameters +// to the queue. DelaySeconds - returns the default delay on the queue in seconds. +// ReceiveMessageWaitTimeSeconds - returns the time for which a ReceiveMessage +// call will wait for a message to arrive. RedrivePolicy - returns the parameters // for dead letter queue functionality of the source queue. For more information // about RedrivePolicy and dead letter queues, see Using Amazon SQS Dead Letter // Queues (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/SQSDeadLetterQueue.html) @@ -389,9 +381,7 @@ func (c *SQS) GetQueueAttributesRequest(input *GetQueueAttributesInput) (req *re // handle new attributes gracefully. Some API actions take lists of parameters. // These lists are specified using the param.n notation. Values of n are integers // starting from 1. For example, a parameter list with two elements looks like -// this: &Attribute.1=this -// -// &Attribute.2=that +// this: func (c *SQS) GetQueueAttributes(input *GetQueueAttributesInput) (*GetQueueAttributesOutput, error) { req, out := c.GetQueueAttributesRequest(input) err := req.Send() @@ -708,9 +698,7 @@ func (c *SQS) SendMessageBatchRequest(input *SendMessageBatchInput) (req *reques // returns an HTTP status code of 200. Some API actions take lists of parameters. // These lists are specified using the param.n notation. Values of n are integers // starting from 1. For example, a parameter list with two elements looks like -// this: &Attribute.1=this -// -// &Attribute.2=that +// this: func (c *SQS) SendMessageBatch(input *SendMessageBatchInput) (*SendMessageBatchOutput, error) { req, out := c.SendMessageBatchRequest(input) err := req.Send() @@ -886,11 +874,9 @@ func (s ChangeMessageVisibilityBatchOutput) GoString() string { // starting with 1. For example, a parameter list for this action might look // like this: // -// &ChangeMessageVisibilityBatchRequestEntry.1.Id=change_visibility_msg_2 // -// &ChangeMessageVisibilityBatchRequestEntry.1.ReceiptHandle=Your_Receipt_Handle // -// &ChangeMessageVisibilityBatchRequestEntry.1.VisibilityTimeout=45 +// Your_Receipt_Handle]]> type ChangeMessageVisibilityBatchRequestEntry struct { _ struct{} `type:"structure"` @@ -981,19 +967,19 @@ type CreateQueueInput struct { // The following lists the names, descriptions, and values of the special request // parameters the CreateQueue action uses: // - // DelaySeconds - The time in seconds that the delivery of all messages - // in the queue will be delayed. An integer from 0 to 900 (15 minutes). The - // default for this attribute is 0 (zero). MaximumMessageSize - The limit of - // how many bytes a message can contain before Amazon SQS rejects it. An integer - // from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this - // attribute is 262144 (256 KiB). MessageRetentionPeriod - The number of seconds - // Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) - // to 1209600 (14 days). The default for this attribute is 345600 (4 days). - // Policy - The queue's policy. A valid AWS policy. For more information about - // policy structure, see Overview of AWS IAM Policies (http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html) - // in the Amazon IAM User Guide. ReceiveMessageWaitTimeSeconds - The time for + // DelaySeconds - The time in seconds that the delivery of all messages in + // the queue will be delayed. An integer from 0 to 900 (15 minutes). The default + // for this attribute is 0 (zero). MaximumMessageSize - The limit of how many + // bytes a message can contain before Amazon SQS rejects it. An integer from + // 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute + // is 262144 (256 KiB). MessageRetentionPeriod - The number of seconds Amazon + // SQS retains a message. Integer representing seconds, from 60 (1 minute) to + // 1209600 (14 days). The default for this attribute is 345600 (4 days). Policy + // - The queue's policy. A valid AWS policy. For more information about policy + // structure, see Overview of AWS IAM Policies (http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html) + // in the Amazon IAM User Guide. ReceiveMessageWaitTimeSeconds - The time for // which a ReceiveMessage call will wait for a message to arrive. An integer - // from 0 to 20 (seconds). The default for this attribute is 0. VisibilityTimeout + // from 0 to 20 (seconds). The default for this attribute is 0. VisibilityTimeout // - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). // The default for this attribute is 30. For more information about visibility // timeout, see Visibility Timeout (http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html) @@ -1460,13 +1446,13 @@ type ReceiveMessageInput struct { // The following lists the names and descriptions of the attributes that can // be returned: // - // All - returns all values. ApproximateFirstReceiveTimestamp - returns - // the time when the message was first received from the queue (epoch time in - // milliseconds). ApproximateReceiveCount - returns the number of times a message - // has been received from the queue but not deleted. SenderId - returns the - // AWS account number (or the IP address, if anonymous access is allowed) of - // the sender. SentTimestamp - returns the time when the message was sent to - // the queue (epoch time in milliseconds). + // All - returns all values. ApproximateFirstReceiveTimestamp - returns the + // time when the message was first received from the queue (epoch time in milliseconds). + // ApproximateReceiveCount - returns the number of times a message has been + // received from the queue but not deleted. SenderId - returns the AWS account + // number (or the IP address, if anonymous access is allowed) of the sender. + // SentTimestamp - returns the time when the message was sent to the queue (epoch + // time in milliseconds). AttributeNames []*string `locationNameList:"AttributeName" type:"list" flattened:"true"` // The maximum number of messages to return. Amazon SQS never returns more messages @@ -1745,22 +1731,22 @@ type SetQueueAttributesInput struct { // The following lists the names, descriptions, and values of the special request // parameters the SetQueueAttributes action uses: // - // DelaySeconds - The time in seconds that the delivery of all messages - // in the queue will be delayed. An integer from 0 to 900 (15 minutes). The - // default for this attribute is 0 (zero). MaximumMessageSize - The limit of - // how many bytes a message can contain before Amazon SQS rejects it. An integer - // from 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this - // attribute is 262144 (256 KiB). MessageRetentionPeriod - The number of seconds - // Amazon SQS retains a message. Integer representing seconds, from 60 (1 minute) - // to 1209600 (14 days). The default for this attribute is 345600 (4 days). - // Policy - The queue's policy. A valid AWS policy. For more information about - // policy structure, see Overview of AWS IAM Policies (http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html) - // in the Amazon IAM User Guide. ReceiveMessageWaitTimeSeconds - The time for + // DelaySeconds - The time in seconds that the delivery of all messages in + // the queue will be delayed. An integer from 0 to 900 (15 minutes). The default + // for this attribute is 0 (zero). MaximumMessageSize - The limit of how many + // bytes a message can contain before Amazon SQS rejects it. An integer from + // 1024 bytes (1 KiB) up to 262144 bytes (256 KiB). The default for this attribute + // is 262144 (256 KiB). MessageRetentionPeriod - The number of seconds Amazon + // SQS retains a message. Integer representing seconds, from 60 (1 minute) to + // 1209600 (14 days). The default for this attribute is 345600 (4 days). Policy + // - The queue's policy. A valid AWS policy. For more information about policy + // structure, see Overview of AWS IAM Policies (http://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html) + // in the Amazon IAM User Guide. ReceiveMessageWaitTimeSeconds - The time for // which a ReceiveMessage call will wait for a message to arrive. An integer - // from 0 to 20 (seconds). The default for this attribute is 0. VisibilityTimeout + // from 0 to 20 (seconds). The default for this attribute is 0. VisibilityTimeout // - The visibility timeout for the queue. An integer from 0 to 43200 (12 hours). // The default for this attribute is 30. For more information about visibility - // timeout, see Visibility Timeout in the Amazon SQS Developer Guide. RedrivePolicy + // timeout, see Visibility Timeout in the Amazon SQS Developer Guide. RedrivePolicy // - The parameters for dead letter queue functionality of the source queue. // For more information about RedrivePolicy and dead letter queues, see Using // Amazon SQS Dead Letter Queues in the Amazon SQS Developer Guide.