Update amazon sdk (#10668)
This commit is contained in:
parent
fca92b1953
commit
9a11fd4136
|
@ -54,6 +54,24 @@ type StepRunSpotInstance struct {
|
||||||
instanceId string
|
instanceId string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The EbsBlockDevice and LaunchTemplateEbsBlockDeviceRequest structs are
|
||||||
|
// nearly identical except for the struct's name and one extra field in
|
||||||
|
// EbsBlockDeviceResuest, which unfortunately means you can't just cast one
|
||||||
|
// into the other. THANKS AMAZON.
|
||||||
|
func castBlockDeviceToRequest(bd *ec2.EbsBlockDevice) *ec2.LaunchTemplateEbsBlockDeviceRequest {
|
||||||
|
out := &ec2.LaunchTemplateEbsBlockDeviceRequest{
|
||||||
|
DeleteOnTermination: bd.DeleteOnTermination,
|
||||||
|
Encrypted: bd.Encrypted,
|
||||||
|
Iops: bd.Iops,
|
||||||
|
KmsKeyId: bd.KmsKeyId,
|
||||||
|
SnapshotId: bd.SnapshotId,
|
||||||
|
Throughput: bd.Throughput,
|
||||||
|
VolumeSize: bd.VolumeSize,
|
||||||
|
VolumeType: bd.VolumeType,
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
func (s *StepRunSpotInstance) CreateTemplateData(userData *string, az string,
|
func (s *StepRunSpotInstance) CreateTemplateData(userData *string, az string,
|
||||||
state multistep.StateBag, marketOptions *ec2.LaunchTemplateInstanceMarketOptionsRequest) *ec2.RequestLaunchTemplateData {
|
state multistep.StateBag, marketOptions *ec2.LaunchTemplateInstanceMarketOptionsRequest) *ec2.RequestLaunchTemplateData {
|
||||||
blockDeviceMappings := s.LaunchMappings.BuildEC2BlockDeviceMappings()
|
blockDeviceMappings := s.LaunchMappings.BuildEC2BlockDeviceMappings()
|
||||||
|
@ -61,15 +79,12 @@ func (s *StepRunSpotInstance) CreateTemplateData(userData *string, az string,
|
||||||
// LaunchTemplateBlockDeviceMappingRequest. These structs are identical,
|
// LaunchTemplateBlockDeviceMappingRequest. These structs are identical,
|
||||||
// except for the EBS field -- on one, that field contains a
|
// except for the EBS field -- on one, that field contains a
|
||||||
// LaunchTemplateEbsBlockDeviceRequest, and on the other, it contains an
|
// LaunchTemplateEbsBlockDeviceRequest, and on the other, it contains an
|
||||||
// EbsBlockDevice. The EbsBlockDevice and
|
// EbsBlockDevice.
|
||||||
// LaunchTemplateEbsBlockDeviceRequest structs are themselves
|
|
||||||
// identical except for the struct's name, so you can cast one directly
|
|
||||||
// into the other.
|
|
||||||
var launchMappingRequests []*ec2.LaunchTemplateBlockDeviceMappingRequest
|
var launchMappingRequests []*ec2.LaunchTemplateBlockDeviceMappingRequest
|
||||||
for _, mapping := range blockDeviceMappings {
|
for _, mapping := range blockDeviceMappings {
|
||||||
launchRequest := &ec2.LaunchTemplateBlockDeviceMappingRequest{
|
launchRequest := &ec2.LaunchTemplateBlockDeviceMappingRequest{
|
||||||
DeviceName: mapping.DeviceName,
|
DeviceName: mapping.DeviceName,
|
||||||
Ebs: (*ec2.LaunchTemplateEbsBlockDeviceRequest)(mapping.Ebs),
|
Ebs: castBlockDeviceToRequest(mapping.Ebs),
|
||||||
VirtualName: mapping.VirtualName,
|
VirtualName: mapping.VirtualName,
|
||||||
}
|
}
|
||||||
launchMappingRequests = append(launchMappingRequests, launchRequest)
|
launchMappingRequests = append(launchMappingRequests, launchRequest)
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -17,7 +17,7 @@ require (
|
||||||
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f
|
github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f
|
||||||
github.com/antihax/optional v1.0.0
|
github.com/antihax/optional v1.0.0
|
||||||
github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43
|
github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43
|
||||||
github.com/aws/aws-sdk-go v1.36.5
|
github.com/aws/aws-sdk-go v1.37.15
|
||||||
github.com/biogo/hts v0.0.0-20160420073057-50da7d4131a3
|
github.com/biogo/hts v0.0.0-20160420073057-50da7d4131a3
|
||||||
github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee
|
github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee
|
||||||
github.com/cheggaaa/pb v1.0.27
|
github.com/cheggaaa/pb v1.0.27
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -129,6 +129,8 @@ github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU
|
||||||
github.com/aws/aws-sdk-go v1.36.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
github.com/aws/aws-sdk-go v1.36.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
||||||
github.com/aws/aws-sdk-go v1.36.5 h1:SouM2ar1A8f+3DYWW622sDdqkkZAO3ha4j8GQjiPLFg=
|
github.com/aws/aws-sdk-go v1.36.5 h1:SouM2ar1A8f+3DYWW622sDdqkkZAO3ha4j8GQjiPLFg=
|
||||||
github.com/aws/aws-sdk-go v1.36.5/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
github.com/aws/aws-sdk-go v1.36.5/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
||||||
|
github.com/aws/aws-sdk-go v1.37.15 h1:W7l7gLLMcYRlg6a+uvf3Zz4jYwdqYzhe5ymqwWoOhp4=
|
||||||
|
github.com/aws/aws-sdk-go v1.37.15/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
|
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
|
||||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
|
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
|
||||||
|
|
|
@ -88,10 +88,6 @@ func (c *Client) NewRequest(operation *request.Operation, params interface{}, da
|
||||||
// AddDebugHandlers injects debug logging handlers into the service to log request
|
// AddDebugHandlers injects debug logging handlers into the service to log request
|
||||||
// debug information.
|
// debug information.
|
||||||
func (c *Client) AddDebugHandlers() {
|
func (c *Client) AddDebugHandlers() {
|
||||||
if !c.Config.LogLevel.AtLeast(aws.LogDebug) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler)
|
c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler)
|
||||||
c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler)
|
c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler)
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,10 @@ var LogHTTPRequestHandler = request.NamedHandler{
|
||||||
}
|
}
|
||||||
|
|
||||||
func logRequest(r *request.Request) {
|
func logRequest(r *request.Request) {
|
||||||
|
if !r.Config.LogLevel.AtLeast(aws.LogDebug) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
|
logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody)
|
||||||
bodySeekable := aws.IsReaderSeekable(r.Body)
|
bodySeekable := aws.IsReaderSeekable(r.Body)
|
||||||
|
|
||||||
|
@ -120,6 +124,10 @@ var LogHTTPResponseHandler = request.NamedHandler{
|
||||||
}
|
}
|
||||||
|
|
||||||
func logResponse(r *request.Request) {
|
func logResponse(r *request.Request) {
|
||||||
|
if !r.Config.LogLevel.AtLeast(aws.LogDebug) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
lw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)}
|
lw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)}
|
||||||
|
|
||||||
if r.HTTPResponse == nil {
|
if r.HTTPResponse == nil {
|
||||||
|
|
|
@ -438,13 +438,6 @@ func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
// MergeIn merges the passed in configs into the existing config object.
|
|
||||||
func (c *Config) MergeIn(cfgs ...*Config) {
|
|
||||||
for _, other := range cfgs {
|
|
||||||
mergeInConfig(c, other)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag
|
// WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag
|
||||||
// when resolving the endpoint for a service
|
// when resolving the endpoint for a service
|
||||||
func (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config {
|
func (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config {
|
||||||
|
@ -459,6 +452,27 @@ func (c *Config) WithS3UsEast1RegionalEndpoint(sre endpoints.S3UsEast1RegionalEn
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithLowerCaseHeaderMaps sets a config LowerCaseHeaderMaps value
|
||||||
|
// returning a Config pointer for chaining.
|
||||||
|
func (c *Config) WithLowerCaseHeaderMaps(t bool) *Config {
|
||||||
|
c.LowerCaseHeaderMaps = &t
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithDisableRestProtocolURICleaning sets a config DisableRestProtocolURICleaning value
|
||||||
|
// returning a Config pointer for chaining.
|
||||||
|
func (c *Config) WithDisableRestProtocolURICleaning(t bool) *Config {
|
||||||
|
c.DisableRestProtocolURICleaning = &t
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergeIn merges the passed in configs into the existing config object.
|
||||||
|
func (c *Config) MergeIn(cfgs ...*Config) {
|
||||||
|
for _, other := range cfgs {
|
||||||
|
mergeInConfig(c, other)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func mergeInConfig(dst *Config, other *Config) {
|
func mergeInConfig(dst *Config, other *Config) {
|
||||||
if other == nil {
|
if other == nil {
|
||||||
return
|
return
|
||||||
|
@ -571,6 +585,10 @@ func mergeInConfig(dst *Config, other *Config) {
|
||||||
if other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint {
|
if other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint {
|
||||||
dst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint
|
dst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if other.LowerCaseHeaderMaps != nil {
|
||||||
|
dst.LowerCaseHeaderMaps = other.LowerCaseHeaderMaps
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy will return a shallow copy of the Config object. If any additional
|
// Copy will return a shallow copy of the Config object. If any additional
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
// Package ssocreds provides a credential provider for retrieving temporary AWS credentials using an SSO access token.
|
||||||
|
//
|
||||||
|
// IMPORTANT: The provider in this package does not initiate or perform the AWS SSO login flow. The SDK provider
|
||||||
|
// expects that you have already performed the SSO login flow using AWS CLI using the "aws sso login" command, or by
|
||||||
|
// some other mechanism. The provider must find a valid non-expired access token for the AWS SSO user portal URL in
|
||||||
|
// ~/.aws/sso/cache. If a cached token is not found, it is expired, or the file is malformed an error will be returned.
|
||||||
|
//
|
||||||
|
// Loading AWS SSO credentials with the AWS shared configuration file
|
||||||
|
//
|
||||||
|
// You can use configure AWS SSO credentials from the AWS shared configuration file by
|
||||||
|
// providing the specifying the required keys in the profile:
|
||||||
|
//
|
||||||
|
// sso_account_id
|
||||||
|
// sso_region
|
||||||
|
// sso_role_name
|
||||||
|
// sso_start_url
|
||||||
|
//
|
||||||
|
// For example, the following defines a profile "devsso" and specifies the AWS SSO parameters that defines the target
|
||||||
|
// account, role, sign-on portal, and the region where the user portal is located. Note: all SSO arguments must be
|
||||||
|
// provided, or an error will be returned.
|
||||||
|
//
|
||||||
|
// [profile devsso]
|
||||||
|
// sso_start_url = https://my-sso-portal.awsapps.com/start
|
||||||
|
// sso_role_name = SSOReadOnlyRole
|
||||||
|
// sso_region = us-east-1
|
||||||
|
// sso_account_id = 123456789012
|
||||||
|
//
|
||||||
|
// Using the config module, you can load the AWS SDK shared configuration, and specify that this profile be used to
|
||||||
|
// retrieve credentials. For example:
|
||||||
|
//
|
||||||
|
// sess, err := session.NewSessionWithOptions(session.Options{
|
||||||
|
// SharedConfigState: session.SharedConfigEnable,
|
||||||
|
// Profile: "devsso",
|
||||||
|
// })
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Programmatically loading AWS SSO credentials directly
|
||||||
|
//
|
||||||
|
// You can programmatically construct the AWS SSO Provider in your application, and provide the necessary information
|
||||||
|
// to load and retrieve temporary credentials using an access token from ~/.aws/sso/cache.
|
||||||
|
//
|
||||||
|
// svc := sso.New(sess, &aws.Config{
|
||||||
|
// Region: aws.String("us-west-2"), // Client Region must correspond to the AWS SSO user portal region
|
||||||
|
// })
|
||||||
|
//
|
||||||
|
// provider := ssocreds.NewCredentialsWithClient(svc, "123456789012", "SSOReadOnlyRole", "https://my-sso-portal.awsapps.com/start")
|
||||||
|
//
|
||||||
|
// credentials, err := provider.Get()
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Additional Resources
|
||||||
|
//
|
||||||
|
// Configuring the AWS CLI to use AWS Single Sign-On: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
|
||||||
|
//
|
||||||
|
// AWS Single Sign-On User Guide: https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html
|
||||||
|
package ssocreds
|
|
@ -0,0 +1,9 @@
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
package ssocreds
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
func getHomeDirectory() string {
|
||||||
|
return os.Getenv("HOME")
|
||||||
|
}
|
7
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go
generated
vendored
Normal file
7
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go
generated
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package ssocreds
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
func getHomeDirectory() string {
|
||||||
|
return os.Getenv("USERPROFILE")
|
||||||
|
}
|
180
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go
generated
vendored
Normal file
180
vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go
generated
vendored
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
package ssocreds
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha1"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/client"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sso"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sso/ssoiface"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ErrCodeSSOProviderInvalidToken is the code type that is returned if loaded token has expired or is otherwise invalid.
|
||||||
|
// To refresh the SSO session run aws sso login with the corresponding profile.
|
||||||
|
const ErrCodeSSOProviderInvalidToken = "SSOProviderInvalidToken"
|
||||||
|
|
||||||
|
const invalidTokenMessage = "the SSO session has expired or is invalid"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
nowTime = time.Now
|
||||||
|
defaultCacheLocation = defaultCacheLocationImpl
|
||||||
|
}
|
||||||
|
|
||||||
|
var nowTime func() time.Time
|
||||||
|
|
||||||
|
// ProviderName is the name of the provider used to specify the source of credentials.
|
||||||
|
const ProviderName = "SSOProvider"
|
||||||
|
|
||||||
|
var defaultCacheLocation func() string
|
||||||
|
|
||||||
|
func defaultCacheLocationImpl() string {
|
||||||
|
return filepath.Join(getHomeDirectory(), ".aws", "sso", "cache")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Provider is an AWS credential provider that retrieves temporary AWS credentials by exchanging an SSO login token.
|
||||||
|
type Provider struct {
|
||||||
|
credentials.Expiry
|
||||||
|
|
||||||
|
// The Client which is configured for the AWS Region where the AWS SSO user portal is located.
|
||||||
|
Client ssoiface.SSOAPI
|
||||||
|
|
||||||
|
// The AWS account that is assigned to the user.
|
||||||
|
AccountID string
|
||||||
|
|
||||||
|
// The role name that is assigned to the user.
|
||||||
|
RoleName string
|
||||||
|
|
||||||
|
// The URL that points to the organization's AWS Single Sign-On (AWS SSO) user portal.
|
||||||
|
StartURL string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentials returns a new AWS Single Sign-On (AWS SSO) credential provider. The ConfigProvider is expected to be configured
|
||||||
|
// for the AWS Region where the AWS SSO user portal is located.
|
||||||
|
func NewCredentials(configProvider client.ConfigProvider, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials {
|
||||||
|
return NewCredentialsWithClient(sso.New(configProvider), accountID, roleName, startURL, optFns...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentialsWithClient returns a new AWS Single Sign-On (AWS SSO) credential provider. The provided client is expected to be configured
|
||||||
|
// for the AWS Region where the AWS SSO user portal is located.
|
||||||
|
func NewCredentialsWithClient(client ssoiface.SSOAPI, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials {
|
||||||
|
p := &Provider{
|
||||||
|
Client: client,
|
||||||
|
AccountID: accountID,
|
||||||
|
RoleName: roleName,
|
||||||
|
StartURL: startURL,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fn := range optFns {
|
||||||
|
fn(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentials.NewCredentials(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal
|
||||||
|
// by exchanging the accessToken present in ~/.aws/sso/cache.
|
||||||
|
func (p *Provider) Retrieve() (credentials.Value, error) {
|
||||||
|
return p.RetrieveWithContext(aws.BackgroundContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetrieveWithContext retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal
|
||||||
|
// by exchanging the accessToken present in ~/.aws/sso/cache.
|
||||||
|
func (p *Provider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) {
|
||||||
|
tokenFile, err := loadTokenFile(p.StartURL)
|
||||||
|
if err != nil {
|
||||||
|
return credentials.Value{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
output, err := p.Client.GetRoleCredentialsWithContext(ctx, &sso.GetRoleCredentialsInput{
|
||||||
|
AccessToken: &tokenFile.AccessToken,
|
||||||
|
AccountId: &p.AccountID,
|
||||||
|
RoleName: &p.RoleName,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return credentials.Value{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
expireTime := time.Unix(0, aws.Int64Value(output.RoleCredentials.Expiration)*int64(time.Millisecond)).UTC()
|
||||||
|
p.SetExpiration(expireTime, 0)
|
||||||
|
|
||||||
|
return credentials.Value{
|
||||||
|
AccessKeyID: aws.StringValue(output.RoleCredentials.AccessKeyId),
|
||||||
|
SecretAccessKey: aws.StringValue(output.RoleCredentials.SecretAccessKey),
|
||||||
|
SessionToken: aws.StringValue(output.RoleCredentials.SessionToken),
|
||||||
|
ProviderName: ProviderName,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCacheFileName(url string) (string, error) {
|
||||||
|
hash := sha1.New()
|
||||||
|
_, err := hash.Write([]byte(url))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return strings.ToLower(hex.EncodeToString(hash.Sum(nil))) + ".json", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type rfc3339 time.Time
|
||||||
|
|
||||||
|
func (r *rfc3339) UnmarshalJSON(bytes []byte) error {
|
||||||
|
var value string
|
||||||
|
|
||||||
|
if err := json.Unmarshal(bytes, &value); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
parse, err := time.Parse(time.RFC3339, value)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("expected RFC3339 timestamp: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
*r = rfc3339(parse)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type token struct {
|
||||||
|
AccessToken string `json:"accessToken"`
|
||||||
|
ExpiresAt rfc3339 `json:"expiresAt"`
|
||||||
|
Region string `json:"region,omitempty"`
|
||||||
|
StartURL string `json:"startUrl,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t token) Expired() bool {
|
||||||
|
return nowTime().Round(0).After(time.Time(t.ExpiresAt))
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadTokenFile(startURL string) (t token, err error) {
|
||||||
|
key, err := getCacheFileName(startURL)
|
||||||
|
if err != nil {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fileBytes, err := ioutil.ReadFile(filepath.Join(defaultCacheLocation(), key))
|
||||||
|
if err != nil {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(fileBytes, &t); err != nil {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(t.AccessToken) == 0 {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
if t.Expired() {
|
||||||
|
return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
return t, nil
|
||||||
|
}
|
14
vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go
generated
vendored
14
vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go
generated
vendored
|
@ -95,7 +95,7 @@ import (
|
||||||
// StdinTokenProvider will prompt on stderr and read from stdin for a string value.
|
// StdinTokenProvider will prompt on stderr and read from stdin for a string value.
|
||||||
// An error is returned if reading from stdin fails.
|
// An error is returned if reading from stdin fails.
|
||||||
//
|
//
|
||||||
// Use this function go read MFA tokens from stdin. The function makes no attempt
|
// Use this function to read MFA tokens from stdin. The function makes no attempt
|
||||||
// to make atomic prompts from stdin across multiple gorouties.
|
// to make atomic prompts from stdin across multiple gorouties.
|
||||||
//
|
//
|
||||||
// Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will
|
// Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will
|
||||||
|
@ -244,9 +244,11 @@ type AssumeRoleProvider struct {
|
||||||
MaxJitterFrac float64
|
MaxJitterFrac float64
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCredentials returns a pointer to a new Credentials object wrapping the
|
// NewCredentials returns a pointer to a new Credentials value wrapping the
|
||||||
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
||||||
// role will be named after a nanosecond timestamp of this operation.
|
// role will be named after a nanosecond timestamp of this operation. The
|
||||||
|
// Credentials value will attempt to refresh the credentials using the provider
|
||||||
|
// when Credentials.Get is called, if the cached credentials are expiring.
|
||||||
//
|
//
|
||||||
// Takes a Config provider to create the STS client. The ConfigProvider is
|
// Takes a Config provider to create the STS client. The ConfigProvider is
|
||||||
// satisfied by the session.Session type.
|
// satisfied by the session.Session type.
|
||||||
|
@ -268,9 +270,11 @@ func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*As
|
||||||
return credentials.NewCredentials(p)
|
return credentials.NewCredentials(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping the
|
// NewCredentialsWithClient returns a pointer to a new Credentials value wrapping the
|
||||||
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
// AssumeRoleProvider. The credentials will expire every 15 minutes and the
|
||||||
// role will be named after a nanosecond timestamp of this operation.
|
// role will be named after a nanosecond timestamp of this operation. The
|
||||||
|
// Credentials value will attempt to refresh the credentials using the provider
|
||||||
|
// when Credentials.Get is called, if the cached credentials are expiring.
|
||||||
//
|
//
|
||||||
// Takes an AssumeRoler which can be satisfied by the STS client.
|
// Takes an AssumeRoler which can be satisfied by the STS client.
|
||||||
//
|
//
|
||||||
|
|
|
@ -358,6 +358,22 @@ var awsPartition = partition{
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"amplifybackend": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-2": endpoint{},
|
||||||
|
"ap-south-1": endpoint{},
|
||||||
|
"ap-southeast-1": endpoint{},
|
||||||
|
"ap-southeast-2": endpoint{},
|
||||||
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
|
"eu-west-1": endpoint{},
|
||||||
|
"eu-west-2": endpoint{},
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-2": endpoint{},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"api.detective": service{
|
"api.detective": service{
|
||||||
Defaults: endpoint{
|
Defaults: endpoint{
|
||||||
Protocols: []string{"https"},
|
Protocols: []string{"https"},
|
||||||
|
@ -380,9 +396,33 @@ var awsPartition = partition{
|
||||||
"me-south-1": endpoint{},
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-1-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
"us-east-2-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-east-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-west-1": endpoint{},
|
"us-west-1": endpoint{},
|
||||||
|
"us-west-1-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "api.detective-fips.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"api.ecr": service{
|
"api.ecr": service{
|
||||||
|
@ -581,6 +621,12 @@ var awsPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"api.fleethub.iot": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"api.mediatailor": service{
|
"api.mediatailor": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -740,6 +786,7 @@ var awsPartition = partition{
|
||||||
"appmesh": service{
|
"appmesh": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -827,6 +874,30 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
"fips-us-east-1": endpoint{
|
||||||
|
Hostname: "athena-fips.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-us-east-2": endpoint{
|
||||||
|
Hostname: "athena-fips.us-east-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-us-west-1": endpoint{
|
||||||
|
Hostname: "athena-fips.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-us-west-2": endpoint{
|
||||||
|
Hostname: "athena-fips.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
"me-south-1": endpoint{},
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
@ -1231,6 +1302,7 @@ var awsPartition = partition{
|
||||||
"codebuild": service{
|
"codebuild": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -1355,9 +1427,25 @@ var awsPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"codeguru-reviewer": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-1": endpoint{},
|
||||||
|
"ap-southeast-1": endpoint{},
|
||||||
|
"ap-southeast-2": endpoint{},
|
||||||
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-west-1": endpoint{},
|
||||||
|
"eu-west-2": endpoint{},
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-2": endpoint{},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"codepipeline": service{
|
"codepipeline": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -1366,6 +1454,7 @@ var awsPartition = partition{
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-north-1": endpoint{},
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -1510,6 +1599,12 @@ var awsPartition = partition{
|
||||||
Region: "us-east-2",
|
Region: "us-east-2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"fips-us-west-1": endpoint{
|
||||||
|
Hostname: "cognito-idp-fips.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"fips-us-west-2": endpoint{
|
"fips-us-west-2": endpoint{
|
||||||
Hostname: "cognito-idp-fips.us-west-2.amazonaws.com",
|
Hostname: "cognito-idp-fips.us-west-2.amazonaws.com",
|
||||||
CredentialScope: credentialScope{
|
CredentialScope: credentialScope{
|
||||||
|
@ -3006,6 +3101,7 @@ var awsPartition = partition{
|
||||||
"fsx": service{
|
"fsx": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -3015,9 +3111,41 @@ var awsPartition = partition{
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-north-1": endpoint{},
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
"fips-prod-ca-central-1": endpoint{
|
||||||
|
Hostname: "fsx-fips.ca-central-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ca-central-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-prod-us-east-1": endpoint{
|
||||||
|
Hostname: "fsx-fips.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-prod-us-east-2": endpoint{
|
||||||
|
Hostname: "fsx-fips.us-east-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-prod-us-west-1": endpoint{
|
||||||
|
Hostname: "fsx-fips.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-prod-us-west-2": endpoint{
|
||||||
|
Hostname: "fsx-fips.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
@ -3520,6 +3648,23 @@ var awsPartition = partition{
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"iotwireless": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"eu-west-1": endpoint{
|
||||||
|
Hostname: "api.iotwireless.eu-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "eu-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-east-1": endpoint{
|
||||||
|
Hostname: "api.iotwireless.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"kafka": service{
|
"kafka": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3665,6 +3810,7 @@ var awsPartition = partition{
|
||||||
"lakeformation": service{
|
"lakeformation": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -3914,6 +4060,7 @@ var awsPartition = partition{
|
||||||
"macie2": service{
|
"macie2": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -3923,6 +4070,7 @@ var awsPartition = partition{
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-north-1": endpoint{},
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -3950,6 +4098,7 @@ var awsPartition = partition{
|
||||||
Region: "us-west-2",
|
Region: "us-west-2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
@ -4177,7 +4326,19 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-1-fips": endpoint{
|
||||||
|
Hostname: "models-fips.lex.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "models-fips.lex.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"monitoring": service{
|
"monitoring": service{
|
||||||
|
@ -5091,7 +5252,19 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-1-fips": endpoint{
|
||||||
|
Hostname: "runtime-fips.lex.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "runtime-fips.lex.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"runtime.sagemaker": service{
|
"runtime.sagemaker": service{
|
||||||
|
@ -5636,6 +5809,7 @@ var awsPartition = partition{
|
||||||
"servicediscovery": service{
|
"servicediscovery": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"af-south-1": endpoint{},
|
||||||
"ap-east-1": endpoint{},
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
@ -5645,6 +5819,7 @@ var awsPartition = partition{
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-north-1": endpoint{},
|
"eu-north-1": endpoint{},
|
||||||
|
"eu-south-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -6407,6 +6582,7 @@ var awsPartition = partition{
|
||||||
"transfer": service{
|
"transfer": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -6448,6 +6624,7 @@ var awsPartition = partition{
|
||||||
Region: "us-west-2",
|
Region: "us-west-2",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
@ -7296,6 +7473,16 @@ var awscnPartition = partition{
|
||||||
"cn-north-1": endpoint{},
|
"cn-north-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"guardduty": service{
|
||||||
|
IsRegionalized: boxedTrue,
|
||||||
|
Defaults: endpoint{
|
||||||
|
Protocols: []string{"https"},
|
||||||
|
},
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{},
|
||||||
|
"cn-northwest-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"health": service{
|
"health": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -8170,6 +8357,12 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"connect": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"datasync": service{
|
"datasync": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -8495,6 +8688,25 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"fsx": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"fips-prod-us-gov-east-1": endpoint{
|
||||||
|
Hostname: "fsx-fips.us-gov-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"fips-prod-us-gov-west-1": endpoint{
|
||||||
|
Hostname: "fsx-fips.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-gov-east-1": endpoint{},
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"glacier": service{
|
"glacier": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -8556,7 +8768,12 @@ var awsusgovPartition = partition{
|
||||||
Region: "us-gov-east-1",
|
Region: "us-gov-east-1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"us-gov-east-1": endpoint{},
|
"us-gov-east-1": endpoint{
|
||||||
|
Hostname: "greengrass.us-gov-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-gov-west-1": endpoint{
|
"us-gov-west-1": endpoint{
|
||||||
Hostname: "greengrass.us-gov-west-1.amazonaws.com",
|
Hostname: "greengrass.us-gov-west-1.amazonaws.com",
|
||||||
CredentialScope: credentialScope{
|
CredentialScope: credentialScope{
|
||||||
|
@ -8787,6 +9004,22 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"models.lex": service{
|
||||||
|
Defaults: endpoint{
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Service: "lex",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
"us-gov-west-1-fips": endpoint{
|
||||||
|
Hostname: "models-fips.lex.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"monitoring": service{
|
"monitoring": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -8992,10 +9225,32 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"runtime.lex": service{
|
||||||
|
Defaults: endpoint{
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Service: "lex",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
"us-gov-west-1-fips": endpoint{
|
||||||
|
Hostname: "runtime-fips.lex.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"runtime.sagemaker": service{
|
"runtime.sagemaker": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
|
"us-gov-west-1-fips": endpoint{
|
||||||
|
Hostname: "runtime.sagemaker.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"s3": service{
|
"s3": service{
|
||||||
|
@ -9406,12 +9661,24 @@ var awsusgovPartition = partition{
|
||||||
"waf-regional": service{
|
"waf-regional": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"fips-us-gov-east-1": endpoint{
|
||||||
|
Hostname: "waf-regional-fips.us-gov-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"fips-us-gov-west-1": endpoint{
|
"fips-us-gov-west-1": endpoint{
|
||||||
Hostname: "waf-regional-fips.us-gov-west-1.amazonaws.com",
|
Hostname: "waf-regional-fips.us-gov-west-1.amazonaws.com",
|
||||||
CredentialScope: credentialScope{
|
CredentialScope: credentialScope{
|
||||||
Region: "us-gov-west-1",
|
Region: "us-gov-west-1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"us-gov-east-1": endpoint{
|
||||||
|
Hostname: "waf-regional.us-gov-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-gov-west-1": endpoint{
|
"us-gov-west-1": endpoint{
|
||||||
Hostname: "waf-regional.us-gov-west-1.amazonaws.com",
|
Hostname: "waf-regional.us-gov-west-1.amazonaws.com",
|
||||||
CredentialScope: credentialScope{
|
CredentialScope: credentialScope{
|
||||||
|
@ -9703,12 +9970,30 @@ var awsisoPartition = partition{
|
||||||
"us-iso-east-1": endpoint{},
|
"us-iso-east-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"medialive": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"mediapackage": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"monitoring": service{
|
"monitoring": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
"us-iso-east-1": endpoint{},
|
"us-iso-east-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"outposts": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"rds": service{
|
"rds": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -9751,6 +10036,12 @@ var awsisoPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"secretsmanager": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"snowball": service{
|
"snowball": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -9773,6 +10064,12 @@ var awsisoPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"ssm": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-iso-east-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"states": service{
|
"states": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
|
|
@ -9,6 +9,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/credentials"
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/processcreds"
|
"github.com/aws/aws-sdk-go/aws/credentials/processcreds"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials/ssocreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/defaults"
|
"github.com/aws/aws-sdk-go/aws/defaults"
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
@ -100,6 +101,9 @@ func resolveCredsFromProfile(cfg *aws.Config,
|
||||||
sharedCfg.Creds,
|
sharedCfg.Creds,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
case sharedCfg.hasSSOConfiguration():
|
||||||
|
creds, err = resolveSSOCredentials(cfg, sharedCfg, handlers)
|
||||||
|
|
||||||
case len(sharedCfg.CredentialProcess) != 0:
|
case len(sharedCfg.CredentialProcess) != 0:
|
||||||
// Get credentials from CredentialProcess
|
// Get credentials from CredentialProcess
|
||||||
creds = processcreds.NewCredentials(sharedCfg.CredentialProcess)
|
creds = processcreds.NewCredentials(sharedCfg.CredentialProcess)
|
||||||
|
@ -151,6 +155,25 @@ func resolveCredsFromProfile(cfg *aws.Config,
|
||||||
return creds, nil
|
return creds, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func resolveSSOCredentials(cfg *aws.Config, sharedCfg sharedConfig, handlers request.Handlers) (*credentials.Credentials, error) {
|
||||||
|
if err := sharedCfg.validateSSOConfiguration(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
cfgCopy := cfg.Copy()
|
||||||
|
cfgCopy.Region = &sharedCfg.SSORegion
|
||||||
|
|
||||||
|
return ssocreds.NewCredentials(
|
||||||
|
&Session{
|
||||||
|
Config: cfgCopy,
|
||||||
|
Handlers: handlers.Copy(),
|
||||||
|
},
|
||||||
|
sharedCfg.SSOAccountID,
|
||||||
|
sharedCfg.SSORoleName,
|
||||||
|
sharedCfg.SSOStartURL,
|
||||||
|
), nil
|
||||||
|
}
|
||||||
|
|
||||||
// valid credential source values
|
// valid credential source values
|
||||||
const (
|
const (
|
||||||
credSourceEc2Metadata = "Ec2InstanceMetadata"
|
credSourceEc2Metadata = "Ec2InstanceMetadata"
|
||||||
|
|
|
@ -36,7 +36,7 @@ const (
|
||||||
|
|
||||||
// ErrSharedConfigSourceCollision will be returned if a section contains both
|
// ErrSharedConfigSourceCollision will be returned if a section contains both
|
||||||
// source_profile and credential_source
|
// source_profile and credential_source
|
||||||
var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only source profile or credential source can be specified, not both", nil)
|
var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only one credential type may be specified per profile: source profile, credential source, credential process, web identity token, or sso", nil)
|
||||||
|
|
||||||
// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment
|
// ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment
|
||||||
// variables are empty and Environment was set as the credential source
|
// variables are empty and Environment was set as the credential source
|
||||||
|
|
|
@ -2,6 +2,7 @@ package session
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
@ -25,6 +26,12 @@ const (
|
||||||
roleSessionNameKey = `role_session_name` // optional
|
roleSessionNameKey = `role_session_name` // optional
|
||||||
roleDurationSecondsKey = "duration_seconds" // optional
|
roleDurationSecondsKey = "duration_seconds" // optional
|
||||||
|
|
||||||
|
// AWS Single Sign-On (AWS SSO) group
|
||||||
|
ssoAccountIDKey = "sso_account_id"
|
||||||
|
ssoRegionKey = "sso_region"
|
||||||
|
ssoRoleNameKey = "sso_role_name"
|
||||||
|
ssoStartURL = "sso_start_url"
|
||||||
|
|
||||||
// CSM options
|
// CSM options
|
||||||
csmEnabledKey = `csm_enabled`
|
csmEnabledKey = `csm_enabled`
|
||||||
csmHostKey = `csm_host`
|
csmHostKey = `csm_host`
|
||||||
|
@ -63,6 +70,8 @@ const (
|
||||||
|
|
||||||
// sharedConfig represents the configuration fields of the SDK config files.
|
// sharedConfig represents the configuration fields of the SDK config files.
|
||||||
type sharedConfig struct {
|
type sharedConfig struct {
|
||||||
|
Profile string
|
||||||
|
|
||||||
// Credentials values from the config file. Both aws_access_key_id and
|
// Credentials values from the config file. Both aws_access_key_id and
|
||||||
// aws_secret_access_key must be provided together in the same file to be
|
// aws_secret_access_key must be provided together in the same file to be
|
||||||
// considered valid. The values will be ignored if not a complete group.
|
// considered valid. The values will be ignored if not a complete group.
|
||||||
|
@ -78,6 +87,11 @@ type sharedConfig struct {
|
||||||
CredentialProcess string
|
CredentialProcess string
|
||||||
WebIdentityTokenFile string
|
WebIdentityTokenFile string
|
||||||
|
|
||||||
|
SSOAccountID string
|
||||||
|
SSORegion string
|
||||||
|
SSORoleName string
|
||||||
|
SSOStartURL string
|
||||||
|
|
||||||
RoleARN string
|
RoleARN string
|
||||||
RoleSessionName string
|
RoleSessionName string
|
||||||
ExternalID string
|
ExternalID string
|
||||||
|
@ -189,6 +203,8 @@ func loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile string, files []sharedConfigFile, exOpts bool) error {
|
func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile string, files []sharedConfigFile, exOpts bool) error {
|
||||||
|
cfg.Profile = profile
|
||||||
|
|
||||||
// Trim files from the list that don't exist.
|
// Trim files from the list that don't exist.
|
||||||
var skippedFiles int
|
var skippedFiles int
|
||||||
var profileNotFoundErr error
|
var profileNotFoundErr error
|
||||||
|
@ -217,9 +233,9 @@ func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile s
|
||||||
cfg.clearAssumeRoleOptions()
|
cfg.clearAssumeRoleOptions()
|
||||||
} else {
|
} else {
|
||||||
// First time a profile has been seen, It must either be a assume role
|
// First time a profile has been seen, It must either be a assume role
|
||||||
// or credentials. Assert if the credential type requires a role ARN,
|
// credentials, or SSO. Assert if the credential type requires a role ARN,
|
||||||
// the ARN is also set.
|
// the ARN is also set, or validate that the SSO configuration is complete.
|
||||||
if err := cfg.validateCredentialsRequireARN(profile); err != nil {
|
if err := cfg.validateCredentialsConfig(profile); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -312,6 +328,12 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, e
|
||||||
}
|
}
|
||||||
cfg.S3UsEast1RegionalEndpoint = sre
|
cfg.S3UsEast1RegionalEndpoint = sre
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AWS Single Sign-On (AWS SSO)
|
||||||
|
updateString(&cfg.SSOAccountID, section, ssoAccountIDKey)
|
||||||
|
updateString(&cfg.SSORegion, section, ssoRegionKey)
|
||||||
|
updateString(&cfg.SSORoleName, section, ssoRoleNameKey)
|
||||||
|
updateString(&cfg.SSOStartURL, section, ssoStartURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
updateString(&cfg.CredentialProcess, section, credentialProcessKey)
|
updateString(&cfg.CredentialProcess, section, credentialProcessKey)
|
||||||
|
@ -342,6 +364,14 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, e
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *sharedConfig) validateCredentialsConfig(profile string) error {
|
||||||
|
if err := cfg.validateCredentialsRequireARN(profile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error {
|
func (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error {
|
||||||
var credSource string
|
var credSource string
|
||||||
|
|
||||||
|
@ -371,6 +401,7 @@ func (cfg *sharedConfig) validateCredentialType() error {
|
||||||
len(cfg.CredentialSource) != 0,
|
len(cfg.CredentialSource) != 0,
|
||||||
len(cfg.CredentialProcess) != 0,
|
len(cfg.CredentialProcess) != 0,
|
||||||
len(cfg.WebIdentityTokenFile) != 0,
|
len(cfg.WebIdentityTokenFile) != 0,
|
||||||
|
cfg.hasSSOConfiguration(),
|
||||||
) {
|
) {
|
||||||
return ErrSharedConfigSourceCollision
|
return ErrSharedConfigSourceCollision
|
||||||
}
|
}
|
||||||
|
@ -378,12 +409,43 @@ func (cfg *sharedConfig) validateCredentialType() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *sharedConfig) validateSSOConfiguration() error {
|
||||||
|
if !cfg.hasSSOConfiguration() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var missing []string
|
||||||
|
if len(cfg.SSOAccountID) == 0 {
|
||||||
|
missing = append(missing, ssoAccountIDKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(cfg.SSORegion) == 0 {
|
||||||
|
missing = append(missing, ssoRegionKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(cfg.SSORoleName) == 0 {
|
||||||
|
missing = append(missing, ssoRoleNameKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(cfg.SSOStartURL) == 0 {
|
||||||
|
missing = append(missing, ssoStartURL)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(missing) > 0 {
|
||||||
|
return fmt.Errorf("profile %q is configured to use SSO but is missing required configuration: %s",
|
||||||
|
cfg.Profile, strings.Join(missing, ", "))
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (cfg *sharedConfig) hasCredentials() bool {
|
func (cfg *sharedConfig) hasCredentials() bool {
|
||||||
switch {
|
switch {
|
||||||
case len(cfg.SourceProfileName) != 0:
|
case len(cfg.SourceProfileName) != 0:
|
||||||
case len(cfg.CredentialSource) != 0:
|
case len(cfg.CredentialSource) != 0:
|
||||||
case len(cfg.CredentialProcess) != 0:
|
case len(cfg.CredentialProcess) != 0:
|
||||||
case len(cfg.WebIdentityTokenFile) != 0:
|
case len(cfg.WebIdentityTokenFile) != 0:
|
||||||
|
case cfg.hasSSOConfiguration():
|
||||||
case cfg.Creds.HasKeys():
|
case cfg.Creds.HasKeys():
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
|
@ -407,6 +469,18 @@ func (cfg *sharedConfig) clearAssumeRoleOptions() {
|
||||||
cfg.SourceProfileName = ""
|
cfg.SourceProfileName = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cfg *sharedConfig) hasSSOConfiguration() bool {
|
||||||
|
switch {
|
||||||
|
case len(cfg.SSOAccountID) != 0:
|
||||||
|
case len(cfg.SSORegion) != 0:
|
||||||
|
case len(cfg.SSORoleName) != 0:
|
||||||
|
case len(cfg.SSOStartURL) != 0:
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func oneOrNone(bs ...bool) bool {
|
func oneOrNone(bs ...bool) bool {
|
||||||
var count int
|
var count int
|
||||||
|
|
||||||
|
|
|
@ -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 = "1.36.5"
|
const SDKVersion = "1.37.15"
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package protocol
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"net"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ValidateEndpointHostHandler is a request handler that will validate the
|
// ValidateEndpointHostHandler is a request handler that will validate the
|
||||||
|
@ -22,8 +23,26 @@ var ValidateEndpointHostHandler = request.NamedHandler{
|
||||||
// 3986 host. Returns error if the host is not valid.
|
// 3986 host. Returns error if the host is not valid.
|
||||||
func ValidateEndpointHost(opName, host string) error {
|
func ValidateEndpointHost(opName, host string) error {
|
||||||
paramErrs := request.ErrInvalidParams{Context: opName}
|
paramErrs := request.ErrInvalidParams{Context: opName}
|
||||||
labels := strings.Split(host, ".")
|
|
||||||
|
|
||||||
|
var hostname string
|
||||||
|
var port string
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if strings.Contains(host, ":") {
|
||||||
|
hostname, port, err = net.SplitHostPort(host)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
paramErrs.Add(request.NewErrParamFormat("endpoint", err.Error(), host))
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ValidPortNumber(port) {
|
||||||
|
paramErrs.Add(request.NewErrParamFormat("endpoint port number", "[0-65535]", port))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
hostname = host
|
||||||
|
}
|
||||||
|
|
||||||
|
labels := strings.Split(hostname, ".")
|
||||||
for i, label := range labels {
|
for i, label := range labels {
|
||||||
if i == len(labels)-1 && len(label) == 0 {
|
if i == len(labels)-1 && len(label) == 0 {
|
||||||
// Allow trailing dot for FQDN hosts.
|
// Allow trailing dot for FQDN hosts.
|
||||||
|
@ -36,7 +55,11 @@ func ValidateEndpointHost(opName, host string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(host) > 255 {
|
if len(hostname) == 0 {
|
||||||
|
paramErrs.Add(request.NewErrParamMinLen("endpoint host", 1))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(hostname) > 255 {
|
||||||
paramErrs.Add(request.NewErrParamMaxLen(
|
paramErrs.Add(request.NewErrParamMaxLen(
|
||||||
"endpoint host", 255, host,
|
"endpoint host", 255, host,
|
||||||
))
|
))
|
||||||
|
@ -66,3 +89,16 @@ func ValidHostLabel(label string) bool {
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidPortNumber return if the port is valid RFC 3986 port
|
||||||
|
func ValidPortNumber(port string) bool {
|
||||||
|
i, err := strconv.Atoi(port)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if i < 0 || i > 65535 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
59
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go
generated
vendored
Normal file
59
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
// Package restjson provides RESTful JSON serialization of AWS
|
||||||
|
// requests and responses.
|
||||||
|
package restjson
|
||||||
|
|
||||||
|
//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/rest-json.json build_test.go
|
||||||
|
//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/rest-json.json unmarshal_test.go
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BuildHandler is a named request handler for building restjson protocol
|
||||||
|
// requests
|
||||||
|
var BuildHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.Build",
|
||||||
|
Fn: Build,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalHandler is a named request handler for unmarshaling restjson
|
||||||
|
// protocol requests
|
||||||
|
var UnmarshalHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.Unmarshal",
|
||||||
|
Fn: Unmarshal,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMetaHandler is a named request handler for unmarshaling restjson
|
||||||
|
// protocol request metadata
|
||||||
|
var UnmarshalMetaHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.UnmarshalMeta",
|
||||||
|
Fn: UnmarshalMeta,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build builds a request for the REST JSON protocol.
|
||||||
|
func Build(r *request.Request) {
|
||||||
|
rest.Build(r)
|
||||||
|
|
||||||
|
if t := rest.PayloadType(r.Params); t == "structure" || t == "" {
|
||||||
|
if v := r.HTTPRequest.Header.Get("Content-Type"); len(v) == 0 {
|
||||||
|
r.HTTPRequest.Header.Set("Content-Type", "application/json")
|
||||||
|
}
|
||||||
|
jsonrpc.Build(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal unmarshals a response body for the REST JSON protocol.
|
||||||
|
func Unmarshal(r *request.Request) {
|
||||||
|
if t := rest.PayloadType(r.Data); t == "structure" || t == "" {
|
||||||
|
jsonrpc.Unmarshal(r)
|
||||||
|
} else {
|
||||||
|
rest.Unmarshal(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMeta unmarshals response headers for the REST JSON protocol.
|
||||||
|
func UnmarshalMeta(r *request.Request) {
|
||||||
|
rest.UnmarshalMeta(r)
|
||||||
|
}
|
134
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go
generated
vendored
Normal file
134
vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go
generated
vendored
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
package restjson
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/json/jsonutil"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
errorTypeHeader = "X-Amzn-Errortype"
|
||||||
|
errorMessageHeader = "X-Amzn-Errormessage"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UnmarshalTypedError provides unmarshaling errors API response errors
|
||||||
|
// for both typed and untyped errors.
|
||||||
|
type UnmarshalTypedError struct {
|
||||||
|
exceptions map[string]func(protocol.ResponseMetadata) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewUnmarshalTypedError returns an UnmarshalTypedError initialized for the
|
||||||
|
// set of exception names to the error unmarshalers
|
||||||
|
func NewUnmarshalTypedError(exceptions map[string]func(protocol.ResponseMetadata) error) *UnmarshalTypedError {
|
||||||
|
return &UnmarshalTypedError{
|
||||||
|
exceptions: exceptions,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError attempts to unmarshal the HTTP response error as a known
|
||||||
|
// error type. If unable to unmarshal the error type, the generic SDK error
|
||||||
|
// type will be used.
|
||||||
|
func (u *UnmarshalTypedError) UnmarshalError(
|
||||||
|
resp *http.Response,
|
||||||
|
respMeta protocol.ResponseMetadata,
|
||||||
|
) (error, error) {
|
||||||
|
|
||||||
|
code := resp.Header.Get(errorTypeHeader)
|
||||||
|
msg := resp.Header.Get(errorMessageHeader)
|
||||||
|
|
||||||
|
body := resp.Body
|
||||||
|
if len(code) == 0 {
|
||||||
|
// If unable to get code from HTTP headers have to parse JSON message
|
||||||
|
// to determine what kind of exception this will be.
|
||||||
|
var buf bytes.Buffer
|
||||||
|
var jsonErr jsonErrorResponse
|
||||||
|
teeReader := io.TeeReader(resp.Body, &buf)
|
||||||
|
err := jsonutil.UnmarshalJSONError(&jsonErr, teeReader)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
body = ioutil.NopCloser(&buf)
|
||||||
|
code = jsonErr.Code
|
||||||
|
msg = jsonErr.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
// If code has colon separators remove them so can compare against modeled
|
||||||
|
// exception names.
|
||||||
|
code = strings.SplitN(code, ":", 2)[0]
|
||||||
|
|
||||||
|
if fn, ok := u.exceptions[code]; ok {
|
||||||
|
// If exception code is know, use associated constructor to get a value
|
||||||
|
// for the exception that the JSON body can be unmarshaled into.
|
||||||
|
v := fn(respMeta)
|
||||||
|
if err := jsonutil.UnmarshalJSONCaseInsensitive(v, body); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rest.UnmarshalResponse(resp, v, true); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// fallback to unmodeled generic exceptions
|
||||||
|
return awserr.NewRequestFailure(
|
||||||
|
awserr.New(code, msg, nil),
|
||||||
|
respMeta.StatusCode,
|
||||||
|
respMeta.RequestID,
|
||||||
|
), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalErrorHandler is a named request handler for unmarshaling restjson
|
||||||
|
// protocol request errors
|
||||||
|
var UnmarshalErrorHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.restjson.UnmarshalError",
|
||||||
|
Fn: UnmarshalError,
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError unmarshals a response error for the REST JSON protocol.
|
||||||
|
func UnmarshalError(r *request.Request) {
|
||||||
|
defer r.HTTPResponse.Body.Close()
|
||||||
|
|
||||||
|
var jsonErr jsonErrorResponse
|
||||||
|
err := jsonutil.UnmarshalJSONError(&jsonErr, r.HTTPResponse.Body)
|
||||||
|
if err != nil {
|
||||||
|
r.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(request.ErrCodeSerialization,
|
||||||
|
"failed to unmarshal response error", err),
|
||||||
|
r.HTTPResponse.StatusCode,
|
||||||
|
r.RequestID,
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
code := r.HTTPResponse.Header.Get(errorTypeHeader)
|
||||||
|
if code == "" {
|
||||||
|
code = jsonErr.Code
|
||||||
|
}
|
||||||
|
msg := r.HTTPResponse.Header.Get(errorMessageHeader)
|
||||||
|
if msg == "" {
|
||||||
|
msg = jsonErr.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
code = strings.SplitN(code, ":", 2)[0]
|
||||||
|
r.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(code, jsonErr.Message, nil),
|
||||||
|
r.HTTPResponse.StatusCode,
|
||||||
|
r.RequestID,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
type jsonErrorResponse struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -4,8 +4,14 @@
|
||||||
// requests to Amazon Elastic Compute Cloud.
|
// requests to Amazon Elastic Compute Cloud.
|
||||||
//
|
//
|
||||||
// Amazon Elastic Compute Cloud (Amazon EC2) provides secure and resizable computing
|
// Amazon Elastic Compute Cloud (Amazon EC2) provides secure and resizable computing
|
||||||
// capacity in the AWS cloud. Using Amazon EC2 eliminates the need to invest
|
// capacity in the AWS Cloud. Using Amazon EC2 eliminates the need to invest
|
||||||
// in hardware up front, so you can develop and deploy applications faster.
|
// in hardware up front, so you can develop and deploy applications faster.
|
||||||
|
// Amazon Virtual Private Cloud (Amazon VPC) enables you to provision a logically
|
||||||
|
// isolated section of the AWS Cloud where you can launch AWS resources in a
|
||||||
|
// virtual network that you've defined. Amazon Elastic Block Store (Amazon EBS)
|
||||||
|
// provides block level storage volumes for use with EC2 instances. EBS volumes
|
||||||
|
// are highly available and reliable storage volumes that can be attached to
|
||||||
|
// any running instance and used like a hard drive.
|
||||||
//
|
//
|
||||||
// To learn more, see the following resources:
|
// To learn more, see the following resources:
|
||||||
//
|
//
|
||||||
|
@ -13,7 +19,7 @@
|
||||||
// EC2 documentation (http://aws.amazon.com/documentation/ec2)
|
// EC2 documentation (http://aws.amazon.com/documentation/ec2)
|
||||||
//
|
//
|
||||||
// * Amazon EBS: Amazon EBS product page (http://aws.amazon.com/ebs), Amazon
|
// * Amazon EBS: Amazon EBS product page (http://aws.amazon.com/ebs), Amazon
|
||||||
// EBS documentation (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)
|
// EBS documentation (http://aws.amazon.com/documentation/ebs)
|
||||||
//
|
//
|
||||||
// * Amazon VPC: Amazon VPC product page (http://aws.amazon.com/vpc), Amazon
|
// * Amazon VPC: Amazon VPC product page (http://aws.amazon.com/vpc), Amazon
|
||||||
// VPC documentation (http://aws.amazon.com/documentation/vpc)
|
// VPC documentation (http://aws.amazon.com/documentation/vpc)
|
||||||
|
|
|
@ -64,6 +64,10 @@ type EC2API interface {
|
||||||
AcceptReservedInstancesExchangeQuoteWithContext(aws.Context, *ec2.AcceptReservedInstancesExchangeQuoteInput, ...request.Option) (*ec2.AcceptReservedInstancesExchangeQuoteOutput, error)
|
AcceptReservedInstancesExchangeQuoteWithContext(aws.Context, *ec2.AcceptReservedInstancesExchangeQuoteInput, ...request.Option) (*ec2.AcceptReservedInstancesExchangeQuoteOutput, error)
|
||||||
AcceptReservedInstancesExchangeQuoteRequest(*ec2.AcceptReservedInstancesExchangeQuoteInput) (*request.Request, *ec2.AcceptReservedInstancesExchangeQuoteOutput)
|
AcceptReservedInstancesExchangeQuoteRequest(*ec2.AcceptReservedInstancesExchangeQuoteInput) (*request.Request, *ec2.AcceptReservedInstancesExchangeQuoteOutput)
|
||||||
|
|
||||||
|
AcceptTransitGatewayMulticastDomainAssociations(*ec2.AcceptTransitGatewayMulticastDomainAssociationsInput) (*ec2.AcceptTransitGatewayMulticastDomainAssociationsOutput, error)
|
||||||
|
AcceptTransitGatewayMulticastDomainAssociationsWithContext(aws.Context, *ec2.AcceptTransitGatewayMulticastDomainAssociationsInput, ...request.Option) (*ec2.AcceptTransitGatewayMulticastDomainAssociationsOutput, error)
|
||||||
|
AcceptTransitGatewayMulticastDomainAssociationsRequest(*ec2.AcceptTransitGatewayMulticastDomainAssociationsInput) (*request.Request, *ec2.AcceptTransitGatewayMulticastDomainAssociationsOutput)
|
||||||
|
|
||||||
AcceptTransitGatewayPeeringAttachment(*ec2.AcceptTransitGatewayPeeringAttachmentInput) (*ec2.AcceptTransitGatewayPeeringAttachmentOutput, error)
|
AcceptTransitGatewayPeeringAttachment(*ec2.AcceptTransitGatewayPeeringAttachmentInput) (*ec2.AcceptTransitGatewayPeeringAttachmentOutput, error)
|
||||||
AcceptTransitGatewayPeeringAttachmentWithContext(aws.Context, *ec2.AcceptTransitGatewayPeeringAttachmentInput, ...request.Option) (*ec2.AcceptTransitGatewayPeeringAttachmentOutput, error)
|
AcceptTransitGatewayPeeringAttachmentWithContext(aws.Context, *ec2.AcceptTransitGatewayPeeringAttachmentInput, ...request.Option) (*ec2.AcceptTransitGatewayPeeringAttachmentOutput, error)
|
||||||
AcceptTransitGatewayPeeringAttachmentRequest(*ec2.AcceptTransitGatewayPeeringAttachmentInput) (*request.Request, *ec2.AcceptTransitGatewayPeeringAttachmentOutput)
|
AcceptTransitGatewayPeeringAttachmentRequest(*ec2.AcceptTransitGatewayPeeringAttachmentInput) (*request.Request, *ec2.AcceptTransitGatewayPeeringAttachmentOutput)
|
||||||
|
@ -324,6 +328,10 @@ type EC2API interface {
|
||||||
CreateNetworkAclEntryWithContext(aws.Context, *ec2.CreateNetworkAclEntryInput, ...request.Option) (*ec2.CreateNetworkAclEntryOutput, error)
|
CreateNetworkAclEntryWithContext(aws.Context, *ec2.CreateNetworkAclEntryInput, ...request.Option) (*ec2.CreateNetworkAclEntryOutput, error)
|
||||||
CreateNetworkAclEntryRequest(*ec2.CreateNetworkAclEntryInput) (*request.Request, *ec2.CreateNetworkAclEntryOutput)
|
CreateNetworkAclEntryRequest(*ec2.CreateNetworkAclEntryInput) (*request.Request, *ec2.CreateNetworkAclEntryOutput)
|
||||||
|
|
||||||
|
CreateNetworkInsightsPath(*ec2.CreateNetworkInsightsPathInput) (*ec2.CreateNetworkInsightsPathOutput, error)
|
||||||
|
CreateNetworkInsightsPathWithContext(aws.Context, *ec2.CreateNetworkInsightsPathInput, ...request.Option) (*ec2.CreateNetworkInsightsPathOutput, error)
|
||||||
|
CreateNetworkInsightsPathRequest(*ec2.CreateNetworkInsightsPathInput) (*request.Request, *ec2.CreateNetworkInsightsPathOutput)
|
||||||
|
|
||||||
CreateNetworkInterface(*ec2.CreateNetworkInterfaceInput) (*ec2.CreateNetworkInterfaceOutput, error)
|
CreateNetworkInterface(*ec2.CreateNetworkInterfaceInput) (*ec2.CreateNetworkInterfaceOutput, error)
|
||||||
CreateNetworkInterfaceWithContext(aws.Context, *ec2.CreateNetworkInterfaceInput, ...request.Option) (*ec2.CreateNetworkInterfaceOutput, error)
|
CreateNetworkInterfaceWithContext(aws.Context, *ec2.CreateNetworkInterfaceInput, ...request.Option) (*ec2.CreateNetworkInterfaceOutput, error)
|
||||||
CreateNetworkInterfaceRequest(*ec2.CreateNetworkInterfaceInput) (*request.Request, *ec2.CreateNetworkInterfaceOutput)
|
CreateNetworkInterfaceRequest(*ec2.CreateNetworkInterfaceInput) (*request.Request, *ec2.CreateNetworkInterfaceOutput)
|
||||||
|
@ -392,6 +400,14 @@ type EC2API interface {
|
||||||
CreateTransitGatewayWithContext(aws.Context, *ec2.CreateTransitGatewayInput, ...request.Option) (*ec2.CreateTransitGatewayOutput, error)
|
CreateTransitGatewayWithContext(aws.Context, *ec2.CreateTransitGatewayInput, ...request.Option) (*ec2.CreateTransitGatewayOutput, error)
|
||||||
CreateTransitGatewayRequest(*ec2.CreateTransitGatewayInput) (*request.Request, *ec2.CreateTransitGatewayOutput)
|
CreateTransitGatewayRequest(*ec2.CreateTransitGatewayInput) (*request.Request, *ec2.CreateTransitGatewayOutput)
|
||||||
|
|
||||||
|
CreateTransitGatewayConnect(*ec2.CreateTransitGatewayConnectInput) (*ec2.CreateTransitGatewayConnectOutput, error)
|
||||||
|
CreateTransitGatewayConnectWithContext(aws.Context, *ec2.CreateTransitGatewayConnectInput, ...request.Option) (*ec2.CreateTransitGatewayConnectOutput, error)
|
||||||
|
CreateTransitGatewayConnectRequest(*ec2.CreateTransitGatewayConnectInput) (*request.Request, *ec2.CreateTransitGatewayConnectOutput)
|
||||||
|
|
||||||
|
CreateTransitGatewayConnectPeer(*ec2.CreateTransitGatewayConnectPeerInput) (*ec2.CreateTransitGatewayConnectPeerOutput, error)
|
||||||
|
CreateTransitGatewayConnectPeerWithContext(aws.Context, *ec2.CreateTransitGatewayConnectPeerInput, ...request.Option) (*ec2.CreateTransitGatewayConnectPeerOutput, error)
|
||||||
|
CreateTransitGatewayConnectPeerRequest(*ec2.CreateTransitGatewayConnectPeerInput) (*request.Request, *ec2.CreateTransitGatewayConnectPeerOutput)
|
||||||
|
|
||||||
CreateTransitGatewayMulticastDomain(*ec2.CreateTransitGatewayMulticastDomainInput) (*ec2.CreateTransitGatewayMulticastDomainOutput, error)
|
CreateTransitGatewayMulticastDomain(*ec2.CreateTransitGatewayMulticastDomainInput) (*ec2.CreateTransitGatewayMulticastDomainOutput, error)
|
||||||
CreateTransitGatewayMulticastDomainWithContext(aws.Context, *ec2.CreateTransitGatewayMulticastDomainInput, ...request.Option) (*ec2.CreateTransitGatewayMulticastDomainOutput, error)
|
CreateTransitGatewayMulticastDomainWithContext(aws.Context, *ec2.CreateTransitGatewayMulticastDomainInput, ...request.Option) (*ec2.CreateTransitGatewayMulticastDomainOutput, error)
|
||||||
CreateTransitGatewayMulticastDomainRequest(*ec2.CreateTransitGatewayMulticastDomainInput) (*request.Request, *ec2.CreateTransitGatewayMulticastDomainOutput)
|
CreateTransitGatewayMulticastDomainRequest(*ec2.CreateTransitGatewayMulticastDomainInput) (*request.Request, *ec2.CreateTransitGatewayMulticastDomainOutput)
|
||||||
|
@ -528,6 +544,14 @@ type EC2API interface {
|
||||||
DeleteNetworkAclEntryWithContext(aws.Context, *ec2.DeleteNetworkAclEntryInput, ...request.Option) (*ec2.DeleteNetworkAclEntryOutput, error)
|
DeleteNetworkAclEntryWithContext(aws.Context, *ec2.DeleteNetworkAclEntryInput, ...request.Option) (*ec2.DeleteNetworkAclEntryOutput, error)
|
||||||
DeleteNetworkAclEntryRequest(*ec2.DeleteNetworkAclEntryInput) (*request.Request, *ec2.DeleteNetworkAclEntryOutput)
|
DeleteNetworkAclEntryRequest(*ec2.DeleteNetworkAclEntryInput) (*request.Request, *ec2.DeleteNetworkAclEntryOutput)
|
||||||
|
|
||||||
|
DeleteNetworkInsightsAnalysis(*ec2.DeleteNetworkInsightsAnalysisInput) (*ec2.DeleteNetworkInsightsAnalysisOutput, error)
|
||||||
|
DeleteNetworkInsightsAnalysisWithContext(aws.Context, *ec2.DeleteNetworkInsightsAnalysisInput, ...request.Option) (*ec2.DeleteNetworkInsightsAnalysisOutput, error)
|
||||||
|
DeleteNetworkInsightsAnalysisRequest(*ec2.DeleteNetworkInsightsAnalysisInput) (*request.Request, *ec2.DeleteNetworkInsightsAnalysisOutput)
|
||||||
|
|
||||||
|
DeleteNetworkInsightsPath(*ec2.DeleteNetworkInsightsPathInput) (*ec2.DeleteNetworkInsightsPathOutput, error)
|
||||||
|
DeleteNetworkInsightsPathWithContext(aws.Context, *ec2.DeleteNetworkInsightsPathInput, ...request.Option) (*ec2.DeleteNetworkInsightsPathOutput, error)
|
||||||
|
DeleteNetworkInsightsPathRequest(*ec2.DeleteNetworkInsightsPathInput) (*request.Request, *ec2.DeleteNetworkInsightsPathOutput)
|
||||||
|
|
||||||
DeleteNetworkInterface(*ec2.DeleteNetworkInterfaceInput) (*ec2.DeleteNetworkInterfaceOutput, error)
|
DeleteNetworkInterface(*ec2.DeleteNetworkInterfaceInput) (*ec2.DeleteNetworkInterfaceOutput, error)
|
||||||
DeleteNetworkInterfaceWithContext(aws.Context, *ec2.DeleteNetworkInterfaceInput, ...request.Option) (*ec2.DeleteNetworkInterfaceOutput, error)
|
DeleteNetworkInterfaceWithContext(aws.Context, *ec2.DeleteNetworkInterfaceInput, ...request.Option) (*ec2.DeleteNetworkInterfaceOutput, error)
|
||||||
DeleteNetworkInterfaceRequest(*ec2.DeleteNetworkInterfaceInput) (*request.Request, *ec2.DeleteNetworkInterfaceOutput)
|
DeleteNetworkInterfaceRequest(*ec2.DeleteNetworkInterfaceInput) (*request.Request, *ec2.DeleteNetworkInterfaceOutput)
|
||||||
|
@ -592,6 +616,14 @@ type EC2API interface {
|
||||||
DeleteTransitGatewayWithContext(aws.Context, *ec2.DeleteTransitGatewayInput, ...request.Option) (*ec2.DeleteTransitGatewayOutput, error)
|
DeleteTransitGatewayWithContext(aws.Context, *ec2.DeleteTransitGatewayInput, ...request.Option) (*ec2.DeleteTransitGatewayOutput, error)
|
||||||
DeleteTransitGatewayRequest(*ec2.DeleteTransitGatewayInput) (*request.Request, *ec2.DeleteTransitGatewayOutput)
|
DeleteTransitGatewayRequest(*ec2.DeleteTransitGatewayInput) (*request.Request, *ec2.DeleteTransitGatewayOutput)
|
||||||
|
|
||||||
|
DeleteTransitGatewayConnect(*ec2.DeleteTransitGatewayConnectInput) (*ec2.DeleteTransitGatewayConnectOutput, error)
|
||||||
|
DeleteTransitGatewayConnectWithContext(aws.Context, *ec2.DeleteTransitGatewayConnectInput, ...request.Option) (*ec2.DeleteTransitGatewayConnectOutput, error)
|
||||||
|
DeleteTransitGatewayConnectRequest(*ec2.DeleteTransitGatewayConnectInput) (*request.Request, *ec2.DeleteTransitGatewayConnectOutput)
|
||||||
|
|
||||||
|
DeleteTransitGatewayConnectPeer(*ec2.DeleteTransitGatewayConnectPeerInput) (*ec2.DeleteTransitGatewayConnectPeerOutput, error)
|
||||||
|
DeleteTransitGatewayConnectPeerWithContext(aws.Context, *ec2.DeleteTransitGatewayConnectPeerInput, ...request.Option) (*ec2.DeleteTransitGatewayConnectPeerOutput, error)
|
||||||
|
DeleteTransitGatewayConnectPeerRequest(*ec2.DeleteTransitGatewayConnectPeerInput) (*request.Request, *ec2.DeleteTransitGatewayConnectPeerOutput)
|
||||||
|
|
||||||
DeleteTransitGatewayMulticastDomain(*ec2.DeleteTransitGatewayMulticastDomainInput) (*ec2.DeleteTransitGatewayMulticastDomainOutput, error)
|
DeleteTransitGatewayMulticastDomain(*ec2.DeleteTransitGatewayMulticastDomainInput) (*ec2.DeleteTransitGatewayMulticastDomainOutput, error)
|
||||||
DeleteTransitGatewayMulticastDomainWithContext(aws.Context, *ec2.DeleteTransitGatewayMulticastDomainInput, ...request.Option) (*ec2.DeleteTransitGatewayMulticastDomainOutput, error)
|
DeleteTransitGatewayMulticastDomainWithContext(aws.Context, *ec2.DeleteTransitGatewayMulticastDomainInput, ...request.Option) (*ec2.DeleteTransitGatewayMulticastDomainOutput, error)
|
||||||
DeleteTransitGatewayMulticastDomainRequest(*ec2.DeleteTransitGatewayMulticastDomainInput) (*request.Request, *ec2.DeleteTransitGatewayMulticastDomainOutput)
|
DeleteTransitGatewayMulticastDomainRequest(*ec2.DeleteTransitGatewayMulticastDomainInput) (*request.Request, *ec2.DeleteTransitGatewayMulticastDomainOutput)
|
||||||
|
@ -680,6 +712,13 @@ type EC2API interface {
|
||||||
DescribeAddressesWithContext(aws.Context, *ec2.DescribeAddressesInput, ...request.Option) (*ec2.DescribeAddressesOutput, error)
|
DescribeAddressesWithContext(aws.Context, *ec2.DescribeAddressesInput, ...request.Option) (*ec2.DescribeAddressesOutput, error)
|
||||||
DescribeAddressesRequest(*ec2.DescribeAddressesInput) (*request.Request, *ec2.DescribeAddressesOutput)
|
DescribeAddressesRequest(*ec2.DescribeAddressesInput) (*request.Request, *ec2.DescribeAddressesOutput)
|
||||||
|
|
||||||
|
DescribeAddressesAttribute(*ec2.DescribeAddressesAttributeInput) (*ec2.DescribeAddressesAttributeOutput, error)
|
||||||
|
DescribeAddressesAttributeWithContext(aws.Context, *ec2.DescribeAddressesAttributeInput, ...request.Option) (*ec2.DescribeAddressesAttributeOutput, error)
|
||||||
|
DescribeAddressesAttributeRequest(*ec2.DescribeAddressesAttributeInput) (*request.Request, *ec2.DescribeAddressesAttributeOutput)
|
||||||
|
|
||||||
|
DescribeAddressesAttributePages(*ec2.DescribeAddressesAttributeInput, func(*ec2.DescribeAddressesAttributeOutput, bool) bool) error
|
||||||
|
DescribeAddressesAttributePagesWithContext(aws.Context, *ec2.DescribeAddressesAttributeInput, func(*ec2.DescribeAddressesAttributeOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
DescribeAggregateIdFormat(*ec2.DescribeAggregateIdFormatInput) (*ec2.DescribeAggregateIdFormatOutput, error)
|
DescribeAggregateIdFormat(*ec2.DescribeAggregateIdFormatInput) (*ec2.DescribeAggregateIdFormatOutput, error)
|
||||||
DescribeAggregateIdFormatWithContext(aws.Context, *ec2.DescribeAggregateIdFormatInput, ...request.Option) (*ec2.DescribeAggregateIdFormatOutput, error)
|
DescribeAggregateIdFormatWithContext(aws.Context, *ec2.DescribeAggregateIdFormatInput, ...request.Option) (*ec2.DescribeAggregateIdFormatOutput, error)
|
||||||
DescribeAggregateIdFormatRequest(*ec2.DescribeAggregateIdFormatInput) (*request.Request, *ec2.DescribeAggregateIdFormatOutput)
|
DescribeAggregateIdFormatRequest(*ec2.DescribeAggregateIdFormatInput) (*request.Request, *ec2.DescribeAggregateIdFormatOutput)
|
||||||
|
@ -1042,6 +1081,20 @@ type EC2API interface {
|
||||||
DescribeNetworkAclsPages(*ec2.DescribeNetworkAclsInput, func(*ec2.DescribeNetworkAclsOutput, bool) bool) error
|
DescribeNetworkAclsPages(*ec2.DescribeNetworkAclsInput, func(*ec2.DescribeNetworkAclsOutput, bool) bool) error
|
||||||
DescribeNetworkAclsPagesWithContext(aws.Context, *ec2.DescribeNetworkAclsInput, func(*ec2.DescribeNetworkAclsOutput, bool) bool, ...request.Option) error
|
DescribeNetworkAclsPagesWithContext(aws.Context, *ec2.DescribeNetworkAclsInput, func(*ec2.DescribeNetworkAclsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
DescribeNetworkInsightsAnalyses(*ec2.DescribeNetworkInsightsAnalysesInput) (*ec2.DescribeNetworkInsightsAnalysesOutput, error)
|
||||||
|
DescribeNetworkInsightsAnalysesWithContext(aws.Context, *ec2.DescribeNetworkInsightsAnalysesInput, ...request.Option) (*ec2.DescribeNetworkInsightsAnalysesOutput, error)
|
||||||
|
DescribeNetworkInsightsAnalysesRequest(*ec2.DescribeNetworkInsightsAnalysesInput) (*request.Request, *ec2.DescribeNetworkInsightsAnalysesOutput)
|
||||||
|
|
||||||
|
DescribeNetworkInsightsAnalysesPages(*ec2.DescribeNetworkInsightsAnalysesInput, func(*ec2.DescribeNetworkInsightsAnalysesOutput, bool) bool) error
|
||||||
|
DescribeNetworkInsightsAnalysesPagesWithContext(aws.Context, *ec2.DescribeNetworkInsightsAnalysesInput, func(*ec2.DescribeNetworkInsightsAnalysesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
DescribeNetworkInsightsPaths(*ec2.DescribeNetworkInsightsPathsInput) (*ec2.DescribeNetworkInsightsPathsOutput, error)
|
||||||
|
DescribeNetworkInsightsPathsWithContext(aws.Context, *ec2.DescribeNetworkInsightsPathsInput, ...request.Option) (*ec2.DescribeNetworkInsightsPathsOutput, error)
|
||||||
|
DescribeNetworkInsightsPathsRequest(*ec2.DescribeNetworkInsightsPathsInput) (*request.Request, *ec2.DescribeNetworkInsightsPathsOutput)
|
||||||
|
|
||||||
|
DescribeNetworkInsightsPathsPages(*ec2.DescribeNetworkInsightsPathsInput, func(*ec2.DescribeNetworkInsightsPathsOutput, bool) bool) error
|
||||||
|
DescribeNetworkInsightsPathsPagesWithContext(aws.Context, *ec2.DescribeNetworkInsightsPathsInput, func(*ec2.DescribeNetworkInsightsPathsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
DescribeNetworkInterfaceAttribute(*ec2.DescribeNetworkInterfaceAttributeInput) (*ec2.DescribeNetworkInterfaceAttributeOutput, error)
|
DescribeNetworkInterfaceAttribute(*ec2.DescribeNetworkInterfaceAttributeInput) (*ec2.DescribeNetworkInterfaceAttributeOutput, error)
|
||||||
DescribeNetworkInterfaceAttributeWithContext(aws.Context, *ec2.DescribeNetworkInterfaceAttributeInput, ...request.Option) (*ec2.DescribeNetworkInterfaceAttributeOutput, error)
|
DescribeNetworkInterfaceAttributeWithContext(aws.Context, *ec2.DescribeNetworkInterfaceAttributeInput, ...request.Option) (*ec2.DescribeNetworkInterfaceAttributeOutput, error)
|
||||||
DescribeNetworkInterfaceAttributeRequest(*ec2.DescribeNetworkInterfaceAttributeInput) (*request.Request, *ec2.DescribeNetworkInterfaceAttributeOutput)
|
DescribeNetworkInterfaceAttributeRequest(*ec2.DescribeNetworkInterfaceAttributeInput) (*request.Request, *ec2.DescribeNetworkInterfaceAttributeOutput)
|
||||||
|
@ -1236,6 +1289,20 @@ type EC2API interface {
|
||||||
DescribeTransitGatewayAttachmentsPages(*ec2.DescribeTransitGatewayAttachmentsInput, func(*ec2.DescribeTransitGatewayAttachmentsOutput, bool) bool) error
|
DescribeTransitGatewayAttachmentsPages(*ec2.DescribeTransitGatewayAttachmentsInput, func(*ec2.DescribeTransitGatewayAttachmentsOutput, bool) bool) error
|
||||||
DescribeTransitGatewayAttachmentsPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayAttachmentsInput, func(*ec2.DescribeTransitGatewayAttachmentsOutput, bool) bool, ...request.Option) error
|
DescribeTransitGatewayAttachmentsPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayAttachmentsInput, func(*ec2.DescribeTransitGatewayAttachmentsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
DescribeTransitGatewayConnectPeers(*ec2.DescribeTransitGatewayConnectPeersInput) (*ec2.DescribeTransitGatewayConnectPeersOutput, error)
|
||||||
|
DescribeTransitGatewayConnectPeersWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectPeersInput, ...request.Option) (*ec2.DescribeTransitGatewayConnectPeersOutput, error)
|
||||||
|
DescribeTransitGatewayConnectPeersRequest(*ec2.DescribeTransitGatewayConnectPeersInput) (*request.Request, *ec2.DescribeTransitGatewayConnectPeersOutput)
|
||||||
|
|
||||||
|
DescribeTransitGatewayConnectPeersPages(*ec2.DescribeTransitGatewayConnectPeersInput, func(*ec2.DescribeTransitGatewayConnectPeersOutput, bool) bool) error
|
||||||
|
DescribeTransitGatewayConnectPeersPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectPeersInput, func(*ec2.DescribeTransitGatewayConnectPeersOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
DescribeTransitGatewayConnects(*ec2.DescribeTransitGatewayConnectsInput) (*ec2.DescribeTransitGatewayConnectsOutput, error)
|
||||||
|
DescribeTransitGatewayConnectsWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectsInput, ...request.Option) (*ec2.DescribeTransitGatewayConnectsOutput, error)
|
||||||
|
DescribeTransitGatewayConnectsRequest(*ec2.DescribeTransitGatewayConnectsInput) (*request.Request, *ec2.DescribeTransitGatewayConnectsOutput)
|
||||||
|
|
||||||
|
DescribeTransitGatewayConnectsPages(*ec2.DescribeTransitGatewayConnectsInput, func(*ec2.DescribeTransitGatewayConnectsOutput, bool) bool) error
|
||||||
|
DescribeTransitGatewayConnectsPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectsInput, func(*ec2.DescribeTransitGatewayConnectsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
DescribeTransitGatewayMulticastDomains(*ec2.DescribeTransitGatewayMulticastDomainsInput) (*ec2.DescribeTransitGatewayMulticastDomainsOutput, error)
|
DescribeTransitGatewayMulticastDomains(*ec2.DescribeTransitGatewayMulticastDomainsInput) (*ec2.DescribeTransitGatewayMulticastDomainsOutput, error)
|
||||||
DescribeTransitGatewayMulticastDomainsWithContext(aws.Context, *ec2.DescribeTransitGatewayMulticastDomainsInput, ...request.Option) (*ec2.DescribeTransitGatewayMulticastDomainsOutput, error)
|
DescribeTransitGatewayMulticastDomainsWithContext(aws.Context, *ec2.DescribeTransitGatewayMulticastDomainsInput, ...request.Option) (*ec2.DescribeTransitGatewayMulticastDomainsOutput, error)
|
||||||
DescribeTransitGatewayMulticastDomainsRequest(*ec2.DescribeTransitGatewayMulticastDomainsInput) (*request.Request, *ec2.DescribeTransitGatewayMulticastDomainsOutput)
|
DescribeTransitGatewayMulticastDomainsRequest(*ec2.DescribeTransitGatewayMulticastDomainsInput) (*request.Request, *ec2.DescribeTransitGatewayMulticastDomainsOutput)
|
||||||
|
@ -1631,6 +1698,10 @@ type EC2API interface {
|
||||||
ImportVolumeWithContext(aws.Context, *ec2.ImportVolumeInput, ...request.Option) (*ec2.ImportVolumeOutput, error)
|
ImportVolumeWithContext(aws.Context, *ec2.ImportVolumeInput, ...request.Option) (*ec2.ImportVolumeOutput, error)
|
||||||
ImportVolumeRequest(*ec2.ImportVolumeInput) (*request.Request, *ec2.ImportVolumeOutput)
|
ImportVolumeRequest(*ec2.ImportVolumeInput) (*request.Request, *ec2.ImportVolumeOutput)
|
||||||
|
|
||||||
|
ModifyAddressAttribute(*ec2.ModifyAddressAttributeInput) (*ec2.ModifyAddressAttributeOutput, error)
|
||||||
|
ModifyAddressAttributeWithContext(aws.Context, *ec2.ModifyAddressAttributeInput, ...request.Option) (*ec2.ModifyAddressAttributeOutput, error)
|
||||||
|
ModifyAddressAttributeRequest(*ec2.ModifyAddressAttributeInput) (*request.Request, *ec2.ModifyAddressAttributeOutput)
|
||||||
|
|
||||||
ModifyAvailabilityZoneGroup(*ec2.ModifyAvailabilityZoneGroupInput) (*ec2.ModifyAvailabilityZoneGroupOutput, error)
|
ModifyAvailabilityZoneGroup(*ec2.ModifyAvailabilityZoneGroupInput) (*ec2.ModifyAvailabilityZoneGroupOutput, error)
|
||||||
ModifyAvailabilityZoneGroupWithContext(aws.Context, *ec2.ModifyAvailabilityZoneGroupInput, ...request.Option) (*ec2.ModifyAvailabilityZoneGroupOutput, error)
|
ModifyAvailabilityZoneGroupWithContext(aws.Context, *ec2.ModifyAvailabilityZoneGroupInput, ...request.Option) (*ec2.ModifyAvailabilityZoneGroupOutput, error)
|
||||||
ModifyAvailabilityZoneGroupRequest(*ec2.ModifyAvailabilityZoneGroupInput) (*request.Request, *ec2.ModifyAvailabilityZoneGroupOutput)
|
ModifyAvailabilityZoneGroupRequest(*ec2.ModifyAvailabilityZoneGroupInput) (*request.Request, *ec2.ModifyAvailabilityZoneGroupOutput)
|
||||||
|
@ -1847,6 +1918,10 @@ type EC2API interface {
|
||||||
RegisterTransitGatewayMulticastGroupSourcesWithContext(aws.Context, *ec2.RegisterTransitGatewayMulticastGroupSourcesInput, ...request.Option) (*ec2.RegisterTransitGatewayMulticastGroupSourcesOutput, error)
|
RegisterTransitGatewayMulticastGroupSourcesWithContext(aws.Context, *ec2.RegisterTransitGatewayMulticastGroupSourcesInput, ...request.Option) (*ec2.RegisterTransitGatewayMulticastGroupSourcesOutput, error)
|
||||||
RegisterTransitGatewayMulticastGroupSourcesRequest(*ec2.RegisterTransitGatewayMulticastGroupSourcesInput) (*request.Request, *ec2.RegisterTransitGatewayMulticastGroupSourcesOutput)
|
RegisterTransitGatewayMulticastGroupSourcesRequest(*ec2.RegisterTransitGatewayMulticastGroupSourcesInput) (*request.Request, *ec2.RegisterTransitGatewayMulticastGroupSourcesOutput)
|
||||||
|
|
||||||
|
RejectTransitGatewayMulticastDomainAssociations(*ec2.RejectTransitGatewayMulticastDomainAssociationsInput) (*ec2.RejectTransitGatewayMulticastDomainAssociationsOutput, error)
|
||||||
|
RejectTransitGatewayMulticastDomainAssociationsWithContext(aws.Context, *ec2.RejectTransitGatewayMulticastDomainAssociationsInput, ...request.Option) (*ec2.RejectTransitGatewayMulticastDomainAssociationsOutput, error)
|
||||||
|
RejectTransitGatewayMulticastDomainAssociationsRequest(*ec2.RejectTransitGatewayMulticastDomainAssociationsInput) (*request.Request, *ec2.RejectTransitGatewayMulticastDomainAssociationsOutput)
|
||||||
|
|
||||||
RejectTransitGatewayPeeringAttachment(*ec2.RejectTransitGatewayPeeringAttachmentInput) (*ec2.RejectTransitGatewayPeeringAttachmentOutput, error)
|
RejectTransitGatewayPeeringAttachment(*ec2.RejectTransitGatewayPeeringAttachmentInput) (*ec2.RejectTransitGatewayPeeringAttachmentOutput, error)
|
||||||
RejectTransitGatewayPeeringAttachmentWithContext(aws.Context, *ec2.RejectTransitGatewayPeeringAttachmentInput, ...request.Option) (*ec2.RejectTransitGatewayPeeringAttachmentOutput, error)
|
RejectTransitGatewayPeeringAttachmentWithContext(aws.Context, *ec2.RejectTransitGatewayPeeringAttachmentInput, ...request.Option) (*ec2.RejectTransitGatewayPeeringAttachmentOutput, error)
|
||||||
RejectTransitGatewayPeeringAttachmentRequest(*ec2.RejectTransitGatewayPeeringAttachmentInput) (*request.Request, *ec2.RejectTransitGatewayPeeringAttachmentOutput)
|
RejectTransitGatewayPeeringAttachmentRequest(*ec2.RejectTransitGatewayPeeringAttachmentInput) (*request.Request, *ec2.RejectTransitGatewayPeeringAttachmentOutput)
|
||||||
|
@ -1907,6 +1982,10 @@ type EC2API interface {
|
||||||
RequestSpotInstancesWithContext(aws.Context, *ec2.RequestSpotInstancesInput, ...request.Option) (*ec2.RequestSpotInstancesOutput, error)
|
RequestSpotInstancesWithContext(aws.Context, *ec2.RequestSpotInstancesInput, ...request.Option) (*ec2.RequestSpotInstancesOutput, error)
|
||||||
RequestSpotInstancesRequest(*ec2.RequestSpotInstancesInput) (*request.Request, *ec2.RequestSpotInstancesOutput)
|
RequestSpotInstancesRequest(*ec2.RequestSpotInstancesInput) (*request.Request, *ec2.RequestSpotInstancesOutput)
|
||||||
|
|
||||||
|
ResetAddressAttribute(*ec2.ResetAddressAttributeInput) (*ec2.ResetAddressAttributeOutput, error)
|
||||||
|
ResetAddressAttributeWithContext(aws.Context, *ec2.ResetAddressAttributeInput, ...request.Option) (*ec2.ResetAddressAttributeOutput, error)
|
||||||
|
ResetAddressAttributeRequest(*ec2.ResetAddressAttributeInput) (*request.Request, *ec2.ResetAddressAttributeOutput)
|
||||||
|
|
||||||
ResetEbsDefaultKmsKeyId(*ec2.ResetEbsDefaultKmsKeyIdInput) (*ec2.ResetEbsDefaultKmsKeyIdOutput, error)
|
ResetEbsDefaultKmsKeyId(*ec2.ResetEbsDefaultKmsKeyIdInput) (*ec2.ResetEbsDefaultKmsKeyIdOutput, error)
|
||||||
ResetEbsDefaultKmsKeyIdWithContext(aws.Context, *ec2.ResetEbsDefaultKmsKeyIdInput, ...request.Option) (*ec2.ResetEbsDefaultKmsKeyIdOutput, error)
|
ResetEbsDefaultKmsKeyIdWithContext(aws.Context, *ec2.ResetEbsDefaultKmsKeyIdInput, ...request.Option) (*ec2.ResetEbsDefaultKmsKeyIdOutput, error)
|
||||||
ResetEbsDefaultKmsKeyIdRequest(*ec2.ResetEbsDefaultKmsKeyIdInput) (*request.Request, *ec2.ResetEbsDefaultKmsKeyIdOutput)
|
ResetEbsDefaultKmsKeyIdRequest(*ec2.ResetEbsDefaultKmsKeyIdInput) (*request.Request, *ec2.ResetEbsDefaultKmsKeyIdOutput)
|
||||||
|
@ -1985,6 +2064,10 @@ type EC2API interface {
|
||||||
StartInstancesWithContext(aws.Context, *ec2.StartInstancesInput, ...request.Option) (*ec2.StartInstancesOutput, error)
|
StartInstancesWithContext(aws.Context, *ec2.StartInstancesInput, ...request.Option) (*ec2.StartInstancesOutput, error)
|
||||||
StartInstancesRequest(*ec2.StartInstancesInput) (*request.Request, *ec2.StartInstancesOutput)
|
StartInstancesRequest(*ec2.StartInstancesInput) (*request.Request, *ec2.StartInstancesOutput)
|
||||||
|
|
||||||
|
StartNetworkInsightsAnalysis(*ec2.StartNetworkInsightsAnalysisInput) (*ec2.StartNetworkInsightsAnalysisOutput, error)
|
||||||
|
StartNetworkInsightsAnalysisWithContext(aws.Context, *ec2.StartNetworkInsightsAnalysisInput, ...request.Option) (*ec2.StartNetworkInsightsAnalysisOutput, error)
|
||||||
|
StartNetworkInsightsAnalysisRequest(*ec2.StartNetworkInsightsAnalysisInput) (*request.Request, *ec2.StartNetworkInsightsAnalysisOutput)
|
||||||
|
|
||||||
StartVpcEndpointServicePrivateDnsVerification(*ec2.StartVpcEndpointServicePrivateDnsVerificationInput) (*ec2.StartVpcEndpointServicePrivateDnsVerificationOutput, error)
|
StartVpcEndpointServicePrivateDnsVerification(*ec2.StartVpcEndpointServicePrivateDnsVerificationInput) (*ec2.StartVpcEndpointServicePrivateDnsVerificationOutput, error)
|
||||||
StartVpcEndpointServicePrivateDnsVerificationWithContext(aws.Context, *ec2.StartVpcEndpointServicePrivateDnsVerificationInput, ...request.Option) (*ec2.StartVpcEndpointServicePrivateDnsVerificationOutput, error)
|
StartVpcEndpointServicePrivateDnsVerificationWithContext(aws.Context, *ec2.StartVpcEndpointServicePrivateDnsVerificationInput, ...request.Option) (*ec2.StartVpcEndpointServicePrivateDnsVerificationOutput, error)
|
||||||
StartVpcEndpointServicePrivateDnsVerificationRequest(*ec2.StartVpcEndpointServicePrivateDnsVerificationInput) (*request.Request, *ec2.StartVpcEndpointServicePrivateDnsVerificationOutput)
|
StartVpcEndpointServicePrivateDnsVerificationRequest(*ec2.StartVpcEndpointServicePrivateDnsVerificationInput) (*request.Request, *ec2.StartVpcEndpointServicePrivateDnsVerificationOutput)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -17,7 +17,7 @@ const (
|
||||||
//
|
//
|
||||||
// The request was rejected because the most recent credential report has expired.
|
// The request was rejected because the most recent credential report has expired.
|
||||||
// To generate a new credential report, use GenerateCredentialReport. For more
|
// To generate a new credential report, use GenerateCredentialReport. For more
|
||||||
// information about credential report expiration, see Getting Credential Reports
|
// information about credential report expiration, see Getting credential reports
|
||||||
// (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html)
|
// (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html)
|
||||||
// in the IAM User Guide.
|
// in the IAM User Guide.
|
||||||
ErrCodeCredentialReportExpiredException = "ReportExpired"
|
ErrCodeCredentialReportExpiredException = "ReportExpired"
|
||||||
|
@ -117,8 +117,7 @@ const (
|
||||||
// "LimitExceeded".
|
// "LimitExceeded".
|
||||||
//
|
//
|
||||||
// The request was rejected because it attempted to create resources beyond
|
// The request was rejected because it attempted to create resources beyond
|
||||||
// the current AWS account limitations. The error message describes the limit
|
// the current AWS account limits. The error message describes the limit exceeded.
|
||||||
// exceeded.
|
|
||||||
ErrCodeLimitExceededException = "LimitExceeded"
|
ErrCodeLimitExceededException = "LimitExceeded"
|
||||||
|
|
||||||
// ErrCodeMalformedCertificateException for service response error code
|
// ErrCodeMalformedCertificateException for service response error code
|
||||||
|
|
|
@ -19563,7 +19563,7 @@ type GetObjectInput struct {
|
||||||
ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
|
ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
|
||||||
|
|
||||||
// Sets the Expires header of the response.
|
// Sets the Expires header of the response.
|
||||||
ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"`
|
ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"`
|
||||||
|
|
||||||
// Specifies the algorithm to use to when encrypting the object (for example,
|
// Specifies the algorithm to use to when encrypting the object (for example,
|
||||||
// AES256).
|
// AES256).
|
||||||
|
|
|
@ -98,7 +98,7 @@ func endpointHandler(req *request.Request) {
|
||||||
Request: req,
|
Request: req,
|
||||||
}
|
}
|
||||||
|
|
||||||
if resReq.IsCrossPartition() {
|
if len(resReq.Request.ClientInfo.PartitionID) != 0 && resReq.IsCrossPartition() {
|
||||||
req.Error = s3shared.NewClientPartitionMismatchError(resource,
|
req.Error = s3shared.NewClientPartitionMismatchError(resource,
|
||||||
req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil)
|
req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil)
|
||||||
return
|
return
|
||||||
|
@ -110,11 +110,6 @@ func endpointHandler(req *request.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if resReq.HasCustomEndpoint() {
|
|
||||||
req.Error = s3shared.NewInvalidARNWithCustomEndpointError(resource, nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
switch tv := resource.(type) {
|
switch tv := resource.(type) {
|
||||||
case arn.AccessPointARN:
|
case arn.AccessPointARN:
|
||||||
err = updateRequestAccessPointEndpoint(req, tv)
|
err = updateRequestAccessPointEndpoint(req, tv)
|
||||||
|
@ -155,8 +150,7 @@ func updateRequestAccessPointEndpoint(req *request.Request, accessPoint arn.Acce
|
||||||
req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil)
|
req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ignore the disable host prefix for access points since custom endpoints
|
// Ignore the disable host prefix for access points
|
||||||
// are not supported.
|
|
||||||
req.Config.DisableEndpointHostPrefix = aws.Bool(false)
|
req.Config.DisableEndpointHostPrefix = aws.Bool(false)
|
||||||
|
|
||||||
if err := accessPointEndpointBuilder(accessPoint).build(req); err != nil {
|
if err := accessPointEndpointBuilder(accessPoint).build(req); err != nil {
|
||||||
|
@ -181,8 +175,7 @@ func updateRequestOutpostAccessPointEndpoint(req *request.Request, accessPoint a
|
||||||
req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil)
|
req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ignore the disable host prefix for access points since custom endpoints
|
// Ignore the disable host prefix for access points
|
||||||
// are not supported.
|
|
||||||
req.Config.DisableEndpointHostPrefix = aws.Bool(false)
|
req.Config.DisableEndpointHostPrefix = aws.Bool(false)
|
||||||
|
|
||||||
if err := outpostAccessPointEndpointBuilder(accessPoint).build(req); err != nil {
|
if err := outpostAccessPointEndpointBuilder(accessPoint).build(req); err != nil {
|
||||||
|
|
|
@ -22,6 +22,11 @@ const (
|
||||||
outpostAccessPointPrefixTemplate = accessPointPrefixTemplate + "{" + outpostPrefixLabel + "}."
|
outpostAccessPointPrefixTemplate = accessPointPrefixTemplate + "{" + outpostPrefixLabel + "}."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// hasCustomEndpoint returns true if endpoint is a custom endpoint
|
||||||
|
func hasCustomEndpoint(r *request.Request) bool {
|
||||||
|
return len(aws.StringValue(r.Config.Endpoint)) > 0
|
||||||
|
}
|
||||||
|
|
||||||
// accessPointEndpointBuilder represents the endpoint builder for access point arn
|
// accessPointEndpointBuilder represents the endpoint builder for access point arn
|
||||||
type accessPointEndpointBuilder arn.AccessPointARN
|
type accessPointEndpointBuilder arn.AccessPointARN
|
||||||
|
|
||||||
|
@ -55,10 +60,12 @@ func (a accessPointEndpointBuilder) build(req *request.Request) error {
|
||||||
req.ClientInfo.PartitionID, cfgRegion, err)
|
req.ClientInfo.PartitionID, cfgRegion, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
endpoint.URL = endpoints.AddScheme(endpoint.URL, aws.BoolValue(req.Config.DisableSSL))
|
||||||
|
|
||||||
|
if !hasCustomEndpoint(req) {
|
||||||
if err = updateRequestEndpoint(req, endpoint.URL); err != nil {
|
if err = updateRequestEndpoint(req, endpoint.URL); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
const serviceEndpointLabel = "s3-accesspoint"
|
const serviceEndpointLabel = "s3-accesspoint"
|
||||||
|
|
||||||
// dual stack provided by endpoint resolver
|
// dual stack provided by endpoint resolver
|
||||||
|
@ -66,6 +73,7 @@ func (a accessPointEndpointBuilder) build(req *request.Request) error {
|
||||||
if strings.HasPrefix(cfgHost, "s3") {
|
if strings.HasPrefix(cfgHost, "s3") {
|
||||||
req.HTTPRequest.URL.Host = serviceEndpointLabel + cfgHost[2:]
|
req.HTTPRequest.URL.Host = serviceEndpointLabel + cfgHost[2:]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protocol.HostPrefixBuilder{
|
protocol.HostPrefixBuilder{
|
||||||
Prefix: accessPointPrefixTemplate,
|
Prefix: accessPointPrefixTemplate,
|
||||||
|
@ -116,15 +124,18 @@ func (o outpostAccessPointEndpointBuilder) build(req *request.Request) error {
|
||||||
req.ClientInfo.PartitionID, resolveRegion, err)
|
req.ClientInfo.PartitionID, resolveRegion, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
endpoint.URL = endpoints.AddScheme(endpoint.URL, aws.BoolValue(req.Config.DisableSSL))
|
||||||
|
|
||||||
|
if !hasCustomEndpoint(req) {
|
||||||
if err = updateRequestEndpoint(req, endpoint.URL); err != nil {
|
if err = updateRequestEndpoint(req, endpoint.URL); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// add url host as s3-outposts
|
// add url host as s3-outposts
|
||||||
cfgHost := req.HTTPRequest.URL.Host
|
cfgHost := req.HTTPRequest.URL.Host
|
||||||
if strings.HasPrefix(cfgHost, endpointsID) {
|
if strings.HasPrefix(cfgHost, endpointsID) {
|
||||||
req.HTTPRequest.URL.Host = resolveService + cfgHost[len(endpointsID):]
|
req.HTTPRequest.URL.Host = resolveService + cfgHost[len(endpointsID):]
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protocol.HostPrefixBuilder{
|
protocol.HostPrefixBuilder{
|
||||||
Prefix: outpostAccessPointPrefixTemplate,
|
Prefix: outpostAccessPointPrefixTemplate,
|
||||||
|
@ -159,7 +170,6 @@ func resolveRegionalEndpoint(r *request.Request, region string, endpointsID stri
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateRequestEndpoint(r *request.Request, endpoint string) (err error) {
|
func updateRequestEndpoint(r *request.Request, endpoint string) (err error) {
|
||||||
endpoint = endpoints.AddScheme(endpoint, aws.BoolValue(r.Config.DisableSSL))
|
|
||||||
|
|
||||||
r.HTTPRequest.URL, err = url.Parse(endpoint + r.Operation.HTTPPath)
|
r.HTTPRequest.URL, err = url.Parse(endpoint + r.Operation.HTTPPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -109,6 +109,9 @@ type UploadOutput struct {
|
||||||
// The ID for a multipart upload to S3. In the case of an error the error
|
// The ID for a multipart upload to S3. In the case of an error the error
|
||||||
// can be cast to the MultiUploadFailure interface to extract the upload ID.
|
// can be cast to the MultiUploadFailure interface to extract the upload ID.
|
||||||
UploadID string
|
UploadID string
|
||||||
|
|
||||||
|
// Entity tag of the object.
|
||||||
|
ETag *string
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithUploaderRequestOptions appends to the Uploader's API request options.
|
// WithUploaderRequestOptions appends to the Uploader's API request options.
|
||||||
|
@ -527,6 +530,7 @@ func (u *uploader) singlePart(r io.ReadSeeker, cleanup func()) (*UploadOutput, e
|
||||||
return &UploadOutput{
|
return &UploadOutput{
|
||||||
Location: url,
|
Location: url,
|
||||||
VersionID: out.VersionId,
|
VersionID: out.VersionId,
|
||||||
|
ETag: out.ETag,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,6 +636,7 @@ func (u *multiuploader) upload(firstBuf io.ReadSeeker, cleanup func()) (*UploadO
|
||||||
Location: uploadLocation,
|
Location: uploadLocation,
|
||||||
VersionID: complete.VersionId,
|
VersionID: complete.VersionId,
|
||||||
UploadID: u.uploadID,
|
UploadID: u.uploadID,
|
||||||
|
ETag: complete.ETag,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,9 @@ const (
|
||||||
// svc := s3.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
|
// svc := s3.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
|
||||||
func New(p client.ConfigProvider, cfgs ...*aws.Config) *S3 {
|
func New(p client.ConfigProvider, cfgs ...*aws.Config) *S3 {
|
||||||
c := p.ClientConfig(EndpointsID, cfgs...)
|
c := p.ClientConfig(EndpointsID, cfgs...)
|
||||||
|
if c.SigningNameDerived || len(c.SigningName) == 0 {
|
||||||
|
c.SigningName = "s3"
|
||||||
|
}
|
||||||
return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName)
|
return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -53,6 +53,13 @@ const (
|
||||||
// Each association has a limit of 1,000 versions.
|
// Each association has a limit of 1,000 versions.
|
||||||
ErrCodeAssociationVersionLimitExceeded = "AssociationVersionLimitExceeded"
|
ErrCodeAssociationVersionLimitExceeded = "AssociationVersionLimitExceeded"
|
||||||
|
|
||||||
|
// ErrCodeAutomationDefinitionNotApprovedException for service response error code
|
||||||
|
// "AutomationDefinitionNotApprovedException".
|
||||||
|
//
|
||||||
|
// Indicates that the Change Manager change template used in the change request
|
||||||
|
// was rejected or is still in a pending state.
|
||||||
|
ErrCodeAutomationDefinitionNotApprovedException = "AutomationDefinitionNotApprovedException"
|
||||||
|
|
||||||
// ErrCodeAutomationDefinitionNotFoundException for service response error code
|
// ErrCodeAutomationDefinitionNotFoundException for service response error code
|
||||||
// "AutomationDefinitionNotFoundException".
|
// "AutomationDefinitionNotFoundException".
|
||||||
//
|
//
|
||||||
|
@ -585,15 +592,15 @@ const (
|
||||||
// "OpsMetadataKeyLimitExceededException".
|
// "OpsMetadataKeyLimitExceededException".
|
||||||
//
|
//
|
||||||
// The OpsMetadata object exceeds the maximum number of OpsMetadata keys that
|
// The OpsMetadata object exceeds the maximum number of OpsMetadata keys that
|
||||||
// you can assign to an application in AppManager.
|
// you can assign to an application in Application Manager.
|
||||||
ErrCodeOpsMetadataKeyLimitExceededException = "OpsMetadataKeyLimitExceededException"
|
ErrCodeOpsMetadataKeyLimitExceededException = "OpsMetadataKeyLimitExceededException"
|
||||||
|
|
||||||
// ErrCodeOpsMetadataLimitExceededException for service response error code
|
// ErrCodeOpsMetadataLimitExceededException for service response error code
|
||||||
// "OpsMetadataLimitExceededException".
|
// "OpsMetadataLimitExceededException".
|
||||||
//
|
//
|
||||||
// Your account reached the maximum number of OpsMetadata objects allowed by
|
// Your account reached the maximum number of OpsMetadata objects allowed by
|
||||||
// AppManager. The maximum is 200 OpsMetadata objects. Delete one or more OpsMetadata
|
// Application Manager. The maximum is 200 OpsMetadata objects. Delete one or
|
||||||
// object and try again.
|
// more OpsMetadata object and try again.
|
||||||
ErrCodeOpsMetadataLimitExceededException = "OpsMetadataLimitExceededException"
|
ErrCodeOpsMetadataLimitExceededException = "OpsMetadataLimitExceededException"
|
||||||
|
|
||||||
// ErrCodeOpsMetadataNotFoundException for service response error code
|
// ErrCodeOpsMetadataNotFoundException for service response error code
|
||||||
|
@ -846,6 +853,7 @@ var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{
|
||||||
"AssociationExecutionDoesNotExist": newErrorAssociationExecutionDoesNotExist,
|
"AssociationExecutionDoesNotExist": newErrorAssociationExecutionDoesNotExist,
|
||||||
"AssociationLimitExceeded": newErrorAssociationLimitExceeded,
|
"AssociationLimitExceeded": newErrorAssociationLimitExceeded,
|
||||||
"AssociationVersionLimitExceeded": newErrorAssociationVersionLimitExceeded,
|
"AssociationVersionLimitExceeded": newErrorAssociationVersionLimitExceeded,
|
||||||
|
"AutomationDefinitionNotApprovedException": newErrorAutomationDefinitionNotApprovedException,
|
||||||
"AutomationDefinitionNotFoundException": newErrorAutomationDefinitionNotFoundException,
|
"AutomationDefinitionNotFoundException": newErrorAutomationDefinitionNotFoundException,
|
||||||
"AutomationDefinitionVersionNotFoundException": newErrorAutomationDefinitionVersionNotFoundException,
|
"AutomationDefinitionVersionNotFoundException": newErrorAutomationDefinitionVersionNotFoundException,
|
||||||
"AutomationExecutionLimitExceededException": newErrorAutomationExecutionLimitExceededException,
|
"AutomationExecutionLimitExceededException": newErrorAutomationExecutionLimitExceededException,
|
||||||
|
|
|
@ -533,6 +533,10 @@ type SSMAPI interface {
|
||||||
ListComplianceSummariesPages(*ssm.ListComplianceSummariesInput, func(*ssm.ListComplianceSummariesOutput, bool) bool) error
|
ListComplianceSummariesPages(*ssm.ListComplianceSummariesInput, func(*ssm.ListComplianceSummariesOutput, bool) bool) error
|
||||||
ListComplianceSummariesPagesWithContext(aws.Context, *ssm.ListComplianceSummariesInput, func(*ssm.ListComplianceSummariesOutput, bool) bool, ...request.Option) error
|
ListComplianceSummariesPagesWithContext(aws.Context, *ssm.ListComplianceSummariesInput, func(*ssm.ListComplianceSummariesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListDocumentMetadataHistory(*ssm.ListDocumentMetadataHistoryInput) (*ssm.ListDocumentMetadataHistoryOutput, error)
|
||||||
|
ListDocumentMetadataHistoryWithContext(aws.Context, *ssm.ListDocumentMetadataHistoryInput, ...request.Option) (*ssm.ListDocumentMetadataHistoryOutput, error)
|
||||||
|
ListDocumentMetadataHistoryRequest(*ssm.ListDocumentMetadataHistoryInput) (*request.Request, *ssm.ListDocumentMetadataHistoryOutput)
|
||||||
|
|
||||||
ListDocumentVersions(*ssm.ListDocumentVersionsInput) (*ssm.ListDocumentVersionsOutput, error)
|
ListDocumentVersions(*ssm.ListDocumentVersionsInput) (*ssm.ListDocumentVersionsOutput, error)
|
||||||
ListDocumentVersionsWithContext(aws.Context, *ssm.ListDocumentVersionsInput, ...request.Option) (*ssm.ListDocumentVersionsOutput, error)
|
ListDocumentVersionsWithContext(aws.Context, *ssm.ListDocumentVersionsInput, ...request.Option) (*ssm.ListDocumentVersionsOutput, error)
|
||||||
ListDocumentVersionsRequest(*ssm.ListDocumentVersionsInput) (*request.Request, *ssm.ListDocumentVersionsOutput)
|
ListDocumentVersionsRequest(*ssm.ListDocumentVersionsInput) (*request.Request, *ssm.ListDocumentVersionsOutput)
|
||||||
|
@ -551,10 +555,20 @@ type SSMAPI interface {
|
||||||
ListInventoryEntriesWithContext(aws.Context, *ssm.ListInventoryEntriesInput, ...request.Option) (*ssm.ListInventoryEntriesOutput, error)
|
ListInventoryEntriesWithContext(aws.Context, *ssm.ListInventoryEntriesInput, ...request.Option) (*ssm.ListInventoryEntriesOutput, error)
|
||||||
ListInventoryEntriesRequest(*ssm.ListInventoryEntriesInput) (*request.Request, *ssm.ListInventoryEntriesOutput)
|
ListInventoryEntriesRequest(*ssm.ListInventoryEntriesInput) (*request.Request, *ssm.ListInventoryEntriesOutput)
|
||||||
|
|
||||||
|
ListOpsItemEvents(*ssm.ListOpsItemEventsInput) (*ssm.ListOpsItemEventsOutput, error)
|
||||||
|
ListOpsItemEventsWithContext(aws.Context, *ssm.ListOpsItemEventsInput, ...request.Option) (*ssm.ListOpsItemEventsOutput, error)
|
||||||
|
ListOpsItemEventsRequest(*ssm.ListOpsItemEventsInput) (*request.Request, *ssm.ListOpsItemEventsOutput)
|
||||||
|
|
||||||
|
ListOpsItemEventsPages(*ssm.ListOpsItemEventsInput, func(*ssm.ListOpsItemEventsOutput, bool) bool) error
|
||||||
|
ListOpsItemEventsPagesWithContext(aws.Context, *ssm.ListOpsItemEventsInput, func(*ssm.ListOpsItemEventsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
ListOpsMetadata(*ssm.ListOpsMetadataInput) (*ssm.ListOpsMetadataOutput, error)
|
ListOpsMetadata(*ssm.ListOpsMetadataInput) (*ssm.ListOpsMetadataOutput, error)
|
||||||
ListOpsMetadataWithContext(aws.Context, *ssm.ListOpsMetadataInput, ...request.Option) (*ssm.ListOpsMetadataOutput, error)
|
ListOpsMetadataWithContext(aws.Context, *ssm.ListOpsMetadataInput, ...request.Option) (*ssm.ListOpsMetadataOutput, error)
|
||||||
ListOpsMetadataRequest(*ssm.ListOpsMetadataInput) (*request.Request, *ssm.ListOpsMetadataOutput)
|
ListOpsMetadataRequest(*ssm.ListOpsMetadataInput) (*request.Request, *ssm.ListOpsMetadataOutput)
|
||||||
|
|
||||||
|
ListOpsMetadataPages(*ssm.ListOpsMetadataInput, func(*ssm.ListOpsMetadataOutput, bool) bool) error
|
||||||
|
ListOpsMetadataPagesWithContext(aws.Context, *ssm.ListOpsMetadataInput, func(*ssm.ListOpsMetadataOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
ListResourceComplianceSummaries(*ssm.ListResourceComplianceSummariesInput) (*ssm.ListResourceComplianceSummariesOutput, error)
|
ListResourceComplianceSummaries(*ssm.ListResourceComplianceSummariesInput) (*ssm.ListResourceComplianceSummariesOutput, error)
|
||||||
ListResourceComplianceSummariesWithContext(aws.Context, *ssm.ListResourceComplianceSummariesInput, ...request.Option) (*ssm.ListResourceComplianceSummariesOutput, error)
|
ListResourceComplianceSummariesWithContext(aws.Context, *ssm.ListResourceComplianceSummariesInput, ...request.Option) (*ssm.ListResourceComplianceSummariesOutput, error)
|
||||||
ListResourceComplianceSummariesRequest(*ssm.ListResourceComplianceSummariesInput) (*request.Request, *ssm.ListResourceComplianceSummariesOutput)
|
ListResourceComplianceSummariesRequest(*ssm.ListResourceComplianceSummariesInput) (*request.Request, *ssm.ListResourceComplianceSummariesOutput)
|
||||||
|
@ -633,6 +647,10 @@ type SSMAPI interface {
|
||||||
StartAutomationExecutionWithContext(aws.Context, *ssm.StartAutomationExecutionInput, ...request.Option) (*ssm.StartAutomationExecutionOutput, error)
|
StartAutomationExecutionWithContext(aws.Context, *ssm.StartAutomationExecutionInput, ...request.Option) (*ssm.StartAutomationExecutionOutput, error)
|
||||||
StartAutomationExecutionRequest(*ssm.StartAutomationExecutionInput) (*request.Request, *ssm.StartAutomationExecutionOutput)
|
StartAutomationExecutionRequest(*ssm.StartAutomationExecutionInput) (*request.Request, *ssm.StartAutomationExecutionOutput)
|
||||||
|
|
||||||
|
StartChangeRequestExecution(*ssm.StartChangeRequestExecutionInput) (*ssm.StartChangeRequestExecutionOutput, error)
|
||||||
|
StartChangeRequestExecutionWithContext(aws.Context, *ssm.StartChangeRequestExecutionInput, ...request.Option) (*ssm.StartChangeRequestExecutionOutput, error)
|
||||||
|
StartChangeRequestExecutionRequest(*ssm.StartChangeRequestExecutionInput) (*request.Request, *ssm.StartChangeRequestExecutionOutput)
|
||||||
|
|
||||||
StartSession(*ssm.StartSessionInput) (*ssm.StartSessionOutput, error)
|
StartSession(*ssm.StartSessionInput) (*ssm.StartSessionOutput, error)
|
||||||
StartSessionWithContext(aws.Context, *ssm.StartSessionInput, ...request.Option) (*ssm.StartSessionOutput, error)
|
StartSessionWithContext(aws.Context, *ssm.StartSessionInput, ...request.Option) (*ssm.StartSessionOutput, error)
|
||||||
StartSessionRequest(*ssm.StartSessionInput) (*request.Request, *ssm.StartSessionOutput)
|
StartSessionRequest(*ssm.StartSessionInput) (*request.Request, *ssm.StartSessionOutput)
|
||||||
|
@ -661,6 +679,10 @@ type SSMAPI interface {
|
||||||
UpdateDocumentDefaultVersionWithContext(aws.Context, *ssm.UpdateDocumentDefaultVersionInput, ...request.Option) (*ssm.UpdateDocumentDefaultVersionOutput, error)
|
UpdateDocumentDefaultVersionWithContext(aws.Context, *ssm.UpdateDocumentDefaultVersionInput, ...request.Option) (*ssm.UpdateDocumentDefaultVersionOutput, error)
|
||||||
UpdateDocumentDefaultVersionRequest(*ssm.UpdateDocumentDefaultVersionInput) (*request.Request, *ssm.UpdateDocumentDefaultVersionOutput)
|
UpdateDocumentDefaultVersionRequest(*ssm.UpdateDocumentDefaultVersionInput) (*request.Request, *ssm.UpdateDocumentDefaultVersionOutput)
|
||||||
|
|
||||||
|
UpdateDocumentMetadata(*ssm.UpdateDocumentMetadataInput) (*ssm.UpdateDocumentMetadataOutput, error)
|
||||||
|
UpdateDocumentMetadataWithContext(aws.Context, *ssm.UpdateDocumentMetadataInput, ...request.Option) (*ssm.UpdateDocumentMetadataOutput, error)
|
||||||
|
UpdateDocumentMetadataRequest(*ssm.UpdateDocumentMetadataInput) (*request.Request, *ssm.UpdateDocumentMetadataOutput)
|
||||||
|
|
||||||
UpdateMaintenanceWindow(*ssm.UpdateMaintenanceWindowInput) (*ssm.UpdateMaintenanceWindowOutput, error)
|
UpdateMaintenanceWindow(*ssm.UpdateMaintenanceWindowInput) (*ssm.UpdateMaintenanceWindowOutput, error)
|
||||||
UpdateMaintenanceWindowWithContext(aws.Context, *ssm.UpdateMaintenanceWindowInput, ...request.Option) (*ssm.UpdateMaintenanceWindowOutput, error)
|
UpdateMaintenanceWindowWithContext(aws.Context, *ssm.UpdateMaintenanceWindowInput, ...request.Option) (*ssm.UpdateMaintenanceWindowOutput, error)
|
||||||
UpdateMaintenanceWindowRequest(*ssm.UpdateMaintenanceWindowInput) (*request.Request, *ssm.UpdateMaintenanceWindowOutput)
|
UpdateMaintenanceWindowRequest(*ssm.UpdateMaintenanceWindowInput) (*request.Request, *ssm.UpdateMaintenanceWindowOutput)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,44 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package sso provides the client and types for making API
|
||||||
|
// requests to AWS Single Sign-On.
|
||||||
|
//
|
||||||
|
// AWS Single Sign-On Portal is a web service that makes it easy for you to
|
||||||
|
// assign user access to AWS SSO resources such as the user portal. Users can
|
||||||
|
// get AWS account applications and roles assigned to them and get federated
|
||||||
|
// into the application.
|
||||||
|
//
|
||||||
|
// For general information about AWS SSO, see What is AWS Single Sign-On? (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
|
||||||
|
// in the AWS SSO User Guide.
|
||||||
|
//
|
||||||
|
// This API reference guide describes the AWS SSO Portal operations that you
|
||||||
|
// can call programatically and includes detailed information on data types
|
||||||
|
// and errors.
|
||||||
|
//
|
||||||
|
// AWS provides SDKs that consist of libraries and sample code for various programming
|
||||||
|
// languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs
|
||||||
|
// provide a convenient way to create programmatic access to AWS SSO and other
|
||||||
|
// AWS services. For more information about the AWS SDKs, including how to download
|
||||||
|
// and install them, see Tools for Amazon Web Services (http://aws.amazon.com/tools/).
|
||||||
|
//
|
||||||
|
// See https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10 for more information on this service.
|
||||||
|
//
|
||||||
|
// See sso package documentation for more information.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/
|
||||||
|
//
|
||||||
|
// Using the Client
|
||||||
|
//
|
||||||
|
// To contact AWS Single Sign-On with the SDK use the New function to create
|
||||||
|
// a new service client. With that client you can make API requests to the service.
|
||||||
|
// These clients are safe to use concurrently.
|
||||||
|
//
|
||||||
|
// See the SDK's documentation for more information on how to use the SDK.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/
|
||||||
|
//
|
||||||
|
// See aws.Config documentation for more information on configuring SDK clients.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config
|
||||||
|
//
|
||||||
|
// See the AWS Single Sign-On client SSO for more
|
||||||
|
// information on creating client for this service.
|
||||||
|
// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/#New
|
||||||
|
package sso
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
package sso
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
|
||||||
|
// ErrCodeInvalidRequestException for service response error code
|
||||||
|
// "InvalidRequestException".
|
||||||
|
//
|
||||||
|
// Indicates that a problem occurred with the input to the request. For example,
|
||||||
|
// a required parameter might be missing or out of range.
|
||||||
|
ErrCodeInvalidRequestException = "InvalidRequestException"
|
||||||
|
|
||||||
|
// ErrCodeResourceNotFoundException for service response error code
|
||||||
|
// "ResourceNotFoundException".
|
||||||
|
//
|
||||||
|
// The specified resource doesn't exist.
|
||||||
|
ErrCodeResourceNotFoundException = "ResourceNotFoundException"
|
||||||
|
|
||||||
|
// ErrCodeTooManyRequestsException for service response error code
|
||||||
|
// "TooManyRequestsException".
|
||||||
|
//
|
||||||
|
// Indicates that the request is being made too frequently and is more than
|
||||||
|
// what the server can handle.
|
||||||
|
ErrCodeTooManyRequestsException = "TooManyRequestsException"
|
||||||
|
|
||||||
|
// ErrCodeUnauthorizedException for service response error code
|
||||||
|
// "UnauthorizedException".
|
||||||
|
//
|
||||||
|
// Indicates that the request is not authorized. This can happen due to an invalid
|
||||||
|
// access token in the request.
|
||||||
|
ErrCodeUnauthorizedException = "UnauthorizedException"
|
||||||
|
)
|
||||||
|
|
||||||
|
var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{
|
||||||
|
"InvalidRequestException": newErrorInvalidRequestException,
|
||||||
|
"ResourceNotFoundException": newErrorResourceNotFoundException,
|
||||||
|
"TooManyRequestsException": newErrorTooManyRequestsException,
|
||||||
|
"UnauthorizedException": newErrorUnauthorizedException,
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
package sso
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/client"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/client/metadata"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/signer/v4"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/restjson"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SSO provides the API operation methods for making requests to
|
||||||
|
// AWS Single Sign-On. See this package's package overview docs
|
||||||
|
// for details on the service.
|
||||||
|
//
|
||||||
|
// SSO methods are safe to use concurrently. It is not safe to
|
||||||
|
// modify mutate any of the struct's properties though.
|
||||||
|
type SSO struct {
|
||||||
|
*client.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Used for custom client initialization logic
|
||||||
|
var initClient func(*client.Client)
|
||||||
|
|
||||||
|
// Used for custom request initialization logic
|
||||||
|
var initRequest func(*request.Request)
|
||||||
|
|
||||||
|
// Service information constants
|
||||||
|
const (
|
||||||
|
ServiceName = "SSO" // Name of service.
|
||||||
|
EndpointsID = "portal.sso" // ID to lookup a service endpoint with.
|
||||||
|
ServiceID = "SSO" // ServiceID is a unique identifier of a specific service.
|
||||||
|
)
|
||||||
|
|
||||||
|
// New creates a new instance of the SSO client with a session.
|
||||||
|
// If additional configuration is needed for the client instance use the optional
|
||||||
|
// aws.Config parameter to add your extra config.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// mySession := session.Must(session.NewSession())
|
||||||
|
//
|
||||||
|
// // Create a SSO client from just a session.
|
||||||
|
// svc := sso.New(mySession)
|
||||||
|
//
|
||||||
|
// // Create a SSO client with additional configuration
|
||||||
|
// svc := sso.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
|
||||||
|
func New(p client.ConfigProvider, cfgs ...*aws.Config) *SSO {
|
||||||
|
c := p.ClientConfig(EndpointsID, cfgs...)
|
||||||
|
if c.SigningNameDerived || len(c.SigningName) == 0 {
|
||||||
|
c.SigningName = "awsssoportal"
|
||||||
|
}
|
||||||
|
return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// newClient creates, initializes and returns a new service client instance.
|
||||||
|
func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *SSO {
|
||||||
|
svc := &SSO{
|
||||||
|
Client: client.New(
|
||||||
|
cfg,
|
||||||
|
metadata.ClientInfo{
|
||||||
|
ServiceName: ServiceName,
|
||||||
|
ServiceID: ServiceID,
|
||||||
|
SigningName: signingName,
|
||||||
|
SigningRegion: signingRegion,
|
||||||
|
PartitionID: partitionID,
|
||||||
|
Endpoint: endpoint,
|
||||||
|
APIVersion: "2019-06-10",
|
||||||
|
},
|
||||||
|
handlers,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handlers
|
||||||
|
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
|
||||||
|
svc.Handlers.Build.PushBackNamed(restjson.BuildHandler)
|
||||||
|
svc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler)
|
||||||
|
svc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler)
|
||||||
|
svc.Handlers.UnmarshalError.PushBackNamed(
|
||||||
|
protocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Run custom client initialization if present
|
||||||
|
if initClient != nil {
|
||||||
|
initClient(svc.Client)
|
||||||
|
}
|
||||||
|
|
||||||
|
return svc
|
||||||
|
}
|
||||||
|
|
||||||
|
// newRequest creates a new request for a SSO operation and runs any
|
||||||
|
// custom request initialization.
|
||||||
|
func (c *SSO) newRequest(op *request.Operation, params, data interface{}) *request.Request {
|
||||||
|
req := c.NewRequest(op, params, data)
|
||||||
|
|
||||||
|
// Run custom request initialization if present
|
||||||
|
if initRequest != nil {
|
||||||
|
initRequest(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
return req
|
||||||
|
}
|
86
vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go
generated
vendored
Normal file
86
vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go
generated
vendored
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package ssoiface provides an interface to enable mocking the AWS Single Sign-On service client
|
||||||
|
// for testing your code.
|
||||||
|
//
|
||||||
|
// It is important to note that this interface will have breaking changes
|
||||||
|
// when the service model is updated and adds new API operations, paginators,
|
||||||
|
// and waiters.
|
||||||
|
package ssoiface
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sso"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SSOAPI provides an interface to enable mocking the
|
||||||
|
// sso.SSO service client's API operation,
|
||||||
|
// paginators, and waiters. This make unit testing your code that calls out
|
||||||
|
// to the SDK's service client's calls easier.
|
||||||
|
//
|
||||||
|
// The best way to use this interface is so the SDK's service client's calls
|
||||||
|
// can be stubbed out for unit testing your code with the SDK without needing
|
||||||
|
// to inject custom request handlers into the SDK's request pipeline.
|
||||||
|
//
|
||||||
|
// // myFunc uses an SDK service client to make a request to
|
||||||
|
// // AWS Single Sign-On.
|
||||||
|
// func myFunc(svc ssoiface.SSOAPI) bool {
|
||||||
|
// // Make svc.GetRoleCredentials request
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func main() {
|
||||||
|
// sess := session.New()
|
||||||
|
// svc := sso.New(sess)
|
||||||
|
//
|
||||||
|
// myFunc(svc)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// In your _test.go file:
|
||||||
|
//
|
||||||
|
// // Define a mock struct to be used in your unit tests of myFunc.
|
||||||
|
// type mockSSOClient struct {
|
||||||
|
// ssoiface.SSOAPI
|
||||||
|
// }
|
||||||
|
// func (m *mockSSOClient) GetRoleCredentials(input *sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error) {
|
||||||
|
// // mock response/functionality
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func TestMyFunc(t *testing.T) {
|
||||||
|
// // Setup Test
|
||||||
|
// mockSvc := &mockSSOClient{}
|
||||||
|
//
|
||||||
|
// myfunc(mockSvc)
|
||||||
|
//
|
||||||
|
// // Verify myFunc's functionality
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// It is important to note that this interface will have breaking changes
|
||||||
|
// when the service model is updated and adds new API operations, paginators,
|
||||||
|
// and waiters. Its suggested to use the pattern above for testing, or using
|
||||||
|
// tooling to generate mocks to satisfy the interfaces.
|
||||||
|
type SSOAPI interface {
|
||||||
|
GetRoleCredentials(*sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error)
|
||||||
|
GetRoleCredentialsWithContext(aws.Context, *sso.GetRoleCredentialsInput, ...request.Option) (*sso.GetRoleCredentialsOutput, error)
|
||||||
|
GetRoleCredentialsRequest(*sso.GetRoleCredentialsInput) (*request.Request, *sso.GetRoleCredentialsOutput)
|
||||||
|
|
||||||
|
ListAccountRoles(*sso.ListAccountRolesInput) (*sso.ListAccountRolesOutput, error)
|
||||||
|
ListAccountRolesWithContext(aws.Context, *sso.ListAccountRolesInput, ...request.Option) (*sso.ListAccountRolesOutput, error)
|
||||||
|
ListAccountRolesRequest(*sso.ListAccountRolesInput) (*request.Request, *sso.ListAccountRolesOutput)
|
||||||
|
|
||||||
|
ListAccountRolesPages(*sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool) error
|
||||||
|
ListAccountRolesPagesWithContext(aws.Context, *sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListAccounts(*sso.ListAccountsInput) (*sso.ListAccountsOutput, error)
|
||||||
|
ListAccountsWithContext(aws.Context, *sso.ListAccountsInput, ...request.Option) (*sso.ListAccountsOutput, error)
|
||||||
|
ListAccountsRequest(*sso.ListAccountsInput) (*request.Request, *sso.ListAccountsOutput)
|
||||||
|
|
||||||
|
ListAccountsPages(*sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool) error
|
||||||
|
ListAccountsPagesWithContext(aws.Context, *sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
Logout(*sso.LogoutInput) (*sso.LogoutOutput, error)
|
||||||
|
LogoutWithContext(aws.Context, *sso.LogoutInput, ...request.Option) (*sso.LogoutOutput, error)
|
||||||
|
LogoutRequest(*sso.LogoutInput) (*request.Request, *sso.LogoutOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ SSOAPI = (*sso.SSO)(nil)
|
|
@ -100,7 +100,7 @@ github.com/approvals/go-approval-tests/utils
|
||||||
github.com/armon/go-metrics
|
github.com/armon/go-metrics
|
||||||
# github.com/armon/go-radix v1.0.0
|
# github.com/armon/go-radix v1.0.0
|
||||||
github.com/armon/go-radix
|
github.com/armon/go-radix
|
||||||
# github.com/aws/aws-sdk-go v1.36.5
|
# github.com/aws/aws-sdk-go v1.37.15
|
||||||
github.com/aws/aws-sdk-go/aws
|
github.com/aws/aws-sdk-go/aws
|
||||||
github.com/aws/aws-sdk-go/aws/arn
|
github.com/aws/aws-sdk-go/aws/arn
|
||||||
github.com/aws/aws-sdk-go/aws/awserr
|
github.com/aws/aws-sdk-go/aws/awserr
|
||||||
|
@ -112,6 +112,7 @@ github.com/aws/aws-sdk-go/aws/credentials
|
||||||
github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
|
github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
|
||||||
github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
|
github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
|
||||||
github.com/aws/aws-sdk-go/aws/credentials/processcreds
|
github.com/aws/aws-sdk-go/aws/credentials/processcreds
|
||||||
|
github.com/aws/aws-sdk-go/aws/credentials/ssocreds
|
||||||
github.com/aws/aws-sdk-go/aws/credentials/stscreds
|
github.com/aws/aws-sdk-go/aws/credentials/stscreds
|
||||||
github.com/aws/aws-sdk-go/aws/csm
|
github.com/aws/aws-sdk-go/aws/csm
|
||||||
github.com/aws/aws-sdk-go/aws/defaults
|
github.com/aws/aws-sdk-go/aws/defaults
|
||||||
|
@ -142,6 +143,7 @@ github.com/aws/aws-sdk-go/private/protocol/jsonrpc
|
||||||
github.com/aws/aws-sdk-go/private/protocol/query
|
github.com/aws/aws-sdk-go/private/protocol/query
|
||||||
github.com/aws/aws-sdk-go/private/protocol/query/queryutil
|
github.com/aws/aws-sdk-go/private/protocol/query/queryutil
|
||||||
github.com/aws/aws-sdk-go/private/protocol/rest
|
github.com/aws/aws-sdk-go/private/protocol/rest
|
||||||
|
github.com/aws/aws-sdk-go/private/protocol/restjson
|
||||||
github.com/aws/aws-sdk-go/private/protocol/restxml
|
github.com/aws/aws-sdk-go/private/protocol/restxml
|
||||||
github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
|
github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
|
||||||
github.com/aws/aws-sdk-go/service/ec2
|
github.com/aws/aws-sdk-go/service/ec2
|
||||||
|
@ -155,6 +157,8 @@ github.com/aws/aws-sdk-go/service/secretsmanager
|
||||||
github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface
|
github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface
|
||||||
github.com/aws/aws-sdk-go/service/ssm
|
github.com/aws/aws-sdk-go/service/ssm
|
||||||
github.com/aws/aws-sdk-go/service/ssm/ssmiface
|
github.com/aws/aws-sdk-go/service/ssm/ssmiface
|
||||||
|
github.com/aws/aws-sdk-go/service/sso
|
||||||
|
github.com/aws/aws-sdk-go/service/sso/ssoiface
|
||||||
github.com/aws/aws-sdk-go/service/sts
|
github.com/aws/aws-sdk-go/service/sts
|
||||||
github.com/aws/aws-sdk-go/service/sts/stsiface
|
github.com/aws/aws-sdk-go/service/sts/stsiface
|
||||||
# github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d
|
# github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d
|
||||||
|
|
Loading…
Reference in New Issue