mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-03 03:58:01 +00:00
Translate AWS Rate limiting errors to 502 errors (#5270)
* Initial implemntation of returning 529 for rate limits - bump aws iam and sts packages to v1.14.31 to get mocking interface - promote the iam and sts clients to the aws backend struct, for mocking in tests - this also promotes some functions to methods on the Backend struct, so that we can use the injected client Generating creds requires reading config/root for credentials to contact IAM. Here we make pathConfigRoot a method on aws/backend so we can clear the clients on successful update of config/root path. Adds a mutex to safely clear the clients * refactor locking and unlocking into methods on *backend * refactor/simply the locking * check client after grabbing lock
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/aws/aws-sdk-go/aws/endpoints"
|
"github.com/aws/aws-sdk-go/aws/endpoints"
|
||||||
"github.com/aws/aws-sdk-go/service/ec2"
|
"github.com/aws/aws-sdk-go/service/ec2"
|
||||||
"github.com/aws/aws-sdk-go/service/iam"
|
"github.com/aws/aws-sdk-go/service/iam"
|
||||||
|
"github.com/hashicorp/vault/helper/awsutil"
|
||||||
"github.com/hashicorp/vault/helper/consts"
|
"github.com/hashicorp/vault/helper/consts"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/framework"
|
"github.com/hashicorp/vault/logical/framework"
|
||||||
@@ -233,14 +234,14 @@ func (b *backend) resolveArnToRealUniqueId(ctx context.Context, s logical.Storag
|
|||||||
}
|
}
|
||||||
iamClient, err := b.clientIAM(ctx, s, region.ID(), entity.AccountNumber)
|
iamClient, err := b.clientIAM(ctx, s, region.ID(), entity.AccountNumber)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", awsutil.AppendLogicalError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch entity.Type {
|
switch entity.Type {
|
||||||
case "user":
|
case "user":
|
||||||
userInfo, err := iamClient.GetUser(&iam.GetUserInput{UserName: &entity.FriendlyName})
|
userInfo, err := iamClient.GetUser(&iam.GetUserInput{UserName: &entity.FriendlyName})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", awsutil.AppendLogicalError(err)
|
||||||
}
|
}
|
||||||
if userInfo == nil {
|
if userInfo == nil {
|
||||||
return "", fmt.Errorf("got nil result from GetUser")
|
return "", fmt.Errorf("got nil result from GetUser")
|
||||||
@@ -249,7 +250,7 @@ func (b *backend) resolveArnToRealUniqueId(ctx context.Context, s logical.Storag
|
|||||||
case "role":
|
case "role":
|
||||||
roleInfo, err := iamClient.GetRole(&iam.GetRoleInput{RoleName: &entity.FriendlyName})
|
roleInfo, err := iamClient.GetRole(&iam.GetRoleInput{RoleName: &entity.FriendlyName})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", awsutil.AppendLogicalError(err)
|
||||||
}
|
}
|
||||||
if roleInfo == nil {
|
if roleInfo == nil {
|
||||||
return "", fmt.Errorf("got nil result from GetRole")
|
return "", fmt.Errorf("got nil result from GetRole")
|
||||||
@@ -258,7 +259,7 @@ func (b *backend) resolveArnToRealUniqueId(ctx context.Context, s logical.Storag
|
|||||||
case "instance-profile":
|
case "instance-profile":
|
||||||
profileInfo, err := iamClient.GetInstanceProfile(&iam.GetInstanceProfileInput{InstanceProfileName: &entity.FriendlyName})
|
profileInfo, err := iamClient.GetInstanceProfile(&iam.GetInstanceProfileInput{InstanceProfileName: &entity.FriendlyName})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", awsutil.AppendLogicalError(err)
|
||||||
}
|
}
|
||||||
if profileInfo == nil {
|
if profileInfo == nil {
|
||||||
return "", fmt.Errorf("got nil result from GetInstanceProfile")
|
return "", fmt.Errorf("got nil result from GetInstanceProfile")
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import (
|
|||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
"github.com/hashicorp/go-cleanhttp"
|
"github.com/hashicorp/go-cleanhttp"
|
||||||
"github.com/hashicorp/go-uuid"
|
"github.com/hashicorp/go-uuid"
|
||||||
|
"github.com/hashicorp/vault/helper/awsutil"
|
||||||
"github.com/hashicorp/vault/helper/jsonutil"
|
"github.com/hashicorp/vault/helper/jsonutil"
|
||||||
"github.com/hashicorp/vault/helper/strutil"
|
"github.com/hashicorp/vault/helper/strutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
@@ -131,7 +132,7 @@ func (b *backend) instanceIamRoleARN(iamClient *iam.IAM, instanceProfileName str
|
|||||||
InstanceProfileName: aws.String(instanceProfileName),
|
InstanceProfileName: aws.String(instanceProfileName),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", awsutil.AppendLogicalError(err)
|
||||||
}
|
}
|
||||||
if profile == nil {
|
if profile == nil {
|
||||||
return "", fmt.Errorf("nil output while getting instance profile details")
|
return "", fmt.Errorf("nil output while getting instance profile details")
|
||||||
@@ -167,7 +168,8 @@ func (b *backend) validateInstance(ctx context.Context, s logical.Storage, insta
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errwrap.Wrapf(fmt.Sprintf("error fetching description for instance ID %q: {{err}}", instanceID), err)
|
errW := errwrap.Wrapf(fmt.Sprintf("error fetching description for instance ID %q: {{err}}", instanceID), err)
|
||||||
|
return nil, errwrap.Wrap(errW, awsutil.CheckAWSError(err))
|
||||||
}
|
}
|
||||||
if status == nil {
|
if status == nil {
|
||||||
return nil, fmt.Errorf("nil output from describe instances")
|
return nil, fmt.Errorf("nil output from describe instances")
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/service/iam/iamiface"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sts/stsiface"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/framework"
|
"github.com/hashicorp/vault/logical/framework"
|
||||||
)
|
)
|
||||||
@@ -33,7 +35,7 @@ func Backend() *backend {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Paths: []*framework.Path{
|
Paths: []*framework.Path{
|
||||||
pathConfigRoot(),
|
pathConfigRoot(&b),
|
||||||
pathConfigLease(&b),
|
pathConfigLease(&b),
|
||||||
pathRoles(&b),
|
pathRoles(&b),
|
||||||
pathListRoles(&b),
|
pathListRoles(&b),
|
||||||
@@ -57,6 +59,14 @@ type backend struct {
|
|||||||
|
|
||||||
// Mutex to protect access to reading and writing policies
|
// Mutex to protect access to reading and writing policies
|
||||||
roleMutex sync.RWMutex
|
roleMutex sync.RWMutex
|
||||||
|
|
||||||
|
// Mutex to protect access to iam/sts clients
|
||||||
|
clientMutex sync.RWMutex
|
||||||
|
|
||||||
|
// iamClient and stsClient hold configured iam and sts clients for reuse, and
|
||||||
|
// to enable mocking with AWS iface for tests
|
||||||
|
iamClient iamiface.IAMAPI
|
||||||
|
stsClient stsiface.STSAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
const backendHelp = `
|
const backendHelp = `
|
||||||
@@ -68,3 +78,59 @@ After mounting this backend, credentials to generate IAM keys must
|
|||||||
be configured with the "root" path and policies must be written using
|
be configured with the "root" path and policies must be written using
|
||||||
the "roles/" endpoints before any access keys can be generated.
|
the "roles/" endpoints before any access keys can be generated.
|
||||||
`
|
`
|
||||||
|
|
||||||
|
// clientIAM returns the configured IAM client. If nil, it constructs a new one
|
||||||
|
// and returns it, setting it the internal variable
|
||||||
|
func (b *backend) clientIAM(ctx context.Context, s logical.Storage) (iamiface.IAMAPI, error) {
|
||||||
|
b.clientMutex.RLock()
|
||||||
|
if b.iamClient != nil {
|
||||||
|
b.clientMutex.RUnlock()
|
||||||
|
return b.iamClient, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upgrade the lock for writing
|
||||||
|
b.clientMutex.RUnlock()
|
||||||
|
b.clientMutex.Lock()
|
||||||
|
defer b.clientMutex.Unlock()
|
||||||
|
|
||||||
|
// check client again, in the event that a client was being created while we
|
||||||
|
// waited for Lock()
|
||||||
|
if b.iamClient != nil {
|
||||||
|
return b.iamClient, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
iamClient, err := clientIAM(ctx, s)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
b.iamClient = iamClient
|
||||||
|
|
||||||
|
return b.iamClient, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *backend) clientSTS(ctx context.Context, s logical.Storage) (stsiface.STSAPI, error) {
|
||||||
|
b.clientMutex.RLock()
|
||||||
|
if b.stsClient != nil {
|
||||||
|
b.clientMutex.RUnlock()
|
||||||
|
return b.stsClient, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upgrade the lock for writing
|
||||||
|
b.clientMutex.RUnlock()
|
||||||
|
b.clientMutex.Lock()
|
||||||
|
defer b.clientMutex.Unlock()
|
||||||
|
|
||||||
|
// check client again, in the event that a client was being created while we
|
||||||
|
// waited for Lock()
|
||||||
|
if b.stsClient != nil {
|
||||||
|
return b.stsClient, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
stsClient, err := clientSTS(ctx, s)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
b.stsClient = stsClient
|
||||||
|
|
||||||
|
return b.stsClient, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -16,6 +17,7 @@ import (
|
|||||||
"github.com/aws/aws-sdk-go/service/dynamodb"
|
"github.com/aws/aws-sdk-go/service/dynamodb"
|
||||||
"github.com/aws/aws-sdk-go/service/ec2"
|
"github.com/aws/aws-sdk-go/service/ec2"
|
||||||
"github.com/aws/aws-sdk-go/service/iam"
|
"github.com/aws/aws-sdk-go/service/iam"
|
||||||
|
"github.com/aws/aws-sdk-go/service/iam/iamiface"
|
||||||
"github.com/aws/aws-sdk-go/service/sts"
|
"github.com/aws/aws-sdk-go/service/sts"
|
||||||
"github.com/hashicorp/go-cleanhttp"
|
"github.com/hashicorp/go-cleanhttp"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
@@ -23,6 +25,14 @@ import (
|
|||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type mockIAMClient struct {
|
||||||
|
iamiface.IAMAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *mockIAMClient) CreateUser(input *iam.CreateUserInput) (*iam.CreateUserOutput, error) {
|
||||||
|
return nil, awserr.New("Throttling", "", nil)
|
||||||
|
}
|
||||||
|
|
||||||
func getBackend(t *testing.T) logical.Backend {
|
func getBackend(t *testing.T) logical.Backend {
|
||||||
be, _ := Factory(context.Background(), logical.TestBackendConfig())
|
be, _ := Factory(context.Background(), logical.TestBackendConfig())
|
||||||
return be
|
return be
|
||||||
@@ -89,6 +99,61 @@ func TestBackend_policyCrud(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBackend_throttled(t *testing.T) {
|
||||||
|
config := logical.TestBackendConfig()
|
||||||
|
config.StorageView = &logical.InmemStorage{}
|
||||||
|
|
||||||
|
b := Backend()
|
||||||
|
if err := b.Setup(context.Background(), config); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
connData := map[string]interface{}{
|
||||||
|
"credential_type": "iam_user",
|
||||||
|
}
|
||||||
|
|
||||||
|
confReq := &logical.Request{
|
||||||
|
Operation: logical.UpdateOperation,
|
||||||
|
Path: "roles/something",
|
||||||
|
Storage: config.StorageView,
|
||||||
|
Data: connData,
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := b.HandleRequest(context.Background(), confReq)
|
||||||
|
if err != nil || (resp != nil && resp.IsError()) {
|
||||||
|
t.Fatalf("failed to write configuration: resp:%#v err:%s", resp, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mock the IAM API call to return a throttled response to the CreateUser API
|
||||||
|
// call
|
||||||
|
b.iamClient = &mockIAMClient{}
|
||||||
|
|
||||||
|
credReq := &logical.Request{
|
||||||
|
Operation: logical.UpdateOperation,
|
||||||
|
Path: "creds/something",
|
||||||
|
Storage: config.StorageView,
|
||||||
|
}
|
||||||
|
|
||||||
|
credResp, err := b.HandleRequest(context.Background(), credReq)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("failed to trigger expected throttling error condition: resp:%#v", credResp)
|
||||||
|
}
|
||||||
|
rErr := credResp.Error()
|
||||||
|
expected := "Error creating IAM user: Throttling: "
|
||||||
|
if rErr.Error() != expected {
|
||||||
|
t.Fatalf("error message did not match, expected (%s), got (%s)", expected, rErr.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
// verify the error we got back is returned with a http.StatusBadGateway
|
||||||
|
code, err := logical.RespondErrorCommon(credReq, credResp, err)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error after running req/resp/err through RespondErrorCommon, got nil")
|
||||||
|
}
|
||||||
|
if code != http.StatusBadGateway {
|
||||||
|
t.Fatalf("expected HTTP status 'bad gateway', got: (%d)", code)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func testAccPreCheck(t *testing.T) {
|
func testAccPreCheck(t *testing.T) {
|
||||||
if v := os.Getenv("AWS_DEFAULT_REGION"); v == "" {
|
if v := os.Getenv("AWS_DEFAULT_REGION"); v == "" {
|
||||||
log.Println("[INFO] Test: Using us-west-2 as test region")
|
log.Println("[INFO] Test: Using us-west-2 as test region")
|
||||||
@@ -96,17 +161,17 @@ func testAccPreCheck(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if v := os.Getenv("AWS_ACCOUNT_ID"); v == "" {
|
if v := os.Getenv("AWS_ACCOUNT_ID"); v == "" {
|
||||||
accountId, err := getAccountId()
|
accountID, err := getAccountID()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Logf("Unable to retrive user via iam:GetUser: %#v", err)
|
t.Logf("Unable to retrive user via iam:GetUser: %#v", err)
|
||||||
t.Skip("AWS_ACCOUNT_ID not explicitly set and could not be read from iam:GetUser for acceptance tests, skipping")
|
t.Skip("AWS_ACCOUNT_ID not explicitly set and could not be read from iam:GetUser for acceptance tests, skipping")
|
||||||
}
|
}
|
||||||
log.Printf("[INFO] Test: Used %s as AWS_ACCOUNT_ID", accountId)
|
log.Printf("[INFO] Test: Used %s as AWS_ACCOUNT_ID", accountID)
|
||||||
os.Setenv("AWS_ACCOUNT_ID", accountId)
|
os.Setenv("AWS_ACCOUNT_ID", accountID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAccountId() (string, error) {
|
func getAccountID() (string, error) {
|
||||||
awsConfig := &aws.Config{
|
awsConfig := &aws.Config{
|
||||||
Region: aws.String("us-east-1"),
|
Region: aws.String("us-east-1"),
|
||||||
HTTPClient: cleanhttp.DefaultClient(),
|
HTTPClient: cleanhttp.DefaultClient(),
|
||||||
@@ -251,7 +316,7 @@ func createUser(t *testing.T, accessKey *awsAccessKey) {
|
|||||||
}
|
}
|
||||||
genAccessKey := createAccessKeyOutput.AccessKey
|
genAccessKey := createAccessKeyOutput.AccessKey
|
||||||
|
|
||||||
accessKey.AccessKeyId = *genAccessKey.AccessKeyId
|
accessKey.AccessKeyID = *genAccessKey.AccessKeyId
|
||||||
accessKey.SecretAccessKey = *genAccessKey.SecretAccessKey
|
accessKey.SecretAccessKey = *genAccessKey.SecretAccessKey
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,7 +373,7 @@ func teardown(accessKey *awsAccessKey) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
deleteAccessKeyInput := &iam.DeleteAccessKeyInput{
|
deleteAccessKeyInput := &iam.DeleteAccessKeyInput{
|
||||||
AccessKeyId: aws.String(accessKey.AccessKeyId),
|
AccessKeyId: aws.String(accessKey.AccessKeyID),
|
||||||
UserName: aws.String(testUserName),
|
UserName: aws.String(testUserName),
|
||||||
}
|
}
|
||||||
_, err = svc.DeleteAccessKey(deleteAccessKeyInput)
|
_, err = svc.DeleteAccessKey(deleteAccessKeyInput)
|
||||||
@@ -361,7 +426,7 @@ func testAccStepConfigWithCreds(t *testing.T, accessKey *awsAccessKey) logicalte
|
|||||||
// In particular, they get evaluated before accessKey gets set by CreateUser
|
// In particular, they get evaluated before accessKey gets set by CreateUser
|
||||||
// and thus would fail. By moving to a closure in a PreFlight, we ensure that
|
// and thus would fail. By moving to a closure in a PreFlight, we ensure that
|
||||||
// the creds get evaluated lazily after they've been properly set
|
// the creds get evaluated lazily after they've been properly set
|
||||||
req.Data["access_key"] = accessKey.AccessKeyId
|
req.Data["access_key"] = accessKey.AccessKeyID
|
||||||
req.Data["secret_key"] = accessKey.SecretAccessKey
|
req.Data["secret_key"] = accessKey.SecretAccessKey
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
@@ -731,7 +796,7 @@ func testAccStepWriteArnRoleRef(t *testing.T, roleName string) logicaltest.TestS
|
|||||||
}
|
}
|
||||||
|
|
||||||
type awsAccessKey struct {
|
type awsAccessKey struct {
|
||||||
AccessKeyId string
|
AccessKeyID string
|
||||||
SecretAccessKey string
|
SecretAccessKey string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/hashicorp/vault/logical/framework"
|
"github.com/hashicorp/vault/logical/framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
func pathConfigRoot() *framework.Path {
|
func pathConfigRoot(b *backend) *framework.Path {
|
||||||
return &framework.Path{
|
return &framework.Path{
|
||||||
Pattern: "config/root",
|
Pattern: "config/root",
|
||||||
Fields: map[string]*framework.FieldSchema{
|
Fields: map[string]*framework.FieldSchema{
|
||||||
@@ -42,7 +42,7 @@ func pathConfigRoot() *framework.Path {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Callbacks: map[logical.Operation]framework.OperationFunc{
|
Callbacks: map[logical.Operation]framework.OperationFunc{
|
||||||
logical.UpdateOperation: pathConfigRootWrite,
|
logical.UpdateOperation: b.pathConfigRootWrite,
|
||||||
},
|
},
|
||||||
|
|
||||||
HelpSynopsis: pathConfigRootHelpSyn,
|
HelpSynopsis: pathConfigRootHelpSyn,
|
||||||
@@ -50,7 +50,7 @@ func pathConfigRoot() *framework.Path {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func pathConfigRootWrite(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
|
func (b *backend) pathConfigRootWrite(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
|
||||||
region := data.Get("region").(string)
|
region := data.Get("region").(string)
|
||||||
iamendpoint := data.Get("iam_endpoint").(string)
|
iamendpoint := data.Get("iam_endpoint").(string)
|
||||||
stsendpoint := data.Get("sts_endpoint").(string)
|
stsendpoint := data.Get("sts_endpoint").(string)
|
||||||
@@ -72,6 +72,13 @@ func pathConfigRootWrite(ctx context.Context, req *logical.Request, data *framew
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// clear possible cached IAM / STS clients after successfully updating
|
||||||
|
// config/root
|
||||||
|
b.clientMutex.Lock()
|
||||||
|
defer b.clientMutex.Unlock()
|
||||||
|
b.iamClient = nil
|
||||||
|
b.stsClient = nil
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,15 +11,16 @@ import (
|
|||||||
"github.com/aws/aws-sdk-go/service/iam"
|
"github.com/aws/aws-sdk-go/service/iam"
|
||||||
"github.com/aws/aws-sdk-go/service/sts"
|
"github.com/aws/aws-sdk-go/service/sts"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
"github.com/hashicorp/vault/helper/awsutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/framework"
|
"github.com/hashicorp/vault/logical/framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
const SecretAccessKeyType = "access_keys"
|
const secretAccessKeyType = "access_keys"
|
||||||
|
|
||||||
func secretAccessKeys(b *backend) *framework.Secret {
|
func secretAccessKeys(b *backend) *framework.Secret {
|
||||||
return &framework.Secret{
|
return &framework.Secret{
|
||||||
Type: SecretAccessKeyType,
|
Type: secretAccessKeyType,
|
||||||
Fields: map[string]*framework.FieldSchema{
|
Fields: map[string]*framework.FieldSchema{
|
||||||
"access_key": &framework.FieldSchema{
|
"access_key": &framework.FieldSchema{
|
||||||
Type: framework.TypeString,
|
Type: framework.TypeString,
|
||||||
@@ -37,7 +38,7 @@ func secretAccessKeys(b *backend) *framework.Secret {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Renew: b.secretAccessKeysRenew,
|
Renew: b.secretAccessKeysRenew,
|
||||||
Revoke: secretAccessKeysRevoke,
|
Revoke: b.secretAccessKeysRevoke,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,14 +68,15 @@ func genUsername(displayName, policyName, userType string) (ret string, warning
|
|||||||
func (b *backend) secretTokenCreate(ctx context.Context, s logical.Storage,
|
func (b *backend) secretTokenCreate(ctx context.Context, s logical.Storage,
|
||||||
displayName, policyName, policy string,
|
displayName, policyName, policy string,
|
||||||
lifeTimeInSeconds int64) (*logical.Response, error) {
|
lifeTimeInSeconds int64) (*logical.Response, error) {
|
||||||
STSClient, err := clientSTS(ctx, s)
|
|
||||||
|
stsClient, err := b.clientSTS(ctx, s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(err.Error()), nil
|
return logical.ErrorResponse(err.Error()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
username, usernameWarning := genUsername(displayName, policyName, "sts")
|
username, usernameWarning := genUsername(displayName, policyName, "sts")
|
||||||
|
|
||||||
tokenResp, err := STSClient.GetFederationToken(
|
tokenResp, err := stsClient.GetFederationToken(
|
||||||
&sts.GetFederationTokenInput{
|
&sts.GetFederationTokenInput{
|
||||||
Name: aws.String(username),
|
Name: aws.String(username),
|
||||||
Policy: aws.String(policy),
|
Policy: aws.String(policy),
|
||||||
@@ -83,10 +85,10 @@ func (b *backend) secretTokenCreate(ctx context.Context, s logical.Storage,
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(fmt.Sprintf(
|
return logical.ErrorResponse(fmt.Sprintf(
|
||||||
"Error generating STS keys: %s", err)), nil
|
"Error generating STS keys: %s", err)), awsutil.CheckAWSError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp := b.Secret(SecretAccessKeyType).Response(map[string]interface{}{
|
resp := b.Secret(secretAccessKeyType).Response(map[string]interface{}{
|
||||||
"access_key": *tokenResp.Credentials.AccessKeyId,
|
"access_key": *tokenResp.Credentials.AccessKeyId,
|
||||||
"secret_key": *tokenResp.Credentials.SecretAccessKey,
|
"secret_key": *tokenResp.Credentials.SecretAccessKey,
|
||||||
"security_token": *tokenResp.Credentials.SessionToken,
|
"security_token": *tokenResp.Credentials.SessionToken,
|
||||||
@@ -112,7 +114,8 @@ func (b *backend) secretTokenCreate(ctx context.Context, s logical.Storage,
|
|||||||
func (b *backend) assumeRole(ctx context.Context, s logical.Storage,
|
func (b *backend) assumeRole(ctx context.Context, s logical.Storage,
|
||||||
displayName, roleName, roleArn, policy string,
|
displayName, roleName, roleArn, policy string,
|
||||||
lifeTimeInSeconds int64) (*logical.Response, error) {
|
lifeTimeInSeconds int64) (*logical.Response, error) {
|
||||||
STSClient, err := clientSTS(ctx, s)
|
|
||||||
|
stsClient, err := b.clientSTS(ctx, s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(err.Error()), nil
|
return logical.ErrorResponse(err.Error()), nil
|
||||||
}
|
}
|
||||||
@@ -127,14 +130,14 @@ func (b *backend) assumeRole(ctx context.Context, s logical.Storage,
|
|||||||
if policy != "" {
|
if policy != "" {
|
||||||
assumeRoleInput.SetPolicy(policy)
|
assumeRoleInput.SetPolicy(policy)
|
||||||
}
|
}
|
||||||
tokenResp, err := STSClient.AssumeRole(assumeRoleInput)
|
tokenResp, err := stsClient.AssumeRole(assumeRoleInput)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(fmt.Sprintf(
|
return logical.ErrorResponse(fmt.Sprintf(
|
||||||
"Error assuming role: %s", err)), nil
|
"Error assuming role: %s", err)), awsutil.CheckAWSError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp := b.Secret(SecretAccessKeyType).Response(map[string]interface{}{
|
resp := b.Secret(secretAccessKeyType).Response(map[string]interface{}{
|
||||||
"access_key": *tokenResp.Credentials.AccessKeyId,
|
"access_key": *tokenResp.Credentials.AccessKeyId,
|
||||||
"secret_key": *tokenResp.Credentials.SecretAccessKey,
|
"secret_key": *tokenResp.Credentials.SecretAccessKey,
|
||||||
"security_token": *tokenResp.Credentials.SessionToken,
|
"security_token": *tokenResp.Credentials.SessionToken,
|
||||||
@@ -161,7 +164,8 @@ func (b *backend) secretAccessKeysCreate(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
s logical.Storage,
|
s logical.Storage,
|
||||||
displayName, policyName string, role *awsRoleEntry) (*logical.Response, error) {
|
displayName, policyName string, role *awsRoleEntry) (*logical.Response, error) {
|
||||||
client, err := clientIAM(ctx, s)
|
|
||||||
|
iamClient, err := b.clientIAM(ctx, s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(err.Error()), nil
|
return logical.ErrorResponse(err.Error()), nil
|
||||||
}
|
}
|
||||||
@@ -172,7 +176,7 @@ func (b *backend) secretAccessKeysCreate(
|
|||||||
// the user is created because if switch the order then the WAL put
|
// the user is created because if switch the order then the WAL put
|
||||||
// can fail, which would put us in an awkward position: we have a user
|
// can fail, which would put us in an awkward position: we have a user
|
||||||
// we need to rollback but can't put the WAL entry to do the rollback.
|
// we need to rollback but can't put the WAL entry to do the rollback.
|
||||||
walId, err := framework.PutWAL(ctx, s, "user", &walUser{
|
walID, err := framework.PutWAL(ctx, s, "user", &walUser{
|
||||||
UserName: username,
|
UserName: username,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -180,57 +184,57 @@ func (b *backend) secretAccessKeysCreate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create the user
|
// Create the user
|
||||||
_, err = client.CreateUser(&iam.CreateUserInput{
|
_, err = iamClient.CreateUser(&iam.CreateUserInput{
|
||||||
UserName: aws.String(username),
|
UserName: aws.String(username),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(fmt.Sprintf(
|
return logical.ErrorResponse(fmt.Sprintf(
|
||||||
"Error creating IAM user: %s", err)), nil
|
"Error creating IAM user: %s", err)), awsutil.CheckAWSError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, arn := range role.PolicyArns {
|
for _, arn := range role.PolicyArns {
|
||||||
// Attach existing policy against user
|
// Attach existing policy against user
|
||||||
_, err = client.AttachUserPolicy(&iam.AttachUserPolicyInput{
|
_, err = iamClient.AttachUserPolicy(&iam.AttachUserPolicyInput{
|
||||||
UserName: aws.String(username),
|
UserName: aws.String(username),
|
||||||
PolicyArn: aws.String(arn),
|
PolicyArn: aws.String(arn),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(fmt.Sprintf(
|
return logical.ErrorResponse(fmt.Sprintf(
|
||||||
"Error attaching user policy: %s", err)), nil
|
"Error attaching user policy: %s", err)), awsutil.CheckAWSError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if role.PolicyDocument != "" {
|
if role.PolicyDocument != "" {
|
||||||
// Add new inline user policy against user
|
// Add new inline user policy against user
|
||||||
_, err = client.PutUserPolicy(&iam.PutUserPolicyInput{
|
_, err = iamClient.PutUserPolicy(&iam.PutUserPolicyInput{
|
||||||
UserName: aws.String(username),
|
UserName: aws.String(username),
|
||||||
PolicyName: aws.String(policyName),
|
PolicyName: aws.String(policyName),
|
||||||
PolicyDocument: aws.String(role.PolicyDocument),
|
PolicyDocument: aws.String(role.PolicyDocument),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(fmt.Sprintf(
|
return logical.ErrorResponse(fmt.Sprintf(
|
||||||
"Error putting user policy: %s", err)), nil
|
"Error putting user policy: %s", err)), awsutil.CheckAWSError(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the keys
|
// Create the keys
|
||||||
keyResp, err := client.CreateAccessKey(&iam.CreateAccessKeyInput{
|
keyResp, err := iamClient.CreateAccessKey(&iam.CreateAccessKeyInput{
|
||||||
UserName: aws.String(username),
|
UserName: aws.String(username),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return logical.ErrorResponse(fmt.Sprintf(
|
return logical.ErrorResponse(fmt.Sprintf(
|
||||||
"Error creating access keys: %s", err)), nil
|
"Error creating access keys: %s", err)), awsutil.CheckAWSError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the WAL entry, we succeeded! If we fail, we don't return
|
// Remove the WAL entry, we succeeded! If we fail, we don't return
|
||||||
// the secret because it'll get rolled back anyways, so we have to return
|
// the secret because it'll get rolled back anyways, so we have to return
|
||||||
// an error here.
|
// an error here.
|
||||||
if err := framework.DeleteWAL(ctx, s, walId); err != nil {
|
if err := framework.DeleteWAL(ctx, s, walID); err != nil {
|
||||||
return nil, errwrap.Wrapf("failed to commit WAL entry: {{err}}", err)
|
return nil, errwrap.Wrapf("failed to commit WAL entry: {{err}}", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the info!
|
// Return the info!
|
||||||
resp := b.Secret(SecretAccessKeyType).Response(map[string]interface{}{
|
resp := b.Secret(secretAccessKeyType).Response(map[string]interface{}{
|
||||||
"access_key": *keyResp.AccessKey.AccessKeyId,
|
"access_key": *keyResp.AccessKey.AccessKeyId,
|
||||||
"secret_key": *keyResp.AccessKey.SecretAccessKey,
|
"secret_key": *keyResp.AccessKey.SecretAccessKey,
|
||||||
"security_token": nil,
|
"security_token": nil,
|
||||||
@@ -281,7 +285,7 @@ func (b *backend) secretAccessKeysRenew(ctx context.Context, req *logical.Reques
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func secretAccessKeysRevoke(ctx context.Context, req *logical.Request, d *framework.FieldData) (*logical.Response, error) {
|
func (b *backend) secretAccessKeysRevoke(ctx context.Context, req *logical.Request, d *framework.FieldData) (*logical.Response, error) {
|
||||||
|
|
||||||
// STS cleans up after itself so we can skip this if is_sts internal data
|
// STS cleans up after itself so we can skip this if is_sts internal data
|
||||||
// element set to true. If is_sts is not set, assumes old version
|
// element set to true. If is_sts is not set, assumes old version
|
||||||
|
|||||||
31
helper/awsutil/error.go
Normal file
31
helper/awsutil/error.go
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package awsutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
awsRequest "github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
multierror "github.com/hashicorp/go-multierror"
|
||||||
|
"github.com/hashicorp/vault/logical"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CheckAWSError will examine an error and convert to a logical error if
|
||||||
|
// appropriate. If no appropriate error is found, return nil
|
||||||
|
func CheckAWSError(err error) error {
|
||||||
|
// IsErrorThrottle will check if the error returned is one that matches
|
||||||
|
// known request limiting errors:
|
||||||
|
// https://github.com/aws/aws-sdk-go/blob/488d634b5a699b9118ac2befb5135922b4a77210/aws/request/retryer.go#L35
|
||||||
|
if awsRequest.IsErrorThrottle(err) {
|
||||||
|
return logical.ErrUpstreamRateLimited
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendLogicalError checks if the given error is a known AWS error we modify,
|
||||||
|
// and if so then returns a go-multierror, appending the original and the
|
||||||
|
// logical error.
|
||||||
|
// If the error is not an AWS error, or not an error we wish to modify, then
|
||||||
|
// return the original error.
|
||||||
|
func AppendLogicalError(err error) error {
|
||||||
|
if awserr := CheckAWSError(err); awserr != nil {
|
||||||
|
err = multierror.Append(err, awserr)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
89
helper/awsutil/error_test.go
Normal file
89
helper/awsutil/error_test.go
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
package awsutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
multierror "github.com/hashicorp/go-multierror"
|
||||||
|
"github.com/hashicorp/vault/logical"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_CheckAWSError(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
Name string
|
||||||
|
Err error
|
||||||
|
Expected error
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
Name: "Something not checked",
|
||||||
|
Err: fmt.Errorf("something"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Upstream throttle error",
|
||||||
|
Err: awserr.New("Throttling", "", nil),
|
||||||
|
Expected: logical.ErrUpstreamRateLimited,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Upstream RequestLimitExceeded",
|
||||||
|
Err: awserr.New("RequestLimitExceeded", "Request rate limited", nil),
|
||||||
|
Expected: logical.ErrUpstreamRateLimited,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.Name, func(t *testing.T) {
|
||||||
|
err := CheckAWSError(tc.Err)
|
||||||
|
if err == nil && tc.Expected != nil {
|
||||||
|
t.Fatalf("expected non-nil error (%#v), got nil", tc.Expected)
|
||||||
|
}
|
||||||
|
if err != nil && tc.Expected == nil {
|
||||||
|
t.Fatalf("expected nil error, got (%#v)", err)
|
||||||
|
}
|
||||||
|
if err != tc.Expected {
|
||||||
|
t.Fatalf("expected error (%#v), got (%#v)", tc.Expected, err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_AppendLogicalError(t *testing.T) {
|
||||||
|
awsErr := awserr.New("Throttling", "", nil)
|
||||||
|
testCases := []struct {
|
||||||
|
Name string
|
||||||
|
Err error
|
||||||
|
Expected error
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
Name: "Something not checked",
|
||||||
|
Err: fmt.Errorf("something"),
|
||||||
|
Expected: fmt.Errorf("something"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Upstream throttle error",
|
||||||
|
Err: awsErr,
|
||||||
|
Expected: multierror.Append(awsErr, logical.ErrUpstreamRateLimited),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Nil",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.Name, func(t *testing.T) {
|
||||||
|
err := AppendLogicalError(tc.Err)
|
||||||
|
if err == nil && tc.Expected != nil {
|
||||||
|
t.Fatalf("expected non-nil error (%#v), got nil", tc.Expected)
|
||||||
|
}
|
||||||
|
if err != nil && tc.Expected == nil {
|
||||||
|
t.Fatalf("expected nil error, got (%#v)", err)
|
||||||
|
}
|
||||||
|
if err == nil && tc.Expected == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err.Error() != tc.Expected.Error() {
|
||||||
|
t.Fatalf("expected error (%#v), got (%#v)", tc.Expected.Error(), err.Error())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -509,6 +509,7 @@ func request(core *vault.Core, w http.ResponseWriter, rawReq *http.Request, r *l
|
|||||||
respondStandby(core, w, rawReq.URL)
|
respondStandby(core, w, rawReq.URL)
|
||||||
return resp, false
|
return resp, false
|
||||||
}
|
}
|
||||||
|
|
||||||
if respondErrorCommon(w, r, resp, err) {
|
if respondErrorCommon(w, r, resp, err) {
|
||||||
return resp, false
|
return resp, false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ var (
|
|||||||
// authorizations
|
// authorizations
|
||||||
ErrMultiAuthzPending = errors.New("request needs further approval")
|
ErrMultiAuthzPending = errors.New("request needs further approval")
|
||||||
|
|
||||||
// ErrUpstreamRateLimited is returned when Vault recieves a rate limited
|
// ErrUpstreamRateLimited is returned when Vault receives a rate limited
|
||||||
// response from an upstream
|
// response from an upstream
|
||||||
ErrUpstreamRateLimited = errors.New("upstream rate limited")
|
ErrUpstreamRateLimited = errors.New("upstream rate limited")
|
||||||
)
|
)
|
||||||
|
|||||||
969
vendor/github.com/aws/aws-sdk-go/service/iam/api.go
generated
vendored
969
vendor/github.com/aws/aws-sdk-go/service/iam/api.go
generated
vendored
File diff suppressed because it is too large
Load Diff
656
vendor/github.com/aws/aws-sdk-go/service/iam/iamiface/interface.go
generated
vendored
Normal file
656
vendor/github.com/aws/aws-sdk-go/service/iam/iamiface/interface.go
generated
vendored
Normal file
@@ -0,0 +1,656 @@
|
|||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package iamiface provides an interface to enable mocking the AWS Identity and Access Management 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 iamiface
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/service/iam"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IAMAPI provides an interface to enable mocking the
|
||||||
|
// iam.IAM 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 Identity and Access Management.
|
||||||
|
// func myFunc(svc iamiface.IAMAPI) bool {
|
||||||
|
// // Make svc.AddClientIDToOpenIDConnectProvider request
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func main() {
|
||||||
|
// sess := session.New()
|
||||||
|
// svc := iam.New(sess)
|
||||||
|
//
|
||||||
|
// myFunc(svc)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// In your _test.go file:
|
||||||
|
//
|
||||||
|
// // Define a mock struct to be used in your unit tests of myFunc.
|
||||||
|
// type mockIAMClient struct {
|
||||||
|
// iamiface.IAMAPI
|
||||||
|
// }
|
||||||
|
// func (m *mockIAMClient) AddClientIDToOpenIDConnectProvider(input *iam.AddClientIDToOpenIDConnectProviderInput) (*iam.AddClientIDToOpenIDConnectProviderOutput, error) {
|
||||||
|
// // mock response/functionality
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func TestMyFunc(t *testing.T) {
|
||||||
|
// // Setup Test
|
||||||
|
// mockSvc := &mockIAMClient{}
|
||||||
|
//
|
||||||
|
// 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 IAMAPI interface {
|
||||||
|
AddClientIDToOpenIDConnectProvider(*iam.AddClientIDToOpenIDConnectProviderInput) (*iam.AddClientIDToOpenIDConnectProviderOutput, error)
|
||||||
|
AddClientIDToOpenIDConnectProviderWithContext(aws.Context, *iam.AddClientIDToOpenIDConnectProviderInput, ...request.Option) (*iam.AddClientIDToOpenIDConnectProviderOutput, error)
|
||||||
|
AddClientIDToOpenIDConnectProviderRequest(*iam.AddClientIDToOpenIDConnectProviderInput) (*request.Request, *iam.AddClientIDToOpenIDConnectProviderOutput)
|
||||||
|
|
||||||
|
AddRoleToInstanceProfile(*iam.AddRoleToInstanceProfileInput) (*iam.AddRoleToInstanceProfileOutput, error)
|
||||||
|
AddRoleToInstanceProfileWithContext(aws.Context, *iam.AddRoleToInstanceProfileInput, ...request.Option) (*iam.AddRoleToInstanceProfileOutput, error)
|
||||||
|
AddRoleToInstanceProfileRequest(*iam.AddRoleToInstanceProfileInput) (*request.Request, *iam.AddRoleToInstanceProfileOutput)
|
||||||
|
|
||||||
|
AddUserToGroup(*iam.AddUserToGroupInput) (*iam.AddUserToGroupOutput, error)
|
||||||
|
AddUserToGroupWithContext(aws.Context, *iam.AddUserToGroupInput, ...request.Option) (*iam.AddUserToGroupOutput, error)
|
||||||
|
AddUserToGroupRequest(*iam.AddUserToGroupInput) (*request.Request, *iam.AddUserToGroupOutput)
|
||||||
|
|
||||||
|
AttachGroupPolicy(*iam.AttachGroupPolicyInput) (*iam.AttachGroupPolicyOutput, error)
|
||||||
|
AttachGroupPolicyWithContext(aws.Context, *iam.AttachGroupPolicyInput, ...request.Option) (*iam.AttachGroupPolicyOutput, error)
|
||||||
|
AttachGroupPolicyRequest(*iam.AttachGroupPolicyInput) (*request.Request, *iam.AttachGroupPolicyOutput)
|
||||||
|
|
||||||
|
AttachRolePolicy(*iam.AttachRolePolicyInput) (*iam.AttachRolePolicyOutput, error)
|
||||||
|
AttachRolePolicyWithContext(aws.Context, *iam.AttachRolePolicyInput, ...request.Option) (*iam.AttachRolePolicyOutput, error)
|
||||||
|
AttachRolePolicyRequest(*iam.AttachRolePolicyInput) (*request.Request, *iam.AttachRolePolicyOutput)
|
||||||
|
|
||||||
|
AttachUserPolicy(*iam.AttachUserPolicyInput) (*iam.AttachUserPolicyOutput, error)
|
||||||
|
AttachUserPolicyWithContext(aws.Context, *iam.AttachUserPolicyInput, ...request.Option) (*iam.AttachUserPolicyOutput, error)
|
||||||
|
AttachUserPolicyRequest(*iam.AttachUserPolicyInput) (*request.Request, *iam.AttachUserPolicyOutput)
|
||||||
|
|
||||||
|
ChangePassword(*iam.ChangePasswordInput) (*iam.ChangePasswordOutput, error)
|
||||||
|
ChangePasswordWithContext(aws.Context, *iam.ChangePasswordInput, ...request.Option) (*iam.ChangePasswordOutput, error)
|
||||||
|
ChangePasswordRequest(*iam.ChangePasswordInput) (*request.Request, *iam.ChangePasswordOutput)
|
||||||
|
|
||||||
|
CreateAccessKey(*iam.CreateAccessKeyInput) (*iam.CreateAccessKeyOutput, error)
|
||||||
|
CreateAccessKeyWithContext(aws.Context, *iam.CreateAccessKeyInput, ...request.Option) (*iam.CreateAccessKeyOutput, error)
|
||||||
|
CreateAccessKeyRequest(*iam.CreateAccessKeyInput) (*request.Request, *iam.CreateAccessKeyOutput)
|
||||||
|
|
||||||
|
CreateAccountAlias(*iam.CreateAccountAliasInput) (*iam.CreateAccountAliasOutput, error)
|
||||||
|
CreateAccountAliasWithContext(aws.Context, *iam.CreateAccountAliasInput, ...request.Option) (*iam.CreateAccountAliasOutput, error)
|
||||||
|
CreateAccountAliasRequest(*iam.CreateAccountAliasInput) (*request.Request, *iam.CreateAccountAliasOutput)
|
||||||
|
|
||||||
|
CreateGroup(*iam.CreateGroupInput) (*iam.CreateGroupOutput, error)
|
||||||
|
CreateGroupWithContext(aws.Context, *iam.CreateGroupInput, ...request.Option) (*iam.CreateGroupOutput, error)
|
||||||
|
CreateGroupRequest(*iam.CreateGroupInput) (*request.Request, *iam.CreateGroupOutput)
|
||||||
|
|
||||||
|
CreateInstanceProfile(*iam.CreateInstanceProfileInput) (*iam.CreateInstanceProfileOutput, error)
|
||||||
|
CreateInstanceProfileWithContext(aws.Context, *iam.CreateInstanceProfileInput, ...request.Option) (*iam.CreateInstanceProfileOutput, error)
|
||||||
|
CreateInstanceProfileRequest(*iam.CreateInstanceProfileInput) (*request.Request, *iam.CreateInstanceProfileOutput)
|
||||||
|
|
||||||
|
CreateLoginProfile(*iam.CreateLoginProfileInput) (*iam.CreateLoginProfileOutput, error)
|
||||||
|
CreateLoginProfileWithContext(aws.Context, *iam.CreateLoginProfileInput, ...request.Option) (*iam.CreateLoginProfileOutput, error)
|
||||||
|
CreateLoginProfileRequest(*iam.CreateLoginProfileInput) (*request.Request, *iam.CreateLoginProfileOutput)
|
||||||
|
|
||||||
|
CreateOpenIDConnectProvider(*iam.CreateOpenIDConnectProviderInput) (*iam.CreateOpenIDConnectProviderOutput, error)
|
||||||
|
CreateOpenIDConnectProviderWithContext(aws.Context, *iam.CreateOpenIDConnectProviderInput, ...request.Option) (*iam.CreateOpenIDConnectProviderOutput, error)
|
||||||
|
CreateOpenIDConnectProviderRequest(*iam.CreateOpenIDConnectProviderInput) (*request.Request, *iam.CreateOpenIDConnectProviderOutput)
|
||||||
|
|
||||||
|
CreatePolicy(*iam.CreatePolicyInput) (*iam.CreatePolicyOutput, error)
|
||||||
|
CreatePolicyWithContext(aws.Context, *iam.CreatePolicyInput, ...request.Option) (*iam.CreatePolicyOutput, error)
|
||||||
|
CreatePolicyRequest(*iam.CreatePolicyInput) (*request.Request, *iam.CreatePolicyOutput)
|
||||||
|
|
||||||
|
CreatePolicyVersion(*iam.CreatePolicyVersionInput) (*iam.CreatePolicyVersionOutput, error)
|
||||||
|
CreatePolicyVersionWithContext(aws.Context, *iam.CreatePolicyVersionInput, ...request.Option) (*iam.CreatePolicyVersionOutput, error)
|
||||||
|
CreatePolicyVersionRequest(*iam.CreatePolicyVersionInput) (*request.Request, *iam.CreatePolicyVersionOutput)
|
||||||
|
|
||||||
|
CreateRole(*iam.CreateRoleInput) (*iam.CreateRoleOutput, error)
|
||||||
|
CreateRoleWithContext(aws.Context, *iam.CreateRoleInput, ...request.Option) (*iam.CreateRoleOutput, error)
|
||||||
|
CreateRoleRequest(*iam.CreateRoleInput) (*request.Request, *iam.CreateRoleOutput)
|
||||||
|
|
||||||
|
CreateSAMLProvider(*iam.CreateSAMLProviderInput) (*iam.CreateSAMLProviderOutput, error)
|
||||||
|
CreateSAMLProviderWithContext(aws.Context, *iam.CreateSAMLProviderInput, ...request.Option) (*iam.CreateSAMLProviderOutput, error)
|
||||||
|
CreateSAMLProviderRequest(*iam.CreateSAMLProviderInput) (*request.Request, *iam.CreateSAMLProviderOutput)
|
||||||
|
|
||||||
|
CreateServiceLinkedRole(*iam.CreateServiceLinkedRoleInput) (*iam.CreateServiceLinkedRoleOutput, error)
|
||||||
|
CreateServiceLinkedRoleWithContext(aws.Context, *iam.CreateServiceLinkedRoleInput, ...request.Option) (*iam.CreateServiceLinkedRoleOutput, error)
|
||||||
|
CreateServiceLinkedRoleRequest(*iam.CreateServiceLinkedRoleInput) (*request.Request, *iam.CreateServiceLinkedRoleOutput)
|
||||||
|
|
||||||
|
CreateServiceSpecificCredential(*iam.CreateServiceSpecificCredentialInput) (*iam.CreateServiceSpecificCredentialOutput, error)
|
||||||
|
CreateServiceSpecificCredentialWithContext(aws.Context, *iam.CreateServiceSpecificCredentialInput, ...request.Option) (*iam.CreateServiceSpecificCredentialOutput, error)
|
||||||
|
CreateServiceSpecificCredentialRequest(*iam.CreateServiceSpecificCredentialInput) (*request.Request, *iam.CreateServiceSpecificCredentialOutput)
|
||||||
|
|
||||||
|
CreateUser(*iam.CreateUserInput) (*iam.CreateUserOutput, error)
|
||||||
|
CreateUserWithContext(aws.Context, *iam.CreateUserInput, ...request.Option) (*iam.CreateUserOutput, error)
|
||||||
|
CreateUserRequest(*iam.CreateUserInput) (*request.Request, *iam.CreateUserOutput)
|
||||||
|
|
||||||
|
CreateVirtualMFADevice(*iam.CreateVirtualMFADeviceInput) (*iam.CreateVirtualMFADeviceOutput, error)
|
||||||
|
CreateVirtualMFADeviceWithContext(aws.Context, *iam.CreateVirtualMFADeviceInput, ...request.Option) (*iam.CreateVirtualMFADeviceOutput, error)
|
||||||
|
CreateVirtualMFADeviceRequest(*iam.CreateVirtualMFADeviceInput) (*request.Request, *iam.CreateVirtualMFADeviceOutput)
|
||||||
|
|
||||||
|
DeactivateMFADevice(*iam.DeactivateMFADeviceInput) (*iam.DeactivateMFADeviceOutput, error)
|
||||||
|
DeactivateMFADeviceWithContext(aws.Context, *iam.DeactivateMFADeviceInput, ...request.Option) (*iam.DeactivateMFADeviceOutput, error)
|
||||||
|
DeactivateMFADeviceRequest(*iam.DeactivateMFADeviceInput) (*request.Request, *iam.DeactivateMFADeviceOutput)
|
||||||
|
|
||||||
|
DeleteAccessKey(*iam.DeleteAccessKeyInput) (*iam.DeleteAccessKeyOutput, error)
|
||||||
|
DeleteAccessKeyWithContext(aws.Context, *iam.DeleteAccessKeyInput, ...request.Option) (*iam.DeleteAccessKeyOutput, error)
|
||||||
|
DeleteAccessKeyRequest(*iam.DeleteAccessKeyInput) (*request.Request, *iam.DeleteAccessKeyOutput)
|
||||||
|
|
||||||
|
DeleteAccountAlias(*iam.DeleteAccountAliasInput) (*iam.DeleteAccountAliasOutput, error)
|
||||||
|
DeleteAccountAliasWithContext(aws.Context, *iam.DeleteAccountAliasInput, ...request.Option) (*iam.DeleteAccountAliasOutput, error)
|
||||||
|
DeleteAccountAliasRequest(*iam.DeleteAccountAliasInput) (*request.Request, *iam.DeleteAccountAliasOutput)
|
||||||
|
|
||||||
|
DeleteAccountPasswordPolicy(*iam.DeleteAccountPasswordPolicyInput) (*iam.DeleteAccountPasswordPolicyOutput, error)
|
||||||
|
DeleteAccountPasswordPolicyWithContext(aws.Context, *iam.DeleteAccountPasswordPolicyInput, ...request.Option) (*iam.DeleteAccountPasswordPolicyOutput, error)
|
||||||
|
DeleteAccountPasswordPolicyRequest(*iam.DeleteAccountPasswordPolicyInput) (*request.Request, *iam.DeleteAccountPasswordPolicyOutput)
|
||||||
|
|
||||||
|
DeleteGroup(*iam.DeleteGroupInput) (*iam.DeleteGroupOutput, error)
|
||||||
|
DeleteGroupWithContext(aws.Context, *iam.DeleteGroupInput, ...request.Option) (*iam.DeleteGroupOutput, error)
|
||||||
|
DeleteGroupRequest(*iam.DeleteGroupInput) (*request.Request, *iam.DeleteGroupOutput)
|
||||||
|
|
||||||
|
DeleteGroupPolicy(*iam.DeleteGroupPolicyInput) (*iam.DeleteGroupPolicyOutput, error)
|
||||||
|
DeleteGroupPolicyWithContext(aws.Context, *iam.DeleteGroupPolicyInput, ...request.Option) (*iam.DeleteGroupPolicyOutput, error)
|
||||||
|
DeleteGroupPolicyRequest(*iam.DeleteGroupPolicyInput) (*request.Request, *iam.DeleteGroupPolicyOutput)
|
||||||
|
|
||||||
|
DeleteInstanceProfile(*iam.DeleteInstanceProfileInput) (*iam.DeleteInstanceProfileOutput, error)
|
||||||
|
DeleteInstanceProfileWithContext(aws.Context, *iam.DeleteInstanceProfileInput, ...request.Option) (*iam.DeleteInstanceProfileOutput, error)
|
||||||
|
DeleteInstanceProfileRequest(*iam.DeleteInstanceProfileInput) (*request.Request, *iam.DeleteInstanceProfileOutput)
|
||||||
|
|
||||||
|
DeleteLoginProfile(*iam.DeleteLoginProfileInput) (*iam.DeleteLoginProfileOutput, error)
|
||||||
|
DeleteLoginProfileWithContext(aws.Context, *iam.DeleteLoginProfileInput, ...request.Option) (*iam.DeleteLoginProfileOutput, error)
|
||||||
|
DeleteLoginProfileRequest(*iam.DeleteLoginProfileInput) (*request.Request, *iam.DeleteLoginProfileOutput)
|
||||||
|
|
||||||
|
DeleteOpenIDConnectProvider(*iam.DeleteOpenIDConnectProviderInput) (*iam.DeleteOpenIDConnectProviderOutput, error)
|
||||||
|
DeleteOpenIDConnectProviderWithContext(aws.Context, *iam.DeleteOpenIDConnectProviderInput, ...request.Option) (*iam.DeleteOpenIDConnectProviderOutput, error)
|
||||||
|
DeleteOpenIDConnectProviderRequest(*iam.DeleteOpenIDConnectProviderInput) (*request.Request, *iam.DeleteOpenIDConnectProviderOutput)
|
||||||
|
|
||||||
|
DeletePolicy(*iam.DeletePolicyInput) (*iam.DeletePolicyOutput, error)
|
||||||
|
DeletePolicyWithContext(aws.Context, *iam.DeletePolicyInput, ...request.Option) (*iam.DeletePolicyOutput, error)
|
||||||
|
DeletePolicyRequest(*iam.DeletePolicyInput) (*request.Request, *iam.DeletePolicyOutput)
|
||||||
|
|
||||||
|
DeletePolicyVersion(*iam.DeletePolicyVersionInput) (*iam.DeletePolicyVersionOutput, error)
|
||||||
|
DeletePolicyVersionWithContext(aws.Context, *iam.DeletePolicyVersionInput, ...request.Option) (*iam.DeletePolicyVersionOutput, error)
|
||||||
|
DeletePolicyVersionRequest(*iam.DeletePolicyVersionInput) (*request.Request, *iam.DeletePolicyVersionOutput)
|
||||||
|
|
||||||
|
DeleteRole(*iam.DeleteRoleInput) (*iam.DeleteRoleOutput, error)
|
||||||
|
DeleteRoleWithContext(aws.Context, *iam.DeleteRoleInput, ...request.Option) (*iam.DeleteRoleOutput, error)
|
||||||
|
DeleteRoleRequest(*iam.DeleteRoleInput) (*request.Request, *iam.DeleteRoleOutput)
|
||||||
|
|
||||||
|
DeleteRolePermissionsBoundary(*iam.DeleteRolePermissionsBoundaryInput) (*iam.DeleteRolePermissionsBoundaryOutput, error)
|
||||||
|
DeleteRolePermissionsBoundaryWithContext(aws.Context, *iam.DeleteRolePermissionsBoundaryInput, ...request.Option) (*iam.DeleteRolePermissionsBoundaryOutput, error)
|
||||||
|
DeleteRolePermissionsBoundaryRequest(*iam.DeleteRolePermissionsBoundaryInput) (*request.Request, *iam.DeleteRolePermissionsBoundaryOutput)
|
||||||
|
|
||||||
|
DeleteRolePolicy(*iam.DeleteRolePolicyInput) (*iam.DeleteRolePolicyOutput, error)
|
||||||
|
DeleteRolePolicyWithContext(aws.Context, *iam.DeleteRolePolicyInput, ...request.Option) (*iam.DeleteRolePolicyOutput, error)
|
||||||
|
DeleteRolePolicyRequest(*iam.DeleteRolePolicyInput) (*request.Request, *iam.DeleteRolePolicyOutput)
|
||||||
|
|
||||||
|
DeleteSAMLProvider(*iam.DeleteSAMLProviderInput) (*iam.DeleteSAMLProviderOutput, error)
|
||||||
|
DeleteSAMLProviderWithContext(aws.Context, *iam.DeleteSAMLProviderInput, ...request.Option) (*iam.DeleteSAMLProviderOutput, error)
|
||||||
|
DeleteSAMLProviderRequest(*iam.DeleteSAMLProviderInput) (*request.Request, *iam.DeleteSAMLProviderOutput)
|
||||||
|
|
||||||
|
DeleteSSHPublicKey(*iam.DeleteSSHPublicKeyInput) (*iam.DeleteSSHPublicKeyOutput, error)
|
||||||
|
DeleteSSHPublicKeyWithContext(aws.Context, *iam.DeleteSSHPublicKeyInput, ...request.Option) (*iam.DeleteSSHPublicKeyOutput, error)
|
||||||
|
DeleteSSHPublicKeyRequest(*iam.DeleteSSHPublicKeyInput) (*request.Request, *iam.DeleteSSHPublicKeyOutput)
|
||||||
|
|
||||||
|
DeleteServerCertificate(*iam.DeleteServerCertificateInput) (*iam.DeleteServerCertificateOutput, error)
|
||||||
|
DeleteServerCertificateWithContext(aws.Context, *iam.DeleteServerCertificateInput, ...request.Option) (*iam.DeleteServerCertificateOutput, error)
|
||||||
|
DeleteServerCertificateRequest(*iam.DeleteServerCertificateInput) (*request.Request, *iam.DeleteServerCertificateOutput)
|
||||||
|
|
||||||
|
DeleteServiceLinkedRole(*iam.DeleteServiceLinkedRoleInput) (*iam.DeleteServiceLinkedRoleOutput, error)
|
||||||
|
DeleteServiceLinkedRoleWithContext(aws.Context, *iam.DeleteServiceLinkedRoleInput, ...request.Option) (*iam.DeleteServiceLinkedRoleOutput, error)
|
||||||
|
DeleteServiceLinkedRoleRequest(*iam.DeleteServiceLinkedRoleInput) (*request.Request, *iam.DeleteServiceLinkedRoleOutput)
|
||||||
|
|
||||||
|
DeleteServiceSpecificCredential(*iam.DeleteServiceSpecificCredentialInput) (*iam.DeleteServiceSpecificCredentialOutput, error)
|
||||||
|
DeleteServiceSpecificCredentialWithContext(aws.Context, *iam.DeleteServiceSpecificCredentialInput, ...request.Option) (*iam.DeleteServiceSpecificCredentialOutput, error)
|
||||||
|
DeleteServiceSpecificCredentialRequest(*iam.DeleteServiceSpecificCredentialInput) (*request.Request, *iam.DeleteServiceSpecificCredentialOutput)
|
||||||
|
|
||||||
|
DeleteSigningCertificate(*iam.DeleteSigningCertificateInput) (*iam.DeleteSigningCertificateOutput, error)
|
||||||
|
DeleteSigningCertificateWithContext(aws.Context, *iam.DeleteSigningCertificateInput, ...request.Option) (*iam.DeleteSigningCertificateOutput, error)
|
||||||
|
DeleteSigningCertificateRequest(*iam.DeleteSigningCertificateInput) (*request.Request, *iam.DeleteSigningCertificateOutput)
|
||||||
|
|
||||||
|
DeleteUser(*iam.DeleteUserInput) (*iam.DeleteUserOutput, error)
|
||||||
|
DeleteUserWithContext(aws.Context, *iam.DeleteUserInput, ...request.Option) (*iam.DeleteUserOutput, error)
|
||||||
|
DeleteUserRequest(*iam.DeleteUserInput) (*request.Request, *iam.DeleteUserOutput)
|
||||||
|
|
||||||
|
DeleteUserPermissionsBoundary(*iam.DeleteUserPermissionsBoundaryInput) (*iam.DeleteUserPermissionsBoundaryOutput, error)
|
||||||
|
DeleteUserPermissionsBoundaryWithContext(aws.Context, *iam.DeleteUserPermissionsBoundaryInput, ...request.Option) (*iam.DeleteUserPermissionsBoundaryOutput, error)
|
||||||
|
DeleteUserPermissionsBoundaryRequest(*iam.DeleteUserPermissionsBoundaryInput) (*request.Request, *iam.DeleteUserPermissionsBoundaryOutput)
|
||||||
|
|
||||||
|
DeleteUserPolicy(*iam.DeleteUserPolicyInput) (*iam.DeleteUserPolicyOutput, error)
|
||||||
|
DeleteUserPolicyWithContext(aws.Context, *iam.DeleteUserPolicyInput, ...request.Option) (*iam.DeleteUserPolicyOutput, error)
|
||||||
|
DeleteUserPolicyRequest(*iam.DeleteUserPolicyInput) (*request.Request, *iam.DeleteUserPolicyOutput)
|
||||||
|
|
||||||
|
DeleteVirtualMFADevice(*iam.DeleteVirtualMFADeviceInput) (*iam.DeleteVirtualMFADeviceOutput, error)
|
||||||
|
DeleteVirtualMFADeviceWithContext(aws.Context, *iam.DeleteVirtualMFADeviceInput, ...request.Option) (*iam.DeleteVirtualMFADeviceOutput, error)
|
||||||
|
DeleteVirtualMFADeviceRequest(*iam.DeleteVirtualMFADeviceInput) (*request.Request, *iam.DeleteVirtualMFADeviceOutput)
|
||||||
|
|
||||||
|
DetachGroupPolicy(*iam.DetachGroupPolicyInput) (*iam.DetachGroupPolicyOutput, error)
|
||||||
|
DetachGroupPolicyWithContext(aws.Context, *iam.DetachGroupPolicyInput, ...request.Option) (*iam.DetachGroupPolicyOutput, error)
|
||||||
|
DetachGroupPolicyRequest(*iam.DetachGroupPolicyInput) (*request.Request, *iam.DetachGroupPolicyOutput)
|
||||||
|
|
||||||
|
DetachRolePolicy(*iam.DetachRolePolicyInput) (*iam.DetachRolePolicyOutput, error)
|
||||||
|
DetachRolePolicyWithContext(aws.Context, *iam.DetachRolePolicyInput, ...request.Option) (*iam.DetachRolePolicyOutput, error)
|
||||||
|
DetachRolePolicyRequest(*iam.DetachRolePolicyInput) (*request.Request, *iam.DetachRolePolicyOutput)
|
||||||
|
|
||||||
|
DetachUserPolicy(*iam.DetachUserPolicyInput) (*iam.DetachUserPolicyOutput, error)
|
||||||
|
DetachUserPolicyWithContext(aws.Context, *iam.DetachUserPolicyInput, ...request.Option) (*iam.DetachUserPolicyOutput, error)
|
||||||
|
DetachUserPolicyRequest(*iam.DetachUserPolicyInput) (*request.Request, *iam.DetachUserPolicyOutput)
|
||||||
|
|
||||||
|
EnableMFADevice(*iam.EnableMFADeviceInput) (*iam.EnableMFADeviceOutput, error)
|
||||||
|
EnableMFADeviceWithContext(aws.Context, *iam.EnableMFADeviceInput, ...request.Option) (*iam.EnableMFADeviceOutput, error)
|
||||||
|
EnableMFADeviceRequest(*iam.EnableMFADeviceInput) (*request.Request, *iam.EnableMFADeviceOutput)
|
||||||
|
|
||||||
|
GenerateCredentialReport(*iam.GenerateCredentialReportInput) (*iam.GenerateCredentialReportOutput, error)
|
||||||
|
GenerateCredentialReportWithContext(aws.Context, *iam.GenerateCredentialReportInput, ...request.Option) (*iam.GenerateCredentialReportOutput, error)
|
||||||
|
GenerateCredentialReportRequest(*iam.GenerateCredentialReportInput) (*request.Request, *iam.GenerateCredentialReportOutput)
|
||||||
|
|
||||||
|
GetAccessKeyLastUsed(*iam.GetAccessKeyLastUsedInput) (*iam.GetAccessKeyLastUsedOutput, error)
|
||||||
|
GetAccessKeyLastUsedWithContext(aws.Context, *iam.GetAccessKeyLastUsedInput, ...request.Option) (*iam.GetAccessKeyLastUsedOutput, error)
|
||||||
|
GetAccessKeyLastUsedRequest(*iam.GetAccessKeyLastUsedInput) (*request.Request, *iam.GetAccessKeyLastUsedOutput)
|
||||||
|
|
||||||
|
GetAccountAuthorizationDetails(*iam.GetAccountAuthorizationDetailsInput) (*iam.GetAccountAuthorizationDetailsOutput, error)
|
||||||
|
GetAccountAuthorizationDetailsWithContext(aws.Context, *iam.GetAccountAuthorizationDetailsInput, ...request.Option) (*iam.GetAccountAuthorizationDetailsOutput, error)
|
||||||
|
GetAccountAuthorizationDetailsRequest(*iam.GetAccountAuthorizationDetailsInput) (*request.Request, *iam.GetAccountAuthorizationDetailsOutput)
|
||||||
|
|
||||||
|
GetAccountAuthorizationDetailsPages(*iam.GetAccountAuthorizationDetailsInput, func(*iam.GetAccountAuthorizationDetailsOutput, bool) bool) error
|
||||||
|
GetAccountAuthorizationDetailsPagesWithContext(aws.Context, *iam.GetAccountAuthorizationDetailsInput, func(*iam.GetAccountAuthorizationDetailsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
GetAccountPasswordPolicy(*iam.GetAccountPasswordPolicyInput) (*iam.GetAccountPasswordPolicyOutput, error)
|
||||||
|
GetAccountPasswordPolicyWithContext(aws.Context, *iam.GetAccountPasswordPolicyInput, ...request.Option) (*iam.GetAccountPasswordPolicyOutput, error)
|
||||||
|
GetAccountPasswordPolicyRequest(*iam.GetAccountPasswordPolicyInput) (*request.Request, *iam.GetAccountPasswordPolicyOutput)
|
||||||
|
|
||||||
|
GetAccountSummary(*iam.GetAccountSummaryInput) (*iam.GetAccountSummaryOutput, error)
|
||||||
|
GetAccountSummaryWithContext(aws.Context, *iam.GetAccountSummaryInput, ...request.Option) (*iam.GetAccountSummaryOutput, error)
|
||||||
|
GetAccountSummaryRequest(*iam.GetAccountSummaryInput) (*request.Request, *iam.GetAccountSummaryOutput)
|
||||||
|
|
||||||
|
GetContextKeysForCustomPolicy(*iam.GetContextKeysForCustomPolicyInput) (*iam.GetContextKeysForPolicyResponse, error)
|
||||||
|
GetContextKeysForCustomPolicyWithContext(aws.Context, *iam.GetContextKeysForCustomPolicyInput, ...request.Option) (*iam.GetContextKeysForPolicyResponse, error)
|
||||||
|
GetContextKeysForCustomPolicyRequest(*iam.GetContextKeysForCustomPolicyInput) (*request.Request, *iam.GetContextKeysForPolicyResponse)
|
||||||
|
|
||||||
|
GetContextKeysForPrincipalPolicy(*iam.GetContextKeysForPrincipalPolicyInput) (*iam.GetContextKeysForPolicyResponse, error)
|
||||||
|
GetContextKeysForPrincipalPolicyWithContext(aws.Context, *iam.GetContextKeysForPrincipalPolicyInput, ...request.Option) (*iam.GetContextKeysForPolicyResponse, error)
|
||||||
|
GetContextKeysForPrincipalPolicyRequest(*iam.GetContextKeysForPrincipalPolicyInput) (*request.Request, *iam.GetContextKeysForPolicyResponse)
|
||||||
|
|
||||||
|
GetCredentialReport(*iam.GetCredentialReportInput) (*iam.GetCredentialReportOutput, error)
|
||||||
|
GetCredentialReportWithContext(aws.Context, *iam.GetCredentialReportInput, ...request.Option) (*iam.GetCredentialReportOutput, error)
|
||||||
|
GetCredentialReportRequest(*iam.GetCredentialReportInput) (*request.Request, *iam.GetCredentialReportOutput)
|
||||||
|
|
||||||
|
GetGroup(*iam.GetGroupInput) (*iam.GetGroupOutput, error)
|
||||||
|
GetGroupWithContext(aws.Context, *iam.GetGroupInput, ...request.Option) (*iam.GetGroupOutput, error)
|
||||||
|
GetGroupRequest(*iam.GetGroupInput) (*request.Request, *iam.GetGroupOutput)
|
||||||
|
|
||||||
|
GetGroupPages(*iam.GetGroupInput, func(*iam.GetGroupOutput, bool) bool) error
|
||||||
|
GetGroupPagesWithContext(aws.Context, *iam.GetGroupInput, func(*iam.GetGroupOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
GetGroupPolicy(*iam.GetGroupPolicyInput) (*iam.GetGroupPolicyOutput, error)
|
||||||
|
GetGroupPolicyWithContext(aws.Context, *iam.GetGroupPolicyInput, ...request.Option) (*iam.GetGroupPolicyOutput, error)
|
||||||
|
GetGroupPolicyRequest(*iam.GetGroupPolicyInput) (*request.Request, *iam.GetGroupPolicyOutput)
|
||||||
|
|
||||||
|
GetInstanceProfile(*iam.GetInstanceProfileInput) (*iam.GetInstanceProfileOutput, error)
|
||||||
|
GetInstanceProfileWithContext(aws.Context, *iam.GetInstanceProfileInput, ...request.Option) (*iam.GetInstanceProfileOutput, error)
|
||||||
|
GetInstanceProfileRequest(*iam.GetInstanceProfileInput) (*request.Request, *iam.GetInstanceProfileOutput)
|
||||||
|
|
||||||
|
GetLoginProfile(*iam.GetLoginProfileInput) (*iam.GetLoginProfileOutput, error)
|
||||||
|
GetLoginProfileWithContext(aws.Context, *iam.GetLoginProfileInput, ...request.Option) (*iam.GetLoginProfileOutput, error)
|
||||||
|
GetLoginProfileRequest(*iam.GetLoginProfileInput) (*request.Request, *iam.GetLoginProfileOutput)
|
||||||
|
|
||||||
|
GetOpenIDConnectProvider(*iam.GetOpenIDConnectProviderInput) (*iam.GetOpenIDConnectProviderOutput, error)
|
||||||
|
GetOpenIDConnectProviderWithContext(aws.Context, *iam.GetOpenIDConnectProviderInput, ...request.Option) (*iam.GetOpenIDConnectProviderOutput, error)
|
||||||
|
GetOpenIDConnectProviderRequest(*iam.GetOpenIDConnectProviderInput) (*request.Request, *iam.GetOpenIDConnectProviderOutput)
|
||||||
|
|
||||||
|
GetPolicy(*iam.GetPolicyInput) (*iam.GetPolicyOutput, error)
|
||||||
|
GetPolicyWithContext(aws.Context, *iam.GetPolicyInput, ...request.Option) (*iam.GetPolicyOutput, error)
|
||||||
|
GetPolicyRequest(*iam.GetPolicyInput) (*request.Request, *iam.GetPolicyOutput)
|
||||||
|
|
||||||
|
GetPolicyVersion(*iam.GetPolicyVersionInput) (*iam.GetPolicyVersionOutput, error)
|
||||||
|
GetPolicyVersionWithContext(aws.Context, *iam.GetPolicyVersionInput, ...request.Option) (*iam.GetPolicyVersionOutput, error)
|
||||||
|
GetPolicyVersionRequest(*iam.GetPolicyVersionInput) (*request.Request, *iam.GetPolicyVersionOutput)
|
||||||
|
|
||||||
|
GetRole(*iam.GetRoleInput) (*iam.GetRoleOutput, error)
|
||||||
|
GetRoleWithContext(aws.Context, *iam.GetRoleInput, ...request.Option) (*iam.GetRoleOutput, error)
|
||||||
|
GetRoleRequest(*iam.GetRoleInput) (*request.Request, *iam.GetRoleOutput)
|
||||||
|
|
||||||
|
GetRolePolicy(*iam.GetRolePolicyInput) (*iam.GetRolePolicyOutput, error)
|
||||||
|
GetRolePolicyWithContext(aws.Context, *iam.GetRolePolicyInput, ...request.Option) (*iam.GetRolePolicyOutput, error)
|
||||||
|
GetRolePolicyRequest(*iam.GetRolePolicyInput) (*request.Request, *iam.GetRolePolicyOutput)
|
||||||
|
|
||||||
|
GetSAMLProvider(*iam.GetSAMLProviderInput) (*iam.GetSAMLProviderOutput, error)
|
||||||
|
GetSAMLProviderWithContext(aws.Context, *iam.GetSAMLProviderInput, ...request.Option) (*iam.GetSAMLProviderOutput, error)
|
||||||
|
GetSAMLProviderRequest(*iam.GetSAMLProviderInput) (*request.Request, *iam.GetSAMLProviderOutput)
|
||||||
|
|
||||||
|
GetSSHPublicKey(*iam.GetSSHPublicKeyInput) (*iam.GetSSHPublicKeyOutput, error)
|
||||||
|
GetSSHPublicKeyWithContext(aws.Context, *iam.GetSSHPublicKeyInput, ...request.Option) (*iam.GetSSHPublicKeyOutput, error)
|
||||||
|
GetSSHPublicKeyRequest(*iam.GetSSHPublicKeyInput) (*request.Request, *iam.GetSSHPublicKeyOutput)
|
||||||
|
|
||||||
|
GetServerCertificate(*iam.GetServerCertificateInput) (*iam.GetServerCertificateOutput, error)
|
||||||
|
GetServerCertificateWithContext(aws.Context, *iam.GetServerCertificateInput, ...request.Option) (*iam.GetServerCertificateOutput, error)
|
||||||
|
GetServerCertificateRequest(*iam.GetServerCertificateInput) (*request.Request, *iam.GetServerCertificateOutput)
|
||||||
|
|
||||||
|
GetServiceLinkedRoleDeletionStatus(*iam.GetServiceLinkedRoleDeletionStatusInput) (*iam.GetServiceLinkedRoleDeletionStatusOutput, error)
|
||||||
|
GetServiceLinkedRoleDeletionStatusWithContext(aws.Context, *iam.GetServiceLinkedRoleDeletionStatusInput, ...request.Option) (*iam.GetServiceLinkedRoleDeletionStatusOutput, error)
|
||||||
|
GetServiceLinkedRoleDeletionStatusRequest(*iam.GetServiceLinkedRoleDeletionStatusInput) (*request.Request, *iam.GetServiceLinkedRoleDeletionStatusOutput)
|
||||||
|
|
||||||
|
GetUser(*iam.GetUserInput) (*iam.GetUserOutput, error)
|
||||||
|
GetUserWithContext(aws.Context, *iam.GetUserInput, ...request.Option) (*iam.GetUserOutput, error)
|
||||||
|
GetUserRequest(*iam.GetUserInput) (*request.Request, *iam.GetUserOutput)
|
||||||
|
|
||||||
|
GetUserPolicy(*iam.GetUserPolicyInput) (*iam.GetUserPolicyOutput, error)
|
||||||
|
GetUserPolicyWithContext(aws.Context, *iam.GetUserPolicyInput, ...request.Option) (*iam.GetUserPolicyOutput, error)
|
||||||
|
GetUserPolicyRequest(*iam.GetUserPolicyInput) (*request.Request, *iam.GetUserPolicyOutput)
|
||||||
|
|
||||||
|
ListAccessKeys(*iam.ListAccessKeysInput) (*iam.ListAccessKeysOutput, error)
|
||||||
|
ListAccessKeysWithContext(aws.Context, *iam.ListAccessKeysInput, ...request.Option) (*iam.ListAccessKeysOutput, error)
|
||||||
|
ListAccessKeysRequest(*iam.ListAccessKeysInput) (*request.Request, *iam.ListAccessKeysOutput)
|
||||||
|
|
||||||
|
ListAccessKeysPages(*iam.ListAccessKeysInput, func(*iam.ListAccessKeysOutput, bool) bool) error
|
||||||
|
ListAccessKeysPagesWithContext(aws.Context, *iam.ListAccessKeysInput, func(*iam.ListAccessKeysOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListAccountAliases(*iam.ListAccountAliasesInput) (*iam.ListAccountAliasesOutput, error)
|
||||||
|
ListAccountAliasesWithContext(aws.Context, *iam.ListAccountAliasesInput, ...request.Option) (*iam.ListAccountAliasesOutput, error)
|
||||||
|
ListAccountAliasesRequest(*iam.ListAccountAliasesInput) (*request.Request, *iam.ListAccountAliasesOutput)
|
||||||
|
|
||||||
|
ListAccountAliasesPages(*iam.ListAccountAliasesInput, func(*iam.ListAccountAliasesOutput, bool) bool) error
|
||||||
|
ListAccountAliasesPagesWithContext(aws.Context, *iam.ListAccountAliasesInput, func(*iam.ListAccountAliasesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListAttachedGroupPolicies(*iam.ListAttachedGroupPoliciesInput) (*iam.ListAttachedGroupPoliciesOutput, error)
|
||||||
|
ListAttachedGroupPoliciesWithContext(aws.Context, *iam.ListAttachedGroupPoliciesInput, ...request.Option) (*iam.ListAttachedGroupPoliciesOutput, error)
|
||||||
|
ListAttachedGroupPoliciesRequest(*iam.ListAttachedGroupPoliciesInput) (*request.Request, *iam.ListAttachedGroupPoliciesOutput)
|
||||||
|
|
||||||
|
ListAttachedGroupPoliciesPages(*iam.ListAttachedGroupPoliciesInput, func(*iam.ListAttachedGroupPoliciesOutput, bool) bool) error
|
||||||
|
ListAttachedGroupPoliciesPagesWithContext(aws.Context, *iam.ListAttachedGroupPoliciesInput, func(*iam.ListAttachedGroupPoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListAttachedRolePolicies(*iam.ListAttachedRolePoliciesInput) (*iam.ListAttachedRolePoliciesOutput, error)
|
||||||
|
ListAttachedRolePoliciesWithContext(aws.Context, *iam.ListAttachedRolePoliciesInput, ...request.Option) (*iam.ListAttachedRolePoliciesOutput, error)
|
||||||
|
ListAttachedRolePoliciesRequest(*iam.ListAttachedRolePoliciesInput) (*request.Request, *iam.ListAttachedRolePoliciesOutput)
|
||||||
|
|
||||||
|
ListAttachedRolePoliciesPages(*iam.ListAttachedRolePoliciesInput, func(*iam.ListAttachedRolePoliciesOutput, bool) bool) error
|
||||||
|
ListAttachedRolePoliciesPagesWithContext(aws.Context, *iam.ListAttachedRolePoliciesInput, func(*iam.ListAttachedRolePoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListAttachedUserPolicies(*iam.ListAttachedUserPoliciesInput) (*iam.ListAttachedUserPoliciesOutput, error)
|
||||||
|
ListAttachedUserPoliciesWithContext(aws.Context, *iam.ListAttachedUserPoliciesInput, ...request.Option) (*iam.ListAttachedUserPoliciesOutput, error)
|
||||||
|
ListAttachedUserPoliciesRequest(*iam.ListAttachedUserPoliciesInput) (*request.Request, *iam.ListAttachedUserPoliciesOutput)
|
||||||
|
|
||||||
|
ListAttachedUserPoliciesPages(*iam.ListAttachedUserPoliciesInput, func(*iam.ListAttachedUserPoliciesOutput, bool) bool) error
|
||||||
|
ListAttachedUserPoliciesPagesWithContext(aws.Context, *iam.ListAttachedUserPoliciesInput, func(*iam.ListAttachedUserPoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListEntitiesForPolicy(*iam.ListEntitiesForPolicyInput) (*iam.ListEntitiesForPolicyOutput, error)
|
||||||
|
ListEntitiesForPolicyWithContext(aws.Context, *iam.ListEntitiesForPolicyInput, ...request.Option) (*iam.ListEntitiesForPolicyOutput, error)
|
||||||
|
ListEntitiesForPolicyRequest(*iam.ListEntitiesForPolicyInput) (*request.Request, *iam.ListEntitiesForPolicyOutput)
|
||||||
|
|
||||||
|
ListEntitiesForPolicyPages(*iam.ListEntitiesForPolicyInput, func(*iam.ListEntitiesForPolicyOutput, bool) bool) error
|
||||||
|
ListEntitiesForPolicyPagesWithContext(aws.Context, *iam.ListEntitiesForPolicyInput, func(*iam.ListEntitiesForPolicyOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListGroupPolicies(*iam.ListGroupPoliciesInput) (*iam.ListGroupPoliciesOutput, error)
|
||||||
|
ListGroupPoliciesWithContext(aws.Context, *iam.ListGroupPoliciesInput, ...request.Option) (*iam.ListGroupPoliciesOutput, error)
|
||||||
|
ListGroupPoliciesRequest(*iam.ListGroupPoliciesInput) (*request.Request, *iam.ListGroupPoliciesOutput)
|
||||||
|
|
||||||
|
ListGroupPoliciesPages(*iam.ListGroupPoliciesInput, func(*iam.ListGroupPoliciesOutput, bool) bool) error
|
||||||
|
ListGroupPoliciesPagesWithContext(aws.Context, *iam.ListGroupPoliciesInput, func(*iam.ListGroupPoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListGroups(*iam.ListGroupsInput) (*iam.ListGroupsOutput, error)
|
||||||
|
ListGroupsWithContext(aws.Context, *iam.ListGroupsInput, ...request.Option) (*iam.ListGroupsOutput, error)
|
||||||
|
ListGroupsRequest(*iam.ListGroupsInput) (*request.Request, *iam.ListGroupsOutput)
|
||||||
|
|
||||||
|
ListGroupsPages(*iam.ListGroupsInput, func(*iam.ListGroupsOutput, bool) bool) error
|
||||||
|
ListGroupsPagesWithContext(aws.Context, *iam.ListGroupsInput, func(*iam.ListGroupsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListGroupsForUser(*iam.ListGroupsForUserInput) (*iam.ListGroupsForUserOutput, error)
|
||||||
|
ListGroupsForUserWithContext(aws.Context, *iam.ListGroupsForUserInput, ...request.Option) (*iam.ListGroupsForUserOutput, error)
|
||||||
|
ListGroupsForUserRequest(*iam.ListGroupsForUserInput) (*request.Request, *iam.ListGroupsForUserOutput)
|
||||||
|
|
||||||
|
ListGroupsForUserPages(*iam.ListGroupsForUserInput, func(*iam.ListGroupsForUserOutput, bool) bool) error
|
||||||
|
ListGroupsForUserPagesWithContext(aws.Context, *iam.ListGroupsForUserInput, func(*iam.ListGroupsForUserOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListInstanceProfiles(*iam.ListInstanceProfilesInput) (*iam.ListInstanceProfilesOutput, error)
|
||||||
|
ListInstanceProfilesWithContext(aws.Context, *iam.ListInstanceProfilesInput, ...request.Option) (*iam.ListInstanceProfilesOutput, error)
|
||||||
|
ListInstanceProfilesRequest(*iam.ListInstanceProfilesInput) (*request.Request, *iam.ListInstanceProfilesOutput)
|
||||||
|
|
||||||
|
ListInstanceProfilesPages(*iam.ListInstanceProfilesInput, func(*iam.ListInstanceProfilesOutput, bool) bool) error
|
||||||
|
ListInstanceProfilesPagesWithContext(aws.Context, *iam.ListInstanceProfilesInput, func(*iam.ListInstanceProfilesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListInstanceProfilesForRole(*iam.ListInstanceProfilesForRoleInput) (*iam.ListInstanceProfilesForRoleOutput, error)
|
||||||
|
ListInstanceProfilesForRoleWithContext(aws.Context, *iam.ListInstanceProfilesForRoleInput, ...request.Option) (*iam.ListInstanceProfilesForRoleOutput, error)
|
||||||
|
ListInstanceProfilesForRoleRequest(*iam.ListInstanceProfilesForRoleInput) (*request.Request, *iam.ListInstanceProfilesForRoleOutput)
|
||||||
|
|
||||||
|
ListInstanceProfilesForRolePages(*iam.ListInstanceProfilesForRoleInput, func(*iam.ListInstanceProfilesForRoleOutput, bool) bool) error
|
||||||
|
ListInstanceProfilesForRolePagesWithContext(aws.Context, *iam.ListInstanceProfilesForRoleInput, func(*iam.ListInstanceProfilesForRoleOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListMFADevices(*iam.ListMFADevicesInput) (*iam.ListMFADevicesOutput, error)
|
||||||
|
ListMFADevicesWithContext(aws.Context, *iam.ListMFADevicesInput, ...request.Option) (*iam.ListMFADevicesOutput, error)
|
||||||
|
ListMFADevicesRequest(*iam.ListMFADevicesInput) (*request.Request, *iam.ListMFADevicesOutput)
|
||||||
|
|
||||||
|
ListMFADevicesPages(*iam.ListMFADevicesInput, func(*iam.ListMFADevicesOutput, bool) bool) error
|
||||||
|
ListMFADevicesPagesWithContext(aws.Context, *iam.ListMFADevicesInput, func(*iam.ListMFADevicesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListOpenIDConnectProviders(*iam.ListOpenIDConnectProvidersInput) (*iam.ListOpenIDConnectProvidersOutput, error)
|
||||||
|
ListOpenIDConnectProvidersWithContext(aws.Context, *iam.ListOpenIDConnectProvidersInput, ...request.Option) (*iam.ListOpenIDConnectProvidersOutput, error)
|
||||||
|
ListOpenIDConnectProvidersRequest(*iam.ListOpenIDConnectProvidersInput) (*request.Request, *iam.ListOpenIDConnectProvidersOutput)
|
||||||
|
|
||||||
|
ListPolicies(*iam.ListPoliciesInput) (*iam.ListPoliciesOutput, error)
|
||||||
|
ListPoliciesWithContext(aws.Context, *iam.ListPoliciesInput, ...request.Option) (*iam.ListPoliciesOutput, error)
|
||||||
|
ListPoliciesRequest(*iam.ListPoliciesInput) (*request.Request, *iam.ListPoliciesOutput)
|
||||||
|
|
||||||
|
ListPoliciesPages(*iam.ListPoliciesInput, func(*iam.ListPoliciesOutput, bool) bool) error
|
||||||
|
ListPoliciesPagesWithContext(aws.Context, *iam.ListPoliciesInput, func(*iam.ListPoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListPolicyVersions(*iam.ListPolicyVersionsInput) (*iam.ListPolicyVersionsOutput, error)
|
||||||
|
ListPolicyVersionsWithContext(aws.Context, *iam.ListPolicyVersionsInput, ...request.Option) (*iam.ListPolicyVersionsOutput, error)
|
||||||
|
ListPolicyVersionsRequest(*iam.ListPolicyVersionsInput) (*request.Request, *iam.ListPolicyVersionsOutput)
|
||||||
|
|
||||||
|
ListPolicyVersionsPages(*iam.ListPolicyVersionsInput, func(*iam.ListPolicyVersionsOutput, bool) bool) error
|
||||||
|
ListPolicyVersionsPagesWithContext(aws.Context, *iam.ListPolicyVersionsInput, func(*iam.ListPolicyVersionsOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListRolePolicies(*iam.ListRolePoliciesInput) (*iam.ListRolePoliciesOutput, error)
|
||||||
|
ListRolePoliciesWithContext(aws.Context, *iam.ListRolePoliciesInput, ...request.Option) (*iam.ListRolePoliciesOutput, error)
|
||||||
|
ListRolePoliciesRequest(*iam.ListRolePoliciesInput) (*request.Request, *iam.ListRolePoliciesOutput)
|
||||||
|
|
||||||
|
ListRolePoliciesPages(*iam.ListRolePoliciesInput, func(*iam.ListRolePoliciesOutput, bool) bool) error
|
||||||
|
ListRolePoliciesPagesWithContext(aws.Context, *iam.ListRolePoliciesInput, func(*iam.ListRolePoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListRoles(*iam.ListRolesInput) (*iam.ListRolesOutput, error)
|
||||||
|
ListRolesWithContext(aws.Context, *iam.ListRolesInput, ...request.Option) (*iam.ListRolesOutput, error)
|
||||||
|
ListRolesRequest(*iam.ListRolesInput) (*request.Request, *iam.ListRolesOutput)
|
||||||
|
|
||||||
|
ListRolesPages(*iam.ListRolesInput, func(*iam.ListRolesOutput, bool) bool) error
|
||||||
|
ListRolesPagesWithContext(aws.Context, *iam.ListRolesInput, func(*iam.ListRolesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListSAMLProviders(*iam.ListSAMLProvidersInput) (*iam.ListSAMLProvidersOutput, error)
|
||||||
|
ListSAMLProvidersWithContext(aws.Context, *iam.ListSAMLProvidersInput, ...request.Option) (*iam.ListSAMLProvidersOutput, error)
|
||||||
|
ListSAMLProvidersRequest(*iam.ListSAMLProvidersInput) (*request.Request, *iam.ListSAMLProvidersOutput)
|
||||||
|
|
||||||
|
ListSSHPublicKeys(*iam.ListSSHPublicKeysInput) (*iam.ListSSHPublicKeysOutput, error)
|
||||||
|
ListSSHPublicKeysWithContext(aws.Context, *iam.ListSSHPublicKeysInput, ...request.Option) (*iam.ListSSHPublicKeysOutput, error)
|
||||||
|
ListSSHPublicKeysRequest(*iam.ListSSHPublicKeysInput) (*request.Request, *iam.ListSSHPublicKeysOutput)
|
||||||
|
|
||||||
|
ListSSHPublicKeysPages(*iam.ListSSHPublicKeysInput, func(*iam.ListSSHPublicKeysOutput, bool) bool) error
|
||||||
|
ListSSHPublicKeysPagesWithContext(aws.Context, *iam.ListSSHPublicKeysInput, func(*iam.ListSSHPublicKeysOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListServerCertificates(*iam.ListServerCertificatesInput) (*iam.ListServerCertificatesOutput, error)
|
||||||
|
ListServerCertificatesWithContext(aws.Context, *iam.ListServerCertificatesInput, ...request.Option) (*iam.ListServerCertificatesOutput, error)
|
||||||
|
ListServerCertificatesRequest(*iam.ListServerCertificatesInput) (*request.Request, *iam.ListServerCertificatesOutput)
|
||||||
|
|
||||||
|
ListServerCertificatesPages(*iam.ListServerCertificatesInput, func(*iam.ListServerCertificatesOutput, bool) bool) error
|
||||||
|
ListServerCertificatesPagesWithContext(aws.Context, *iam.ListServerCertificatesInput, func(*iam.ListServerCertificatesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListServiceSpecificCredentials(*iam.ListServiceSpecificCredentialsInput) (*iam.ListServiceSpecificCredentialsOutput, error)
|
||||||
|
ListServiceSpecificCredentialsWithContext(aws.Context, *iam.ListServiceSpecificCredentialsInput, ...request.Option) (*iam.ListServiceSpecificCredentialsOutput, error)
|
||||||
|
ListServiceSpecificCredentialsRequest(*iam.ListServiceSpecificCredentialsInput) (*request.Request, *iam.ListServiceSpecificCredentialsOutput)
|
||||||
|
|
||||||
|
ListSigningCertificates(*iam.ListSigningCertificatesInput) (*iam.ListSigningCertificatesOutput, error)
|
||||||
|
ListSigningCertificatesWithContext(aws.Context, *iam.ListSigningCertificatesInput, ...request.Option) (*iam.ListSigningCertificatesOutput, error)
|
||||||
|
ListSigningCertificatesRequest(*iam.ListSigningCertificatesInput) (*request.Request, *iam.ListSigningCertificatesOutput)
|
||||||
|
|
||||||
|
ListSigningCertificatesPages(*iam.ListSigningCertificatesInput, func(*iam.ListSigningCertificatesOutput, bool) bool) error
|
||||||
|
ListSigningCertificatesPagesWithContext(aws.Context, *iam.ListSigningCertificatesInput, func(*iam.ListSigningCertificatesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListUserPolicies(*iam.ListUserPoliciesInput) (*iam.ListUserPoliciesOutput, error)
|
||||||
|
ListUserPoliciesWithContext(aws.Context, *iam.ListUserPoliciesInput, ...request.Option) (*iam.ListUserPoliciesOutput, error)
|
||||||
|
ListUserPoliciesRequest(*iam.ListUserPoliciesInput) (*request.Request, *iam.ListUserPoliciesOutput)
|
||||||
|
|
||||||
|
ListUserPoliciesPages(*iam.ListUserPoliciesInput, func(*iam.ListUserPoliciesOutput, bool) bool) error
|
||||||
|
ListUserPoliciesPagesWithContext(aws.Context, *iam.ListUserPoliciesInput, func(*iam.ListUserPoliciesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListUsers(*iam.ListUsersInput) (*iam.ListUsersOutput, error)
|
||||||
|
ListUsersWithContext(aws.Context, *iam.ListUsersInput, ...request.Option) (*iam.ListUsersOutput, error)
|
||||||
|
ListUsersRequest(*iam.ListUsersInput) (*request.Request, *iam.ListUsersOutput)
|
||||||
|
|
||||||
|
ListUsersPages(*iam.ListUsersInput, func(*iam.ListUsersOutput, bool) bool) error
|
||||||
|
ListUsersPagesWithContext(aws.Context, *iam.ListUsersInput, func(*iam.ListUsersOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
ListVirtualMFADevices(*iam.ListVirtualMFADevicesInput) (*iam.ListVirtualMFADevicesOutput, error)
|
||||||
|
ListVirtualMFADevicesWithContext(aws.Context, *iam.ListVirtualMFADevicesInput, ...request.Option) (*iam.ListVirtualMFADevicesOutput, error)
|
||||||
|
ListVirtualMFADevicesRequest(*iam.ListVirtualMFADevicesInput) (*request.Request, *iam.ListVirtualMFADevicesOutput)
|
||||||
|
|
||||||
|
ListVirtualMFADevicesPages(*iam.ListVirtualMFADevicesInput, func(*iam.ListVirtualMFADevicesOutput, bool) bool) error
|
||||||
|
ListVirtualMFADevicesPagesWithContext(aws.Context, *iam.ListVirtualMFADevicesInput, func(*iam.ListVirtualMFADevicesOutput, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
PutGroupPolicy(*iam.PutGroupPolicyInput) (*iam.PutGroupPolicyOutput, error)
|
||||||
|
PutGroupPolicyWithContext(aws.Context, *iam.PutGroupPolicyInput, ...request.Option) (*iam.PutGroupPolicyOutput, error)
|
||||||
|
PutGroupPolicyRequest(*iam.PutGroupPolicyInput) (*request.Request, *iam.PutGroupPolicyOutput)
|
||||||
|
|
||||||
|
PutRolePermissionsBoundary(*iam.PutRolePermissionsBoundaryInput) (*iam.PutRolePermissionsBoundaryOutput, error)
|
||||||
|
PutRolePermissionsBoundaryWithContext(aws.Context, *iam.PutRolePermissionsBoundaryInput, ...request.Option) (*iam.PutRolePermissionsBoundaryOutput, error)
|
||||||
|
PutRolePermissionsBoundaryRequest(*iam.PutRolePermissionsBoundaryInput) (*request.Request, *iam.PutRolePermissionsBoundaryOutput)
|
||||||
|
|
||||||
|
PutRolePolicy(*iam.PutRolePolicyInput) (*iam.PutRolePolicyOutput, error)
|
||||||
|
PutRolePolicyWithContext(aws.Context, *iam.PutRolePolicyInput, ...request.Option) (*iam.PutRolePolicyOutput, error)
|
||||||
|
PutRolePolicyRequest(*iam.PutRolePolicyInput) (*request.Request, *iam.PutRolePolicyOutput)
|
||||||
|
|
||||||
|
PutUserPermissionsBoundary(*iam.PutUserPermissionsBoundaryInput) (*iam.PutUserPermissionsBoundaryOutput, error)
|
||||||
|
PutUserPermissionsBoundaryWithContext(aws.Context, *iam.PutUserPermissionsBoundaryInput, ...request.Option) (*iam.PutUserPermissionsBoundaryOutput, error)
|
||||||
|
PutUserPermissionsBoundaryRequest(*iam.PutUserPermissionsBoundaryInput) (*request.Request, *iam.PutUserPermissionsBoundaryOutput)
|
||||||
|
|
||||||
|
PutUserPolicy(*iam.PutUserPolicyInput) (*iam.PutUserPolicyOutput, error)
|
||||||
|
PutUserPolicyWithContext(aws.Context, *iam.PutUserPolicyInput, ...request.Option) (*iam.PutUserPolicyOutput, error)
|
||||||
|
PutUserPolicyRequest(*iam.PutUserPolicyInput) (*request.Request, *iam.PutUserPolicyOutput)
|
||||||
|
|
||||||
|
RemoveClientIDFromOpenIDConnectProvider(*iam.RemoveClientIDFromOpenIDConnectProviderInput) (*iam.RemoveClientIDFromOpenIDConnectProviderOutput, error)
|
||||||
|
RemoveClientIDFromOpenIDConnectProviderWithContext(aws.Context, *iam.RemoveClientIDFromOpenIDConnectProviderInput, ...request.Option) (*iam.RemoveClientIDFromOpenIDConnectProviderOutput, error)
|
||||||
|
RemoveClientIDFromOpenIDConnectProviderRequest(*iam.RemoveClientIDFromOpenIDConnectProviderInput) (*request.Request, *iam.RemoveClientIDFromOpenIDConnectProviderOutput)
|
||||||
|
|
||||||
|
RemoveRoleFromInstanceProfile(*iam.RemoveRoleFromInstanceProfileInput) (*iam.RemoveRoleFromInstanceProfileOutput, error)
|
||||||
|
RemoveRoleFromInstanceProfileWithContext(aws.Context, *iam.RemoveRoleFromInstanceProfileInput, ...request.Option) (*iam.RemoveRoleFromInstanceProfileOutput, error)
|
||||||
|
RemoveRoleFromInstanceProfileRequest(*iam.RemoveRoleFromInstanceProfileInput) (*request.Request, *iam.RemoveRoleFromInstanceProfileOutput)
|
||||||
|
|
||||||
|
RemoveUserFromGroup(*iam.RemoveUserFromGroupInput) (*iam.RemoveUserFromGroupOutput, error)
|
||||||
|
RemoveUserFromGroupWithContext(aws.Context, *iam.RemoveUserFromGroupInput, ...request.Option) (*iam.RemoveUserFromGroupOutput, error)
|
||||||
|
RemoveUserFromGroupRequest(*iam.RemoveUserFromGroupInput) (*request.Request, *iam.RemoveUserFromGroupOutput)
|
||||||
|
|
||||||
|
ResetServiceSpecificCredential(*iam.ResetServiceSpecificCredentialInput) (*iam.ResetServiceSpecificCredentialOutput, error)
|
||||||
|
ResetServiceSpecificCredentialWithContext(aws.Context, *iam.ResetServiceSpecificCredentialInput, ...request.Option) (*iam.ResetServiceSpecificCredentialOutput, error)
|
||||||
|
ResetServiceSpecificCredentialRequest(*iam.ResetServiceSpecificCredentialInput) (*request.Request, *iam.ResetServiceSpecificCredentialOutput)
|
||||||
|
|
||||||
|
ResyncMFADevice(*iam.ResyncMFADeviceInput) (*iam.ResyncMFADeviceOutput, error)
|
||||||
|
ResyncMFADeviceWithContext(aws.Context, *iam.ResyncMFADeviceInput, ...request.Option) (*iam.ResyncMFADeviceOutput, error)
|
||||||
|
ResyncMFADeviceRequest(*iam.ResyncMFADeviceInput) (*request.Request, *iam.ResyncMFADeviceOutput)
|
||||||
|
|
||||||
|
SetDefaultPolicyVersion(*iam.SetDefaultPolicyVersionInput) (*iam.SetDefaultPolicyVersionOutput, error)
|
||||||
|
SetDefaultPolicyVersionWithContext(aws.Context, *iam.SetDefaultPolicyVersionInput, ...request.Option) (*iam.SetDefaultPolicyVersionOutput, error)
|
||||||
|
SetDefaultPolicyVersionRequest(*iam.SetDefaultPolicyVersionInput) (*request.Request, *iam.SetDefaultPolicyVersionOutput)
|
||||||
|
|
||||||
|
SimulateCustomPolicy(*iam.SimulateCustomPolicyInput) (*iam.SimulatePolicyResponse, error)
|
||||||
|
SimulateCustomPolicyWithContext(aws.Context, *iam.SimulateCustomPolicyInput, ...request.Option) (*iam.SimulatePolicyResponse, error)
|
||||||
|
SimulateCustomPolicyRequest(*iam.SimulateCustomPolicyInput) (*request.Request, *iam.SimulatePolicyResponse)
|
||||||
|
|
||||||
|
SimulateCustomPolicyPages(*iam.SimulateCustomPolicyInput, func(*iam.SimulatePolicyResponse, bool) bool) error
|
||||||
|
SimulateCustomPolicyPagesWithContext(aws.Context, *iam.SimulateCustomPolicyInput, func(*iam.SimulatePolicyResponse, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
SimulatePrincipalPolicy(*iam.SimulatePrincipalPolicyInput) (*iam.SimulatePolicyResponse, error)
|
||||||
|
SimulatePrincipalPolicyWithContext(aws.Context, *iam.SimulatePrincipalPolicyInput, ...request.Option) (*iam.SimulatePolicyResponse, error)
|
||||||
|
SimulatePrincipalPolicyRequest(*iam.SimulatePrincipalPolicyInput) (*request.Request, *iam.SimulatePolicyResponse)
|
||||||
|
|
||||||
|
SimulatePrincipalPolicyPages(*iam.SimulatePrincipalPolicyInput, func(*iam.SimulatePolicyResponse, bool) bool) error
|
||||||
|
SimulatePrincipalPolicyPagesWithContext(aws.Context, *iam.SimulatePrincipalPolicyInput, func(*iam.SimulatePolicyResponse, bool) bool, ...request.Option) error
|
||||||
|
|
||||||
|
UpdateAccessKey(*iam.UpdateAccessKeyInput) (*iam.UpdateAccessKeyOutput, error)
|
||||||
|
UpdateAccessKeyWithContext(aws.Context, *iam.UpdateAccessKeyInput, ...request.Option) (*iam.UpdateAccessKeyOutput, error)
|
||||||
|
UpdateAccessKeyRequest(*iam.UpdateAccessKeyInput) (*request.Request, *iam.UpdateAccessKeyOutput)
|
||||||
|
|
||||||
|
UpdateAccountPasswordPolicy(*iam.UpdateAccountPasswordPolicyInput) (*iam.UpdateAccountPasswordPolicyOutput, error)
|
||||||
|
UpdateAccountPasswordPolicyWithContext(aws.Context, *iam.UpdateAccountPasswordPolicyInput, ...request.Option) (*iam.UpdateAccountPasswordPolicyOutput, error)
|
||||||
|
UpdateAccountPasswordPolicyRequest(*iam.UpdateAccountPasswordPolicyInput) (*request.Request, *iam.UpdateAccountPasswordPolicyOutput)
|
||||||
|
|
||||||
|
UpdateAssumeRolePolicy(*iam.UpdateAssumeRolePolicyInput) (*iam.UpdateAssumeRolePolicyOutput, error)
|
||||||
|
UpdateAssumeRolePolicyWithContext(aws.Context, *iam.UpdateAssumeRolePolicyInput, ...request.Option) (*iam.UpdateAssumeRolePolicyOutput, error)
|
||||||
|
UpdateAssumeRolePolicyRequest(*iam.UpdateAssumeRolePolicyInput) (*request.Request, *iam.UpdateAssumeRolePolicyOutput)
|
||||||
|
|
||||||
|
UpdateGroup(*iam.UpdateGroupInput) (*iam.UpdateGroupOutput, error)
|
||||||
|
UpdateGroupWithContext(aws.Context, *iam.UpdateGroupInput, ...request.Option) (*iam.UpdateGroupOutput, error)
|
||||||
|
UpdateGroupRequest(*iam.UpdateGroupInput) (*request.Request, *iam.UpdateGroupOutput)
|
||||||
|
|
||||||
|
UpdateLoginProfile(*iam.UpdateLoginProfileInput) (*iam.UpdateLoginProfileOutput, error)
|
||||||
|
UpdateLoginProfileWithContext(aws.Context, *iam.UpdateLoginProfileInput, ...request.Option) (*iam.UpdateLoginProfileOutput, error)
|
||||||
|
UpdateLoginProfileRequest(*iam.UpdateLoginProfileInput) (*request.Request, *iam.UpdateLoginProfileOutput)
|
||||||
|
|
||||||
|
UpdateOpenIDConnectProviderThumbprint(*iam.UpdateOpenIDConnectProviderThumbprintInput) (*iam.UpdateOpenIDConnectProviderThumbprintOutput, error)
|
||||||
|
UpdateOpenIDConnectProviderThumbprintWithContext(aws.Context, *iam.UpdateOpenIDConnectProviderThumbprintInput, ...request.Option) (*iam.UpdateOpenIDConnectProviderThumbprintOutput, error)
|
||||||
|
UpdateOpenIDConnectProviderThumbprintRequest(*iam.UpdateOpenIDConnectProviderThumbprintInput) (*request.Request, *iam.UpdateOpenIDConnectProviderThumbprintOutput)
|
||||||
|
|
||||||
|
UpdateRole(*iam.UpdateRoleInput) (*iam.UpdateRoleOutput, error)
|
||||||
|
UpdateRoleWithContext(aws.Context, *iam.UpdateRoleInput, ...request.Option) (*iam.UpdateRoleOutput, error)
|
||||||
|
UpdateRoleRequest(*iam.UpdateRoleInput) (*request.Request, *iam.UpdateRoleOutput)
|
||||||
|
|
||||||
|
UpdateRoleDescription(*iam.UpdateRoleDescriptionInput) (*iam.UpdateRoleDescriptionOutput, error)
|
||||||
|
UpdateRoleDescriptionWithContext(aws.Context, *iam.UpdateRoleDescriptionInput, ...request.Option) (*iam.UpdateRoleDescriptionOutput, error)
|
||||||
|
UpdateRoleDescriptionRequest(*iam.UpdateRoleDescriptionInput) (*request.Request, *iam.UpdateRoleDescriptionOutput)
|
||||||
|
|
||||||
|
UpdateSAMLProvider(*iam.UpdateSAMLProviderInput) (*iam.UpdateSAMLProviderOutput, error)
|
||||||
|
UpdateSAMLProviderWithContext(aws.Context, *iam.UpdateSAMLProviderInput, ...request.Option) (*iam.UpdateSAMLProviderOutput, error)
|
||||||
|
UpdateSAMLProviderRequest(*iam.UpdateSAMLProviderInput) (*request.Request, *iam.UpdateSAMLProviderOutput)
|
||||||
|
|
||||||
|
UpdateSSHPublicKey(*iam.UpdateSSHPublicKeyInput) (*iam.UpdateSSHPublicKeyOutput, error)
|
||||||
|
UpdateSSHPublicKeyWithContext(aws.Context, *iam.UpdateSSHPublicKeyInput, ...request.Option) (*iam.UpdateSSHPublicKeyOutput, error)
|
||||||
|
UpdateSSHPublicKeyRequest(*iam.UpdateSSHPublicKeyInput) (*request.Request, *iam.UpdateSSHPublicKeyOutput)
|
||||||
|
|
||||||
|
UpdateServerCertificate(*iam.UpdateServerCertificateInput) (*iam.UpdateServerCertificateOutput, error)
|
||||||
|
UpdateServerCertificateWithContext(aws.Context, *iam.UpdateServerCertificateInput, ...request.Option) (*iam.UpdateServerCertificateOutput, error)
|
||||||
|
UpdateServerCertificateRequest(*iam.UpdateServerCertificateInput) (*request.Request, *iam.UpdateServerCertificateOutput)
|
||||||
|
|
||||||
|
UpdateServiceSpecificCredential(*iam.UpdateServiceSpecificCredentialInput) (*iam.UpdateServiceSpecificCredentialOutput, error)
|
||||||
|
UpdateServiceSpecificCredentialWithContext(aws.Context, *iam.UpdateServiceSpecificCredentialInput, ...request.Option) (*iam.UpdateServiceSpecificCredentialOutput, error)
|
||||||
|
UpdateServiceSpecificCredentialRequest(*iam.UpdateServiceSpecificCredentialInput) (*request.Request, *iam.UpdateServiceSpecificCredentialOutput)
|
||||||
|
|
||||||
|
UpdateSigningCertificate(*iam.UpdateSigningCertificateInput) (*iam.UpdateSigningCertificateOutput, error)
|
||||||
|
UpdateSigningCertificateWithContext(aws.Context, *iam.UpdateSigningCertificateInput, ...request.Option) (*iam.UpdateSigningCertificateOutput, error)
|
||||||
|
UpdateSigningCertificateRequest(*iam.UpdateSigningCertificateInput) (*request.Request, *iam.UpdateSigningCertificateOutput)
|
||||||
|
|
||||||
|
UpdateUser(*iam.UpdateUserInput) (*iam.UpdateUserOutput, error)
|
||||||
|
UpdateUserWithContext(aws.Context, *iam.UpdateUserInput, ...request.Option) (*iam.UpdateUserOutput, error)
|
||||||
|
UpdateUserRequest(*iam.UpdateUserInput) (*request.Request, *iam.UpdateUserOutput)
|
||||||
|
|
||||||
|
UploadSSHPublicKey(*iam.UploadSSHPublicKeyInput) (*iam.UploadSSHPublicKeyOutput, error)
|
||||||
|
UploadSSHPublicKeyWithContext(aws.Context, *iam.UploadSSHPublicKeyInput, ...request.Option) (*iam.UploadSSHPublicKeyOutput, error)
|
||||||
|
UploadSSHPublicKeyRequest(*iam.UploadSSHPublicKeyInput) (*request.Request, *iam.UploadSSHPublicKeyOutput)
|
||||||
|
|
||||||
|
UploadServerCertificate(*iam.UploadServerCertificateInput) (*iam.UploadServerCertificateOutput, error)
|
||||||
|
UploadServerCertificateWithContext(aws.Context, *iam.UploadServerCertificateInput, ...request.Option) (*iam.UploadServerCertificateOutput, error)
|
||||||
|
UploadServerCertificateRequest(*iam.UploadServerCertificateInput) (*request.Request, *iam.UploadServerCertificateOutput)
|
||||||
|
|
||||||
|
UploadSigningCertificate(*iam.UploadSigningCertificateInput) (*iam.UploadSigningCertificateOutput, error)
|
||||||
|
UploadSigningCertificateWithContext(aws.Context, *iam.UploadSigningCertificateInput, ...request.Option) (*iam.UploadSigningCertificateOutput, error)
|
||||||
|
UploadSigningCertificateRequest(*iam.UploadSigningCertificateInput) (*request.Request, *iam.UploadSigningCertificateOutput)
|
||||||
|
|
||||||
|
WaitUntilInstanceProfileExists(*iam.GetInstanceProfileInput) error
|
||||||
|
WaitUntilInstanceProfileExistsWithContext(aws.Context, *iam.GetInstanceProfileInput, ...request.WaiterOption) error
|
||||||
|
|
||||||
|
WaitUntilUserExists(*iam.GetUserInput) error
|
||||||
|
WaitUntilUserExistsWithContext(aws.Context, *iam.GetUserInput, ...request.WaiterOption) error
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ IAMAPI = (*iam.IAM)(nil)
|
||||||
2
vendor/github.com/aws/aws-sdk-go/service/sts/api.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/service/sts/api.go
generated
vendored
@@ -1908,7 +1908,7 @@ type Credentials struct {
|
|||||||
// The date on which the current credentials expire.
|
// The date on which the current credentials expire.
|
||||||
//
|
//
|
||||||
// Expiration is a required field
|
// Expiration is a required field
|
||||||
Expiration *time.Time `type:"timestamp" timestampFormat:"iso8601" required:"true"`
|
Expiration *time.Time `type:"timestamp" required:"true"`
|
||||||
|
|
||||||
// The secret access key that can be used to sign requests.
|
// The secret access key that can be used to sign requests.
|
||||||
//
|
//
|
||||||
|
|||||||
92
vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go
generated
vendored
Normal file
92
vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package stsiface provides an interface to enable mocking the AWS Security Token Service 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 stsiface
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
"github.com/aws/aws-sdk-go/service/sts"
|
||||||
|
)
|
||||||
|
|
||||||
|
// STSAPI provides an interface to enable mocking the
|
||||||
|
// sts.STS 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 Security Token Service.
|
||||||
|
// func myFunc(svc stsiface.STSAPI) bool {
|
||||||
|
// // Make svc.AssumeRole request
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func main() {
|
||||||
|
// sess := session.New()
|
||||||
|
// svc := sts.New(sess)
|
||||||
|
//
|
||||||
|
// myFunc(svc)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// In your _test.go file:
|
||||||
|
//
|
||||||
|
// // Define a mock struct to be used in your unit tests of myFunc.
|
||||||
|
// type mockSTSClient struct {
|
||||||
|
// stsiface.STSAPI
|
||||||
|
// }
|
||||||
|
// func (m *mockSTSClient) AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error) {
|
||||||
|
// // mock response/functionality
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// func TestMyFunc(t *testing.T) {
|
||||||
|
// // Setup Test
|
||||||
|
// mockSvc := &mockSTSClient{}
|
||||||
|
//
|
||||||
|
// 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 STSAPI interface {
|
||||||
|
AssumeRole(*sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error)
|
||||||
|
AssumeRoleWithContext(aws.Context, *sts.AssumeRoleInput, ...request.Option) (*sts.AssumeRoleOutput, error)
|
||||||
|
AssumeRoleRequest(*sts.AssumeRoleInput) (*request.Request, *sts.AssumeRoleOutput)
|
||||||
|
|
||||||
|
AssumeRoleWithSAML(*sts.AssumeRoleWithSAMLInput) (*sts.AssumeRoleWithSAMLOutput, error)
|
||||||
|
AssumeRoleWithSAMLWithContext(aws.Context, *sts.AssumeRoleWithSAMLInput, ...request.Option) (*sts.AssumeRoleWithSAMLOutput, error)
|
||||||
|
AssumeRoleWithSAMLRequest(*sts.AssumeRoleWithSAMLInput) (*request.Request, *sts.AssumeRoleWithSAMLOutput)
|
||||||
|
|
||||||
|
AssumeRoleWithWebIdentity(*sts.AssumeRoleWithWebIdentityInput) (*sts.AssumeRoleWithWebIdentityOutput, error)
|
||||||
|
AssumeRoleWithWebIdentityWithContext(aws.Context, *sts.AssumeRoleWithWebIdentityInput, ...request.Option) (*sts.AssumeRoleWithWebIdentityOutput, error)
|
||||||
|
AssumeRoleWithWebIdentityRequest(*sts.AssumeRoleWithWebIdentityInput) (*request.Request, *sts.AssumeRoleWithWebIdentityOutput)
|
||||||
|
|
||||||
|
DecodeAuthorizationMessage(*sts.DecodeAuthorizationMessageInput) (*sts.DecodeAuthorizationMessageOutput, error)
|
||||||
|
DecodeAuthorizationMessageWithContext(aws.Context, *sts.DecodeAuthorizationMessageInput, ...request.Option) (*sts.DecodeAuthorizationMessageOutput, error)
|
||||||
|
DecodeAuthorizationMessageRequest(*sts.DecodeAuthorizationMessageInput) (*request.Request, *sts.DecodeAuthorizationMessageOutput)
|
||||||
|
|
||||||
|
GetCallerIdentity(*sts.GetCallerIdentityInput) (*sts.GetCallerIdentityOutput, error)
|
||||||
|
GetCallerIdentityWithContext(aws.Context, *sts.GetCallerIdentityInput, ...request.Option) (*sts.GetCallerIdentityOutput, error)
|
||||||
|
GetCallerIdentityRequest(*sts.GetCallerIdentityInput) (*request.Request, *sts.GetCallerIdentityOutput)
|
||||||
|
|
||||||
|
GetFederationToken(*sts.GetFederationTokenInput) (*sts.GetFederationTokenOutput, error)
|
||||||
|
GetFederationTokenWithContext(aws.Context, *sts.GetFederationTokenInput, ...request.Option) (*sts.GetFederationTokenOutput, error)
|
||||||
|
GetFederationTokenRequest(*sts.GetFederationTokenInput) (*request.Request, *sts.GetFederationTokenOutput)
|
||||||
|
|
||||||
|
GetSessionToken(*sts.GetSessionTokenInput) (*sts.GetSessionTokenOutput, error)
|
||||||
|
GetSessionTokenWithContext(aws.Context, *sts.GetSessionTokenInput, ...request.Option) (*sts.GetSessionTokenOutput, error)
|
||||||
|
GetSessionTokenRequest(*sts.GetSessionTokenInput) (*request.Request, *sts.GetSessionTokenOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ STSAPI = (*sts.STS)(nil)
|
||||||
24
vendor/vendor.json
vendored
24
vendor/vendor.json
vendored
@@ -553,10 +553,16 @@
|
|||||||
"revisionTime": "2018-07-11T05:22:29Z"
|
"revisionTime": "2018-07-11T05:22:29Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "1tAb3rvB34c3zsX+DRY5xDJqNUA=",
|
"checksumSHA1": "ae+jhUirSvN0IXPVU7X7xc+EbFE=",
|
||||||
"path": "github.com/aws/aws-sdk-go/service/iam",
|
"path": "github.com/aws/aws-sdk-go/service/iam",
|
||||||
"revision": "c01ebd0d48a4772fd28a0b684db0f36882dc995c",
|
"revision": "46ffe7480c9d567070fab0ed39912241bbc77449",
|
||||||
"revisionTime": "2018-07-11T05:22:29Z"
|
"revisionTime": "2018-08-28T19:42:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checksumSHA1": "+vRlKT3gC9YfgJllh87JaYa3V9c=",
|
||||||
|
"path": "github.com/aws/aws-sdk-go/service/iam/iamiface",
|
||||||
|
"revision": "46ffe7480c9d567070fab0ed39912241bbc77449",
|
||||||
|
"revisionTime": "2018-08-28T19:42:26Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "1qeG+wA9KLSzxwsAYd+e0LZTtPY=",
|
"checksumSHA1": "1qeG+wA9KLSzxwsAYd+e0LZTtPY=",
|
||||||
@@ -565,10 +571,16 @@
|
|||||||
"revisionTime": "2018-07-11T05:22:29Z"
|
"revisionTime": "2018-07-11T05:22:29Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "uguCtF1eoCG71dvEVqrYbFs7py0=",
|
"checksumSHA1": "UhIVLDgQc19wjrPj8pP7Fu2UwWc=",
|
||||||
"path": "github.com/aws/aws-sdk-go/service/sts",
|
"path": "github.com/aws/aws-sdk-go/service/sts",
|
||||||
"revision": "c01ebd0d48a4772fd28a0b684db0f36882dc995c",
|
"revision": "46ffe7480c9d567070fab0ed39912241bbc77449",
|
||||||
"revisionTime": "2018-07-11T05:22:29Z"
|
"revisionTime": "2018-08-28T19:42:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checksumSHA1": "O1161KyKFmri353MlqGTxZv36fU=",
|
||||||
|
"path": "github.com/aws/aws-sdk-go/service/sts/stsiface",
|
||||||
|
"revision": "46ffe7480c9d567070fab0ed39912241bbc77449",
|
||||||
|
"revisionTime": "2018-08-28T19:42:26Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "0rido7hYHQtfq3UJzVT5LClLAWc=",
|
"checksumSHA1": "0rido7hYHQtfq3UJzVT5LClLAWc=",
|
||||||
|
|||||||
Reference in New Issue
Block a user