provider/aws: Bump AWS SDK to 1.6.3 (#10757)

This commit is contained in:
Paul Stack 2016-12-15 15:18:11 +00:00 committed by GitHub
parent 19c370506e
commit b215e7e9e6
19 changed files with 1162 additions and 425 deletions

View File

@ -1,3 +1,34 @@
Release v1.6.3 (2016-12-14)
===
Service Client Updates
---
* `service/batch`: Adds new service
* AWS Batch is a batch computing service that lets customers define queues and compute environments and then submit work as batch jobs.
* `service/databasemigrationservice`: Updates service API and documentation
* Adds support for SSL enabled Oracle endpoints and task modification.
* `service/elasticbeanstalk`: Updates service documentation
* `aws/endpoints`: Updated Regions and Endpoints metadata.
* `service/cloudwatchlogs`: Updates service API and documentation
* Add support for associating LogGroups with AWSTagris tags
* `service/marketplacecommerceanalytics`: Updates service API and documentation
* Add new enum to DataSetType: sales_compensation_billed_revenue
* `service/rds`: Updates service documentation
* Doc-only Update for RDS: New versions available in CreateDBInstance
* `service/sts`: Updates service documentation
* Adding Code Snippet Examples for SDKs for STS
SDK Bug Fixes
---
* `aws/request`: Fix retrying timeout requests (#981)
* Fixes: Requests Retrying is broken if the error was caused due to a client timeout #947
* `aws/request`: Fix for Go 1.8 request incorrectly sent with body (#991)
* Fixes: service/route53: ListHostedZones hangs and then fails with go1.8 #984
* private/protocol/rest: Use RawPath instead of Opaque (#993)
* Fixes: HTTP2 request failing with REST protocol services, e.g AWS X-Ray
* private/model/api: Generate REST-JSON JSONVersion correctly (#998)
* Fixes: REST-JSON protocol service code missing JSONVersion metadata.
Release v1.6.2 (2016-12-08)
===

View File

@ -70,14 +70,7 @@ smoke-tests: get-deps-tests
performance: get-deps-tests
AWS_TESTING_LOG_RESULTS=${log-detailed} AWS_TESTING_REGION=$(region) AWS_TESTING_DB_TABLE=$(table) gucumber -go-tags "integration" ./awstesting/performance
sandbox-tests: sandbox-test-go14 sandbox-test-go15 sandbox-test-go15-novendorexp sandbox-test-go16 sandbox-test-go17 sandbox-test-go18 sandbox-test-gotip
sandbox-build-go14:
docker build -f ./awstesting/sandbox/Dockerfile.test.go1.4 -t "aws-sdk-go-1.4" .
sandbox-go14: sandbox-build-go14
docker run -i -t aws-sdk-go-1.4 bash
sandbox-test-go14: sandbox-build-go14
docker run -t aws-sdk-go-1.4
sandbox-tests: sandbox-test-go15 sandbox-test-go15-novendorexp sandbox-test-go16 sandbox-test-go17 sandbox-test-go18 sandbox-test-gotip
sandbox-build-go15:
docker build -f ./awstesting/sandbox/Dockerfile.test.go1.5 -t "aws-sdk-go-1.5" .

View File

@ -23,6 +23,7 @@ const (
CaCentral1RegionID = "ca-central-1" // Canada (Central).
EuCentral1RegionID = "eu-central-1" // EU (Frankfurt).
EuWest1RegionID = "eu-west-1" // EU (Ireland).
EuWest2RegionID = "eu-west-2" // EU (London).
SaEast1RegionID = "sa-east-1" // South America (Sao Paulo).
UsEast1RegionID = "us-east-1" // US East (N. Virginia).
UsEast2RegionID = "us-east-2" // US East (Ohio).
@ -198,6 +199,9 @@ var awsPartition = partition{
"eu-west-1": region{
Description: "EU (Ireland)",
},
"eu-west-2": region{
Description: "EU (London)",
},
"sa-east-1": region{
Description: "South America (Sao Paulo)",
},
@ -226,6 +230,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -265,6 +270,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -306,6 +312,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -337,6 +344,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -399,6 +407,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -434,6 +443,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -444,10 +454,12 @@ var awsPartition = partition{
"codepipeline": service{
Endpoints: endpoints{
"ap-northeast-1": endpoint{},
"ap-southeast-1": endpoint{},
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-2": endpoint{},
@ -497,6 +509,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -531,6 +544,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -555,6 +569,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -587,6 +602,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"local": endpoint{
Hostname: "localhost:8000",
Protocols: []string{"http"},
@ -614,6 +630,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -641,6 +658,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@ -656,6 +674,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@ -673,6 +692,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -691,6 +711,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -720,6 +741,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -743,6 +765,7 @@ var awsPartition = partition{
SSLCommonName: "{service}.{region}.{dnsSuffix}",
},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{
SSLCommonName: "{service}.{region}.{dnsSuffix}",
@ -841,6 +864,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@ -921,6 +945,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -947,6 +972,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -986,6 +1012,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1032,6 +1059,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1049,6 +1077,7 @@ var awsPartition = partition{
"ap-southeast-2": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1094,6 +1123,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{
SSLCommonName: "{service}.{dnsSuffix}",
@ -1114,6 +1144,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1179,6 +1210,7 @@ var awsPartition = partition{
Hostname: "s3-eu-west-1.amazonaws.com",
SignatureVersions: []string{"s3", "s3v4"},
},
"eu-west-2": endpoint{},
"s3-external-1": endpoint{
Hostname: "s3-external-1.amazonaws.com",
SignatureVersions: []string{"s3", "s3v4"},
@ -1262,6 +1294,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
"us-west-1": endpoint{},
@ -1281,6 +1314,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1302,6 +1336,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{
SSLCommonName: "queue.{dnsSuffix}",
@ -1346,6 +1381,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1369,6 +1405,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"local": endpoint{
Hostname: "localhost:8000",
Protocols: []string{"http"},
@ -1406,6 +1443,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},
@ -1430,6 +1468,7 @@ var awsPartition = partition{
"ca-central-1": endpoint{},
"eu-central-1": endpoint{},
"eu-west-1": endpoint{},
"eu-west-2": endpoint{},
"sa-east-1": endpoint{},
"us-east-1": endpoint{},
"us-east-2": endpoint{},

View File

@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"io"
"net"
"net/http"
"net/url"
"reflect"
@ -245,7 +246,82 @@ func (r *Request) ResetBody() {
}
r.safeBody = newOffsetReader(r.Body, r.BodyStart)
r.HTTPRequest.Body = r.safeBody
// Go 1.8 tightened and clarified the rules code needs to use when building
// requests with the http package. Go 1.8 removed the automatic detection
// of if the Request.Body was empty, or actually had bytes in it. The SDK
// always sets the Request.Body even if it is empty and should not actually
// be sent. This is incorrect.
//
// Go 1.8 did add a http.NoBody value that the SDK can use to tell the http
// client that the request really should be sent without a body. The
// Request.Body cannot be set to nil, which is preferable, because the
// field is exported and could introduce nil pointer dereferences for users
// of the SDK if they used that field.
//
// Related golang/go#18257
l, err := computeBodyLength(r.Body)
if err != nil {
r.Error = awserr.New("SerializationError", "failed to compute request body size", err)
return
}
if l == 0 {
r.HTTPRequest.Body = noBodyReader
} else if l > 0 {
r.HTTPRequest.Body = r.safeBody
} else {
// Hack to prevent sending bodies for methods where the body
// should be ignored by the server. Sending bodies on these
// methods without an associated ContentLength will cause the
// request to socket timeout because the server does not handle
// Transfer-Encoding: chunked bodies for these methods.
//
// This would only happen if a aws.ReaderSeekerCloser was used with
// a io.Reader that was not also an io.Seeker.
switch r.Operation.HTTPMethod {
case "GET", "HEAD", "DELETE":
r.HTTPRequest.Body = noBodyReader
default:
r.HTTPRequest.Body = r.safeBody
}
}
}
// Attempts to compute the length of the body of the reader using the
// io.Seeker interface. If the value is not seekable because of being
// a ReaderSeekerCloser without an unerlying Seeker -1 will be returned.
// If no error occurs the length of the body will be returned.
func computeBodyLength(r io.ReadSeeker) (int64, error) {
seekable := true
// Determine if the seeker is actually seekable. ReaderSeekerCloser
// hides the fact that a io.Readers might not actually be seekable.
switch v := r.(type) {
case aws.ReaderSeekerCloser:
seekable = v.IsSeeker()
case *aws.ReaderSeekerCloser:
seekable = v.IsSeeker()
}
if !seekable {
return -1, nil
}
curOffset, err := r.Seek(0, 1)
if err != nil {
return 0, err
}
endOffset, err := r.Seek(0, 2)
if err != nil {
return 0, err
}
_, err = r.Seek(curOffset, 0)
if err != nil {
return 0, err
}
return endOffset - curOffset, nil
}
// GetBody will return an io.ReadSeeker of the Request's underlying
@ -297,7 +373,7 @@ func (r *Request) Send() error {
r.Handlers.Send.Run(r)
if r.Error != nil {
if strings.Contains(r.Error.Error(), "net/http: request canceled") {
if !shouldRetryCancel(r) {
return r.Error
}
@ -364,3 +440,26 @@ func AddToUserAgent(r *Request, s string) {
}
r.HTTPRequest.Header.Set("User-Agent", s)
}
func shouldRetryCancel(r *Request) bool {
awsErr, ok := r.Error.(awserr.Error)
timeoutErr := false
errStr := r.Error.Error()
if ok {
err := awsErr.OrigErr()
netErr, netOK := err.(net.Error)
timeoutErr = netOK && netErr.Temporary()
if urlErr, ok := err.(*url.Error); !timeoutErr && ok {
errStr = urlErr.Err.Error()
}
}
// There can be two types of canceled errors here.
// The first being a net.Error and the other being an error.
// If the request was timed out, we want to continue the retry
// process. Otherwise, return the canceled error.
return timeoutErr ||
(errStr != "net/http: request canceled" &&
errStr != "net/http: request canceled while waiting for connection")
}

View File

@ -0,0 +1,21 @@
// +build !go1.8
package request
import "io"
// NoBody is an io.ReadCloser with no bytes. Read always returns EOF
// and Close always returns nil. It can be used in an outgoing client
// request to explicitly signal that a request has zero bytes.
// An alternative, however, is to simply set Request.Body to nil.
//
// Copy of Go 1.8 NoBody type from net/http/http.go
type noBody struct{}
func (noBody) Read([]byte) (int, error) { return 0, io.EOF }
func (noBody) Close() error { return nil }
func (noBody) WriteTo(io.Writer) (int64, error) { return 0, nil }
// Is an empty reader that will trigger the Go HTTP client to not include
// and body in the HTTP request.
var noBodyReader = noBody{}

View File

@ -0,0 +1,9 @@
// +build go1.8
package request
import "net/http"
// Is a http.NoBody reader instructing Go HTTP client to not include
// and body in the HTTP request.
var noBodyReader = http.NoBody

View File

@ -1,24 +0,0 @@
// +build !go1.5
package v4
import (
"net/url"
"strings"
)
func getURIPath(u *url.URL) string {
var uri string
if len(u.Opaque) > 0 {
uri = "/" + strings.Join(strings.Split(u.Opaque, "/")[3:], "/")
} else {
uri = u.Path
}
if len(uri) == 0 {
uri = "/"
}
return uri
}

View File

@ -42,6 +42,14 @@
// the URL.Opaque or URL.RawPath. The SDK will use URL.Opaque first and then
// call URL.EscapedPath() if Opaque is not set.
//
// If signing a request intended for HTTP2 server, and you're using Go 1.6.2
// through 1.7.4 you should use the URL.RawPath as the pre-escaped form of the
// request URL. https://github.com/golang/go/issues/16847 points to a bug in
// Go pre 1.8 that failes to make HTTP2 requests using absolute URL in the HTTP
// message. URL.Opaque generally will force Go to make requests with absolute URL.
// URL.RawPath does not do this, but RawPath must be a valid escaping of Path
// or url.EscapedPath will ignore the RawPath escaping.
//
// Test `TestStandaloneSign` provides a complete example of using the signer
// outside of the SDK and pre-escaping the URI path.
package v4
@ -171,6 +179,16 @@ type Signer struct {
// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
DisableURIPathEscaping bool
// Disales the automatical setting of the HTTP request's Body field with the
// io.ReadSeeker passed in to the signer. This is useful if you're using a
// custom wrapper around the body for the io.ReadSeeker and want to preserve
// the Body value on the Request.Body.
//
// This does run the risk of signing a request with a body that will not be
// sent in the request. Need to ensure that the underlying data of the Body
// values are the same.
DisableRequestBodyOverwrite bool
// currentTimeFn returns the time value which represents the current time.
// This value should only be used for testing. If it is nil the default
// time.Now will be used.
@ -321,7 +339,7 @@ func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, service, regi
// If the request is not presigned the body should be attached to it. This
// prevents the confusion of wanting to send a signed request without
// the body the request was signed for attached.
if !ctx.isPresign {
if !(v4.DisableRequestBodyOverwrite || ctx.isPresign) {
var reader io.ReadCloser
if body != nil {
var ok bool
@ -416,6 +434,10 @@ func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time
// S3 service should not have any escaping applied
v4.DisableURIPathEscaping = true
}
// Prevents setting the HTTPRequest's Body. Since the Body could be
// wrapped in a custom io.Closer that we do not want to be stompped
// on top of by the signer.
v4.DisableRequestBodyOverwrite = true
})
signingTime := req.Time

View File

@ -5,7 +5,13 @@ import (
"sync"
)
// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser
// ReadSeekCloser wraps a io.Reader returning a ReaderSeekerCloser. Should
// only be used with an io.Reader that is also an io.Seeker. Doing so may
// cause request signature errors, or request body's not sent for GET, HEAD
// and DELETE HTTP methods.
//
// Deprecated: Should only be used with io.ReadSeeker. If using for
// S3 PutObject to stream content use s3manager.Uploader instead.
func ReadSeekCloser(r io.Reader) ReaderSeekerCloser {
return ReaderSeekerCloser{r}
}
@ -44,6 +50,12 @@ func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, error) {
return int64(0), nil
}
// IsSeeker returns if the underlying reader is also a seeker.
func (r ReaderSeekerCloser) IsSeeker() bool {
_, ok := r.r.(io.Seeker)
return ok
}
// Close closes the ReaderSeekerCloser.
//
// If the ReaderSeekerCloser is not an io.Closer nothing will be done.

View File

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

View File

@ -65,6 +65,11 @@ func BuildAsGET(r *request.Request) {
func buildLocationElements(r *request.Request, v reflect.Value, buildGETQuery bool) {
query := r.HTTPRequest.URL.Query()
// Setup the raw path to match the base path pattern. This is needed
// so that when the path is mutated a custom escaped version can be
// stored in RawPath that will be used by the Go client.
r.HTTPRequest.URL.RawPath = r.HTTPRequest.URL.Path
for i := 0; i < v.NumField(); i++ {
m := v.Field(i)
if n := v.Type().Field(i).Name; n[0:1] == strings.ToLower(n[0:1]) {
@ -107,7 +112,9 @@ func buildLocationElements(r *request.Request, v reflect.Value, buildGETQuery bo
}
r.HTTPRequest.URL.RawQuery = query.Encode()
updatePath(r.HTTPRequest.URL, r.HTTPRequest.URL.Path, aws.BoolValue(r.Config.DisableRestProtocolURICleaning))
if !aws.BoolValue(r.Config.DisableRestProtocolURICleaning) {
cleanPath(r.HTTPRequest.URL)
}
}
func buildBody(r *request.Request, v reflect.Value) {
@ -171,10 +178,11 @@ func buildURI(u *url.URL, v reflect.Value, name string) error {
return awserr.New("SerializationError", "failed to encode REST request", err)
}
uri := u.Path
uri = strings.Replace(uri, "{"+name+"}", EscapePath(value, true), -1)
uri = strings.Replace(uri, "{"+name+"+}", EscapePath(value, false), -1)
u.Path = uri
u.Path = strings.Replace(u.Path, "{"+name+"}", value, -1)
u.Path = strings.Replace(u.Path, "{"+name+"+}", value, -1)
u.RawPath = strings.Replace(u.RawPath, "{"+name+"}", EscapePath(value, true), -1)
u.RawPath = strings.Replace(u.RawPath, "{"+name+"+}", EscapePath(value, false), -1)
return nil
}
@ -208,27 +216,17 @@ func buildQueryString(query url.Values, v reflect.Value, name string) error {
return nil
}
func updatePath(url *url.URL, urlPath string, disableRestProtocolURICleaning bool) {
scheme, query := url.Scheme, url.RawQuery
func cleanPath(u *url.URL) {
hasSlash := strings.HasSuffix(u.Path, "/")
hasSlash := strings.HasSuffix(urlPath, "/")
// clean up path, removing duplicate `/`
u.Path = path.Clean(u.Path)
u.RawPath = path.Clean(u.RawPath)
// clean up path
if !disableRestProtocolURICleaning {
urlPath = path.Clean(urlPath)
if hasSlash && !strings.HasSuffix(u.Path, "/") {
u.Path += "/"
u.RawPath += "/"
}
if hasSlash && !strings.HasSuffix(urlPath, "/") {
urlPath += "/"
}
// get formatted URL minus scheme so we can build this into Opaque
url.Scheme, url.Path, url.RawQuery = "", "", ""
s := url.String()
url.Scheme = scheme
url.RawQuery = query
// build opaque URI
url.Opaque = s + urlPath
}
// EscapePath escapes part of a URL path in Amazon style

View File

@ -1,6 +1,7 @@
package rest
import (
"bytes"
"encoding/base64"
"fmt"
"io"
@ -11,7 +12,6 @@ import (
"strings"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request"
)
@ -70,10 +70,16 @@ func unmarshalBody(r *request.Request, v reflect.Value) {
}
default:
switch payload.Type().String() {
case "io.ReadSeeker":
payload.Set(reflect.ValueOf(aws.ReadSeekCloser(r.HTTPResponse.Body)))
case "aws.ReadSeekCloser", "io.ReadCloser":
case "io.ReadCloser":
payload.Set(reflect.ValueOf(r.HTTPResponse.Body))
case "io.ReadSeeker":
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
if err != nil {
r.Error = awserr.New("SerializationError",
"failed to read response body", err)
return
}
payload.Set(reflect.ValueOf(ioutil.NopCloser(bytes.NewReader(b))))
default:
io.Copy(ioutil.Discard, r.HTTPResponse.Body)
defer r.HTTPResponse.Body.Close()

View File

@ -1235,7 +1235,7 @@ func (c *CloudWatchLogs) DescribeMetricFiltersRequest(input *DescribeMetricFilte
// DescribeMetricFilters API operation for Amazon CloudWatch Logs.
//
// Lists the specified metric filters. You can list all the metric filters or
// filter the results by log name, prefix, metric name, or metric namespace.
// filter the results by log name, prefix, metric name, and metric namespace.
// The results are ASCII-sorted by filter name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@ -1605,6 +1605,75 @@ func (c *CloudWatchLogs) GetLogEventsPages(input *GetLogEventsInput, fn func(p *
})
}
const opListTagsLogGroup = "ListTagsLogGroup"
// ListTagsLogGroupRequest generates a "aws/request.Request" representing the
// client's request for the ListTagsLogGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See ListTagsLogGroup 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 ListTagsLogGroup 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 ListTagsLogGroupRequest method.
// req, resp := client.ListTagsLogGroupRequest(params)
//
// err := req.Send()
// if err == nil { // resp is now filled
// fmt.Println(resp)
// }
//
func (c *CloudWatchLogs) ListTagsLogGroupRequest(input *ListTagsLogGroupInput) (req *request.Request, output *ListTagsLogGroupOutput) {
op := &request.Operation{
Name: opListTagsLogGroup,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &ListTagsLogGroupInput{}
}
req = c.newRequest(op, input, output)
output = &ListTagsLogGroupOutput{}
req.Data = output
return
}
// ListTagsLogGroup API operation for Amazon CloudWatch Logs.
//
// Lists the tags for the specified log group.
//
// To add tags, use TagLogGroup. To remove tags, use UntagLogGroup.
//
// 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 CloudWatch Logs's
// API operation ListTagsLogGroup for usage and error information.
//
// Returned Error Codes:
// * ResourceNotFoundException
// The specified resource does not exist.
//
// * ServiceUnavailableException
// The service cannot complete the request.
//
func (c *CloudWatchLogs) ListTagsLogGroup(input *ListTagsLogGroupInput) (*ListTagsLogGroupOutput, error) {
req, out := c.ListTagsLogGroupRequest(input)
err := req.Send()
return out, err
}
const opPutDestination = "PutDestination"
// PutDestinationRequest generates a "aws/request.Request" representing the
@ -1824,12 +1893,13 @@ func (c *CloudWatchLogs) PutLogEventsRequest(input *PutLogEventsInput) (req *req
// retention period of the log group.
//
// * The log events in the batch must be in chronological ordered by their
// timestamp.
// timestamp (the time the event occurred, expressed as the number of milliseconds
// since Jan 1, 1970 00:00:00 UTC).
//
// * The maximum number of log events in a batch is 10,000.
//
// * A batch of log events in a single PutLogEvents request cannot span more
// than 24 hours. Otherwise, the PutLogEvents operation will fail.
// * A batch of log events in a single request cannot span more than 24 hours.
// Otherwise, the operation fails.
//
// 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
@ -2115,6 +2185,82 @@ func (c *CloudWatchLogs) PutSubscriptionFilter(input *PutSubscriptionFilterInput
return out, err
}
const opTagLogGroup = "TagLogGroup"
// TagLogGroupRequest generates a "aws/request.Request" representing the
// client's request for the TagLogGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See TagLogGroup 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 TagLogGroup 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 TagLogGroupRequest method.
// req, resp := client.TagLogGroupRequest(params)
//
// err := req.Send()
// if err == nil { // resp is now filled
// fmt.Println(resp)
// }
//
func (c *CloudWatchLogs) TagLogGroupRequest(input *TagLogGroupInput) (req *request.Request, output *TagLogGroupOutput) {
op := &request.Operation{
Name: opTagLogGroup,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &TagLogGroupInput{}
}
req = c.newRequest(op, input, output)
req.Handlers.Unmarshal.Remove(jsonrpc.UnmarshalHandler)
req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
output = &TagLogGroupOutput{}
req.Data = output
return
}
// TagLogGroup API operation for Amazon CloudWatch Logs.
//
// Adds or updates the specified tags for the specified log group.
//
// To list the tags for a log group, use ListTagsLogGroup. To remove tags, use
// UntagLogGroup.
//
// For more information about tags, see Tag Log Groups in Amazon CloudWatch
// Logs (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/log-group-tagging.html)
// in the Amazon CloudWatch Logs User Guide.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon CloudWatch Logs's
// API operation TagLogGroup for usage and error information.
//
// Returned Error Codes:
// * ResourceNotFoundException
// The specified resource does not exist.
//
// * InvalidParameterException
// A parameter is specified incorrectly.
//
func (c *CloudWatchLogs) TagLogGroup(input *TagLogGroupInput) (*TagLogGroupOutput, error) {
req, out := c.TagLogGroupRequest(input)
err := req.Send()
return out, err
}
const opTestMetricFilter = "TestMetricFilter"
// TestMetricFilterRequest generates a "aws/request.Request" representing the
@ -2184,6 +2330,75 @@ func (c *CloudWatchLogs) TestMetricFilter(input *TestMetricFilterInput) (*TestMe
return out, err
}
const opUntagLogGroup = "UntagLogGroup"
// UntagLogGroupRequest generates a "aws/request.Request" representing the
// client's request for the UntagLogGroup operation. The "output" return
// value can be used to capture response data after the request's "Send" method
// is called.
//
// See UntagLogGroup 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 UntagLogGroup 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 UntagLogGroupRequest method.
// req, resp := client.UntagLogGroupRequest(params)
//
// err := req.Send()
// if err == nil { // resp is now filled
// fmt.Println(resp)
// }
//
func (c *CloudWatchLogs) UntagLogGroupRequest(input *UntagLogGroupInput) (req *request.Request, output *UntagLogGroupOutput) {
op := &request.Operation{
Name: opUntagLogGroup,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &UntagLogGroupInput{}
}
req = c.newRequest(op, input, output)
req.Handlers.Unmarshal.Remove(jsonrpc.UnmarshalHandler)
req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
output = &UntagLogGroupOutput{}
req.Data = output
return
}
// UntagLogGroup API operation for Amazon CloudWatch Logs.
//
// Removes the specified tags from the specified log group.
//
// To list the tags for a log group, use ListTagsLogGroup. To add tags, use
// UntagLogGroup.
//
// 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 CloudWatch Logs's
// API operation UntagLogGroup for usage and error information.
//
// Returned Error Codes:
// * ResourceNotFoundException
// The specified resource does not exist.
//
func (c *CloudWatchLogs) UntagLogGroup(input *UntagLogGroupInput) (*UntagLogGroupOutput, error) {
req, out := c.UntagLogGroupRequest(input)
err := req.Send()
return out, err
}
type CancelExportTaskInput struct {
_ struct{} `type:"structure"`
@ -2395,6 +2610,9 @@ type CreateLogGroupInput struct {
//
// LogGroupName is a required field
LogGroupName *string `locationName:"logGroupName" min:"1" type:"string" required:"true"`
// The key-value pairs to use for the tags.
Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}
// String returns the string representation
@ -2416,6 +2634,9 @@ func (s *CreateLogGroupInput) Validate() error {
if s.LogGroupName != nil && len(*s.LogGroupName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("LogGroupName", 1))
}
if s.Tags != nil && len(s.Tags) < 1 {
invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
@ -2429,6 +2650,12 @@ func (s *CreateLogGroupInput) SetLogGroupName(v string) *CreateLogGroupInput {
return s
}
// SetTags sets the Tags field's value.
func (s *CreateLogGroupInput) SetTags(v map[string]*string) *CreateLogGroupInput {
s.Tags = v
return s
}
type CreateLogGroupOutput struct {
_ struct{} `type:"structure"`
}
@ -3652,7 +3879,8 @@ type ExportTask struct {
// Execution info about the export task.
ExecutionInfo *ExportTaskExecutionInfo `locationName:"executionInfo" type:"structure"`
// The start time. Events with a timestamp prior to this time are not exported.
// The start time, expressed as the number of milliseconds since Jan 1, 1970
// 00:00:00 UTC. Events with a timestamp prior to this time are not exported.
From *int64 `locationName:"from" type:"long"`
// The name of the log group from which logs data was exported.
@ -3667,7 +3895,8 @@ type ExportTask struct {
// The name of the export task.
TaskName *string `locationName:"taskName" min:"1" type:"string"`
// The end time. Events with a timestamp later than this time are not exported.
// The end time, expressed as the number of milliseconds since Jan 1, 1970 00:00:00
// UTC. Events with a timestamp later than this time are not exported.
To *int64 `locationName:"to" type:"long"`
}
@ -3804,7 +4033,8 @@ func (s *ExportTaskStatus) SetMessage(v string) *ExportTaskStatus {
type FilterLogEventsInput struct {
_ struct{} `type:"structure"`
// The end of the time range. Events with a timestamp later than this time are
// The end of the time range, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC. Events with a timestamp later than this time are
// not returned.
EndTime *int64 `locationName:"endTime" type:"long"`
@ -3833,7 +4063,8 @@ type FilterLogEventsInput struct {
// from a previous call.)
NextToken *string `locationName:"nextToken" min:"1" type:"string"`
// The start of the time range. Events with a timestamp prior to this time are
// The start of the time range, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC. Events with a timestamp prior to this time are
// not returned.
StartTime *int64 `locationName:"startTime" type:"long"`
}
@ -3980,7 +4211,8 @@ type FilteredLogEvent struct {
// The data contained in the log event.
Message *string `locationName:"message" min:"1" type:"string"`
// The time the event occurred.
// The time the event occurred, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC.
Timestamp *int64 `locationName:"timestamp" type:"long"`
}
@ -4027,7 +4259,8 @@ func (s *FilteredLogEvent) SetTimestamp(v int64) *FilteredLogEvent {
type GetLogEventsInput struct {
_ struct{} `type:"structure"`
// The end of the time range. Events with a timestamp later than this time are
// The end of the time range, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC. Events with a timestamp later than this time are
// not included.
EndTime *int64 `locationName:"endTime" type:"long"`
@ -4055,7 +4288,8 @@ type GetLogEventsInput struct {
// is false.
StartFromHead *bool `locationName:"startFromHead" type:"boolean"`
// The start of the time range. Events with a timestamp earlier than this time
// The start of the time range, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC. Events with a timestamp earlier than this time
// are not included.
StartTime *int64 `locationName:"startTime" type:"long"`
}
@ -4193,7 +4427,8 @@ type InputLogEvent struct {
// Message is a required field
Message *string `locationName:"message" min:"1" type:"string" required:"true"`
// The time the event occurred.
// The time the event occurred, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC.
//
// Timestamp is a required field
Timestamp *int64 `locationName:"timestamp" type:"long" required:"true"`
@ -4240,6 +4475,70 @@ func (s *InputLogEvent) SetTimestamp(v int64) *InputLogEvent {
return s
}
type ListTagsLogGroupInput struct {
_ struct{} `type:"structure"`
// The name of the log group.
//
// LogGroupName is a required field
LogGroupName *string `locationName:"logGroupName" min:"1" type:"string" required:"true"`
}
// String returns the string representation
func (s ListTagsLogGroupInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s ListTagsLogGroupInput) GoString() string {
return s.String()
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTagsLogGroupInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "ListTagsLogGroupInput"}
if s.LogGroupName == nil {
invalidParams.Add(request.NewErrParamRequired("LogGroupName"))
}
if s.LogGroupName != nil && len(*s.LogGroupName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("LogGroupName", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// SetLogGroupName sets the LogGroupName field's value.
func (s *ListTagsLogGroupInput) SetLogGroupName(v string) *ListTagsLogGroupInput {
s.LogGroupName = &v
return s
}
type ListTagsLogGroupOutput struct {
_ struct{} `type:"structure"`
// The tags.
Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
}
// String returns the string representation
func (s ListTagsLogGroupOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s ListTagsLogGroupOutput) GoString() string {
return s.String()
}
// SetTags sets the Tags field's value.
func (s *ListTagsLogGroupOutput) SetTags(v map[string]*string) *ListTagsLogGroupOutput {
s.Tags = v
return s
}
// Represents a log group.
type LogGroup struct {
_ struct{} `type:"structure"`
@ -4322,10 +4621,12 @@ type LogStream struct {
// The creation time of the stream.
CreationTime *int64 `locationName:"creationTime" type:"long"`
// The time of the first event.
// The time of the first event, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC.
FirstEventTimestamp *int64 `locationName:"firstEventTimestamp" type:"long"`
// The time of the last event.
// The time of the last event, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC.
LastEventTimestamp *int64 `locationName:"lastEventTimestamp" type:"long"`
// The ingestion time.
@ -4595,7 +4896,8 @@ type OutputLogEvent struct {
// The data contained in the log event.
Message *string `locationName:"message" min:"1" type:"string"`
// The time the event occurred.
// The time the event occurred, expressed as the number of milliseconds since
// Jan 1, 1970 00:00:00 UTC.
Timestamp *int64 `locationName:"timestamp" type:"long"`
}
@ -5133,6 +5435,11 @@ type PutSubscriptionFilterInput struct {
// DestinationArn is a required field
DestinationArn *string `locationName:"destinationArn" min:"1" type:"string" required:"true"`
// The method used to distribute log data to the destination, when the destination
// is an Amazon Kinesis stream. By default, log data is grouped by log stream.
// For a more even distribution, you can group log data randomly.
Distribution *string `locationName:"distribution" type:"string" enum:"Distribution"`
// A name for the subscription filter.
//
// FilterName is a required field
@ -5205,6 +5512,12 @@ func (s *PutSubscriptionFilterInput) SetDestinationArn(v string) *PutSubscriptio
return s
}
// SetDistribution sets the Distribution field's value.
func (s *PutSubscriptionFilterInput) SetDistribution(v string) *PutSubscriptionFilterInput {
s.Distribution = &v
return s
}
// SetFilterName sets the FilterName field's value.
func (s *PutSubscriptionFilterInput) SetFilterName(v string) *PutSubscriptionFilterInput {
s.FilterName = &v
@ -5328,6 +5641,10 @@ type SubscriptionFilter struct {
// The Amazon Resource Name (ARN) of the destination.
DestinationArn *string `locationName:"destinationArn" min:"1" type:"string"`
// The method used to distribute log data to the destination, when the destination
// is an Amazon Kinesis stream.
Distribution *string `locationName:"distribution" type:"string" enum:"Distribution"`
// The name of the subscription filter.
FilterName *string `locationName:"filterName" min:"1" type:"string"`
@ -5365,6 +5682,12 @@ func (s *SubscriptionFilter) SetDestinationArn(v string) *SubscriptionFilter {
return s
}
// SetDistribution sets the Distribution field's value.
func (s *SubscriptionFilter) SetDistribution(v string) *SubscriptionFilter {
s.Distribution = &v
return s
}
// SetFilterName sets the FilterName field's value.
func (s *SubscriptionFilter) SetFilterName(v string) *SubscriptionFilter {
s.FilterName = &v
@ -5389,6 +5712,78 @@ func (s *SubscriptionFilter) SetRoleArn(v string) *SubscriptionFilter {
return s
}
type TagLogGroupInput struct {
_ struct{} `type:"structure"`
// The name of the log group.
//
// LogGroupName is a required field
LogGroupName *string `locationName:"logGroupName" min:"1" type:"string" required:"true"`
// The key-value pairs to use for the tags.
//
// Tags is a required field
Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"`
}
// String returns the string representation
func (s TagLogGroupInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s TagLogGroupInput) GoString() string {
return s.String()
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *TagLogGroupInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "TagLogGroupInput"}
if s.LogGroupName == nil {
invalidParams.Add(request.NewErrParamRequired("LogGroupName"))
}
if s.LogGroupName != nil && len(*s.LogGroupName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("LogGroupName", 1))
}
if s.Tags == nil {
invalidParams.Add(request.NewErrParamRequired("Tags"))
}
if s.Tags != nil && len(s.Tags) < 1 {
invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// SetLogGroupName sets the LogGroupName field's value.
func (s *TagLogGroupInput) SetLogGroupName(v string) *TagLogGroupInput {
s.LogGroupName = &v
return s
}
// SetTags sets the Tags field's value.
func (s *TagLogGroupInput) SetTags(v map[string]*string) *TagLogGroupInput {
s.Tags = v
return s
}
type TagLogGroupOutput struct {
_ struct{} `type:"structure"`
}
// String returns the string representation
func (s TagLogGroupOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s TagLogGroupOutput) GoString() string {
return s.String()
}
type TestMetricFilterInput struct {
_ struct{} `type:"structure"`
@ -5470,6 +5865,86 @@ func (s *TestMetricFilterOutput) SetMatches(v []*MetricFilterMatchRecord) *TestM
return s
}
type UntagLogGroupInput struct {
_ struct{} `type:"structure"`
// The name of the log group.
//
// LogGroupName is a required field
LogGroupName *string `locationName:"logGroupName" min:"1" type:"string" required:"true"`
// The tag keys. The corresponding tags are removed from the log group.
//
// Tags is a required field
Tags []*string `locationName:"tags" min:"1" type:"list" required:"true"`
}
// String returns the string representation
func (s UntagLogGroupInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s UntagLogGroupInput) GoString() string {
return s.String()
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagLogGroupInput) Validate() error {
invalidParams := request.ErrInvalidParams{Context: "UntagLogGroupInput"}
if s.LogGroupName == nil {
invalidParams.Add(request.NewErrParamRequired("LogGroupName"))
}
if s.LogGroupName != nil && len(*s.LogGroupName) < 1 {
invalidParams.Add(request.NewErrParamMinLen("LogGroupName", 1))
}
if s.Tags == nil {
invalidParams.Add(request.NewErrParamRequired("Tags"))
}
if s.Tags != nil && len(s.Tags) < 1 {
invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// SetLogGroupName sets the LogGroupName field's value.
func (s *UntagLogGroupInput) SetLogGroupName(v string) *UntagLogGroupInput {
s.LogGroupName = &v
return s
}
// SetTags sets the Tags field's value.
func (s *UntagLogGroupInput) SetTags(v []*string) *UntagLogGroupInput {
s.Tags = v
return s
}
type UntagLogGroupOutput struct {
_ struct{} `type:"structure"`
}
// String returns the string representation
func (s UntagLogGroupOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s UntagLogGroupOutput) GoString() string {
return s.String()
}
const (
// DistributionRandom is a Distribution enum value
DistributionRandom = "Random"
// DistributionByLogStream is a Distribution enum value
DistributionByLogStream = "ByLogStream"
)
const (
// ExportTaskStatusCodeCancelled is a ExportTaskStatusCode enum value
ExportTaskStatusCodeCancelled = "CANCELLED"

View File

@ -393,7 +393,18 @@ func (c *ElasticBeanstalk) CreateApplicationVersionRequest(input *CreateApplicat
// CreateApplicationVersion API operation for AWS Elastic Beanstalk.
//
// Creates an application version for the specified application.
// Creates an application version for the specified application. You can create
// an application version from a source bundle in Amazon S3, a commit in AWS
// CodeCommit, or the output of an AWS CodeBuild build as follows:
//
// Specify a commit in an AWS CodeCommit repository with SourceBuildInformation.
//
// Specify a build in an AWS CodeBuild with SourceBuildInformation and BuildConfiguration.
//
// Specify a source bundle in S3 with SourceBundle
//
// Omit both SourceBuildInformation and SourceBundle to use the default sample
// application.
//
// Once you create an application version with a specified Amazon S3 bucket
// and key location, you cannot change that Amazon S3 location. If you change
@ -420,10 +431,16 @@ func (c *ElasticBeanstalk) CreateApplicationVersionRequest(input *CreateApplicat
//
// * S3LocationNotInServiceRegionException
// The specified S3 bucket does not belong to the S3 region in which the service
// is running.
// is running. The following regions are supported:
//
// * IAD/us-east-1
//
// * PDX/us-west-2
//
// * DUB/eu-west-1
//
// * CodeBuildNotInServiceRegionException
// The CodeBuild service is not supported in this region.
// AWS CodeBuild is not available in the specified region.
//
func (c *ElasticBeanstalk) CreateApplicationVersion(input *CreateApplicationVersionInput) (*ApplicationVersionDescriptionMessage, error) {
req, out := c.CreateApplicationVersionRequest(input)
@ -799,7 +816,13 @@ func (c *ElasticBeanstalk) DeleteApplicationVersionRequest(input *DeleteApplicat
//
// * S3LocationNotInServiceRegionException
// The specified S3 bucket does not belong to the S3 region in which the service
// is running.
// is running. The following regions are supported:
//
// * IAD/us-east-1
//
// * PDX/us-west-2
//
// * DUB/eu-west-1
//
func (c *ElasticBeanstalk) DeleteApplicationVersion(input *DeleteApplicationVersionInput) (*DeleteApplicationVersionOutput, error) {
req, out := c.DeleteApplicationVersionRequest(input)
@ -2711,6 +2734,7 @@ type ApplicationVersionDescription struct {
// The name of the application to which the application version belongs.
ApplicationName *string `min:"1" type:"string"`
// Reference to the artifact from the AWS CodeBuild build.
BuildArn *string `type:"string"`
// The creation date of the application version.
@ -2957,19 +2981,40 @@ func (s *AutoScalingGroup) SetName(v string) *AutoScalingGroup {
return s
}
// Settings for an AWS CodeBuild build.
type BuildConfiguration struct {
_ struct{} `type:"structure"`
// The name of the artifact of the CodeBuild build. If provided, Elastic Beanstalk
// stores the build artifact in the S3 location S3-bucket/resources/application-name/codebuild/codebuild-version-label-artifact-name.zip.
// If not provided, Elastic Beanstalk stores the build artifact in the S3 location
// S3-bucket/resources/application-name/codebuild/codebuild-version-label.zip.
ArtifactName *string `type:"string"`
// The Amazon Resource Name (ARN) of the AWS Identity and Access Management
// (IAM) role that enables AWS CodeBuild to interact with dependent AWS services
// on behalf of the AWS account.
//
// CodeBuildServiceRole is a required field
CodeBuildServiceRole *string `type:"string" required:"true"`
// Information about the compute resources the build project will use.
//
// * BUILD_GENERAL1_SMALL: Use up to 3 GB memory and 2 vCPUs for builds
//
// * BUILD_GENERAL1_MEDIUM: Use up to 7 GB memory and 4 vCPUs for builds
//
// * BUILD_GENERAL1_LARGE: Use up to 15 GB memory and 8 vCPUs for builds
ComputeType *string `type:"string" enum:"ComputeType"`
// The ID of the Docker image to use for this build project.
//
// Image is a required field
Image *string `type:"string" required:"true"`
// How long in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until
// timing out any related build that does not get marked as completed. The default
// is 60 minutes.
TimeoutInMinutes *int64 `type:"integer"`
}
@ -3656,6 +3701,7 @@ type CreateApplicationVersionInput struct {
// already exist.
AutoCreateApplication *bool `type:"boolean"`
// Settings for an AWS CodeBuild build.
BuildConfiguration *BuildConfiguration `type:"structure"`
// Describes this version.
@ -3668,15 +3714,13 @@ type CreateApplicationVersionInput struct {
// Specify a commit in an AWS CodeCommit Git repository to use as the source
// code for the application version.
//
// Specify a commit in an AWS CodeCommit repository or a source bundle in S3
// (with SourceBundle), but not both. If neither SourceBundle nor SourceBuildInformation
// are provided, Elastic Beanstalk uses a sample application.
SourceBuildInformation *SourceBuildInformation `type:"structure"`
// The Amazon S3 bucket and key that identify the location of the source bundle
// for this version.
//
// The Amazon S3 bucket must be in the same region as the environment.
//
// Specify a source bundle in S3 or a commit in an AWS CodeCommit repository
// (with SourceBuildInformation), but not both. If neither SourceBundle nor
// SourceBuildInformation are provided, Elastic Beanstalk uses a sample application.
@ -7421,18 +7465,32 @@ func (s *SolutionStackDescription) SetSolutionStackName(v string) *SolutionStack
type SourceBuildInformation struct {
_ struct{} `type:"structure"`
// The repository name and commit ID, separated by a forward slash. For example,
// my-repo/265cfa0cf6af46153527f55d6503ec030551f57a.
// The location of the source code, as a formatted string, depending on the
// value of SourceRepository
//
// * For CodeCommit, the format is the repository name and commit ID, separated
// by a forward slash. For example, my-git-repo/265cfa0cf6af46153527f55d6503ec030551f57a.
//
// * For S3, the format is the S3 bucket name and object key, separated by
// a forward slash. For example, my-s3-bucket/Folders/my-source-file.
//
// SourceLocation is a required field
SourceLocation *string `min:"3" type:"string" required:"true"`
// Location where the repository is stored, such as CodeCommit.
// Location where the repository is stored.
//
// * CodeCommit
//
// * S3
//
// SourceRepository is a required field
SourceRepository *string `type:"string" required:"true" enum:"SourceRepository"`
// The type of repository, such as Git.
// The type of repository.
//
// * Git
//
// * Zip
//
// SourceType is a required field
SourceType *string `type:"string" required:"true" enum:"SourceType"`

View File

@ -9428,9 +9428,12 @@ type CreateDBInstanceInput struct {
//
// Oracle 12c
//
// 12.1.0.2.v5 (supported for EE in all AWS regions, and SE2 in all AWS regions
// 12.1.0.2.v6 (supported for EE in all AWS regions, and SE2 in all AWS regions
// except us-gov-west-1)
//
// * 12.1.0.2.v5 (supported for EE in all AWS regions, and SE2 in all AWS
// regions except us-gov-west-1)
//
// * 12.1.0.2.v4 (supported for EE in all AWS regions, and SE2 in all AWS
// regions except us-gov-west-1)
//
@ -9463,6 +9466,8 @@ type CreateDBInstanceInput struct {
//
// Oracle 11g
//
// * 11.2.0.4.v10 (supported for EE, SE1, and SE, in all AWS regions)
//
// * 11.2.0.4.v9 (supported for EE, SE1, and SE, in all AWS regions)
//
// * 11.2.0.4.v8 (supported for EE, SE1, and SE, in all AWS regions)

View File

@ -25,6 +25,6 @@ func init() {
var reSanitizeURL = regexp.MustCompile(`\/%2F\w+%2F`)
func sanitizeURL(r *request.Request) {
r.HTTPRequest.URL.Opaque =
reSanitizeURL.ReplaceAllString(r.HTTPRequest.URL.Opaque, "/")
r.HTTPRequest.URL.RawPath =
reSanitizeURL.ReplaceAllString(r.HTTPRequest.URL.RawPath, "/")
}

View File

@ -5,7 +5,6 @@ import (
"io/ioutil"
"net/http"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request"
)
@ -17,8 +16,8 @@ func copyMultipartStatusOKUnmarhsalError(r *request.Request) {
return
}
body := bytes.NewReader(b)
r.HTTPResponse.Body = aws.ReadSeekCloser(body)
defer r.HTTPResponse.Body.(aws.ReaderSeekerCloser).Seek(0, 0)
r.HTTPResponse.Body = ioutil.NopCloser(body)
defer body.Seek(0, 0)
if body.Len() == 0 {
// If there is no body don't attempt to parse the body.

View File

@ -970,10 +970,9 @@ type AssumeRoleInput struct {
// External ID When Granting Access to Your AWS Resources to a Third Party (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)
// in the IAM User Guide.
//
// The format for this parameter, as described by its regex pattern, is a string
// of characters consisting of upper- and lower-case alphanumeric characters
// with no spaces. You can also include underscores or any of the following
// characters: =,.@:\/-
// The regex used to validated this parameter is a string of characters consisting
// of upper- and lower-case alphanumeric characters with no spaces. You can
// also include underscores or any of the following characters: =,.@:\/-
ExternalId *string `min:"2" type:"string"`
// An IAM policy in JSON format.
@ -1017,10 +1016,9 @@ type AssumeRoleInput struct {
// requests using the temporary security credentials will expose the role session
// name to the external account in their CloudTrail logs.
//
// The format for this parameter, as described by its regex pattern, is a string
// of characters consisting of upper- and lower-case alphanumeric characters
// with no spaces. You can also include underscores or any of the following
// characters: =,.@-
// The regex used to validate this parameter is a string of characters consisting
// of upper- and lower-case alphanumeric characters with no spaces. You can
// also include underscores or any of the following characters: =,.@-
//
// RoleSessionName is a required field
RoleSessionName *string `min:"2" type:"string" required:"true"`
@ -1031,10 +1029,9 @@ type AssumeRoleInput struct {
// The value is either the serial number for a hardware device (such as GAHT12345678)
// or an Amazon Resource Name (ARN) for a virtual device (such as arn:aws:iam::123456789012:mfa/user).
//
// The format for this parameter, as described by its regex pattern, is a string
// of characters consisting of upper- and lower-case alphanumeric characters
// with no spaces. You can also include underscores or any of the following
// characters: =,.@-
// The regex used to validate this parameter is a string of characters consisting
// of upper- and lower-case alphanumeric characters with no spaces. You can
// also include underscores or any of the following characters: =,.@-
SerialNumber *string `min:"9" type:"string"`
// The value provided by the MFA device, if the trust policy of the role being
@ -1503,10 +1500,9 @@ type AssumeRoleWithWebIdentityInput struct {
// are associated with that user. This session name is included as part of the
// ARN and assumed role ID in the AssumedRoleUser response element.
//
// The format for this parameter, as described by its regex pattern, is a string
// of characters consisting of upper- and lower-case alphanumeric characters
// with no spaces. You can also include underscores or any of the following
// characters: =,.@-
// The regex used to validate this parameter is a string of characters consisting
// of upper- and lower-case alphanumeric characters with no spaces. You can
// also include underscores or any of the following characters: =,.@-
//
// RoleSessionName is a required field
RoleSessionName *string `min:"2" type:"string" required:"true"`
@ -1983,10 +1979,9 @@ type GetFederationTokenInput struct {
// the federated user name in a resource-based policy, such as in an Amazon
// S3 bucket policy.
//
// The format for this parameter, as described by its regex pattern, is a string
// of characters consisting of upper- and lower-case alphanumeric characters
// with no spaces. You can also include underscores or any of the following
// characters: =,.@-
// The regex used to validate this parameter is a string of characters consisting
// of upper- and lower-case alphanumeric characters with no spaces. You can
// also include underscores or any of the following characters: =,.@-
//
// Name is a required field
Name *string `min:"2" type:"string" required:"true"`
@ -2146,10 +2141,9 @@ type GetSessionTokenInput struct {
// You can find the device for an IAM user by going to the AWS Management Console
// and viewing the user's security credentials.
//
// The format for this parameter, as described by its regex pattern, is a string
// of characters consisting of upper- and lower-case alphanumeric characters
// with no spaces. You can also include underscores or any of the following
// characters: =,.@-
// The regex used to validate this parameter is a string of characters consisting
// of upper- and lower-case alphanumeric characters with no spaces. You can
// also include underscores or any of the following characters: =,.@-
SerialNumber *string `min:"9" type:"string"`
// The value provided by the MFA device, if MFA is required. If any policy requires

608
vendor/vendor.json vendored
View File

@ -385,140 +385,140 @@
"revision": "4239b77079c7b5d1243b7b4736304ce8ddb6f0f2"
},
{
"checksumSHA1": "Y32T4+W6A22f/T+k5oWBu1ksZG8=",
"checksumSHA1": "nd9+foddMTPda0cIkF6765KMBcs=",
"path": "github.com/aws/aws-sdk-go",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "4xOksgb6+UlSj06NdNOOw//S4hw=",
"checksumSHA1": "ahGFj5RgC5Joefht/5p5cMhzHUA=",
"path": "github.com/aws/aws-sdk-go/aws",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Y9W+4GimK4Fuxq+vyIskVYFRnX4=",
"path": "github.com/aws/aws-sdk-go/aws/awserr",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "yyYr41HZ1Aq0hWc3J5ijXwYEcac=",
"path": "github.com/aws/aws-sdk-go/aws/awsutil",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "7cQU8tU9hBgsG23XZmko1GePqjQ=",
"path": "github.com/aws/aws-sdk-go/aws/client",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "ieAJ+Cvp/PKv1LpUEnUXpc3OI6E=",
"path": "github.com/aws/aws-sdk-go/aws/client/metadata",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Fl8vRSCY0MbM04cmiz/0MID+goA=",
"path": "github.com/aws/aws-sdk-go/aws/corehandlers",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "zu5C95rmCZff6NYZb62lEaT5ibE=",
"path": "github.com/aws/aws-sdk-go/aws/credentials",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "u3GOAJLmdvbuNUeUEcZSEAOeL/0=",
"path": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "NUJUTWlc1sV8b7WjfiYc4JZbXl0=",
"path": "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "4Ipx+5xN0gso+cENC2MHMWmQlR4=",
"path": "github.com/aws/aws-sdk-go/aws/credentials/stscreds",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "lqh3fG7wCochvB4iHAZJuhhEJW0=",
"path": "github.com/aws/aws-sdk-go/aws/defaults",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "/EXbk/z2TWjWc1Hvb4QYs3Wmhb8=",
"path": "github.com/aws/aws-sdk-go/aws/ec2metadata",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Lqo3kG7oU3dkZwQ5LPINQtrVL+s=",
"checksumSHA1": "MDLZrTWsMnIsV7QQ2/EihyUIhD4=",
"path": "github.com/aws/aws-sdk-go/aws/endpoints",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "yVSL6yhjj0Pozx4NVrWA3aguENg=",
"checksumSHA1": "FKHrq0EqTXjYx0EpqsKjg/RkPlQ=",
"path": "github.com/aws/aws-sdk-go/aws/request",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "HynfxYegMG8sq9MpFfPu7h1EOvI=",
"path": "github.com/aws/aws-sdk-go/aws/session",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "bjf3WCqht846AsRh85c8d7iLmsk=",
"checksumSHA1": "Yb1r9w4+sfvUoOilac1Z80jRCSA=",
"path": "github.com/aws/aws-sdk-go/aws/signer/v4",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Esab5F8KswqkTdB4TtjSvZgs56k=",
@ -531,450 +531,450 @@
{
"checksumSHA1": "wk7EyvDaHwb5qqoOP/4d3cV0708=",
"path": "github.com/aws/aws-sdk-go/private/protocol",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "1QmQ3FqV37w0Zi44qv8pA1GeR0A=",
"path": "github.com/aws/aws-sdk-go/private/protocol/ec2query",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "pNeF0Ey7TfBArH5LBQhKOQXQbLY=",
"path": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "R00RL5jJXRYq1iiK1+PGvMfvXyM=",
"path": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "ZqY5RWavBLWTo6j9xqdyBEaNFRk=",
"path": "github.com/aws/aws-sdk-go/private/protocol/query",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "5xzix1R8prUyWxgLnzUQoxTsfik=",
"path": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "dUpGLm7IHo6A40vuaEKwaCLbqu8=",
"checksumSHA1": "H8iGbMgbw4bn+UN+dcsDpP8koxc=",
"path": "github.com/aws/aws-sdk-go/private/protocol/rest",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Rpu8KBtHZgvhkwHxUfaky+qW+G4=",
"path": "github.com/aws/aws-sdk-go/private/protocol/restjson",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "ODo+ko8D6unAxZuN1jGzMcN4QCc=",
"path": "github.com/aws/aws-sdk-go/private/protocol/restxml",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "gEJLFS3ltnGYsfm2kXEPpxC1r0w=",
"path": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "F6mth+G7dXN1GI+nktaGo8Lx8aE=",
"path": "github.com/aws/aws-sdk-go/private/signer/v2",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Eo9yODN5U99BK0pMzoqnBm7PCrY=",
"path": "github.com/aws/aws-sdk-go/private/waiter",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "TDz2yddSHFPJc/C22iNs4878PHM=",
"path": "github.com/aws/aws-sdk-go/service/acm",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "P64s704ATrUQRxVBFZqJOAYMjjI=",
"path": "github.com/aws/aws-sdk-go/service/apigateway",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "1Pd+tSJCCgCOOfaep0R8ULeFcps=",
"path": "github.com/aws/aws-sdk-go/service/applicationautoscaling",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "YP2elni/MgVN2Y6zsYpdFTmeqhI=",
"path": "github.com/aws/aws-sdk-go/service/autoscaling",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "lCpOwC1fXad6ryDTypq0F4JtaS0=",
"path": "github.com/aws/aws-sdk-go/service/cloudformation",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Mh4SHt8v6TpcInltokbNmyrPjmM=",
"path": "github.com/aws/aws-sdk-go/service/cloudfront",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "BLNtHos7msi3UgPBabM5aGFBQLE=",
"path": "github.com/aws/aws-sdk-go/service/cloudtrail",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "WMY04nOx+iSSqUvzhhXK0VQSMyo=",
"path": "github.com/aws/aws-sdk-go/service/cloudwatch",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "ylJusOEGXzgULSm4HJxizIVv9C4=",
"path": "github.com/aws/aws-sdk-go/service/cloudwatchevents",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "+yi+erDoYK8na5KSqvmThSJAUuc=",
"checksumSHA1": "om/aeTKkJTlbcO0KF6hinM3xmgw=",
"path": "github.com/aws/aws-sdk-go/service/cloudwatchlogs",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Jng3vw4P9MUVqz9DEtpKtkE+NzY=",
"path": "github.com/aws/aws-sdk-go/service/codecommit",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "C/9H+tfWy7SYZjnKRSVpVKtuq5U=",
"path": "github.com/aws/aws-sdk-go/service/codedeploy",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "EZp2Hsz9AePGNEJj6UXTOrjgZ7E=",
"path": "github.com/aws/aws-sdk-go/service/directoryservice",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "1UC9irawr68ulnNczZ2He1hprIk=",
"path": "github.com/aws/aws-sdk-go/service/dynamodb",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "YA/T7rrQeSok3Hvq14HezMXVdgM=",
"path": "github.com/aws/aws-sdk-go/service/ec2",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "GoO3KLWKTC69nWtcLFd6I+0BviE=",
"path": "github.com/aws/aws-sdk-go/service/ecr",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "HiXiiX/5C6GA3E2/4QGIjcX9Ph0=",
"path": "github.com/aws/aws-sdk-go/service/ecs",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "rhCpeCHIb7gHMG3AzaeJ9gj90Ss=",
"path": "github.com/aws/aws-sdk-go/service/efs",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "xnolozwEtUYa0ve4MhDECFP89E0=",
"path": "github.com/aws/aws-sdk-go/service/elasticache",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "8kPGuxiLTDyU9qhpKqCGMu0uXh0=",
"checksumSHA1": "PDdjF1KoxDPp+YaLLdVqR55Up68=",
"path": "github.com/aws/aws-sdk-go/service/elasticbeanstalk",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "P/fyidKJvpLRYkQ/kPI+TwR8mho=",
"path": "github.com/aws/aws-sdk-go/service/elasticsearchservice",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "IS6CjupSEiS74a+CE4oNVPa5KCA=",
"path": "github.com/aws/aws-sdk-go/service/elastictranscoder",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "pJ3cqQyo+6DmScOAGzoN/AbBN0I=",
"path": "github.com/aws/aws-sdk-go/service/elb",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "0/6y8+qPnDY9Dt2rNSzXyZwBDZ8=",
"path": "github.com/aws/aws-sdk-go/service/elbv2",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "qF4j44Lj+8bQyN4JtFnLC/rdQQU=",
"path": "github.com/aws/aws-sdk-go/service/emr",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "V5X1oCT01nRtG9IJR7vme1uEy6M=",
"path": "github.com/aws/aws-sdk-go/service/firehose",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "0T1k3TvEF9NGsDBYstyQ0EfML5U=",
"path": "github.com/aws/aws-sdk-go/service/glacier",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "iZwFeUHpehkIRTnJW15F0U+vXy4=",
"path": "github.com/aws/aws-sdk-go/service/iam",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "YDO2aF3ENw9aAqR2S3I1cVzu5Ys=",
"path": "github.com/aws/aws-sdk-go/service/kinesis",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "CVgX/hDnfMt97xblJSD6doFKQX0=",
"path": "github.com/aws/aws-sdk-go/service/kms",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "ym8DU7gjdHNjr82Yv+B7/Ba9nak=",
"path": "github.com/aws/aws-sdk-go/service/lambda",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Jo8pWTgFDpH3UjUFH8vYuNRHliM=",
"path": "github.com/aws/aws-sdk-go/service/lightsail",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "CBDFLQpRfZtB9Symsz75x+rvX+8=",
"path": "github.com/aws/aws-sdk-go/service/opsworks",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "U1L9GpoLI0wS0A/HXsA22fq6iSE=",
"checksumSHA1": "ztQJeRw3JSTenyyGXJe/ofpg13k=",
"path": "github.com/aws/aws-sdk-go/service/rds",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "gaVND3Q/AISc7O5XpvEs6N0jBPQ=",
"path": "github.com/aws/aws-sdk-go/service/redshift",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "IUqMex8vm/eplN5SnhqEBsNvIfA=",
"checksumSHA1": "VLCTFZCbH5+lsb//FBtHpksCf+U=",
"path": "github.com/aws/aws-sdk-go/service/route53",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "u52HRY/P/tJnAPDG+PvAAaiYZvM=",
"checksumSHA1": "P4zlIUVrFx5kaMA8OZHsjgNekiM=",
"path": "github.com/aws/aws-sdk-go/service/s3",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "UB+GbtUsEGWDtBi9CRgkQr5EMJU=",
"path": "github.com/aws/aws-sdk-go/service/ses",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "lTQe5o+2c+Xsp40wjYzLtgmgRqE=",
"path": "github.com/aws/aws-sdk-go/service/simpledb",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "eLaZeCUS3hDQ+zzsFZb0CJBMKfQ=",
"path": "github.com/aws/aws-sdk-go/service/sns",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "axR50MilXNLES2LyS4JZvINO6E8=",
"path": "github.com/aws/aws-sdk-go/service/sqs",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "VJ3ESVb5RvAGkY4zPETJ3ia4v38=",
"path": "github.com/aws/aws-sdk-go/service/ssm",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "Y14Bai6CkzS0FI97MtC5XjQt8Iw=",
"checksumSHA1": "2GbOcDpIXjtkoQVOfWv7E4DAUbY=",
"path": "github.com/aws/aws-sdk-go/service/sts",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "s0hZKoL3y62JP2/3+ciUU3hhLW4=",
"path": "github.com/aws/aws-sdk-go/service/waf",
"revision": "1355b456f6ba4a8453249e0dc7743f16ccac362d",
"revisionTime": "2016-12-09T00:47:51Z",
"version": "v1.6.2",
"versionExact": "v1.6.2"
"revision": "ad048b5f9e1187bee316f6919971c0e122d701e4",
"revisionTime": "2016-12-15T00:21:09Z",
"version": "v1.6.3",
"versionExact": "v1.6.3"
},
{
"checksumSHA1": "nqw2Qn5xUklssHTubS5HDvEL9L4=",