provider/aws: Bump AWS SDK to 1.8.16 (#13953)

This commit is contained in:
Paul Stack 2017-04-27 02:24:20 +12:00 committed by GitHub
parent 04cacdf055
commit fa9fc4bfac
28 changed files with 2246 additions and 1446 deletions

View File

@ -1,3 +1,66 @@
Release v1.8.16 (2017-04-21)
===
### Service Client Updates
* `service/appstream`: Updates service API, documentation, and paginators
* The new feature named "Default Internet Access" will enable Internet access from AppStream 2.0 instances - image builders and fleet instances. Admins will check a flag either through AWS management console for AppStream 2.0 or through API while creating an image builder or while creating/updating a fleet.
* `service/kinesis`: Updates service API, documentation, waiters, and paginators
* Adds a new waiter, StreamNotExists, to Kinesis.
### SDK Enhancements
* `aws/endpoints`: Add utilities improving endpoints lookup (#1218)
* Adds several utilities to the endpoints packages to make looking up partitions, regions, and services easier.
* Fixes #994
### SDK Bugs
* `private/protocol/xml/xmlutil`: Fix unmarshaling dropping errors (#1219)
* The XML unmarshaler would drop any serialization or body read error that occurred on the floor effectively hiding any errors that would occur.
* Fixes #1205
Release v1.8.15 (2017-04-20)
===
### Service Client Updates
* `service/devicefarm`: Updates service API and documentation
* API Update for AWS Device Farm: Support for Deals and Promotions
* `service/directconnect`: Updates service documentation
* Documentation updates for AWS Direct Connect.
* `service/elbv2`: Updates service waiters
* `service/kms`: Updates service documentation and examples
* Doc-only update for Key Management Service (KMS): Update docs for GrantConstraints and GenerateRandom
* `service/route53`: Updates service documentation
* Release notes: SDK documentation now includes examples for ChangeResourceRecordSets for all types of resource record set, such as weighted, alias, and failover.
* `service/route53domains`: Updates service API, documentation, and paginators
* Adding examples and other documentation updates.
### SDK Enhancements
* `service/s3`: Add utilities to make getting a bucket's region easier (#1207)
* Adds two features which make it easier to get a bucket's region, `s3.NormalizeBucketLocation` and `s3manager.GetBucketRegion`.
### SDK Bugs
* `service/s3`: Fix HeadObject's incorrect documented error codes (#1213)
* The HeadObject's model incorrectly states that the operation can return the NoSuchKey error code.
* Fixes #1208
Release v1.8.14 (2017-04-19)
===
### Service Client Updates
* `service/apigateway`: Updates service API and documentation
* Add support for "embed" property.
* `service/codestar`: Adds new service
* AWS CodeStar is a cloud-based service for creating, managing, and working with software development projects on AWS. An AWS CodeStar project creates and integrates AWS services for your project development toolchain. AWS CodeStar also manages the permissions required for project users.
* `service/ec2`: Updates service API and documentation
* Adds support for creating an Amazon FPGA Image (AFI) from a specified design checkpoint (DCP).
* `service/iam`: Updates service API and documentation
* This changes introduces a new IAM role type, Service Linked Role, which works like a normal role but must be managed via services' control.
* `service/lambda`: Updates service API and documentation
* Lambda integration with CloudDebugger service to enable customers to enable tracing for the Lambda functions and send trace information to the CloudDebugger service.
* `service/lexmodelbuildingservice`: Adds new service
* `service/polly`: Updates service API, documentation, and paginators
* API Update for Amazon Polly: Add support for speech marks
* `service/rekognition`: Updates service API and documentation
* Given an image, the API detects explicit or suggestive adult content in the image and returns a list of corresponding labels with confidence scores, as well as a taxonomy (parent-child relation) for each label.
Release v1.8.13 (2017-04-18)
===

View File

@ -64,6 +64,9 @@ integration: get-deps-tests integ-custom smoke-tests performance
integ-custom:
go test -tags "integration" ./awstesting/integration/customizations/...
cleanup-integ:
go run -tags "integration" ./awstesting/cmd/bucket_cleanup/main.go "aws-sdk-go-integration"
smoke-tests: get-deps-tests
gucumber -go-tags "integration" ./awstesting/integration/smoke

View File

@ -5,6 +5,7 @@ import (
"net/http/httputil"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
)
@ -105,6 +106,7 @@ func logRequest(r *request.Request) {
dumpedBody, err := httputil.DumpRequestOut(r.HTTPRequest, logBody)
if err != nil {
r.Config.Logger.Log(fmt.Sprintf(logReqErrMsg, r.ClientInfo.ServiceName, r.Operation.Name, err))
r.Error = awserr.New(request.ErrCodeRead, "an error occurred during request body reading", err)
return
}
@ -135,6 +137,7 @@ func logResponse(r *request.Request) {
dumpedBody, err := httputil.DumpResponse(r.HTTPResponse, logBody)
if err != nil {
r.Config.Logger.Log(fmt.Sprintf(logRespErrMsg, r.ClientInfo.ServiceName, r.Operation.Name, err))
r.Error = awserr.New(request.ErrCodeRead, "an error occurred during response body reading", err)
return
}

View File

@ -54,6 +54,12 @@ func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration {
// ShouldRetry returns true if the request should be retried.
func (d DefaultRetryer) ShouldRetry(r *request.Request) bool {
// If one of the other handlers already set the retry state
// we don't want to override it based on the service's state
if r.Retryable != nil {
return *r.Retryable
}
if r.HTTPResponse.StatusCode >= 500 {
return true
}

View File

@ -53,6 +53,13 @@ type Config struct {
// to use based on region.
EndpointResolver endpoints.Resolver
// EnforceShouldRetryCheck is used in the AfterRetryHandler to always call
// ShouldRetry regardless of whether or not if request.Retryable is set.
// This will utilize ShouldRetry method of custom retryers. If EnforceShouldRetryCheck
// is not set, then ShouldRetry will only be called if request.Retryable is nil.
// Proper handling of the request.Retryable field is important when setting this field.
EnforceShouldRetryCheck *bool
// The region to send requests to. This parameter is required and must
// be configured globally or on a per-client basis unless otherwise
// noted. A full list of regions is found in the "Regions and Endpoints"
@ -443,6 +450,10 @@ func mergeInConfig(dst *Config, other *Config) {
if other.DisableRestProtocolURICleaning != nil {
dst.DisableRestProtocolURICleaning = other.DisableRestProtocolURICleaning
}
if other.EnforceShouldRetryCheck != nil {
dst.EnforceShouldRetryCheck = other.EnforceShouldRetryCheck
}
}
// Copy will return a shallow copy of the Config object. If any additional

View File

@ -27,7 +27,7 @@ type lener interface {
// or will use the HTTPRequest.Header's "Content-Length" if defined. If unable
// to determine request body length and no "Content-Length" was specified it will panic.
//
// The Content-Length will only be aded to the request if the length of the body
// The Content-Length will only be added to the request if the length of the body
// is greater than 0. If the body is empty or the current `Content-Length`
// header is <= 0, the header will also be stripped.
var BuildContentLengthHandler = request.NamedHandler{Name: "core.BuildContentLengthHandler", Fn: func(r *request.Request) {
@ -71,8 +71,8 @@ var reStatusCode = regexp.MustCompile(`^(\d{3})`)
// ValidateReqSigHandler is a request handler to ensure that the request's
// signature doesn't expire before it is sent. This can happen when a request
// is built and signed signficantly before it is sent. Or significant delays
// occur whne retrying requests that would cause the signature to expire.
// is built and signed significantly before it is sent. Or significant delays
// occur when retrying requests that would cause the signature to expire.
var ValidateReqSigHandler = request.NamedHandler{
Name: "core.ValidateReqSigHandler",
Fn: func(r *request.Request) {
@ -98,54 +98,79 @@ var ValidateReqSigHandler = request.NamedHandler{
}
// SendHandler is a request handler to send service request using HTTP client.
var SendHandler = request.NamedHandler{Name: "core.SendHandler", Fn: func(r *request.Request) {
var err error
r.HTTPResponse, err = r.Config.HTTPClient.Do(r.HTTPRequest)
if err != nil {
// Prevent leaking if an HTTPResponse was returned. Clean up
// the body.
if r.HTTPResponse != nil {
r.HTTPResponse.Body.Close()
var SendHandler = request.NamedHandler{
Name: "core.SendHandler",
Fn: func(r *request.Request) {
sender := sendFollowRedirects
if r.DisableFollowRedirects {
sender = sendWithoutFollowRedirects
}
// Capture the case where url.Error is returned for error processing
// response. e.g. 301 without location header comes back as string
// error and r.HTTPResponse is nil. Other url redirect errors will
// comeback in a similar method.
if e, ok := err.(*url.Error); ok && e.Err != nil {
if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil {
code, _ := strconv.ParseInt(s[1], 10, 64)
r.HTTPResponse = &http.Response{
StatusCode: int(code),
Status: http.StatusText(int(code)),
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
return
}
var err error
r.HTTPResponse, err = sender(r)
if err != nil {
handleSendError(r, err)
}
if r.HTTPResponse == nil {
// Add a dummy request response object to ensure the HTTPResponse
// value is consistent.
},
}
func sendFollowRedirects(r *request.Request) (*http.Response, error) {
return r.Config.HTTPClient.Do(r.HTTPRequest)
}
func sendWithoutFollowRedirects(r *request.Request) (*http.Response, error) {
transport := r.Config.HTTPClient.Transport
if transport == nil {
transport = http.DefaultTransport
}
return transport.RoundTrip(r.HTTPRequest)
}
func handleSendError(r *request.Request, err error) {
// Prevent leaking if an HTTPResponse was returned. Clean up
// the body.
if r.HTTPResponse != nil {
r.HTTPResponse.Body.Close()
}
// Capture the case where url.Error is returned for error processing
// response. e.g. 301 without location header comes back as string
// error and r.HTTPResponse is nil. Other URL redirect errors will
// comeback in a similar method.
if e, ok := err.(*url.Error); ok && e.Err != nil {
if s := reStatusCode.FindStringSubmatch(e.Err.Error()); s != nil {
code, _ := strconv.ParseInt(s[1], 10, 64)
r.HTTPResponse = &http.Response{
StatusCode: int(0),
Status: http.StatusText(int(0)),
StatusCode: int(code),
Status: http.StatusText(int(code)),
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
}
// Catch all other request errors.
r.Error = awserr.New("RequestError", "send request failed", err)
r.Retryable = aws.Bool(true) // network errors are retryable
// Override the error with a context canceled error, if that was canceled.
ctx := r.Context()
select {
case <-ctx.Done():
r.Error = awserr.New(request.CanceledErrorCode,
"request context canceled", ctx.Err())
r.Retryable = aws.Bool(false)
default:
return
}
}
}}
if r.HTTPResponse == nil {
// Add a dummy request response object to ensure the HTTPResponse
// value is consistent.
r.HTTPResponse = &http.Response{
StatusCode: int(0),
Status: http.StatusText(int(0)),
Body: ioutil.NopCloser(bytes.NewReader([]byte{})),
}
}
// Catch all other request errors.
r.Error = awserr.New("RequestError", "send request failed", err)
r.Retryable = aws.Bool(true) // network errors are retryable
// Override the error with a context canceled error, if that was canceled.
ctx := r.Context()
select {
case <-ctx.Done():
r.Error = awserr.New(request.CanceledErrorCode,
"request context canceled", ctx.Err())
r.Retryable = aws.Bool(false)
default:
}
}
// ValidateResponseHandler is a request handler to validate service response.
var ValidateResponseHandler = request.NamedHandler{Name: "core.ValidateResponseHandler", Fn: func(r *request.Request) {
@ -160,7 +185,7 @@ var ValidateResponseHandler = request.NamedHandler{Name: "core.ValidateResponseH
var AfterRetryHandler = request.NamedHandler{Name: "core.AfterRetryHandler", Fn: func(r *request.Request) {
// If one of the other handlers already set the retry state
// we don't want to override it based on the service's state
if r.Retryable == nil {
if r.Retryable == nil || aws.BoolValue(r.Config.EnforceShouldRetryCheck) {
r.Retryable = aws.Bool(r.ShouldRetry(r))
}

View File

@ -142,17 +142,20 @@ const (
// DefaultResolver returns an Endpoint resolver that will be able
// to resolve endpoints for: AWS Standard, AWS China, and AWS GovCloud (US).
//
// Casting the return value of this func to a EnumPartitions will
// allow you to get a list of the partitions in the order the endpoints
// will be resolved in.
// Use DefaultPartitions() to get the list of the default partitions.
func DefaultResolver() Resolver {
return defaultPartitions
}
// DefaultPartitions returns a list of the partitions the SDK is bundled
// with. The available partitions are: AWS Standard, AWS China, and AWS GovCloud (US).
//
// resolver := endpoints.DefaultResolver()
// partitions := resolver.(endpoints.EnumPartitions).Partitions()
// partitions := endpoints.DefaultPartitions
// for _, p := range partitions {
// // ... inspect partitions
// }
func DefaultResolver() Resolver {
return defaultPartitions
func DefaultPartitions() []Partition {
return defaultPartitions.Partitions()
}
var defaultPartitions = partitions{

View File

@ -124,6 +124,49 @@ type EnumPartitions interface {
Partitions() []Partition
}
// RegionsForService returns a map of regions for the partition and service.
// If either the partition or service does not exist false will be returned
// as the second parameter.
//
// This example shows how to get the regions for DynamoDB in the AWS partition.
// rs := RegionsForService(endpoints.DefaultPartitions(), endpoints.AwsPartitionID, endpoints.DynamoDBServiceID)
//
// This is equivalent to using the partition directly.
// rs := endpoints.AwsPartition().Services()[endpoints.DynamoDBServiceID].Regions()
func RegionsForService(ps []Partition, partitionID, serviceID string) (map[string]Region, bool) {
for _, p := range ps {
if p.ID() != partitionID {
continue
}
if _, ok := p.p.Services[serviceID]; !ok {
break
}
s := Service{
id: serviceID,
p: p.p,
}
return s.Regions(), true
}
return map[string]Region{}, false
}
// PartitionForRegion returns the first partition which includes the region
// passed in. This includes both known regions and regions which match
// a pattern supported by the partition which may include regions that are
// not explicitly known by the partition. Use the Regions method of the
// returned Partition if explicit support is needed.
func PartitionForRegion(ps []Partition, regionID string) (Partition, bool) {
for _, p := range ps {
if _, ok := p.p.Regions[regionID]; ok || p.p.RegionRegex.MatchString(regionID) {
return p, true
}
}
return Partition{}, false
}
// A Partition provides the ability to enumerate the partition's regions
// and services.
type Partition struct {
@ -132,7 +175,7 @@ type Partition struct {
}
// ID returns the identifier of the partition.
func (p *Partition) ID() string { return p.id }
func (p Partition) ID() string { return p.id }
// EndpointFor attempts to resolve the endpoint based on service and region.
// See Options for information on configuring how the endpoint is resolved.
@ -155,13 +198,13 @@ func (p *Partition) ID() string { return p.id }
// Errors that can be returned.
// * UnknownServiceError
// * UnknownEndpointError
func (p *Partition) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) {
func (p Partition) EndpointFor(service, region string, opts ...func(*Options)) (ResolvedEndpoint, error) {
return p.p.EndpointFor(service, region, opts...)
}
// Regions returns a map of Regions indexed by their ID. This is useful for
// enumerating over the regions in a partition.
func (p *Partition) Regions() map[string]Region {
func (p Partition) Regions() map[string]Region {
rs := map[string]Region{}
for id := range p.p.Regions {
rs[id] = Region{
@ -175,7 +218,7 @@ func (p *Partition) Regions() map[string]Region {
// Services returns a map of Service indexed by their ID. This is useful for
// enumerating over the services in a partition.
func (p *Partition) Services() map[string]Service {
func (p Partition) Services() map[string]Service {
ss := map[string]Service{}
for id := range p.p.Services {
ss[id] = Service{
@ -195,16 +238,16 @@ type Region struct {
}
// ID returns the region's identifier.
func (r *Region) ID() string { return r.id }
func (r Region) ID() string { return r.id }
// ResolveEndpoint resolves an endpoint from the context of the region given
// a service. See Partition.EndpointFor for usage and errors that can be returned.
func (r *Region) ResolveEndpoint(service string, opts ...func(*Options)) (ResolvedEndpoint, error) {
func (r Region) ResolveEndpoint(service string, opts ...func(*Options)) (ResolvedEndpoint, error) {
return r.p.EndpointFor(service, r.id, opts...)
}
// Services returns a list of all services that are known to be in this region.
func (r *Region) Services() map[string]Service {
func (r Region) Services() map[string]Service {
ss := map[string]Service{}
for id, s := range r.p.Services {
if _, ok := s.Endpoints[r.id]; ok {
@ -226,17 +269,38 @@ type Service struct {
}
// ID returns the identifier for the service.
func (s *Service) ID() string { return s.id }
func (s Service) ID() string { return s.id }
// ResolveEndpoint resolves an endpoint from the context of a service given
// a region. See Partition.EndpointFor for usage and errors that can be returned.
func (s *Service) ResolveEndpoint(region string, opts ...func(*Options)) (ResolvedEndpoint, error) {
func (s Service) ResolveEndpoint(region string, opts ...func(*Options)) (ResolvedEndpoint, error) {
return s.p.EndpointFor(s.id, region, opts...)
}
// Regions returns a map of Regions that the service is present in.
//
// A region is the AWS region the service exists in. Whereas a Endpoint is
// an URL that can be resolved to a instance of a service.
func (s Service) Regions() map[string]Region {
rs := map[string]Region{}
for id := range s.p.Services[s.id].Endpoints {
if _, ok := s.p.Regions[id]; ok {
rs[id] = Region{
id: id,
p: s.p,
}
}
}
return rs
}
// Endpoints returns a map of Endpoints indexed by their ID for all known
// endpoints for a service.
func (s *Service) Endpoints() map[string]Endpoint {
//
// A region is the AWS region the service exists in. Whereas a Endpoint is
// an URL that can be resolved to a instance of a service.
func (s Service) Endpoints() map[string]Endpoint {
es := map[string]Endpoint{}
for id := range s.p.Services[s.id].Endpoints {
es[id] = Endpoint{
@ -259,15 +323,15 @@ type Endpoint struct {
}
// ID returns the identifier for an endpoint.
func (e *Endpoint) ID() string { return e.id }
func (e Endpoint) ID() string { return e.id }
// ServiceID returns the identifier the endpoint belongs to.
func (e *Endpoint) ServiceID() string { return e.serviceID }
func (e Endpoint) ServiceID() string { return e.serviceID }
// ResolveEndpoint resolves an endpoint from the context of a service and
// region the endpoint represents. See Partition.EndpointFor for usage and
// errors that can be returned.
func (e *Endpoint) ResolveEndpoint(opts ...func(*Options)) (ResolvedEndpoint, error) {
func (e Endpoint) ResolveEndpoint(opts ...func(*Options)) (ResolvedEndpoint, error) {
return e.p.EndpointFor(e.serviceID, e.id, opts...)
}
@ -300,28 +364,6 @@ type EndpointNotFoundError struct {
Region string
}
//// NewEndpointNotFoundError builds and returns NewEndpointNotFoundError.
//func NewEndpointNotFoundError(p, s, r string) EndpointNotFoundError {
// return EndpointNotFoundError{
// awsError: awserr.New("EndpointNotFoundError", "unable to find endpoint", nil),
// Partition: p,
// Service: s,
// Region: r,
// }
//}
//
//// Error returns string representation of the error.
//func (e EndpointNotFoundError) Error() string {
// extra := fmt.Sprintf("partition: %q, service: %q, region: %q",
// e.Partition, e.Service, e.Region)
// return awserr.SprintError(e.Code(), e.Message(), extra, e.OrigErr())
//}
//
//// String returns the string representation of the error.
//func (e EndpointNotFoundError) String() string {
// return e.Error()
//}
// A UnknownServiceError is returned when the service does not resolve to an
// endpoint. Includes a list of all known services for the partition. Returned
// when a partition does not support the service.

View File

@ -209,17 +209,20 @@ import (
// DefaultResolver returns an Endpoint resolver that will be able
// to resolve endpoints for: {{ ListPartitionNames . }}.
//
// Casting the return value of this func to a EnumPartitions will
// allow you to get a list of the partitions in the order the endpoints
// will be resolved in.
// Use DefaultPartitions() to get the list of the default partitions.
func DefaultResolver() Resolver {
return defaultPartitions
}
// DefaultPartitions returns a list of the partitions the SDK is bundled
// with. The available partitions are: {{ ListPartitionNames . }}.
//
// resolver := endpoints.DefaultResolver()
// partitions := resolver.(endpoints.EnumPartitions).Partitions()
// partitions := endpoints.DefaultPartitions
// for _, p := range partitions {
// // ... inspect partitions
// }
func DefaultResolver() Resolver {
return defaultPartitions
func DefaultPartitions() []Partition {
return defaultPartitions.Partitions()
}
var defaultPartitions = partitions{

View File

@ -21,6 +21,9 @@ const (
// during protocol unmarshaling.
ErrCodeSerialization = "SerializationError"
// ErrCodeRead is an error that is returned during HTTP reads.
ErrCodeRead = "ReadError"
// ErrCodeResponseTimeout is the connection timeout error that is recieved
// during body reads.
ErrCodeResponseTimeout = "ResponseTimeout"
@ -38,23 +41,24 @@ type Request struct {
Handlers Handlers
Retryer
Time time.Time
ExpireTime time.Duration
Operation *Operation
HTTPRequest *http.Request
HTTPResponse *http.Response
Body io.ReadSeeker
BodyStart int64 // offset from beginning of Body that the request body starts
Params interface{}
Error error
Data interface{}
RequestID string
RetryCount int
Retryable *bool
RetryDelay time.Duration
NotHoist bool
SignedHeaderVals http.Header
LastSignedAt time.Time
Time time.Time
ExpireTime time.Duration
Operation *Operation
HTTPRequest *http.Request
HTTPResponse *http.Response
Body io.ReadSeeker
BodyStart int64 // offset from beginning of Body that the request body starts
Params interface{}
Error error
Data interface{}
RequestID string
RetryCount int
Retryable *bool
RetryDelay time.Duration
NotHoist bool
SignedHeaderVals http.Header
LastSignedAt time.Time
DisableFollowRedirects bool
context aws.Context

View File

@ -70,7 +70,21 @@ func isCodeExpiredCreds(code string) bool {
return ok
}
func isSerializationErrorRetryable(err error) bool {
var validParentCodes = map[string]struct{}{
ErrCodeSerialization: struct{}{},
ErrCodeRead: struct{}{},
}
func isNestedErrorRetryable(parentErr awserr.Error) bool {
if parentErr == nil {
return false
}
if _, ok := validParentCodes[parentErr.Code()]; !ok {
return false
}
err := parentErr.OrigErr()
if err == nil {
return false
}
@ -86,10 +100,8 @@ func isSerializationErrorRetryable(err error) bool {
// Returns false if error is nil.
func IsErrorRetryable(err error) bool {
if err != nil {
if aerr, ok := err.(awserr.Error); ok && aerr.Code() != ErrCodeSerialization {
return isCodeRetryable(aerr.Code())
} else if ok {
return isSerializationErrorRetryable(aerr.OrigErr())
if aerr, ok := err.(awserr.Error); ok {
return isCodeRetryable(aerr.Code()) || isNestedErrorRetryable(aerr)
}
}
return false

View File

@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
const SDKVersion = "1.8.13"
const SDKVersion = "1.8.16"

View File

@ -15,7 +15,10 @@ import (
// needs to match the shape of the XML expected to be decoded.
// If the shape doesn't match unmarshaling will fail.
func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {
n, _ := XMLToStruct(d, nil)
n, err := XMLToStruct(d, nil)
if err != nil {
return err
}
if n.Children != nil {
for _, root := range n.Children {
for _, c := range root {
@ -23,7 +26,7 @@ func UnmarshalXML(v interface{}, d *xml.Decoder, wrapper string) error {
c = wrappedChild[0] // pull out wrapped element
}
err := parse(reflect.ValueOf(v), c, "")
err = parse(reflect.ValueOf(v), c, "")
if err != nil {
if err == io.EOF {
return nil

View File

@ -40,11 +40,16 @@ func XMLToStruct(d *xml.Decoder, s *xml.StartElement) (*XMLNode, error) {
out := &XMLNode{}
for {
tok, err := d.Token()
if tok == nil || err == io.EOF {
break
}
if err != nil {
return out, err
if err == io.EOF {
break
} else {
return out, err
}
}
if tok == nil {
break
}
switch typed := tok.(type) {

View File

@ -13536,6 +13536,15 @@ type GetDeploymentInput struct {
// DeploymentId is a required field
DeploymentId *string `location:"uri" locationName:"deployment_id" type:"string" required:"true"`
// A query parameter to retrieve the specified embedded resources of the returned
// Deployment resource in the response. In a REST API call, this embed parameter
// value is a list of comma-separated strings, as in GET /restapis/{restapi_id}/deployments/{deployment_id}?embed=var1,var2.
// The SDK and other platform-dependent libraries might use a different format
// for the list. Currently, this request supports only retrieval of the embedded
// API summary this way. Hence, the parameter value must be a single-valued
// list containing only the "apisummary" string. For example, GET /restapis/{restapi_id}/deployments/{deployment_id}?embed=apisummary.
Embed []*string `location:"querystring" locationName:"embed" type:"list"`
// The identifier of the RestApi resource for the Deployment resource to get
// information about.
//
@ -13575,6 +13584,12 @@ func (s *GetDeploymentInput) SetDeploymentId(v string) *GetDeploymentInput {
return s
}
// SetEmbed sets the Embed field's value.
func (s *GetDeploymentInput) SetEmbed(v []*string) *GetDeploymentInput {
s.Embed = v
return s
}
// SetRestApiId sets the RestApiId field's value.
func (s *GetDeploymentInput) SetRestApiId(v string) *GetDeploymentInput {
s.RestApiId = &v
@ -14940,6 +14955,14 @@ func (s *GetRequestValidatorsOutput) SetPosition(v string) *GetRequestValidators
type GetResourceInput struct {
_ struct{} `type:"structure"`
// A query parameter to retrieve the specified resources embedded in the returned
// Resource representation in the response. This embed parameter value is a
// list of comma-separated strings. Currently, the request supports only retrieval
// of the embedded Method resources this way. The query parameter value must
// be a single-valued list and contain the "methods" string. For example, GET
// /restapis/{restapi_id}/resources/{resource_id}?embed=methods.
Embed []*string `location:"querystring" locationName:"embed" type:"list"`
// The identifier for the Resource resource.
//
// ResourceId is a required field
@ -14977,6 +15000,12 @@ func (s *GetResourceInput) Validate() error {
return nil
}
// SetEmbed sets the Embed field's value.
func (s *GetResourceInput) SetEmbed(v []*string) *GetResourceInput {
s.Embed = v
return s
}
// SetResourceId sets the ResourceId field's value.
func (s *GetResourceInput) SetResourceId(v string) *GetResourceInput {
s.ResourceId = &v
@ -14993,6 +15022,14 @@ func (s *GetResourceInput) SetRestApiId(v string) *GetResourceInput {
type GetResourcesInput struct {
_ struct{} `type:"structure"`
// A query parameter used to retrieve the specified resources embedded in the
// returned Resources resource in the response. This embed parameter value is
// a list of comma-separated strings. Currently, the request supports only retrieval
// of the embedded Method resources this way. The query parameter value must
// be a single-valued list and contain the "methods" string. For example, GET
// /restapis/{restapi_id}/resources?embed=methods.
Embed []*string `location:"querystring" locationName:"embed" type:"list"`
// The maximum number of returned results per page. The value is 25 by default
// and could be between 1 - 500.
Limit *int64 `location:"querystring" locationName:"limit" type:"integer"`
@ -15029,6 +15066,12 @@ func (s *GetResourcesInput) Validate() error {
return nil
}
// SetEmbed sets the Embed field's value.
func (s *GetResourcesInput) SetEmbed(v []*string) *GetResourcesInput {
s.Embed = v
return s
}
// SetLimit sets the Limit field's value.
func (s *GetResourcesInput) SetLimit(v int64) *GetResourcesInput {
s.Limit = &v

View File

@ -137,8 +137,8 @@ func (c *EC2) AcceptVpcPeeringConnectionRequest(input *AcceptVpcPeeringConnectio
//
// Accept a VPC peering connection request. To accept a request, the VPC peering
// connection must be in the pending-acceptance state, and you must be the owner
// of the peer VPC. Use the DescribeVpcPeeringConnections request to view your
// outstanding VPC peering connection requests.
// of the peer VPC. Use DescribeVpcPeeringConnections to view your outstanding
// VPC peering connection requests.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@ -546,12 +546,17 @@ func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *reques
//
// [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is
// already associated with a different instance, it is disassociated from that
// instance and associated with the specified instance.
// instance and associated with the specified instance. If you associate an
// Elastic IP address with an instance that has an existing Elastic IP address,
// the existing address is disassociated from the instance, but remains allocated
// to your account.
//
// [VPC in an EC2-Classic account] If you don't specify a private IP address,
// the Elastic IP address is associated with the primary IP address. If the
// Elastic IP address is already associated with a different instance or a network
// interface, you get an error unless you allow reassociation.
// interface, you get an error unless you allow reassociation. You cannot associate
// an Elastic IP address with an instance or network interface that has an existing
// Elastic IP address.
//
// This is an idempotent operation. If you perform the operation more than once,
// Amazon EC2 doesn't return an error, and you may be charged for each time
@ -2645,16 +2650,16 @@ func (c *EC2) CreateDhcpOptionsRequest(input *CreateDhcpOptionsInput) (req *requ
// to receive a custom DNS hostname as specified in domain-name, you must
// set domain-name-servers to a custom DNS server.
//
// * domain-name - If you're using AmazonProvidedDNS in "us-east-1", specify
// "ec2.internal". If you're using AmazonProvidedDNS in another region, specify
// "region.compute.internal" (for example, "ap-northeast-1.compute.internal").
// Otherwise, specify a domain name (for example, "MyCompany.com"). This
// value is used to complete unqualified DNS hostnames. Important: Some Linux
// operating systems accept multiple domain names separated by spaces. However,
// Windows and other Linux operating systems treat the value as a single
// domain, which results in unexpected behavior. If your DHCP options set
// is associated with a VPC that has instances with multiple operating systems,
// specify only one domain name.
// * domain-name - If you're using AmazonProvidedDNS in us-east-1, specify
// ec2.internal. If you're using AmazonProvidedDNS in another region, specify
// region.compute.internal (for example, ap-northeast-1.compute.internal).
// Otherwise, specify a domain name (for example, MyCompany.com). This value
// is used to complete unqualified DNS hostnames. Important: Some Linux operating
// systems accept multiple domain names separated by spaces. However, Windows
// and other Linux operating systems treat the value as a single domain,
// which results in unexpected behavior. If your DHCP options set is associated
// with a VPC that has instances with multiple operating systems, specify
// only one domain name.
//
// * ntp-servers - The IP addresses of up to four Network Time Protocol (NTP)
// servers.
@ -2863,6 +2868,88 @@ func (c *EC2) CreateFlowLogsWithContext(ctx aws.Context, input *CreateFlowLogsIn
return out, req.Send()
}
const opCreateFpgaImage = "CreateFpgaImage"
// CreateFpgaImageRequest generates a "aws/request.Request" representing the
// client's request for the CreateFpgaImage operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateFpgaImage for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateFpgaImage method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
// // Example sending a request using the CreateFpgaImageRequest method.
// req, resp := client.CreateFpgaImageRequest(params)
//
// err := req.Send()
// if err == nil { // resp is now filled
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage
func (c *EC2) CreateFpgaImageRequest(input *CreateFpgaImageInput) (req *request.Request, output *CreateFpgaImageOutput) {
op := &request.Operation{
Name: opCreateFpgaImage,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &CreateFpgaImageInput{}
}
output = &CreateFpgaImageOutput{}
req = c.newRequest(op, input, output)
return
}
// CreateFpgaImage API operation for Amazon Elastic Compute Cloud.
//
// Creates an Amazon FPGA Image (AFI) from the specified design checkpoint (DCP).
//
// The create operation is asynchronous. To verify that the AFI is ready for
// use, check the output logs.
//
// An AFI contains the FPGA bitstream that is ready to download to an FPGA.
// You can securely deploy an AFI on one or more FPGA-accelerated instances.
// For more information, see the AWS FPGA Hardware Development Kit (https://github.com/aws/aws-fpga/).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Elastic Compute Cloud's
// API operation CreateFpgaImage for usage and error information.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImage
func (c *EC2) CreateFpgaImage(input *CreateFpgaImageInput) (*CreateFpgaImageOutput, error) {
req, out := c.CreateFpgaImageRequest(input)
return out, req.Send()
}
// CreateFpgaImageWithContext is the same as CreateFpgaImage with the addition of
// the ability to pass a context and additional request options.
//
// See CreateFpgaImage for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *EC2) CreateFpgaImageWithContext(ctx aws.Context, input *CreateFpgaImageInput, opts ...request.Option) (*CreateFpgaImageOutput, error) {
req, out := c.CreateFpgaImageRequest(input)
req.SetContext(ctx)
req.ApplyOptions(opts...)
return out, req.Send()
}
const opCreateImage = "CreateImage"
// CreateImageRequest generates a "aws/request.Request" representing the
@ -4216,7 +4303,7 @@ func (c *EC2) CreateSubnetRequest(input *CreateSubnetInput) (req *request.Reques
// If you've associated an IPv6 CIDR block with your VPC, you can create a subnet
// with an IPv6 CIDR block that uses a /64 prefix length.
//
// AWS reserves both the first four and the last IP address in each subnet's
// AWS reserves both the first four and the last IPv4 address in each subnet's
// CIDR block. They're not available for use.
//
// If you add more than one subnet to a VPC, they're set up in a star topology
@ -4665,8 +4752,8 @@ func (c *EC2) CreateVpcPeeringConnectionRequest(input *CreateVpcPeeringConnectio
// peering connection. The VPC peering connection request expires after 7 days,
// after which it cannot be accepted or rejected.
//
// A CreateVpcPeeringConnection request between VPCs with overlapping CIDR blocks
// results in the VPC peering connection having a status of failed.
// If you try to create a VPC peering connection between VPCs that have overlapping
// CIDR blocks, the VPC peering connection status goes to failed.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@ -12549,8 +12636,8 @@ func (c *EC2) DescribeVpcClassicLinkDnsSupportRequest(input *DescribeVpcClassicL
// the DNS hostname of a linked EC2-Classic instance resolves to its private
// IP address when addressed from an instance in the VPC to which it's linked.
// Similarly, the DNS hostname of an instance in a VPC resolves to its private
// IP address when addressed from a linked EC2-Classic instance. For more information
// about ClassicLink, see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
// IP address when addressed from a linked EC2-Classic instance. For more information,
// see ClassicLink (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html)
// in the Amazon Elastic Compute Cloud User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@ -13166,7 +13253,7 @@ func (c *EC2) DetachInternetGatewayRequest(input *DetachInternetGatewayInput) (r
//
// Detaches an Internet gateway from a VPC, disabling connectivity between the
// Internet and the VPC. The VPC must not contain any running instances with
// Elastic IP addresses.
// Elastic IP addresses or public IPv4 addresses.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@ -23689,6 +23776,128 @@ func (s *CreateFlowLogsOutput) SetUnsuccessful(v []*UnsuccessfulItem) *CreateFlo
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImageRequest
type CreateFpgaImageInput struct {
_ struct{} `type:"structure"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency
// of the request. For more information, see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html).
ClientToken *string `type:"string"`
// A description for the AFI.
Description *string `type:"string"`
// Checks whether you have the required permissions for the action, without
// actually making the request, and provides an error response. If you have
// the required permissions, the error response is DryRunOperation. Otherwise,
// it is UnauthorizedOperation.
DryRun *bool `type:"boolean"`
// The location of the encrypted design checkpoint in Amazon S3. The input must
// be a tarball.
//
// InputStorageLocation is a required field
InputStorageLocation *StorageLocation `type:"structure" required:"true"`
// The location in Amazon S3 for the output logs.
LogsStorageLocation *StorageLocation `type:"structure"`
// A name for the AFI.
Name *string `type:"string"`
}
// String returns the string representation
func (s CreateFpgaImageInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s CreateFpgaImageInput) GoString() string {
return s.String()
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateFpgaImageInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "CreateFpgaImageInput"}
if s.InputStorageLocation == nil {
invalidParams.Add(request.NewErrParamRequired("InputStorageLocation"))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// SetClientToken sets the ClientToken field's value.
func (s *CreateFpgaImageInput) SetClientToken(v string) *CreateFpgaImageInput {
s.ClientToken = &v
return s
}
// SetDescription sets the Description field's value.
func (s *CreateFpgaImageInput) SetDescription(v string) *CreateFpgaImageInput {
s.Description = &v
return s
}
// SetDryRun sets the DryRun field's value.
func (s *CreateFpgaImageInput) SetDryRun(v bool) *CreateFpgaImageInput {
s.DryRun = &v
return s
}
// SetInputStorageLocation sets the InputStorageLocation field's value.
func (s *CreateFpgaImageInput) SetInputStorageLocation(v *StorageLocation) *CreateFpgaImageInput {
s.InputStorageLocation = v
return s
}
// SetLogsStorageLocation sets the LogsStorageLocation field's value.
func (s *CreateFpgaImageInput) SetLogsStorageLocation(v *StorageLocation) *CreateFpgaImageInput {
s.LogsStorageLocation = v
return s
}
// SetName sets the Name field's value.
func (s *CreateFpgaImageInput) SetName(v string) *CreateFpgaImageInput {
s.Name = &v
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateFpgaImageResult
type CreateFpgaImageOutput struct {
_ struct{} `type:"structure"`
// The global FPGA image identifier (AGFI ID).
FpgaImageGlobalId *string `locationName:"fpgaImageGlobalId" type:"string"`
// The FPGA image identifier (AFI ID).
FpgaImageId *string `locationName:"fpgaImageId" type:"string"`
}
// String returns the string representation
func (s CreateFpgaImageOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s CreateFpgaImageOutput) GoString() string {
return s.String()
}
// SetFpgaImageGlobalId sets the FpgaImageGlobalId field's value.
func (s *CreateFpgaImageOutput) SetFpgaImageGlobalId(v string) *CreateFpgaImageOutput {
s.FpgaImageGlobalId = &v
return s
}
// SetFpgaImageId sets the FpgaImageId field's value.
func (s *CreateFpgaImageOutput) SetFpgaImageId(v string) *CreateFpgaImageOutput {
s.FpgaImageId = &v
return s
}
// Contains the parameters for CreateImage.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateImageRequest
type CreateImageInput struct {
@ -30587,18 +30796,6 @@ type DescribeInstancesInput struct {
//
// * architecture - The instance architecture (i386 | x86_64).
//
// * association.public-ip - The address of the Elastic IP address (IPv4)
// bound to the network interface.
//
// * association.ip-owner-id - The owner of the Elastic IP address (IPv4)
// associated with the network interface.
//
// * association.allocation-id - The allocation ID returned when you allocated
// the Elastic IP address (IPv4) for your network interface.
//
// * association.association-id - The association ID returned when the network
// interface was associated with an IPv4 address.
//
// * availability-zone - The Availability Zone of the instance.
//
// * block-device-mapping.attach-time - The attach time for an EBS volume
@ -30684,6 +30881,18 @@ type DescribeInstancesInput struct {
// * network-interface.addresses.association.ip-owner-id - The owner ID of
// the private IPv4 address associated with the network interface.
//
// * network-interface.association.public-ip - The address of the Elastic
// IP address (IPv4) bound to the network interface.
//
// * network-interface.association.ip-owner-id - The owner of the Elastic
// IP address (IPv4) associated with the network interface.
//
// * network-interface.association.allocation-id - The allocation ID returned
// when you allocated the Elastic IP address (IPv4) for your network interface.
//
// * network-interface.association.association-id - The association ID returned
// when the network interface was associated with an IPv4 address.
//
// * network-interface.attachment.attachment-id - The ID of the interface
// attachment.
//
@ -31425,7 +31634,7 @@ func (s *DescribeNetworkAclsOutput) SetNetworkAcls(v []*NetworkAcl) *DescribeNet
type DescribeNetworkInterfaceAttributeInput struct {
_ struct{} `type:"structure"`
// The attribute of the network interface.
// The attribute of the network interface. This parameter is required.
Attribute *string `locationName:"attribute" type:"string" enum:"NetworkInterfaceAttribute"`
// Checks whether you have the required permissions for the action, without
@ -32355,6 +32564,9 @@ type DescribeReservedInstancesOfferingsInput struct {
// with a tenancy of dedicated is applied to instances that run in a VPC on
// single-tenant hardware (i.e., Dedicated Instances).
//
// Important: The host value cannot be used with this parameter. Use the default
// or dedicated values only.
//
// Default: default
InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"`
@ -32586,7 +32798,8 @@ type DescribeRouteTablesInput struct {
// * association.subnet-id - The ID of the subnet involved in the association.
//
// * association.main - Indicates whether the route table is the main route
// table for the VPC (true | false).
// table for the VPC (true | false). Route tables that do not have an association
// ID are not returned in the response.
//
// * route-table-id - The ID of the route table.
//
@ -34582,7 +34795,7 @@ func (s *DescribeTagsOutput) SetTags(v []*TagDescription) *DescribeTagsOutput {
type DescribeVolumeAttributeInput struct {
_ struct{} `type:"structure"`
// The instance attribute.
// The attribute of the volume. This parameter is required.
Attribute *string `type:"string" enum:"VolumeAttributeName"`
// Checks whether you have the required permissions for the action, without
@ -53953,6 +54166,40 @@ func (s *Storage) SetS3(v *S3Storage) *Storage {
return s
}
// Describes a storage location in Amazon S3.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StorageLocation
type StorageLocation struct {
_ struct{} `type:"structure"`
// The name of the S3 bucket.
Bucket *string `type:"string"`
// The key.
Key *string `type:"string"`
}
// String returns the string representation
func (s StorageLocation) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s StorageLocation) GoString() string {
return s.String()
}
// SetBucket sets the Bucket field's value.
func (s *StorageLocation) SetBucket(v string) *StorageLocation {
s.Bucket = &v
return s
}
// SetKey sets the Key field's value.
func (s *StorageLocation) SetKey(v string) *StorageLocation {
s.Key = &v
return s
}
// Describes a subnet.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/Subnet
type Subnet struct {

View File

@ -115,3 +115,54 @@ func (c *ELBV2) WaitUntilLoadBalancerExistsWithContext(ctx aws.Context, input *D
return w.WaitWithContext(ctx)
}
// WaitUntilLoadBalancersDeleted uses the Elastic Load Balancing v2 API operation
// DescribeLoadBalancers to wait for a condition to be met before returning.
// If the condition is not meet within the max attempt window an error will
// be returned.
func (c *ELBV2) WaitUntilLoadBalancersDeleted(input *DescribeLoadBalancersInput) error {
return c.WaitUntilLoadBalancersDeletedWithContext(aws.BackgroundContext(), input)
}
// WaitUntilLoadBalancersDeletedWithContext is an extended version of WaitUntilLoadBalancersDeleted.
// With the support for passing in a context and options to configure the
// Waiter and the underlying request options.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *ELBV2) WaitUntilLoadBalancersDeletedWithContext(ctx aws.Context, input *DescribeLoadBalancersInput, opts ...request.WaiterOption) error {
w := request.Waiter{
Name: "WaitUntilLoadBalancersDeleted",
MaxAttempts: 40,
Delay: request.ConstantWaiterDelay(15 * time.Second),
Acceptors: []request.WaiterAcceptor{
{
State: request.RetryWaiterState,
Matcher: request.PathAllWaiterMatch, Argument: "LoadBalancers[].State.Code",
Expected: "active",
},
{
State: request.SuccessWaiterState,
Matcher: request.ErrorWaiterMatch,
Expected: "LoadBalancerNotFound",
},
},
Logger: c.Config.Logger,
NewRequest: func(opts []request.Option) (*request.Request, error) {
var inCpy *DescribeLoadBalancersInput
if input != nil {
tmp := *input
inCpy = &tmp
}
req, _ := c.DescribeLoadBalancersRequest(inCpy)
req.SetContext(ctx)
req.ApplyOptions(opts...)
return req, nil
},
}
w.ApplyOptions(opts...)
return w.WaitWithContext(ctx)
}

View File

@ -160,7 +160,8 @@ func (c *IAM) AddRoleToInstanceProfileRequest(input *AddRoleToInstanceProfileInp
// AddRoleToInstanceProfile API operation for AWS Identity and Access Management.
//
// Adds the specified IAM role to the specified instance profile.
// Adds the specified IAM role to the specified instance profile. An instance
// profile can contain only one role, and this limit cannot be increased.
//
// The caller of this API must be granted the PassRole permission on the IAM
// role by a permission policy.
@ -189,6 +190,12 @@ func (c *IAM) AddRoleToInstanceProfileRequest(input *AddRoleToInstanceProfileInp
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -455,13 +462,13 @@ func (c *IAM) AttachRolePolicyRequest(input *AttachRolePolicyInput) (req *reques
// AttachRolePolicy API operation for AWS Identity and Access Management.
//
// Attaches the specified managed policy to the specified IAM role.
// Attaches the specified managed policy to the specified IAM role. When you
// attach a managed policy to a role, the managed policy becomes part of the
// role's permission (access) policy.
//
// When you attach a managed policy to a role, the managed policy becomes part
// of the role's permission (access) policy. You cannot use a managed policy
// as the role's trust policy. The role's trust policy is created at the same
// time as the role, using CreateRole. You can update a role's trust policy
// using UpdateAssumeRolePolicy.
// You cannot use a managed policy as the role's trust policy. The role's trust
// policy is created at the same time as the role, using CreateRole. You can
// update a role's trust policy using UpdateAssumeRolePolicy.
//
// Use this API to attach a managed policy to a role. To embed an inline policy
// in a role, use PutRolePolicy. For more information about policies, see Managed
@ -488,6 +495,12 @@ func (c *IAM) AttachRolePolicyRequest(input *AttachRolePolicyInput) (req *reques
// The request was rejected because an invalid or out-of-range value was supplied
// for an input parameter.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -1601,6 +1614,10 @@ func (c *IAM) CreateRoleRequest(input *CreateRoleInput) (req *request.Request, o
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeInvalidInputException "InvalidInput"
// The request was rejected because an invalid or out-of-range value was supplied
// for an input parameter.
//
// * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists"
// The request was rejected because it attempted to create a resource that already
// exists.
@ -1749,6 +1766,112 @@ func (c *IAM) CreateSAMLProviderWithContext(ctx aws.Context, input *CreateSAMLPr
return out, req.Send()
}
const opCreateServiceLinkedRole = "CreateServiceLinkedRole"
// CreateServiceLinkedRoleRequest generates a "aws/request.Request" representing the
// client's request for the CreateServiceLinkedRole operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See CreateServiceLinkedRole for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the CreateServiceLinkedRole method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
// // Example sending a request using the CreateServiceLinkedRoleRequest method.
// req, resp := client.CreateServiceLinkedRoleRequest(params)
//
// err := req.Send()
// if err == nil { // resp is now filled
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/CreateServiceLinkedRole
func (c *IAM) CreateServiceLinkedRoleRequest(input *CreateServiceLinkedRoleInput) (req *request.Request, output *CreateServiceLinkedRoleOutput) {
op := &request.Operation{
Name: opCreateServiceLinkedRole,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &CreateServiceLinkedRoleInput{}
}
output = &CreateServiceLinkedRoleOutput{}
req = c.newRequest(op, input, output)
return
}
// CreateServiceLinkedRole API operation for AWS Identity and Access Management.
//
// Creates an IAM role that is linked to a specific AWS service. The service
// controls the attached policies and when the role can be deleted. This helps
// ensure that the service is not broken by an unexpectedly changed or deleted
// role, which could put your AWS resources into an unknown state. Allowing
// the service to control the role helps improve service stability and proper
// cleanup when a service and its role are no longer needed.
//
// The name of the role is autogenerated by combining the string that you specify
// for the AWSServiceName parameter with the string that you specify for the
// CustomSuffix parameter. The resulting name must be unique in your account
// or the request fails.
//
// To attach a policy to this service-linked role, you must make the request
// using the AWS service that depends on this role.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Identity and Access Management's
// API operation CreateServiceLinkedRole for usage and error information.
//
// Returned Error Codes:
// * ErrCodeInvalidInputException "InvalidInput"
// The request was rejected because an invalid or out-of-range value was supplied
// for an input parameter.
//
// * ErrCodeLimitExceededException "LimitExceeded"
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeNoSuchEntityException "NoSuchEntity"
// The request was rejected because it referenced an entity that does not exist.
// The error message describes the entity.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/CreateServiceLinkedRole
func (c *IAM) CreateServiceLinkedRole(input *CreateServiceLinkedRoleInput) (*CreateServiceLinkedRoleOutput, error) {
req, out := c.CreateServiceLinkedRoleRequest(input)
return out, req.Send()
}
// CreateServiceLinkedRoleWithContext is the same as CreateServiceLinkedRole with the addition of
// the ability to pass a context and additional request options.
//
// See CreateServiceLinkedRole for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *IAM) CreateServiceLinkedRoleWithContext(ctx aws.Context, input *CreateServiceLinkedRoleInput, opts ...request.Option) (*CreateServiceLinkedRoleOutput, error) {
req, out := c.CreateServiceLinkedRoleRequest(input)
req.SetContext(ctx)
req.ApplyOptions(opts...)
return out, req.Send()
}
const opCreateServiceSpecificCredential = "CreateServiceSpecificCredential"
// CreateServiceSpecificCredentialRequest generates a "aws/request.Request" representing the
@ -3231,6 +3354,12 @@ func (c *IAM) DeleteRoleRequest(input *DeleteRoleInput) (req *request.Request, o
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -3328,6 +3457,12 @@ func (c *IAM) DeleteRolePolicyRequest(input *DeleteRolePolicyInput) (req *reques
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -4299,6 +4434,12 @@ func (c *IAM) DetachRolePolicyRequest(input *DetachRolePolicyInput) (req *reques
// The request was rejected because an invalid or out-of-range value was supplied
// for an input parameter.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -10383,6 +10524,12 @@ func (c *IAM) PutRolePolicyRequest(input *PutRolePolicyInput) (req *request.Requ
// The request was rejected because it referenced an entity that does not exist.
// The error message describes the entity.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -10667,8 +10814,8 @@ func (c *IAM) RemoveRoleFromInstanceProfileRequest(input *RemoveRoleFromInstance
//
// Make sure you do not have any Amazon EC2 instances running with the role
// you are about to remove from the instance profile. Removing a role from an
// instance profile that is associated with a running instance break any applications
// running on the instance.
// instance profile that is associated with a running instance might break any
// applications running on the instance.
//
// For more information about IAM roles, go to Working with Roles (http://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html).
// For more information about instance profiles, go to About Instance Profiles
@ -10690,6 +10837,12 @@ func (c *IAM) RemoveRoleFromInstanceProfileRequest(input *RemoveRoleFromInstance
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -11700,6 +11853,12 @@ func (c *IAM) UpdateAssumeRolePolicyRequest(input *UpdateAssumeRolePolicyInput)
// The request was rejected because it attempted to create resources beyond
// the current AWS account limits. The error message describes the limit exceeded.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
@ -12041,6 +12200,97 @@ func (c *IAM) UpdateOpenIDConnectProviderThumbprintWithContext(ctx aws.Context,
return out, req.Send()
}
const opUpdateRoleDescription = "UpdateRoleDescription"
// UpdateRoleDescriptionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoleDescription operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UpdateRoleDescription for usage and error information.
//
// Creating a request object using this method should be used when you want to inject
// custom logic into the request's lifecycle using a custom handler, or if you want to
// access properties on the request object before or after sending the request. If
// you just want the service response, call the UpdateRoleDescription method directly
// instead.
//
// Note: You must call the "Send" method on the returned request object in order
// to execute the request.
//
// // Example sending a request using the UpdateRoleDescriptionRequest method.
// req, resp := client.UpdateRoleDescriptionRequest(params)
//
// err := req.Send()
// if err == nil { // resp is now filled
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UpdateRoleDescription
func (c *IAM) UpdateRoleDescriptionRequest(input *UpdateRoleDescriptionInput) (req *request.Request, output *UpdateRoleDescriptionOutput) {
op := &request.Operation{
Name: opUpdateRoleDescription,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &UpdateRoleDescriptionInput{}
}
output = &UpdateRoleDescriptionOutput{}
req = c.newRequest(op, input, output)
return
}
// UpdateRoleDescription API operation for AWS Identity and Access Management.
//
// Modifies the description of a role.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Identity and Access Management's
// API operation UpdateRoleDescription for usage and error information.
//
// Returned Error Codes:
// * ErrCodeNoSuchEntityException "NoSuchEntity"
// The request was rejected because it referenced an entity that does not exist.
// The error message describes the entity.
//
// * ErrCodeUnmodifiableEntityException "UnmodifiableEntity"
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
//
// * ErrCodeServiceFailureException "ServiceFailure"
// The request processing has failed because of an unknown error, exception
// or failure.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UpdateRoleDescription
func (c *IAM) UpdateRoleDescription(input *UpdateRoleDescriptionInput) (*UpdateRoleDescriptionOutput, error) {
req, out := c.UpdateRoleDescriptionRequest(input)
return out, req.Send()
}
// UpdateRoleDescriptionWithContext is the same as UpdateRoleDescription with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoleDescription for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *IAM) UpdateRoleDescriptionWithContext(ctx aws.Context, input *UpdateRoleDescriptionInput, opts ...request.Option) (*UpdateRoleDescriptionOutput, error) {
req, out := c.UpdateRoleDescriptionRequest(input)
req.SetContext(ctx)
req.ApplyOptions(opts...)
return out, req.Send()
}
const opUpdateSAMLProvider = "UpdateSAMLProvider"
// UpdateSAMLProviderRequest generates a "aws/request.Request" representing the
@ -13082,7 +13332,7 @@ type AccessKeyLastUsed struct {
LastUsedDate *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"`
// The AWS region where this access key was most recently used. This field is
// null when:
// displays "N/A" when:
//
// * The user does not have an access key.
//
@ -13098,7 +13348,7 @@ type AccessKeyLastUsed struct {
Region *string `type:"string" required:"true"`
// The name of the AWS service with which this access key was most recently
// used. This field is null when:
// used. This field displays "N/A" when:
//
// * The user does not have an access key.
//
@ -13288,7 +13538,7 @@ type AddRoleToInstanceProfileInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -13534,7 +13784,7 @@ type AttachRolePolicyInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -14701,6 +14951,9 @@ type CreateRoleInput struct {
// AssumeRolePolicyDocument is a required field
AssumeRolePolicyDocument *string `min:"1" type:"string" required:"true"`
// A customer-provided description of the role.
Description *string `type:"string"`
// The path to the role. For more information about paths, see IAM Identifiers
// (http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)
// in the IAM User Guide.
@ -14719,7 +14972,8 @@ type CreateRoleInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-.
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// Role names are not distinguished by case. For example, you cannot create
// roles named both "PRODROLE" and "prodrole".
//
@ -14768,6 +15022,12 @@ func (s *CreateRoleInput) SetAssumeRolePolicyDocument(v string) *CreateRoleInput
return s
}
// SetDescription sets the Description field's value.
func (s *CreateRoleInput) SetDescription(v string) *CreateRoleInput {
s.Description = &v
return s
}
// SetPath sets the Path field's value.
func (s *CreateRoleInput) SetPath(v string) *CreateRoleInput {
s.Path = &v
@ -14902,6 +15162,98 @@ func (s *CreateSAMLProviderOutput) SetSAMLProviderArn(v string) *CreateSAMLProvi
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/CreateServiceLinkedRoleRequest
type CreateServiceLinkedRoleInput struct {
_ struct{} `type:"structure"`
// The AWS service to which this role is attached. You use a string similar
// to a URL but without the http:// in front. For example: elasticbeanstalk.amazonaws.com
//
// AWSServiceName is a required field
AWSServiceName *string `min:"1" type:"string" required:"true"`
// A string that you provide, which is combined with the service name to form
// the complete role name. If you make multiple requests for the same service,
// then you must supply a different CustomSuffix for each request. Otherwise
// the request fails with a duplicate role name error. For example, you could
// add -1 or -debug to the suffix.
CustomSuffix *string `min:"1" type:"string"`
// The description of the role.
Description *string `type:"string"`
}
// String returns the string representation
func (s CreateServiceLinkedRoleInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s CreateServiceLinkedRoleInput) GoString() string {
return s.String()
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateServiceLinkedRoleInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "CreateServiceLinkedRoleInput"}
if s.AWSServiceName == nil {
invalidParams.Add(request.NewErrParamRequired("AWSServiceName"))
}
if s.AWSServiceName != nil && len(*s.AWSServiceName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("AWSServiceName", 1))
}
if s.CustomSuffix != nil && len(*s.CustomSuffix) < 1 {
invalidParams.Add(request.NewErrParamMinLen("CustomSuffix", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// SetAWSServiceName sets the AWSServiceName field's value.
func (s *CreateServiceLinkedRoleInput) SetAWSServiceName(v string) *CreateServiceLinkedRoleInput {
s.AWSServiceName = &v
return s
}
// SetCustomSuffix sets the CustomSuffix field's value.
func (s *CreateServiceLinkedRoleInput) SetCustomSuffix(v string) *CreateServiceLinkedRoleInput {
s.CustomSuffix = &v
return s
}
// SetDescription sets the Description field's value.
func (s *CreateServiceLinkedRoleInput) SetDescription(v string) *CreateServiceLinkedRoleInput {
s.Description = &v
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/CreateServiceLinkedRoleResponse
type CreateServiceLinkedRoleOutput struct {
_ struct{} `type:"structure"`
// A Role object that contains details about the newly created role.
Role *Role `type:"structure"`
}
// String returns the string representation
func (s CreateServiceLinkedRoleOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s CreateServiceLinkedRoleOutput) GoString() string {
return s.String()
}
// SetRole sets the Role field's value.
func (s *CreateServiceLinkedRoleOutput) SetRole(v *Role) *CreateServiceLinkedRoleOutput {
s.Role = v
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/CreateServiceSpecificCredentialRequest
type CreateServiceSpecificCredentialInput struct {
_ struct{} `type:"structure"`
@ -15197,7 +15549,7 @@ type DeactivateMFADeviceInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =/:,.@-
// with no spaces. You can also include any of the following characters: =,.@:/-
//
// SerialNumber is a required field
SerialNumber *string `min:"9" type:"string" required:"true"`
@ -15920,7 +16272,7 @@ type DeleteRoleInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -15991,7 +16343,7 @@ type DeleteRolePolicyInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -16566,7 +16918,7 @@ type DeleteVirtualMFADeviceInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =/:,.@-
// with no spaces. You can also include any of the following characters: =,.@:/-
//
// SerialNumber is a required field
SerialNumber *string `min:"9" type:"string" required:"true"`
@ -16718,7 +17070,7 @@ type DetachRolePolicyInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -16873,6 +17225,13 @@ type EnableMFADeviceInput struct {
//
// The format for this parameter is a string of 6 digits.
//
// Submit your request immediately after generating the authentication codes.
// If you generate the codes and then wait too long to submit the request, the
// MFA device successfully associates with the user but the MFA device becomes
// out of sync. This happens because time-based one-time passwords (TOTP) expire
// after a short period of time. If this happens, you can resync the device
// (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_sync.html).
//
// AuthenticationCode1 is a required field
AuthenticationCode1 *string `min:"6" type:"string" required:"true"`
@ -16880,6 +17239,13 @@ type EnableMFADeviceInput struct {
//
// The format for this parameter is a string of 6 digits.
//
// Submit your request immediately after generating the authentication codes.
// If you generate the codes and then wait too long to submit the request, the
// MFA device successfully associates with the user but the MFA device becomes
// out of sync. This happens because time-based one-time passwords (TOTP) expire
// after a short period of time. If this happens, you can resync the device
// (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_sync.html).
//
// AuthenticationCode2 is a required field
AuthenticationCode2 *string `min:"6" type:"string" required:"true"`
@ -16888,7 +17254,7 @@ type EnableMFADeviceInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =/:,.@-
// with no spaces. You can also include any of the following characters: =,.@:/-
//
// SerialNumber is a required field
SerialNumber *string `min:"9" type:"string" required:"true"`
@ -17401,7 +17767,7 @@ func (s GetAccountPasswordPolicyInput) GoString() string {
type GetAccountPasswordPolicyOutput struct {
_ struct{} `type:"structure"`
// Contains information about the account password policy.
// A structure that contains details about the account's password policy.
//
// PasswordPolicy is a required field
PasswordPolicy *PasswordPolicy `type:"structure" required:"true"`
@ -18348,7 +18714,7 @@ type GetRoleInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -18430,7 +18796,7 @@ type GetRolePolicyInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -19682,7 +20048,7 @@ type ListAttachedRolePoliciesInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -20540,7 +20906,7 @@ type ListInstanceProfilesForRoleInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -21257,7 +21623,7 @@ type ListRolePoliciesInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -23343,7 +23709,7 @@ type PutRolePolicyInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -23624,7 +23990,7 @@ type RemoveRoleFromInstanceProfileInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -24067,22 +24433,15 @@ func (s ResyncMFADeviceOutput) GoString() string {
return s.String()
}
// Contains information about an IAM role.
//
// This data type is used as a response element in the following actions:
//
// * CreateRole
//
// * GetRole
//
// * ListRoles
// Contains information about an IAM role. This structure is returned as a response
// element in several APIs that interact with roles.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/Role
type Role struct {
_ struct{} `type:"structure"`
// The Amazon Resource Name (ARN) specifying the role. For more information
// about ARNs and how to use them in policies, see IAM Identifiers (http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)
// in the Using IAM guide.
// in the IAM User Guide guide.
//
// Arn is a required field
Arn *string `min:"20" type:"string" required:"true"`
@ -24096,6 +24455,9 @@ type Role struct {
// CreateDate is a required field
CreateDate *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"`
// A description of the role that you provide.
Description *string `type:"string"`
// The path to the role. For more information about paths, see IAM Identifiers
// (http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)
// in the Using IAM guide.
@ -24144,6 +24506,12 @@ func (s *Role) SetCreateDate(v time.Time) *Role {
return s
}
// SetDescription sets the Description field's value.
func (s *Role) SetDescription(v string) *Role {
s.Description = &v
return s
}
// SetPath sets the Path field's value.
func (s *Role) SetPath(v string) *Role {
s.Path = &v
@ -25856,7 +26224,7 @@ type UpdateAssumeRolePolicyInput struct {
//
// This parameter allows (per its regex pattern (http://wikipedia.org/wiki/regex))
// a string of characters consisting of upper and lowercase alphanumeric characters
// with no spaces. You can also include any of the following characters: =,.@-
// with no spaces. You can also include any of the following characters: _+=,.@-
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
@ -26187,6 +26555,86 @@ func (s UpdateOpenIDConnectProviderThumbprintOutput) GoString() string {
return s.String()
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UpdateRoleDescriptionRequest
type UpdateRoleDescriptionInput struct {
_ struct{} `type:"structure"`
// The new description that you want to apply to the specified role.
//
// Description is a required field
Description *string `type:"string" required:"true"`
// The name of the role that you want to modify.
//
// RoleName is a required field
RoleName *string `min:"1" type:"string" required:"true"`
}
// String returns the string representation
func (s UpdateRoleDescriptionInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s UpdateRoleDescriptionInput) GoString() string {
return s.String()
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoleDescriptionInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "UpdateRoleDescriptionInput"}
if s.Description == nil {
invalidParams.Add(request.NewErrParamRequired("Description"))
}
if s.RoleName == nil {
invalidParams.Add(request.NewErrParamRequired("RoleName"))
}
if s.RoleName != nil && len(*s.RoleName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("RoleName", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// SetDescription sets the Description field's value.
func (s *UpdateRoleDescriptionInput) SetDescription(v string) *UpdateRoleDescriptionInput {
s.Description = &v
return s
}
// SetRoleName sets the RoleName field's value.
func (s *UpdateRoleDescriptionInput) SetRoleName(v string) *UpdateRoleDescriptionInput {
s.RoleName = &v
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UpdateRoleDescriptionResponse
type UpdateRoleDescriptionOutput struct {
_ struct{} `type:"structure"`
// A structure that contains details about the modified role.
Role *Role `type:"structure"`
}
// String returns the string representation
func (s UpdateRoleDescriptionOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s UpdateRoleDescriptionOutput) GoString() string {
return s.String()
}
// SetRole sets the Role field's value.
func (s *UpdateRoleDescriptionOutput) SetRole(v *Role) *UpdateRoleDescriptionOutput {
s.Role = v
return s
}
// Please also see https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UpdateSAMLProviderRequest
type UpdateSAMLProviderInput struct {
_ struct{} `type:"structure"`
@ -27352,7 +27800,7 @@ type VirtualMFADevice struct {
// SerialNumber is a required field
SerialNumber *string `min:"9" type:"string" required:"true"`
// The user to whom the MFA device is assigned.
// The IAM user associated with this virtual MFA device.
User *User `type:"structure"`
}

View File

@ -160,6 +160,15 @@ const (
// The specified service does not support service-specific credentials.
ErrCodeServiceNotSupportedException = "NotSupportedService"
// ErrCodeUnmodifiableEntityException for service response error code
// "UnmodifiableEntity".
//
// The request was rejected because only the service that depends on the service-linked
// role can modify or delete the role on your behalf. The error message includes
// the name of the service that depends on this service-linked role. You must
// request the change through that service.
ErrCodeUnmodifiableEntityException = "UnmodifiableEntity"
// ErrCodeUnrecognizedPublicKeyEncodingException for service response error code
// "UnrecognizedPublicKeyEncoding".
//

View File

@ -54,3 +54,49 @@ func (c *Kinesis) WaitUntilStreamExistsWithContext(ctx aws.Context, input *Descr
return w.WaitWithContext(ctx)
}
// WaitUntilStreamNotExists uses the Kinesis API operation
// DescribeStream to wait for a condition to be met before returning.
// If the condition is not meet within the max attempt window an error will
// be returned.
func (c *Kinesis) WaitUntilStreamNotExists(input *DescribeStreamInput) error {
return c.WaitUntilStreamNotExistsWithContext(aws.BackgroundContext(), input)
}
// WaitUntilStreamNotExistsWithContext is an extended version of WaitUntilStreamNotExists.
// With the support for passing in a context and options to configure the
// Waiter and the underlying request options.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *Kinesis) WaitUntilStreamNotExistsWithContext(ctx aws.Context, input *DescribeStreamInput, opts ...request.WaiterOption) error {
w := request.Waiter{
Name: "WaitUntilStreamNotExists",
MaxAttempts: 18,
Delay: request.ConstantWaiterDelay(10 * time.Second),
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
Matcher: request.ErrorWaiterMatch,
Expected: "ResourceNotFoundException",
},
},
Logger: c.Config.Logger,
NewRequest: func(opts []request.Option) (*request.Request, error) {
var inCpy *DescribeStreamInput
if input != nil {
tmp := *input
inCpy = &tmp
}
req, _ := c.DescribeStreamRequest(inCpy)
req.SetContext(ctx)
req.ApplyOptions(opts...)
return req, nil
},
}
w.ApplyOptions(opts...)
return w.WaitWithContext(ctx)
}

View File

@ -1544,7 +1544,7 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request.
// data key from memory.
//
// To return only an encrypted copy of the data key, use GenerateDataKeyWithoutPlaintext.
// To return an arbitrary unpredictable byte string, use GenerateRandom.
// To return a random byte string that is cryptographically secure, use GenerateRandom.
//
// If you use the optional EncryptionContext field, you must store at least
// enough information to be able to reconstruct the full encryption context
@ -1786,7 +1786,11 @@ func (c *KMS) GenerateRandomRequest(input *GenerateRandomInput) (req *request.Re
// GenerateRandom API operation for AWS Key Management Service.
//
// Generates an unpredictable byte string.
// Returns a random byte string that is cryptographically secure.
//
// For more information about entropy and random number generation, see the
// AWS Key Management Service Cryptographic Details (https://d0.awsstatic.com/whitepapers/KMS-Cryptographic-Details.pdf)
// whitepaper.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@ -4316,11 +4320,9 @@ func (s CreateAliasOutput) GoString() string {
type CreateGrantInput struct {
_ struct{} `type:"structure"`
// The conditions under which the operations permitted by the grant are allowed.
//
// You can use this value to allow the operations permitted by the grant only
// when a specified encryption context is present. For more information, see
// Encryption Context (http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html)
// A structure that you can use to allow certain operations in the grant only
// when the desired encryption context is present. For more information about
// encryption context, see Encryption Context (http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html)
// in the AWS Key Management Service Developer Guide.
Constraints *GrantConstraints `type:"structure"`
@ -5700,7 +5702,7 @@ func (s *GenerateRandomInput) SetNumberOfBytes(v int64) *GenerateRandomInput {
type GenerateRandomOutput struct {
_ struct{} `type:"structure"`
// The unpredictable byte string.
// The random byte string.
//
// Plaintext is automatically base64 encoded/decoded by the SDK.
Plaintext []byte `min:"1" type:"blob"`
@ -6023,29 +6025,34 @@ func (s *GetParametersForImportOutput) SetPublicKey(v []byte) *GetParametersForI
return s
}
// A structure for specifying the conditions under which the operations permitted
// by the grant are allowed.
//
// You can use this structure to allow the operations permitted by the grant
// only when a specified encryption context is present. For more information
// about encryption context, see Encryption Context (http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html)
// A structure that you can use to allow certain operations in the grant only
// when the desired encryption context is present. For more information about
// encryption context, see Encryption Context (http://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html)
// in the AWS Key Management Service Developer Guide.
//
// Grant constraints apply only to operations that accept encryption context
// as input. For example, the DescribeKey operation does not accept encryption
// context as input. A grant that allows the DescribeKey operation does so regardless
// of the grant constraints. In constrast, the Encrypt operation accepts encryption
// context as input. A grant that allows the Encrypt operation does so only
// when the encryption context of the Encrypt operation satisfies the grant
// constraints.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/kms-2014-11-01/GrantConstraints
type GrantConstraints struct {
_ struct{} `type:"structure"`
// Contains a list of key-value pairs that must be present in the encryption
// context of a subsequent operation permitted by the grant. When a subsequent
// operation permitted by the grant includes an encryption context that matches
// this list, the grant allows the operation. Otherwise, the operation is not
// allowed.
// A list of key-value pairs that must be present in the encryption context
// of certain subsequent operations that the grant allows. When certain subsequent
// operations allowed by the grant include encryption context that matches this
// list, the grant allows the operation. Otherwise, the grant does not allow
// the operation.
EncryptionContextEquals map[string]*string `type:"map"`
// Contains a list of key-value pairs, a subset of which must be present in
// the encryption context of a subsequent operation permitted by the grant.
// When a subsequent operation permitted by the grant includes an encryption
// context that matches this list or is a subset of this list, the grant allows
// the operation. Otherwise, the operation is not allowed.
// A list of key-value pairs, all of which must be present in the encryption
// context of certain subsequent operations that the grant allows. When certain
// subsequent operations allowed by the grant include encryption context that
// matches this list or is a superset of this list, the grant allows the operation.
// Otherwise, the grant does not allow the operation.
EncryptionContextSubset map[string]*string `type:"map"`
}
@ -6076,7 +6083,8 @@ func (s *GrantConstraints) SetEncryptionContextSubset(v map[string]*string) *Gra
type GrantListEntry struct {
_ struct{} `type:"structure"`
// The conditions under which the grant's operations are allowed.
// A list of key-value pairs that must be present in the encryption context
// of certain subsequent operations that the grant allows.
Constraints *GrantConstraints `type:"structure"`
// The date and time when the grant was created.

View File

@ -3035,14 +3035,14 @@ type AddPermissionInput struct {
// you don't specify the SourceArn) owned by a specific account.
SourceAccount *string `type:"string"`
// This is optional; however, when granting a source permission to invoke your
// function, you should specify this field with the Amazon Resource Name (ARN)
// as its value. This ensures that only events generated from the specified
// source can invoke the function.
// This is optional; however, when granting permission to invoke your function,
// you should specify this field with the Amazon Resource Name (ARN) as its
// value. This ensures that only events generated from the specified source
// can invoke the function.
//
// If you add a permission for the source without providing the source ARN,
// any AWS account that creates a mapping to your function ARN can send events
// to invoke your Lambda function from that source.
// If you add a permission without providing the source ARN, any AWS account
// that creates a mapping to your function ARN can send events to invoke your
// Lambda function.
SourceArn *string `type:"string"`
// A unique statement identifier.
@ -3439,7 +3439,7 @@ type CreateFunctionInput struct {
// Code is a required field
Code *FunctionCode `type:"structure" required:"true"`
// The parent object that contains the target Amazon Resource Name (ARN) of
// The parent object that contains the target ARN (Amazon Resource Name) of
// an Amazon SQS queue or Amazon SNS topic.
DeadLetterConfig *DeadLetterConfig `type:"structure"`
@ -3514,6 +3514,9 @@ type CreateFunctionInput struct {
// value based on your expected execution time. The default is 3 seconds.
Timeout *int64 `min:"1" type:"integer"`
// The parent object that contains your function's tracing settings.
TracingConfig *TracingConfig `type:"structure"`
// If your Lambda function accesses resources in a VPC, you provide this parameter
// identifying the list of security group IDs and subnet IDs. These must belong
// to the same VPC. You must provide at least one security group and one subnet
@ -3648,13 +3651,19 @@ func (s *CreateFunctionInput) SetTimeout(v int64) *CreateFunctionInput {
return s
}
// SetTracingConfig sets the TracingConfig field's value.
func (s *CreateFunctionInput) SetTracingConfig(v *TracingConfig) *CreateFunctionInput {
s.TracingConfig = v
return s
}
// SetVpcConfig sets the VpcConfig field's value.
func (s *CreateFunctionInput) SetVpcConfig(v *VpcConfig) *CreateFunctionInput {
s.VpcConfig = v
return s
}
// The parent object that contains the target Amazon Resource Name (ARN) of
// The parent object that contains the target ARN (Amazon Resource Name) of
// an Amazon SQS queue or Amazon SNS topic.
type DeadLetterConfig struct {
_ struct{} `type:"structure"`
@ -4191,7 +4200,7 @@ type FunctionConfiguration struct {
// The size, in bytes, of the function .zip file you uploaded.
CodeSize *int64 `type:"long"`
// The parent object that contains the target Amazon Resource Name (ARN) of
// The parent object that contains the target ARN (Amazon Resource Name) of
// an Amazon SQS queue or Amazon SNS topic.
DeadLetterConfig *DeadLetterConfig `type:"structure"`
@ -4236,6 +4245,9 @@ type FunctionConfiguration struct {
// value based on your expected execution time. The default is 3 seconds.
Timeout *int64 `min:"1" type:"integer"`
// The parent object that contains your function's tracing settings.
TracingConfig *TracingConfigResponse `type:"structure"`
// The version of the Lambda function.
Version *string `min:"1" type:"string"`
@ -4337,6 +4349,12 @@ func (s *FunctionConfiguration) SetTimeout(v int64) *FunctionConfiguration {
return s
}
// SetTracingConfig sets the TracingConfig field's value.
func (s *FunctionConfiguration) SetTracingConfig(v *TracingConfigResponse) *FunctionConfiguration {
s.TracingConfig = v
return s
}
// SetVersion sets the Version field's value.
func (s *FunctionConfiguration) SetVersion(v string) *FunctionConfiguration {
s.Version = &v
@ -5718,6 +5736,58 @@ func (s TagResourceOutput) GoString() string {
return s.String()
}
// The parent object that contains your function's tracing settings.
type TracingConfig struct {
_ struct{} `type:"structure"`
// Can be either PassThrough or Active. If PassThrough, Lambda will only trace
// the request from an upstream service if it contains a tracing header with
// "sampled=1". If Active, Lambda will respect any tracing header it receives
// from an upstream service. If no tracing header is received, Lambda will call
// X-Ray for a tracing decision.
Mode *string `type:"string" enum:"TracingMode"`
}
// String returns the string representation
func (s TracingConfig) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s TracingConfig) GoString() string {
return s.String()
}
// SetMode sets the Mode field's value.
func (s *TracingConfig) SetMode(v string) *TracingConfig {
s.Mode = &v
return s
}
// Parent object of the tracing information associated with your Lambda function.
type TracingConfigResponse struct {
_ struct{} `type:"structure"`
// The tracing mode associated with your Lambda function.
Mode *string `type:"string" enum:"TracingMode"`
}
// String returns the string representation
func (s TracingConfigResponse) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s TracingConfigResponse) GoString() string {
return s.String()
}
// SetMode sets the Mode field's value.
func (s *TracingConfigResponse) SetMode(v string) *TracingConfigResponse {
s.Mode = &v
return s
}
type UntagResourceInput struct {
_ struct{} `type:"structure"`
@ -6067,7 +6137,7 @@ func (s *UpdateFunctionCodeInput) SetZipFile(v []byte) *UpdateFunctionCodeInput
type UpdateFunctionConfigurationInput struct {
_ struct{} `type:"structure"`
// The parent object that contains the target Amazon Resource Name (ARN) of
// The parent object that contains the target ARN (Amazon Resource Name) of
// an Amazon SQS queue or Amazon SNS topic.
DeadLetterConfig *DeadLetterConfig `type:"structure"`
@ -6127,6 +6197,9 @@ type UpdateFunctionConfigurationInput struct {
// value based on your expected execution time. The default is 3 seconds.
Timeout *int64 `min:"1" type:"integer"`
// The parent object that contains your function's tracing settings.
TracingConfig *TracingConfig `type:"structure"`
// If your Lambda function accesses resources in a VPC, you provide this parameter
// identifying the list of security group IDs and subnet IDs. These must belong
// to the same VPC. You must provide at least one security group and one subnet
@ -6226,6 +6299,12 @@ func (s *UpdateFunctionConfigurationInput) SetTimeout(v int64) *UpdateFunctionCo
return s
}
// SetTracingConfig sets the TracingConfig field's value.
func (s *UpdateFunctionConfigurationInput) SetTracingConfig(v *TracingConfig) *UpdateFunctionConfigurationInput {
s.TracingConfig = v
return s
}
// SetVpcConfig sets the VpcConfig field's value.
func (s *UpdateFunctionConfigurationInput) SetVpcConfig(v *VpcConfig) *UpdateFunctionConfigurationInput {
s.VpcConfig = v
@ -6376,3 +6455,11 @@ const (
// ThrottleReasonCallerRateLimitExceeded is a ThrottleReason enum value
ThrottleReasonCallerRateLimitExceeded = "CallerRateLimitExceeded"
)
const (
// TracingModeActive is a TracingMode enum value
TracingModeActive = "Active"
// TracingModePassThrough is a TracingMode enum value
TracingModePassThrough = "PassThrough"
)

File diff suppressed because it is too large Load Diff

View File

@ -69,8 +69,14 @@ const (
// "HealthCheckAlreadyExists".
//
// The health check you're attempting to create already exists. Amazon Route
// 53 returns this error when a health check has already been created with the
// specified value for CallerReference.
// 53 returns this error when you submit a request that has the following values:
//
// * The same value for CallerReference as an existing health check, and
// one or more values that differ from the existing health check that has
// the same caller reference.
//
// * The same value for CallerReference as a health check that you created
// and later deleted, regardless of the other settings in the request.
ErrCodeHealthCheckAlreadyExists = "HealthCheckAlreadyExists"
// ErrCodeHealthCheckInUse for service response error code

View File

@ -3223,17 +3223,15 @@ func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, ou
// object itself. This operation is useful if you're only interested in an object's
// metadata. To use HEAD, you must have READ access to the object.
//
// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
// for more information on returned errors.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon Simple Storage Service's
// API operation HeadObject for usage and error information.
//
// Returned Error Codes:
// * ErrCodeNoSuchKey "NoSuchKey"
// The specified key does not exist.
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
req, out := c.HeadObjectRequest(input)

View File

@ -12,6 +12,69 @@ import (
var reBucketLocation = regexp.MustCompile(`>([^<>]+)<\/Location`)
// NormalizeBucketLocation is a utility function which will update the
// passed in value to always be a region ID. Generally this would be used
// with GetBucketLocation API operation.
//
// Replaces empty string with "us-east-1", and "EU" with "eu-west-1".
//
// See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html
// for more information on the values that can be returned.
func NormalizeBucketLocation(loc string) string {
switch loc {
case "":
loc = "us-east-1"
case "EU":
loc = "eu-west-1"
}
return loc
}
// NormalizeBucketLocationHandler is a request handler which will update the
// GetBucketLocation's result LocationConstraint value to always be a region ID.
//
// Replaces empty string with "us-east-1", and "EU" with "eu-west-1".
//
// See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html
// for more information on the values that can be returned.
//
// req, result := svc.GetBucketLocationRequest(&s3.GetBucketLocationInput{
// Bucket: aws.String(bucket),
// })
// req.Handlers.Unmarshal.PushBackNamed(NormalizeBucketLocationHandler)
// err := req.Send()
var NormalizeBucketLocationHandler = request.NamedHandler{
Name: "awssdk.s3.NormalizeBucketLocation",
Fn: func(req *request.Request) {
if req.Error != nil {
return
}
out := req.Data.(*GetBucketLocationOutput)
loc := NormalizeBucketLocation(aws.StringValue(out.LocationConstraint))
out.LocationConstraint = aws.String(loc)
},
}
// WithNormalizeBucketLocation is a request option which will update the
// GetBucketLocation's result LocationConstraint value to always be a region ID.
//
// Replaces empty string with "us-east-1", and "EU" with "eu-west-1".
//
// See http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html
// for more information on the values that can be returned.
//
// result, err := svc.GetBucketLocationWithContext(ctx,
// &s3.GetBucketLocationInput{
// Bucket: aws.String(bucket),
// },
// WithNormalizeBucketLocation,
// )
func WithNormalizeBucketLocation(r *request.Request) {
r.Handlers.Unmarshal.PushBackNamed(NormalizeBucketLocationHandler)
}
func buildGetBucketLocation(r *request.Request) {
if r.DataFilled() {
out := r.Data.(*GetBucketLocationOutput)
@ -24,7 +87,7 @@ func buildGetBucketLocation(r *request.Request) {
match := reBucketLocation.FindSubmatch(b)
if len(match) > 1 {
loc := string(match[1])
out.LocationConstraint = &loc
out.LocationConstraint = aws.String(loc)
}
}
}

672
vendor/vendor.json vendored
View File

@ -501,644 +501,644 @@
"revisionTime": "2017-01-23T00:46:44Z"
},
{
"checksumSHA1": "Km15hcxupg+Fejy1CmPMv1b1Qew=",
"checksumSHA1": "G3L0lqSYuYeQGVeQ+QpfKvf64Bw=",
"path": "github.com/aws/aws-sdk-go",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "jhBCqnseVTWZiSOXrAXWjSmuIOM=",
"checksumSHA1": "68ggvigBSHFisqSysgCZrp493Is=",
"path": "github.com/aws/aws-sdk-go/aws",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Y9W+4GimK4Fuxq+vyIskVYFRnX4=",
"path": "github.com/aws/aws-sdk-go/aws/awserr",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "yyYr41HZ1Aq0hWc3J5ijXwYEcac=",
"path": "github.com/aws/aws-sdk-go/aws/awsutil",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "iA8gPEZQ0g2lMwf8gfjOVqUiYc4=",
"checksumSHA1": "lSxSARUjHuYCz1/axwEuQ7IiGxk=",
"path": "github.com/aws/aws-sdk-go/aws/client",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "ieAJ+Cvp/PKv1LpUEnUXpc3OI6E=",
"path": "github.com/aws/aws-sdk-go/aws/client/metadata",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "0Gfk83qXYimO87ZoK1lL9+ifWHo=",
"checksumSHA1": "uPsFA3K/51L3fy0FgMCoSGsiAoc=",
"path": "github.com/aws/aws-sdk-go/aws/corehandlers",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "WKv1OkJtlhIHUjes6bB3QoWOA7o=",
"path": "github.com/aws/aws-sdk-go/aws/credentials",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "u3GOAJLmdvbuNUeUEcZSEAOeL/0=",
"path": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "NUJUTWlc1sV8b7WjfiYc4JZbXl0=",
"path": "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "6cj/zsRmcxkE1TLS+v910GbQYg0=",
"path": "github.com/aws/aws-sdk-go/aws/credentials/stscreds",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "k4IMA27NIDHgZgvBxrKyJy16Y20=",
"path": "github.com/aws/aws-sdk-go/aws/defaults",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "/EXbk/z2TWjWc1Hvb4QYs3Wmhb8=",
"path": "github.com/aws/aws-sdk-go/aws/ec2metadata",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "+yCOae0vRONrO27QiITkGWblOKk=",
"checksumSHA1": "WQ9XoTQbcKnmtubEjZY5DmHV2RE=",
"path": "github.com/aws/aws-sdk-go/aws/endpoints",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "uqNleRWfPXWHwX7ROArYyOuIp0w=",
"checksumSHA1": "ThH5/ZhFCYrRxdRuot3FHUhyH9Y=",
"path": "github.com/aws/aws-sdk-go/aws/request",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "24VtK/Hym9lC8LkZlGLMdFGq+5o=",
"path": "github.com/aws/aws-sdk-go/aws/session",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "SvIsunO8D9MEKbetMENA4WRnyeE=",
"path": "github.com/aws/aws-sdk-go/aws/signer/v4",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "wk7EyvDaHwb5qqoOP/4d3cV0708=",
"path": "github.com/aws/aws-sdk-go/private/protocol",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "1QmQ3FqV37w0Zi44qv8pA1GeR0A=",
"path": "github.com/aws/aws-sdk-go/private/protocol/ec2query",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "O6hcK24yI6w7FA+g4Pbr+eQ7pys=",
"path": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "R00RL5jJXRYq1iiK1+PGvMfvXyM=",
"path": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "ZqY5RWavBLWTo6j9xqdyBEaNFRk=",
"path": "github.com/aws/aws-sdk-go/private/protocol/query",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Drt1JfLMa0DQEZLWrnMlTWaIcC8=",
"path": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "VCTh+dEaqqhog5ncy/WTt9+/gFM=",
"path": "github.com/aws/aws-sdk-go/private/protocol/rest",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Rpu8KBtHZgvhkwHxUfaky+qW+G4=",
"path": "github.com/aws/aws-sdk-go/private/protocol/restjson",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "ODo+ko8D6unAxZuN1jGzMcN4QCc=",
"path": "github.com/aws/aws-sdk-go/private/protocol/restxml",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "lZ1z4xAbT8euCzKoAsnEYic60VE=",
"checksumSHA1": "gVjv1Z16iQ5ZB/LSkB58ppRqP+8=",
"path": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "F6mth+G7dXN1GI+nktaGo8Lx8aE=",
"path": "github.com/aws/aws-sdk-go/private/signer/v2",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "ZmojxECvjM6BeI752BPyZAmOhlo=",
"path": "github.com/aws/aws-sdk-go/service/acm",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "PZpt6OZ+8tE7sPXLSVFZpyKbNOA=",
"checksumSHA1": "8aJdOLtEQYPwZFNF003s8BkZvKI=",
"path": "github.com/aws/aws-sdk-go/service/apigateway",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "3ykAVetHFs9T3YivIPvRyiNFdys=",
"path": "github.com/aws/aws-sdk-go/service/applicationautoscaling",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "/d8U22aF2+qYhWYscPzClHTDCP4=",
"path": "github.com/aws/aws-sdk-go/service/autoscaling",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "n6v4S6jPpkHsS59Oj1EZPQIdRNg=",
"path": "github.com/aws/aws-sdk-go/service/cloudformation",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "QLEaEFA3V4n+ohwENEoWV+AXBj4=",
"path": "github.com/aws/aws-sdk-go/service/cloudfront",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Vh3PtQEwIUabpoE7PsCZItUZuVc=",
"path": "github.com/aws/aws-sdk-go/service/cloudtrail",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "aGx2atOHEXSowjXUQ3UoJ/t2LSI=",
"path": "github.com/aws/aws-sdk-go/service/cloudwatch",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Ez3+aU0QGRe4isLDFQuHNRyF3zA=",
"path": "github.com/aws/aws-sdk-go/service/cloudwatchevents",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "+AjVMO3KUY7Wkh0vHRnJqRG8kGc=",
"path": "github.com/aws/aws-sdk-go/service/cloudwatchlogs",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "uTt6pA8eB+udA7tC8ElLbr2eeK4=",
"path": "github.com/aws/aws-sdk-go/service/codebuild",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "sqppuUIMPMBOnTRVR4BhHAoaTrY=",
"path": "github.com/aws/aws-sdk-go/service/codecommit",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "u6cK2krOuDqi8gy5V316FvH34t0=",
"path": "github.com/aws/aws-sdk-go/service/codedeploy",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "fK7MOfX/cV2DJ176+umySuuYh2s=",
"path": "github.com/aws/aws-sdk-go/service/codepipeline",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "L8F5aJdwCvoNwrP6prtHSdklijM=",
"path": "github.com/aws/aws-sdk-go/service/cognitoidentity",
"revision": "d643bdf04f2cc6f95424f9f4e69037a563fc0736",
"revisionTime": "2017-04-06T18:01:00Z",
"version": "=v1.8.10",
"versionExact": "v1.8.10"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "gSm1lj0J4klQMw7jHE0fU/RV+4Y=",
"path": "github.com/aws/aws-sdk-go/service/configservice",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "SP6m/hn+Hj72wkgaAZ8NM/7s/18=",
"path": "github.com/aws/aws-sdk-go/service/databasemigrationservice",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "2Su2xzCbUPbCdVkyWuXcmxAI2Rs=",
"path": "github.com/aws/aws-sdk-go/service/directoryservice",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Y4Wg7dxPIU3W1dqN3vnpSLA1ChQ=",
"path": "github.com/aws/aws-sdk-go/service/dynamodb",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "2PIG7uhrvvDAjiNZINBVCgW/Uds=",
"checksumSHA1": "y/5vqS7mSsK4XJkOoPBz7VvMXo8=",
"path": "github.com/aws/aws-sdk-go/service/ec2",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "ClGPl4TLpf457zUeOEWyTvqBRjc=",
"path": "github.com/aws/aws-sdk-go/service/ecr",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "c6KWQtc1bRCFs/IuIe/jgZXalBw=",
"path": "github.com/aws/aws-sdk-go/service/ecs",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "4mBZS9FSCW73hcjj0CikPqpikag=",
"path": "github.com/aws/aws-sdk-go/service/efs",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "P7GrpZV3eYQASV8Z+DeFuo9zbm4=",
"path": "github.com/aws/aws-sdk-go/service/elasticache",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "DXs9Zpa2Db2adBjDi/EyFp6913E=",
"path": "github.com/aws/aws-sdk-go/service/elasticbeanstalk",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "dv1QkeLjDyUlMQkbnLjm6l0mJHo=",
"path": "github.com/aws/aws-sdk-go/service/elasticsearchservice",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "ir6xGAYAwIdWKgk7BVHNQWvlA/g=",
"path": "github.com/aws/aws-sdk-go/service/elastictranscoder",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "sdFllfq+lllwyk0yMFmWzg+qs9Y=",
"path": "github.com/aws/aws-sdk-go/service/elb",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "oJQzYnuAHAhKAtAuinSPEeDsXoU=",
"checksumSHA1": "ctX2iDPvGn6pEClNoSQuBG9SnHw=",
"path": "github.com/aws/aws-sdk-go/service/elbv2",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "tLfj5mQiTOOhWdeU6hL5PYRAEP0=",
"path": "github.com/aws/aws-sdk-go/service/emr",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Yy7CkVZR1/vrcdMPWJmQMC2i5hk=",
"path": "github.com/aws/aws-sdk-go/service/firehose",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "tuoOAm2gCN2txnIq1jKbCHqeQQM=",
"path": "github.com/aws/aws-sdk-go/service/glacier",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "NoG5QpuGo3iLNk6DwwWsDCogfGY=",
"checksumSHA1": "qXkqj6yFLHLALSzgBrbvLIBPGDA=",
"path": "github.com/aws/aws-sdk-go/service/iam",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "5ElupFtEcDvKa1yXTh6nR9HijMU=",
"path": "github.com/aws/aws-sdk-go/service/inspector",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "Yzxk0tkTh2D9JP5I8gspLQLKu0U=",
"checksumSHA1": "mPiLIr/qcAhucTlT6KpWaXkkkbI=",
"path": "github.com/aws/aws-sdk-go/service/kinesis",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "zeEh/FDxM81fU3X2ftWU2Z++iQg=",
"checksumSHA1": "cKNVED9npmrzs+4+i39c2bey3b8=",
"path": "github.com/aws/aws-sdk-go/service/kms",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "H25POIGzyemmnJ+06HoAziXxW4I=",
"checksumSHA1": "plYDyL47QBcXLkztouyTzfRBfgw=",
"path": "github.com/aws/aws-sdk-go/service/lambda",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "GFXjkh1wWzohbefi1k0N+zbkmU4=",
"path": "github.com/aws/aws-sdk-go/service/lightsail",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "SqXsYVwBsvHwXRd2VAb5Us9F6Vw=",
"path": "github.com/aws/aws-sdk-go/service/opsworks",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "5Br7nJBgOm6y67Z95CGZtOaxlFY=",
"path": "github.com/aws/aws-sdk-go/service/rds",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "TIYqqHM4J5j5tWZR+FLpRpQzz7A=",
"path": "github.com/aws/aws-sdk-go/service/redshift",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "e/lUvi2TAO9hms6HOzpX61exefw=",
"checksumSHA1": "u6KIk/dDTwHRqz2x8EFiaa4gUfY=",
"path": "github.com/aws/aws-sdk-go/service/route53",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "o7qpn0kxj43Ej/RwfCb9JbzfbfQ=",
"checksumSHA1": "gYdNJoRTGvblAO/A88lYgiYFmsI=",
"path": "github.com/aws/aws-sdk-go/service/s3",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "/2UKYWNc/LRv+M/LQRpJqukcXzc=",
"path": "github.com/aws/aws-sdk-go/service/ses",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "eUrUJOZg3sQHWyYKPRPO9OeN+a4=",
"path": "github.com/aws/aws-sdk-go/service/sfn",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "CVWvzoJ3YBvEI8TdQWlqUxOt9lk=",
"path": "github.com/aws/aws-sdk-go/service/simpledb",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "bJ8g3OhBAkxM+QaFrQCD0L0eWY8=",
"path": "github.com/aws/aws-sdk-go/service/sns",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "jzKBnso2Psx3CyS+0VR1BzvuccU=",
"path": "github.com/aws/aws-sdk-go/service/sqs",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "GPD+dDmDtseJFG8lB8aU58aszDg=",
"path": "github.com/aws/aws-sdk-go/service/ssm",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "SdsHiTUR9eRarThv/i7y6/rVyF4=",
"path": "github.com/aws/aws-sdk-go/service/sts",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "w3+CyiPRk1WUFFmueIRZkgQuHH0=",
"path": "github.com/aws/aws-sdk-go/service/waf",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "QgNbH3Mxe4jiu3IN+vPAnz/IWbw=",
"path": "github.com/aws/aws-sdk-go/service/wafregional",
"revision": "4bbd6fa3fdede4c68e941248f974b8951c17de89",
"revisionTime": "2017-04-18T18:52:59Z",
"version": "v1.8.13",
"versionExact": "v1.8.13"
"revision": "f6ea558f30e0a983d529b32c741e4caed17c7df0",
"revisionTime": "2017-04-21T18:17:16Z",
"version": "v1.8.16",
"versionExact": "v1.8.16"
},
{
"checksumSHA1": "nqw2Qn5xUklssHTubS5HDvEL9L4=",