Merge pull request #16245 from justinsb/workaround_16238

Auto commit by PR queue bot
This commit is contained in:
k8s-merge-robot 2015-10-28 23:47:14 -07:00
commit 325c3b31ca
32 changed files with 369 additions and 141 deletions

52
Godeps/Godeps.json generated
View File

@ -49,53 +49,53 @@
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/aws", "ImportPath": "github.com/aws/aws-sdk-go/aws",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/internal/endpoints", "ImportPath": "github.com/aws/aws-sdk-go/private/endpoints",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/ec2query", "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/ec2query",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/query", "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/query",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/rest", "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/rest",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil", "ImportPath": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/internal/signer/v4", "ImportPath": "github.com/aws/aws-sdk-go/private/signer/v4",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/service/autoscaling", "ImportPath": "github.com/aws/aws-sdk-go/service/autoscaling",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/service/ec2", "ImportPath": "github.com/aws/aws-sdk-go/service/ec2",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/aws/aws-sdk-go/service/elb", "ImportPath": "github.com/aws/aws-sdk-go/service/elb",
"Comment": "v0.9.9", "Comment": "v0.9.16-3-g4944a94",
"Rev": "c4ae871ffc03691a7b039fa751a1e7afee56e920" "Rev": "4944a94a3b092d1dad8a964415700a70f55e580a"
}, },
{ {
"ImportPath": "github.com/beorn7/perks/quantile", "ImportPath": "github.com/beorn7/perks/quantile",

View File

@ -7,8 +7,8 @@ import (
"github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/credentials"
) )
// The default number of retries for a service. The value of -1 indicates that // DefaultRetries is the default number of retries for a service. The value of
// the service specific retry default will be used. // -1 indicates that the service specific retry default will be used.
const DefaultRetries = -1 const DefaultRetries = -1
// A Config provides service configuration for service clients. By default, // A Config provides service configuration for service clients. By default,

View File

@ -20,7 +20,7 @@ type lener interface {
Len() int Len() int
} }
// BuildContentLength builds the content length of a request based on the body, // BuildContentLengthHandler builds the content length of a request based on the body,
// or will use the HTTPRequest.Header's "Content-Length" if defined. If unable // 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. // to determine request body length and no "Content-Length" was specified it will panic.
var BuildContentLengthHandler = request.NamedHandler{"core.BuildContentLengthHandler", func(r *request.Request) { var BuildContentLengthHandler = request.NamedHandler{"core.BuildContentLengthHandler", func(r *request.Request) {

View File

@ -10,7 +10,7 @@ import (
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
) )
// ValidateParameters is a request handler to validate the input parameters. // ValidateParametersHandler is a request handler to validate the input parameters.
// Validating parameters only has meaning if done prior to the request being sent. // Validating parameters only has meaning if done prior to the request being sent.
var ValidateParametersHandler = request.NamedHandler{"core.ValidateParametersHandler", func(r *request.Request) { var ValidateParametersHandler = request.NamedHandler{"core.ValidateParametersHandler", func(r *request.Request) {
if r.ParamsFilled() { if r.ParamsFilled() {

View File

@ -53,8 +53,8 @@ import (
"time" "time"
) )
// Create an empty Credential object that can be used as dummy placeholder // AnonymousCredentials is an empty Credential object that can be used as
// credentials for requests that do not need signed. // dummy placeholder credentials for requests that do not need signed.
// //
// This Credentials can be used to configure a service to not sign requests // This Credentials can be used to configure a service to not sign requests
// when making service API calls. For example, when accessing public // when making service API calls. For example, when accessing public

View File

@ -2,7 +2,9 @@ package ec2metadata
import ( import (
"io/ioutil" "io/ioutil"
"net"
"net/http" "net/http"
"time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/awserr"
@ -88,7 +90,19 @@ func copyConfig(config *Config) *aws.Config {
} }
if c.HTTPClient == nil { if c.HTTPClient == nil {
c.HTTPClient = http.DefaultClient c.HTTPClient = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
// use a shorter timeout than default because the metadata
// service is local if it is running, and to fail faster
// if not running on an ec2 instance.
Timeout: 5 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
TLSHandshakeTimeout: 10 * time.Second,
},
}
} }
if c.Logger == nil { if c.Logger == nil {
c.Logger = aws.NewDefaultLogger() c.Logger = aws.NewDefaultLogger()

View File

@ -24,6 +24,8 @@ var retryableCodes = map[string]struct{}{
"ThrottlingException": {}, "ThrottlingException": {},
"RequestLimitExceeded": {}, "RequestLimitExceeded": {},
"RequestThrottled": {}, "RequestThrottled": {},
"LimitExceededException": {}, // Deleting 10+ DynamoDb tables at once
"TooManyRequestsException": {}, // Lambda functions
} }
// credsExpiredCodes is a collection of error codes which signify the credentials // credsExpiredCodes is a collection of error codes which signify the credentials

View File

@ -34,11 +34,9 @@ func (d DefaultRetryer) MaxRetries() uint {
return uint(aws.IntValue(d.Service.Config.MaxRetries)) return uint(aws.IntValue(d.Service.Config.MaxRetries))
} }
var seededRand = rand.New(rand.NewSource(time.Now().UnixNano()))
// RetryRules returns the delay duration before retrying this request again // RetryRules returns the delay duration before retrying this request again
func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration { func (d DefaultRetryer) RetryRules(r *request.Request) time.Duration {
delay := int(math.Pow(2, float64(r.RetryCount))) * (seededRand.Intn(30) + 30) delay := int(math.Pow(2, float64(r.RetryCount))) * (rand.Intn(30) + 30)
return time.Duration(delay) * time.Millisecond return time.Duration(delay) * time.Millisecond
} }

View File

@ -12,7 +12,7 @@ import (
"github.com/aws/aws-sdk-go/aws/corehandlers" "github.com/aws/aws-sdk-go/aws/corehandlers"
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/service/serviceinfo" "github.com/aws/aws-sdk-go/aws/service/serviceinfo"
"github.com/aws/aws-sdk-go/internal/endpoints" "github.com/aws/aws-sdk-go/private/endpoints"
) )
// A Service implements the base service request and response handling // A Service implements the base service request and response handling

View File

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

View File

@ -25,6 +25,10 @@
"endpoint": "", "endpoint": "",
"signingRegion": "us-east-1" "signingRegion": "us-east-1"
}, },
"*/data.iot": {
"endpoint": "",
"signingRegion": "us-east-1"
},
"*/iam": { "*/iam": {
"endpoint": "iam.amazonaws.com", "endpoint": "iam.amazonaws.com",
"signingRegion": "us-east-1" "signingRegion": "us-east-1"

View File

@ -26,6 +26,10 @@ var endpointsMap = endpointStruct{
Endpoint: "", Endpoint: "",
SigningRegion: "us-east-1", SigningRegion: "us-east-1",
}, },
"*/data.iot": {
Endpoint: "",
SigningRegion: "us-east-1",
},
"*/iam": { "*/iam": {
Endpoint: "iam.amazonaws.com", Endpoint: "iam.amazonaws.com",
SigningRegion: "us-east-1", SigningRegion: "us-east-1",

View File

@ -1,14 +1,14 @@
// Package ec2query provides serialisation of AWS EC2 requests and responses. // Package ec2query provides serialisation of AWS EC2 requests and responses.
package ec2query package ec2query
//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/input/ec2.json build_test.go //go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/ec2.json build_test.go
import ( import (
"net/url" "net/url"
"github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil" "github.com/aws/aws-sdk-go/private/protocol/query/queryutil"
) )
// Build builds a request for the EC2 protocol. // Build builds a request for the EC2 protocol.

View File

@ -1,6 +1,6 @@
package ec2query package ec2query
//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/output/ec2.json unmarshal_test.go //go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/ec2.json unmarshal_test.go
import ( import (
"encoding/xml" "encoding/xml"
@ -8,7 +8,7 @@ import (
"github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
) )
// Unmarshal unmarshals a response body for the EC2 protocol. // Unmarshal unmarshals a response body for the EC2 protocol.

View File

@ -1,14 +1,14 @@
// Package query provides serialisation of AWS query requests, and responses. // Package query provides serialisation of AWS query requests, and responses.
package query package query
//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/input/query.json build_test.go //go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/input/query.json build_test.go
import ( import (
"net/url" "net/url"
"github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/internal/protocol/query/queryutil" "github.com/aws/aws-sdk-go/private/protocol/query/queryutil"
) )
// Build builds a request for an AWS Query service. // Build builds a request for an AWS Query service.

View File

@ -1,13 +1,13 @@
package query package query
//go:generate go run ../../fixtures/protocol/generate.go ../../fixtures/protocol/output/query.json unmarshal_test.go //go:generate go run ../../../models/protocol_tests/generate.go ../../../models/protocol_tests/output/query.json unmarshal_test.go
import ( import (
"encoding/xml" "encoding/xml"
"github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/internal/protocol/xml/xmlutil" "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
) )
// Unmarshal unmarshals a response for an AWS Query service. // Unmarshal unmarshals a response for an AWS Query service.

View File

@ -6,6 +6,7 @@ import (
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"io" "io"
"net/http"
"net/url" "net/url"
"path" "path"
"reflect" "reflect"
@ -23,6 +24,8 @@ const RFC822 = "Mon, 2 Jan 2006 15:04:05 GMT"
// Whether the byte value can be sent without escaping in AWS URLs // Whether the byte value can be sent without escaping in AWS URLs
var noEscape [256]bool var noEscape [256]bool
var errValueNotSet = fmt.Errorf("value not set")
func init() { func init() {
for i := 0; i < len(noEscape); i++ { for i := 0; i < len(noEscape); i++ {
// AWS expects every character except these to be escaped // AWS expects every character except these to be escaped
@ -67,16 +70,18 @@ func buildLocationElements(r *request.Request, v reflect.Value) {
continue continue
} }
var err error
switch field.Tag.Get("location") { switch field.Tag.Get("location") {
case "headers": // header maps case "headers": // header maps
buildHeaderMap(r, m, field.Tag.Get("locationName")) err = buildHeaderMap(&r.HTTPRequest.Header, m, field.Tag.Get("locationName"))
case "header": case "header":
buildHeader(r, m, name) err = buildHeader(&r.HTTPRequest.Header, m, name)
case "uri": case "uri":
buildURI(r, m, name) err = buildURI(r.HTTPRequest.URL, m, name)
case "querystring": case "querystring":
buildQueryString(r, m, name, query) err = buildQueryString(query, m, name)
} }
r.Error = err
} }
if r.Error != nil { if r.Error != nil {
return return
@ -112,45 +117,77 @@ func buildBody(r *request.Request, v reflect.Value) {
} }
} }
func buildHeader(r *request.Request, v reflect.Value, name string) { func buildHeader(header *http.Header, v reflect.Value, name string) error {
str, err := convertType(v) str, err := convertType(v)
if err != nil { if err == errValueNotSet {
r.Error = awserr.New("SerializationError", "failed to encode REST request", err) return nil
} else if str != nil { } else if err != nil {
r.HTTPRequest.Header.Add(name, *str) return awserr.New("SerializationError", "failed to encode REST request", err)
} }
header.Add(name, str)
return nil
} }
func buildHeaderMap(r *request.Request, v reflect.Value, prefix string) { func buildHeaderMap(header *http.Header, v reflect.Value, prefix string) error {
for _, key := range v.MapKeys() { for _, key := range v.MapKeys() {
str, err := convertType(v.MapIndex(key)) str, err := convertType(v.MapIndex(key))
if err != nil { if err == errValueNotSet {
r.Error = awserr.New("SerializationError", "failed to encode REST request", err) continue
} else if str != nil { } else if err != nil {
r.HTTPRequest.Header.Add(prefix+key.String(), *str) return awserr.New("SerializationError", "failed to encode REST request", err)
} }
header.Add(prefix+key.String(), str)
} }
return nil
} }
func buildURI(r *request.Request, v reflect.Value, name string) { func buildURI(u *url.URL, v reflect.Value, name string) error {
value, err := convertType(v) value, err := convertType(v)
if err != nil { if err == errValueNotSet {
r.Error = awserr.New("SerializationError", "failed to encode REST request", err) return nil
} else if value != nil { } else if err != nil {
uri := r.HTTPRequest.URL.Path return awserr.New("SerializationError", "failed to encode REST request", err)
uri = strings.Replace(uri, "{"+name+"}", EscapePath(*value, true), -1)
uri = strings.Replace(uri, "{"+name+"+}", EscapePath(*value, false), -1)
r.HTTPRequest.URL.Path = uri
} }
uri := u.Path
uri = strings.Replace(uri, "{"+name+"}", EscapePath(value, true), -1)
uri = strings.Replace(uri, "{"+name+"+}", EscapePath(value, false), -1)
u.Path = uri
return nil
} }
func buildQueryString(r *request.Request, v reflect.Value, name string, query url.Values) { func buildQueryString(query url.Values, v reflect.Value, name string) error {
str, err := convertType(v) switch value := v.Interface().(type) {
if err != nil { case []*string:
r.Error = awserr.New("SerializationError", "failed to encode REST request", err) for _, item := range value {
} else if str != nil { query.Add(name, *item)
query.Set(name, *str) }
case map[string]*string:
for key, item := range value {
query.Add(key, *item)
}
case map[string][]*string:
for key, items := range value {
for _, item := range items {
query.Add(key, *item)
}
}
default:
str, err := convertType(v)
if err == errValueNotSet {
return nil
} else if err != nil {
return awserr.New("SerializationError", "failed to encode REST request", err)
}
query.Set(name, str)
} }
return nil
} }
func updatePath(url *url.URL, urlPath string) { func updatePath(url *url.URL, urlPath string) {
@ -189,10 +226,10 @@ func EscapePath(path string, encodeSep bool) string {
return buf.String() return buf.String()
} }
func convertType(v reflect.Value) (*string, error) { func convertType(v reflect.Value) (string, error) {
v = reflect.Indirect(v) v = reflect.Indirect(v)
if !v.IsValid() { if !v.IsValid() {
return nil, nil return "", errValueNotSet
} }
var str string var str string
@ -211,7 +248,7 @@ func convertType(v reflect.Value) (*string, error) {
str = value.UTC().Format(RFC822) str = value.UTC().Format(RFC822)
default: default:
err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type()) err := fmt.Errorf("Unsupported value for param %v (%s)", v.Interface(), v.Type())
return nil, err return "", err
} }
return &str, nil return str, nil
} }

View File

@ -17,7 +17,7 @@ import (
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/internal/protocol/rest" "github.com/aws/aws-sdk-go/private/protocol/rest"
) )
const ( const (

View File

@ -1567,7 +1567,7 @@ func (c *AutoScaling) TerminateInstanceInAutoScalingGroupRequest(input *Terminat
// Terminates the specified instance and optionally adjusts the desired group // Terminates the specified instance and optionally adjusts the desired group
// size. // size.
// //
// This call simply makes a termination request. The instances is not terminated // This call simply makes a termination request. The instance is not terminated
// immediately. // immediately.
func (c *AutoScaling) TerminateInstanceInAutoScalingGroup(input *TerminateInstanceInAutoScalingGroupInput) (*TerminateInstanceInAutoScalingGroupOutput, error) { func (c *AutoScaling) TerminateInstanceInAutoScalingGroup(input *TerminateInstanceInAutoScalingGroupInput) (*TerminateInstanceInAutoScalingGroupOutput, error) {
req, out := c.TerminateInstanceInAutoScalingGroupRequest(input) req, out := c.TerminateInstanceInAutoScalingGroupRequest(input)
@ -1826,7 +1826,7 @@ type BlockDeviceMapping struct {
// fails the health check. // fails the health check.
NoDevice *bool `type:"boolean"` NoDevice *bool `type:"boolean"`
// The name of the virtual device, ephemeral0 to ephemeral3. // The name of the virtual device (for example, ephemeral0).
VirtualName *string `min:"1" type:"string"` VirtualName *string `min:"1" type:"string"`
metadataBlockDeviceMapping `json:"-" xml:"-"` metadataBlockDeviceMapping `json:"-" xml:"-"`
@ -1909,8 +1909,8 @@ type CreateAutoScalingGroupInput struct {
// The amount of time, in seconds, after a scaling activity completes before // The amount of time, in seconds, after a scaling activity completes before
// another scaling activity can start. // another scaling activity can start.
// //
// If this parameter is not specified, the default value is 300. For more information, // The default is 300. For more information, see Understanding Auto Scaling
// see Understanding Auto Scaling Cooldowns (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html) // Cooldowns (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html)
// in the Auto Scaling Developer Guide. // in the Auto Scaling Developer Guide.
DefaultCooldown *int64 `type:"integer"` DefaultCooldown *int64 `type:"integer"`
@ -1936,7 +1936,8 @@ type CreateAutoScalingGroupInput struct {
// The service to use for the health checks. The valid values are EC2 and ELB. // The service to use for the health checks. The valid values are EC2 and ELB.
// //
// By default, health checks use Amazon EC2 instance status checks to determine // By default, health checks use Amazon EC2 instance status checks to determine
// the health of an instance. For more information, see Health Checks (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html). // the health of an instance. For more information, see Health Checks (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html)
// in the Auto Scaling Developer Guide.
HealthCheckType *string `min:"1" type:"string"` HealthCheckType *string `min:"1" type:"string"`
// The ID of the EC2 instance used to create a launch configuration for the // The ID of the EC2 instance used to create a launch configuration for the
@ -2118,7 +2119,7 @@ type CreateLaunchConfigurationInput struct {
// The instance type of the EC2 instance. For information about available instance // The instance type of the EC2 instance. For information about available instance
// types, see Available Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) // types, see Available Instance Types (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes)
// in the Amazon Elastic Cloud Compute User Guide. // in the Amazon Elastic Compute Cloud User Guide.
InstanceType *string `min:"1" type:"string"` InstanceType *string `min:"1" type:"string"`
// The ID of the kernel associated with the AMI. // The ID of the kernel associated with the AMI.
@ -3496,7 +3497,8 @@ type DisableMetricsCollectionInput struct {
// The name or Amazon Resource Name (ARN) of the group. // The name or Amazon Resource Name (ARN) of the group.
AutoScalingGroupName *string `min:"1" type:"string" required:"true"` AutoScalingGroupName *string `min:"1" type:"string" required:"true"`
// One or more metrics. If you omit this parameter, all metrics are disabled. // One or more of the following metrics. If you omit this parameter, all metrics
// are disabled.
// //
// GroupMinSize // GroupMinSize
// //
@ -3557,11 +3559,18 @@ type Ebs struct {
// Default: true // Default: true
DeleteOnTermination *bool `type:"boolean"` DeleteOnTermination *bool `type:"boolean"`
// Indicates whether the volume should be encrypted. Encrypted EBS volumes must
// be attached to instances that support Amazon EBS encryption. Volumes that
// are created from encrypted snapshots are automatically encrypted. There is
// no way to create an encrypted volume from an unencrypted snapshot or an unencrypted
// volume from an encrypted snapshot. For more information, see Amazon EBS Encryption
// (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) in
// the Amazon Elastic Compute Cloud User Guide.
Encrypted *bool `type:"boolean"`
// For Provisioned IOPS (SSD) volumes only. The number of I/O operations per // For Provisioned IOPS (SSD) volumes only. The number of I/O operations per
// second (IOPS) to provision for the volume. // second (IOPS) to provision for the volume.
// //
// Valid values: Range is 100 to 4000.
//
// Default: None // Default: None
Iops *int64 `min:"100" type:"integer"` Iops *int64 `min:"100" type:"integer"`
@ -3612,7 +3621,8 @@ type EnableMetricsCollectionInput struct {
// value is 1Minute. // value is 1Minute.
Granularity *string `min:"1" type:"string" required:"true"` Granularity *string `min:"1" type:"string" required:"true"`
// One or more metrics. If you omit this parameter, all metrics are enabled. // One or more of the following metrics. If you omit this parameter, all metrics
// are enabled.
// //
// GroupMinSize // GroupMinSize
// //
@ -3674,7 +3684,7 @@ type EnabledMetric struct {
// The granularity of the metric. The only valid value is 1Minute. // The granularity of the metric. The only valid value is 1Minute.
Granularity *string `min:"1" type:"string"` Granularity *string `min:"1" type:"string"`
// The name of the metric. // One of the following metrics:
// //
// GroupMinSize // GroupMinSize
// //
@ -3952,7 +3962,8 @@ type Group struct {
MinSize *int64 `type:"integer" required:"true"` MinSize *int64 `type:"integer" required:"true"`
// The name of the placement group into which you'll launch your instances, // The name of the placement group into which you'll launch your instances,
// if any. For more information, see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html). // if any. For more information, see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
// in the Amazon Elastic Compute Cloud User Guide.
PlacementGroup *string `min:"1" type:"string"` PlacementGroup *string `min:"1" type:"string"`
// The current state of the group when DeleteAutoScalingGroup is in progress. // The current state of the group when DeleteAutoScalingGroup is in progress.
@ -4090,8 +4101,7 @@ func (s InstanceMonitoring) GoString() string {
// Describes a launch configuration. // Describes a launch configuration.
type LaunchConfiguration struct { type LaunchConfiguration struct {
// Specifies whether the instances are associated with a public IP address (true) // [EC2-VPC] Indicates whether to assign a public IP address to each instance.
// or not (false).
AssociatePublicIpAddress *bool `type:"boolean"` AssociatePublicIpAddress *bool `type:"boolean"`
// A block device mapping, which specifies the block devices for the instance. // A block device mapping, which specifies the block devices for the instance.
@ -4192,14 +4202,14 @@ type LifecycleHook struct {
// are CONTINUE and ABANDON. The default value is CONTINUE. // are CONTINUE and ABANDON. The default value is CONTINUE.
DefaultResult *string `type:"string"` DefaultResult *string `type:"string"`
// The maximum length of time an instance can remain in a Pending:Wait or Terminating:Wait // The maximum time, in seconds, that an instance can remain in a Pending:Wait
// state. Currently, the maximum is set to 48 hours. // or Terminating:Wait state. The default is 172800 seconds (48 hours).
GlobalTimeout *int64 `type:"integer"` GlobalTimeout *int64 `type:"integer"`
// The amount of time that can elapse before the lifecycle hook times out. When // The maximum time, in seconds, that can elapse before the lifecycle hook times
// the lifecycle hook times out, Auto Scaling performs the action defined in // out. The default is 3600 seconds (1 hour). When the lifecycle hook times
// the DefaultResult parameter. You can prevent the lifecycle hook from timing // out, Auto Scaling performs the action defined in the DefaultResult parameter.
// out by calling RecordLifecycleActionHeartbeat. // You can prevent the lifecycle hook from timing out by calling RecordLifecycleActionHeartbeat.
HeartbeatTimeout *int64 `type:"integer"` HeartbeatTimeout *int64 `type:"integer"`
// The name of the lifecycle hook. // The name of the lifecycle hook.
@ -4248,7 +4258,7 @@ type LoadBalancerState struct {
// The name of the load balancer. // The name of the load balancer.
LoadBalancerName *string `min:"1" type:"string"` LoadBalancerName *string `min:"1" type:"string"`
// The state of the load balancer. // One of the following load balancer states:
// //
// Adding - The instances in the group are being registered with the load // Adding - The instances in the group are being registered with the load
// balancer. // balancer.
@ -4281,7 +4291,7 @@ func (s LoadBalancerState) GoString() string {
// Describes a metric. // Describes a metric.
type MetricCollectionType struct { type MetricCollectionType struct {
// The metric. // One of the following metrics:
// //
// GroupMinSize // GroupMinSize
// //
@ -4344,7 +4354,7 @@ type NotificationConfiguration struct {
// The name of the group. // The name of the group.
AutoScalingGroupName *string `min:"1" type:"string"` AutoScalingGroupName *string `min:"1" type:"string"`
// The types of events for an action to start. // One of the following event notification types:
// //
// autoscaling:EC2_INSTANCE_LAUNCH // autoscaling:EC2_INSTANCE_LAUNCH
// //
@ -4383,7 +4393,7 @@ func (s NotificationConfiguration) GoString() string {
// For more information, see Auto Scaling Processes (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html#process-types) // For more information, see Auto Scaling Processes (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/US_SuspendResume.html#process-types)
// in the Auto Scaling Developer Guide. // in the Auto Scaling Developer Guide.
type ProcessType struct { type ProcessType struct {
// The name of the process. // One of the following processes:
// //
// Launch // Launch
// //
@ -4430,11 +4440,11 @@ type PutLifecycleHookInput struct {
// is ABANDON. // is ABANDON.
DefaultResult *string `type:"string"` DefaultResult *string `type:"string"`
// Defines the amount of time, in seconds, that can elapse before the lifecycle // The amount of time, in seconds, that can elapse before the lifecycle hook
// hook times out. When the lifecycle hook times out, Auto Scaling performs // times out. When the lifecycle hook times out, Auto Scaling performs the action
// the action defined in the DefaultResult parameter. You can prevent the lifecycle // defined in the DefaultResult parameter. You can prevent the lifecycle hook
// hook from timing out by calling RecordLifecycleActionHeartbeat. The default // from timing out by calling RecordLifecycleActionHeartbeat. The default is
// value for this parameter is 3600 seconds (1 hour). // 3600 seconds (1 hour).
HeartbeatTimeout *int64 `type:"integer"` HeartbeatTimeout *int64 `type:"integer"`
// The name of the lifecycle hook. // The name of the lifecycle hook.
@ -5257,7 +5267,7 @@ type TerminateInstanceInAutoScalingGroupInput struct {
// The ID of the EC2 instance. // The ID of the EC2 instance.
InstanceId *string `min:"1" type:"string" required:"true"` InstanceId *string `min:"1" type:"string" required:"true"`
// If true, terminating this instance also decrements the size of the Auto Scaling // If true, terminating the instance also decrements the size of the Auto Scaling
// group. // group.
ShouldDecrementDesiredCapacity *bool `type:"boolean" required:"true"` ShouldDecrementDesiredCapacity *bool `type:"boolean" required:"true"`
@ -5308,7 +5318,8 @@ type UpdateAutoScalingGroupInput struct {
// The amount of time, in seconds, after a scaling activity completes before // The amount of time, in seconds, after a scaling activity completes before
// another scaling activity can start. For more information, see Understanding // another scaling activity can start. For more information, see Understanding
// Auto Scaling Cooldowns (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html). // Auto Scaling Cooldowns (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/Cooldown.html)
// in the Auto Scaling Developer Guide.
DefaultCooldown *int64 `type:"integer"` DefaultCooldown *int64 `type:"integer"`
// The number of EC2 instances that should be running in the Auto Scaling group. // The number of EC2 instances that should be running in the Auto Scaling group.
@ -5319,7 +5330,8 @@ type UpdateAutoScalingGroupInput struct {
// The amount of time, in seconds, that Auto Scaling waits before checking the // The amount of time, in seconds, that Auto Scaling waits before checking the
// health status of an instance. The grace period begins when the instance passes // health status of an instance. The grace period begins when the instance passes
// the system status and instance status checks from Amazon EC2. For more information, // the system status and instance status checks from Amazon EC2. For more information,
// see . // see Health Checks (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/healthcheck.html)
// in the Auto Scaling Developer Guide.
HealthCheckGracePeriod *int64 `type:"integer"` HealthCheckGracePeriod *int64 `type:"integer"`
// The type of health check for the instances in the Auto Scaling group. The // The type of health check for the instances in the Auto Scaling group. The
@ -5337,7 +5349,8 @@ type UpdateAutoScalingGroupInput struct {
MinSize *int64 `type:"integer"` MinSize *int64 `type:"integer"`
// The name of the placement group into which you'll launch your instances, // The name of the placement group into which you'll launch your instances,
// if any. For more information, see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html). // if any. For more information, see Placement Groups (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)
// in the Amazon Elastic Compute Cloud User Guide.
PlacementGroup *string `min:"1" type:"string"` PlacementGroup *string `min:"1" type:"string"`
// A standalone termination policy or a list of termination policies used to // A standalone termination policy or a list of termination policies used to

View File

@ -8,8 +8,8 @@ import (
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/service" "github.com/aws/aws-sdk-go/aws/service"
"github.com/aws/aws-sdk-go/aws/service/serviceinfo" "github.com/aws/aws-sdk-go/aws/service/serviceinfo"
"github.com/aws/aws-sdk-go/internal/protocol/query" "github.com/aws/aws-sdk-go/private/protocol/query"
"github.com/aws/aws-sdk-go/internal/signer/v4" "github.com/aws/aws-sdk-go/private/signer/v4"
) )
// Auto Scaling is designed to automatically launch or terminate EC2 instances // Auto Scaling is designed to automatically launch or terminate EC2 instances

View File

@ -696,6 +696,13 @@ func (c *EC2) CancelSpotFleetRequestsRequest(input *CancelSpotFleetRequestsInput
} }
// Cancels the specified Spot fleet requests. // Cancels the specified Spot fleet requests.
//
// After you cancel a Spot fleet request, the Spot fleet launches no new Spot
// instances. You must specify whether the Spot fleet should also terminate
// its Spot instances. If you terminate the instances, the Spot fleet request
// enters the cancelled_terminating state. Otherwise, the Spot fleet request
// enters the cancelled_running state and the instances continue to run until
// they are interrupted or you terminate them manually.
func (c *EC2) CancelSpotFleetRequests(input *CancelSpotFleetRequestsInput) (*CancelSpotFleetRequestsOutput, error) { func (c *EC2) CancelSpotFleetRequests(input *CancelSpotFleetRequestsInput) (*CancelSpotFleetRequestsOutput, error) {
req, out := c.CancelSpotFleetRequestsRequest(input) req, out := c.CancelSpotFleetRequestsRequest(input)
err := req.Send() err := req.Send()
@ -5169,6 +5176,52 @@ func (c *EC2) ModifySnapshotAttribute(input *ModifySnapshotAttributeInput) (*Mod
return out, err return out, err
} }
const opModifySpotFleetRequest = "ModifySpotFleetRequest"
// ModifySpotFleetRequestRequest generates a request for the ModifySpotFleetRequest operation.
func (c *EC2) ModifySpotFleetRequestRequest(input *ModifySpotFleetRequestInput) (req *request.Request, output *ModifySpotFleetRequestOutput) {
op := &request.Operation{
Name: opModifySpotFleetRequest,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &ModifySpotFleetRequestInput{}
}
req = c.newRequest(op, input, output)
output = &ModifySpotFleetRequestOutput{}
req.Data = output
return
}
// Modifies the specified Spot fleet request.
//
// While the Spot fleet request is being modified, it is in the modifying state.
//
// To scale up your Spot fleet, increase its target capacity. The Spot fleet
// launches the additional Spot instances according to the allocation strategy
// for the Spot fleet request. If the allocation strategy is lowestPrice, the
// Spot fleet launches instances using the Spot pool with the lowest price.
// If the allocation strategy is diversified, the Spot fleet distributes the
// instances across the Spot pools.
//
// To scale down your Spot fleet, decrease its target capacity. First, the
// Spot fleet cancels any open bids that exceed the new target capacity. You
// can request that the Spot fleet terminate Spot instances until the size of
// the fleet no longer exceeds the new target capacity. If the allocation strategy
// is lowestPrice, the Spot fleet terminates the instances with the highest
// price per unit. If the allocation strategy is diversified, the Spot fleet
// terminates instances across the Spot pools. Alternatively, you can request
// that the Spot fleet keep the fleet at its current size, but not replace any
// Spot instances that are interrupted or that you terminate manually.
func (c *EC2) ModifySpotFleetRequest(input *ModifySpotFleetRequestInput) (*ModifySpotFleetRequestOutput, error) {
req, out := c.ModifySpotFleetRequestRequest(input)
err := req.Send()
return out, err
}
const opModifySubnetAttribute = "ModifySubnetAttribute" const opModifySubnetAttribute = "ModifySubnetAttribute"
// ModifySubnetAttributeRequest generates a request for the ModifySubnetAttribute operation. // ModifySubnetAttributeRequest generates a request for the ModifySubnetAttribute operation.
@ -7196,7 +7249,7 @@ type AvailabilityZone struct {
// The name of the region. // The name of the region.
RegionName *string `locationName:"regionName" type:"string"` RegionName *string `locationName:"regionName" type:"string"`
// The state of the Availability Zone (available | impaired | unavailable). // The state of the Availability Zone.
State *string `locationName:"zoneState" type:"string" enum:"AvailabilityZoneState"` State *string `locationName:"zoneState" type:"string" enum:"AvailabilityZoneState"`
// The name of the Availability Zone. // The name of the Availability Zone.
@ -10995,7 +11048,8 @@ type DescribeAvailabilityZonesInput struct {
// region-name - The name of the region for the Availability Zone (for example, // region-name - The name of the region for the Availability Zone (for example,
// us-east-1). // us-east-1).
// //
// state - The state of the Availability Zone (available | impaired | unavailable). // state - The state of the Availability Zone (available | information |
// impaired | unavailable).
// //
// zone-name - The name of the Availability Zone (for example, us-east-1a). // zone-name - The name of the Availability Zone (for example, us-east-1a).
Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"`
@ -16201,11 +16255,15 @@ type EventInformation struct {
// //
// The following are the error events. // The following are the error events.
// //
// iamFleetRoleInvalid - Spot fleet did not have the required permissions // iamFleetRoleInvalid - The Spot fleet did not have the required permissions
// either to launch or terminate an instance. // either to launch or terminate an instance.
// //
// launchSpecTemporarilyBlacklisted - The configuration is not valid and
// several attempts to launch instances have failed. For more information, see
// the description of the event.
//
// spotFleetRequestConfigurationInvalid - The configuration is not valid. // spotFleetRequestConfigurationInvalid - The configuration is not valid.
// For more information, see the description. // For more information, see the description of the event.
// //
// spotInstanceCountLimitExceeded - You've reached the limit on the number // spotInstanceCountLimitExceeded - You've reached the limit on the number
// of Spot instances that you can launch. // of Spot instances that you can launch.
@ -16229,6 +16287,11 @@ type EventInformation struct {
// that the instances were terminated, if the request was created with TerminateInstancesWithExpiration // that the instances were terminated, if the request was created with TerminateInstancesWithExpiration
// set. // set.
// //
// modify_in_progress - A request to modify the Spot fleet request was accepted
// and is in progress.
//
// modify_successful - The Spot fleet request was modified.
//
// price_update - The bid price for a launch configuration was adjusted because // price_update - The bid price for a launch configuration was adjusted because
// it was too high. This change is permanent. // it was too high. This change is permanent.
// //
@ -18358,10 +18421,9 @@ type LaunchSpecification struct {
// The ID of the RAM disk. // The ID of the RAM disk.
RamdiskId *string `locationName:"ramdiskId" type:"string"` RamdiskId *string `locationName:"ramdiskId" type:"string"`
// One or more security groups. To request an instance in a nondefault VPC, // One or more security groups. When requesting instances in a VPC, you must
// you must specify the ID of the security group. To request an instance in // specify the IDs of the security groups. When requesting instances in EC2-Classic,
// EC2-Classic or a default VPC, you can specify the name or the ID of the security // you can specify the names or the IDs of the security groups.
// group.
SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
// The ID of the subnet in which to launch the instance. // The ID of the subnet in which to launch the instance.
@ -18751,6 +18813,58 @@ func (s ModifySnapshotAttributeOutput) GoString() string {
return s.String() return s.String()
} }
// Contains the parameters for ModifySpotFleetRequest.
type ModifySpotFleetRequestInput struct {
// Indicates whether running Spot instances should be terminated if the target
// capacity of the Spot fleet request is decreased below the current size of
// the Spot fleet.
ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"`
// The ID of the Spot fleet request.
SpotFleetRequestId *string `locationName:"spotFleetRequestId" type:"string" required:"true"`
// The size of the fleet.
TargetCapacity *int64 `locationName:"targetCapacity" type:"integer"`
metadataModifySpotFleetRequestInput `json:"-" xml:"-"`
}
type metadataModifySpotFleetRequestInput struct {
SDKShapeTraits bool `type:"structure"`
}
// String returns the string representation
func (s ModifySpotFleetRequestInput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s ModifySpotFleetRequestInput) GoString() string {
return s.String()
}
// Contains the output of ModifySpotFleetRequest.
type ModifySpotFleetRequestOutput struct {
// Is true if the request succeeds, and an error otherwise.
Return *bool `locationName:"return" type:"boolean"`
metadataModifySpotFleetRequestOutput `json:"-" xml:"-"`
}
type metadataModifySpotFleetRequestOutput struct {
SDKShapeTraits bool `type:"structure"`
}
// String returns the string representation
func (s ModifySpotFleetRequestOutput) String() string {
return awsutil.Prettify(s)
}
// GoString returns the string representation
func (s ModifySpotFleetRequestOutput) GoString() string {
return s.String()
}
type ModifySubnetAttributeInput struct { type ModifySubnetAttributeInput struct {
// Specify true to indicate that instances launched into the specified subnet // Specify true to indicate that instances launched into the specified subnet
// should be assigned public IP address. // should be assigned public IP address.
@ -20466,6 +20580,18 @@ type RequestSpotInstancesInput struct {
// Default: Instances are launched in any available Availability Zone. // Default: Instances are launched in any available Availability Zone.
AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"`
// The required duration for the Spot instances, in minutes. This value must
// be a multiple of 60 (60, 120, 180, 240, 300, or 360).
//
// The duration period starts as soon as your Spot instance receives its instance
// ID. At the end of the duration period, Amazon EC2 marks the Spot instance
// for termination and provides a Spot instance termination notice, which gives
// the instance a two-minute warning before it terminates.
//
// Note that you can't specify an Availability Zone group or a launch group
// if you specify a required duration.
BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"`
// Unique, case-sensitive identifier that you provide to ensure the idempotency // Unique, case-sensitive identifier that you provide to ensure the idempotency
// of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) // of the request. For more information, see How to Ensure Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html)
// in the Amazon Elastic Compute Cloud User Guide. // in the Amazon Elastic Compute Cloud User Guide.
@ -22060,10 +22186,9 @@ type SpotFleetLaunchSpecification struct {
// The ID of the RAM disk. // The ID of the RAM disk.
RamdiskId *string `locationName:"ramdiskId" type:"string"` RamdiskId *string `locationName:"ramdiskId" type:"string"`
// One or more security groups. To request an instance in a nondefault VPC, // One or more security groups. When requesting instances in a VPC, you must
// you must specify the ID of the security group. To request an instance in // specify the IDs of the security groups. When requesting instances in EC2-Classic,
// EC2-Classic or a default VPC, you can specify the name or the ID of the security // you can specify the names or the IDs of the security groups.
// group.
SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"` SecurityGroups []*GroupIdentifier `locationName:"groupSet" locationNameList:"item" type:"list"`
// The bid price per unit hour for the specified instance type. If this value // The bid price per unit hour for the specified instance type. If this value
@ -22130,6 +22255,9 @@ func (s SpotFleetMonitoring) GoString() string {
// Describes a Spot fleet request. // Describes a Spot fleet request.
type SpotFleetRequestConfig struct { type SpotFleetRequestConfig struct {
// The creation date and time of the request.
CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601" required:"true"`
// Information about the configuration of the Spot fleet request. // Information about the configuration of the Spot fleet request.
SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"` SpotFleetRequestConfig *SpotFleetRequestConfigData `locationName:"spotFleetRequestConfig" type:"structure" required:"true"`
@ -22158,7 +22286,7 @@ func (s SpotFleetRequestConfig) GoString() string {
// Describes the configuration of a Spot fleet request. // Describes the configuration of a Spot fleet request.
type SpotFleetRequestConfigData struct { type SpotFleetRequestConfigData struct {
// Determines how to allocate the target capacity across the Spot pools specified // Indicates how to allocate the target capacity across the Spot pools specified
// by the Spot fleet request. The default is lowestPrice. // by the Spot fleet request. The default is lowestPrice.
AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"` AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"`
@ -22167,6 +22295,11 @@ type SpotFleetRequestConfigData struct {
// see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). // see Ensuring Idempotency (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html).
ClientToken *string `locationName:"clientToken" type:"string"` ClientToken *string `locationName:"clientToken" type:"string"`
// Indicates whether running Spot instances should be terminated if the target
// capacity of the Spot fleet request is decreased below the current size of
// the Spot fleet.
ExcessCapacityTerminationPolicy *string `locationName:"excessCapacityTerminationPolicy" type:"string" enum:"ExcessCapacityTerminationPolicy"`
// Grants the Spot fleet permission to terminate Spot instances on your behalf // Grants the Spot fleet permission to terminate Spot instances on your behalf
// when you cancel its Spot fleet request using CancelSpotFleetRequests or when // when you cancel its Spot fleet request using CancelSpotFleetRequests or when
// the Spot fleet request expires, if you set terminateInstancesWithExpiration. // the Spot fleet request expires, if you set terminateInstancesWithExpiration.
@ -22213,13 +22346,20 @@ func (s SpotFleetRequestConfigData) GoString() string {
return s.String() return s.String()
} }
// Describe a Spot instance request. // Describes a Spot instance request.
type SpotInstanceRequest struct { type SpotInstanceRequest struct {
// If you specified a required duration and your request was fulfilled, this
// is the fixed hourly price in effect for the Spot instance while it runs.
ActualBlockHourlyPrice *string `locationName:"actualBlockHourlyPrice" type:"string"`
// The Availability Zone group. If you specify the same Availability Zone group // The Availability Zone group. If you specify the same Availability Zone group
// for all Spot instance requests, all Spot instances are launched in the same // for all Spot instance requests, all Spot instances are launched in the same
// Availability Zone. // Availability Zone.
AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"` AvailabilityZoneGroup *string `locationName:"availabilityZoneGroup" type:"string"`
// The required duration for the Spot instance, in minutes.
BlockDurationMinutes *int64 `locationName:"blockDurationMinutes" type:"integer"`
// The date and time when the Spot instance request was created, in UTC format // The date and time when the Spot instance request was created, in UTC format
// (for example, YYYY-MM-DDTHH:MM:SSZ). // (for example, YYYY-MM-DDTHH:MM:SSZ).
CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"` CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"iso8601"`
@ -22247,7 +22387,7 @@ type SpotInstanceRequest struct {
// The ID of the Spot instance request. // The ID of the Spot instance request.
SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"` SpotInstanceRequestId *string `locationName:"spotInstanceRequestId" type:"string"`
// The maximum hourly price (bid) for any Spot instance launched to fulfill // The maximum hourly price (bid) for the Spot instance launched to fulfill
// the request. // the request.
SpotPrice *string `locationName:"spotPrice" type:"string"` SpotPrice *string `locationName:"spotPrice" type:"string"`
@ -22267,16 +22407,13 @@ type SpotInstanceRequest struct {
Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"` Type *string `locationName:"type" type:"string" enum:"SpotInstanceType"`
// The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). // The start date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
// If this is a one-time request, the request becomes active at this date and // The request becomes active at this date and time.
// time and remains active until all instances launch, the request expires,
// or the request is canceled. If the request is persistent, the request becomes
// active at this date and time and remains active until it expires or is canceled.
ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"` ValidFrom *time.Time `locationName:"validFrom" type:"timestamp" timestampFormat:"iso8601"`
// The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). // The end date of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ).
// If this is a one-time request, the request remains active until all instances // If this is a one-time request, it remains active until all instances launch,
// launch, the request is canceled, or this date is reached. If the request // the request is canceled, or this date is reached. If the request is persistent,
// is persistent, it remains active until it is canceled or this date is reached. // it remains active until it is canceled or this date is reached.
ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"` ValidUntil *time.Time `locationName:"validUntil" type:"timestamp" timestampFormat:"iso8601"`
metadataSpotInstanceRequest `json:"-" xml:"-"` metadataSpotInstanceRequest `json:"-" xml:"-"`
@ -23721,6 +23858,12 @@ const (
const ( const (
// @enum AvailabilityZoneState // @enum AvailabilityZoneState
AvailabilityZoneStateAvailable = "available" AvailabilityZoneStateAvailable = "available"
// @enum AvailabilityZoneState
AvailabilityZoneStateInformation = "information"
// @enum AvailabilityZoneState
AvailabilityZoneStateImpaired = "impaired"
// @enum AvailabilityZoneState
AvailabilityZoneStateUnavailable = "unavailable"
) )
const ( const (
@ -23736,6 +23879,8 @@ const (
BatchStateCancelledRunning = "cancelled_running" BatchStateCancelledRunning = "cancelled_running"
// @enum BatchState // @enum BatchState
BatchStateCancelledTerminating = "cancelled_terminating" BatchStateCancelledTerminating = "cancelled_terminating"
// @enum BatchState
BatchStateModifying = "modifying"
) )
const ( const (
@ -23852,6 +23997,13 @@ const (
EventTypeError = "error" EventTypeError = "error"
) )
const (
// @enum ExcessCapacityTerminationPolicy
ExcessCapacityTerminationPolicyNoTermination = "noTermination"
// @enum ExcessCapacityTerminationPolicy
ExcessCapacityTerminationPolicyDefault = "default"
)
const ( const (
// @enum ExportEnvironment // @enum ExportEnvironment
ExportEnvironmentCitrix = "citrix" ExportEnvironmentCitrix = "citrix"

View File

@ -630,6 +630,10 @@ type EC2API interface {
ModifySnapshotAttribute(*ec2.ModifySnapshotAttributeInput) (*ec2.ModifySnapshotAttributeOutput, error) ModifySnapshotAttribute(*ec2.ModifySnapshotAttributeInput) (*ec2.ModifySnapshotAttributeOutput, error)
ModifySpotFleetRequestRequest(*ec2.ModifySpotFleetRequestInput) (*request.Request, *ec2.ModifySpotFleetRequestOutput)
ModifySpotFleetRequest(*ec2.ModifySpotFleetRequestInput) (*ec2.ModifySpotFleetRequestOutput, error)
ModifySubnetAttributeRequest(*ec2.ModifySubnetAttributeInput) (*request.Request, *ec2.ModifySubnetAttributeOutput) ModifySubnetAttributeRequest(*ec2.ModifySubnetAttributeInput) (*request.Request, *ec2.ModifySubnetAttributeOutput)
ModifySubnetAttribute(*ec2.ModifySubnetAttributeInput) (*ec2.ModifySubnetAttributeOutput, error) ModifySubnetAttribute(*ec2.ModifySubnetAttributeInput) (*ec2.ModifySubnetAttributeOutput, error)

View File

@ -8,8 +8,8 @@ import (
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/service" "github.com/aws/aws-sdk-go/aws/service"
"github.com/aws/aws-sdk-go/aws/service/serviceinfo" "github.com/aws/aws-sdk-go/aws/service/serviceinfo"
"github.com/aws/aws-sdk-go/internal/protocol/ec2query" "github.com/aws/aws-sdk-go/private/protocol/ec2query"
"github.com/aws/aws-sdk-go/internal/signer/v4" "github.com/aws/aws-sdk-go/private/signer/v4"
) )
// Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity // Amazon Elastic Compute Cloud (Amazon EC2) provides resizable computing capacity
@ -32,7 +32,7 @@ func New(config *aws.Config) *EC2 {
ServiceInfo: serviceinfo.ServiceInfo{ ServiceInfo: serviceinfo.ServiceInfo{
Config: defaults.DefaultConfig.Merge(config), Config: defaults.DefaultConfig.Merge(config),
ServiceName: "ec2", ServiceName: "ec2",
APIVersion: "2015-04-15", APIVersion: "2015-10-01",
}, },
} }
service.Initialize() service.Initialize()

View File

@ -8,8 +8,8 @@ import (
"github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/service" "github.com/aws/aws-sdk-go/aws/service"
"github.com/aws/aws-sdk-go/aws/service/serviceinfo" "github.com/aws/aws-sdk-go/aws/service/serviceinfo"
"github.com/aws/aws-sdk-go/internal/protocol/query" "github.com/aws/aws-sdk-go/private/protocol/query"
"github.com/aws/aws-sdk-go/internal/signer/v4" "github.com/aws/aws-sdk-go/private/signer/v4"
) )
// Elastic Load Balancing distributes incoming traffic across your EC2 instances. // Elastic Load Balancing distributes incoming traffic across your EC2 instances.