func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*AssumeRoleProvider)) *credentials.Credentials {
	p := &AssumeRoleProvider{
		Client:   sts.New(c),
		RoleARN:  roleARN,
		Duration: DefaultDuration,
	}
	for _, option := range options {
		option(p)
	}
	return credentials.NewCredentials(p)
}
NewCredentials returns a pointer to a new Credentials value wrapping the
AssumeRoleProvider. The credentials will expire every 15 minutes and the
role will be named after a nanosecond timestamp of this operation. The
Credentials value will attempt to refresh the credentials using the provider
when Credentials.Get is called, if the cached credentials are expiring.

Takes a Config provider to create the STS client. The ConfigProvider is
satisfied by the session.Session type.

It is safe to share the returned Credentials with multiple Sessions and
service clients. All access to the credentials and refreshing them
will be synchronized.
package stscreds
import (
	"fmt"
	"os"
	"time"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awserr"
	"github.com/aws/aws-sdk-go/aws/client"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/request"
	"github.com/aws/aws-sdk-go/internal/sdkrand"
	"github.com/aws/aws-sdk-go/service/sts"
)
func StdinTokenProvider() (string, error) {
	var v string
	fmt.Fprintf(os.Stderr, "Assume Role MFA token code: ")
	_, err := fmt.Scanln(&v)
	return v, err
}
const ProviderName = "AssumeRoleProvider"
type AssumeRoler interface {
	AssumeRole(input *sts.AssumeRoleInput) (*sts.AssumeRoleOutput, error)
}
type assumeRolerWithContext interface {
	AssumeRoleWithContext(aws.Context, *sts.AssumeRoleInput, ...request.Option) (*sts.AssumeRoleOutput, error)
}
var DefaultDuration = time.Duration(15) * time.Minute
type AssumeRoleProvider struct {
	credentials.Expiry
	Client AssumeRoler
	RoleARN string
	RoleSessionName string
	Tags []*sts.Tag
	TransitiveTagKeys []*string
	Duration time.Duration
	ExternalID *string
	Policy *string
	PolicyArns []*sts.PolicyDescriptorType
	SerialNumber *string
	TokenCode *string
	TokenProvider func() (string, error)
	ExpiryWindow time.Duration
	MaxJitterFrac float64
}