func ExampleEFS_CreateFileSystem() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := efs.New(sess) params := &efs.CreateFileSystemInput{ CreationToken: aws.String("CreationToken"), // Required PerformanceMode: aws.String("PerformanceMode"), } resp, err := svc.CreateFileSystem(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_CreateTags() { svc := efs.New(nil) params := &efs.CreateTagsInput{ FileSystemId: aws.String("FileSystemId"), // Required Tags: []*efs.Tag{ // Required { // Required Key: aws.String("TagKey"), // Required Value: aws.String("TagValue"), // Required }, // More values... }, } resp, err := svc.CreateTags(params) if err != nil { if awsErr, ok := err.(awserr.Error); ok { // Generic AWS error with Code, Message, and original error (if any) fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) if reqErr, ok := err.(awserr.RequestFailure); ok { // A service error occurred fmt.Println(reqErr.Code(), reqErr.Message(), reqErr.StatusCode(), reqErr.RequestID()) } } else { // This case should never be hit, the SDK should always return an // error which satisfies the awserr.Error interface. fmt.Println(err.Error()) } } // Pretty-print the response data. fmt.Println(awsutil.Prettify(resp)) }
func ExampleEFS_DescribeTags() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := efs.New(sess) params := &efs.DescribeTagsInput{ FileSystemId: aws.String("FileSystemId"), // Required Marker: aws.String("Marker"), MaxItems: aws.Int64(1), } resp, err := svc.DescribeTags(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_CreateMountTarget() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := efs.New(sess) params := &efs.CreateMountTargetInput{ FileSystemId: aws.String("FileSystemId"), // Required SubnetId: aws.String("SubnetId"), // Required IpAddress: aws.String("IpAddress"), SecurityGroups: []*string{ aws.String("SecurityGroup"), // Required // More values... }, } resp, err := svc.CreateMountTarget(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_DescribeTags() { svc := efs.New(nil) params := &efs.DescribeTagsInput{ FileSystemId: aws.String("FileSystemId"), // Required Marker: aws.String("Marker"), MaxItems: aws.Int64(1), } resp, err := svc.DescribeTags(params) if err != nil { if awsErr, ok := err.(awserr.Error); ok { // Generic AWS error with Code, Message, and original error (if any) fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) if reqErr, ok := err.(awserr.RequestFailure); ok { // A service error occurred fmt.Println(reqErr.Code(), reqErr.Message(), reqErr.StatusCode(), reqErr.RequestID()) } } else { // This case should never be hit, the SDK should always return an // error which satisfies the awserr.Error interface. fmt.Println(err.Error()) } } // Pretty-print the response data. fmt.Println(awsutil.Prettify(resp)) }
func ExampleEFS_CreateMountTarget() { svc := efs.New(nil) params := &efs.CreateMountTargetInput{ FileSystemId: aws.String("FileSystemId"), // Required SubnetId: aws.String("SubnetId"), // Required IpAddress: aws.String("IpAddress"), SecurityGroups: []*string{ aws.String("SecurityGroup"), // Required // More values... }, } resp, err := svc.CreateMountTarget(params) if err != nil { if awsErr, ok := err.(awserr.Error); ok { // Generic AWS error with Code, Message, and original error (if any) fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) if reqErr, ok := err.(awserr.RequestFailure); ok { // A service error occurred fmt.Println(reqErr.Code(), reqErr.Message(), reqErr.StatusCode(), reqErr.RequestID()) } } else { // This case should never be hit, the SDK should always return an // error which satisfies the awserr.Error interface. fmt.Println(err.Error()) } } // Pretty-print the response data. fmt.Println(awsutil.Prettify(resp)) }
func ExampleEFS_CreateTags() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := efs.New(sess) params := &efs.CreateTagsInput{ FileSystemId: aws.String("FileSystemId"), // Required Tags: []*efs.Tag{ // Required { // Required Key: aws.String("TagKey"), // Required Value: aws.String("TagValue"), // Required }, // More values... }, } resp, err := svc.CreateTags(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func init() { Before("@efs", func() { // FIXME remove custom region World["client"] = efs.New(smoke.Session, aws.NewConfig().WithRegion("us-west-2")) }) }
func ExampleEFS_DescribeMountTargetSecurityGroups() { svc := efs.New(nil) params := &efs.DescribeMountTargetSecurityGroupsInput{ MountTargetID: aws.String("MountTargetId"), // Required } resp, err := svc.DescribeMountTargetSecurityGroups(params) if err != nil { if awsErr, ok := err.(awserr.Error); ok { // Generic AWS error with Code, Message, and original error (if any) fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) if reqErr, ok := err.(awserr.RequestFailure); ok { // A service error occurred fmt.Println(reqErr.Code(), reqErr.Message(), reqErr.StatusCode(), reqErr.RequestID()) } } else { // This case should never be hit, the SDK should always return an // error which satisfies the awserr.Error interface. fmt.Println(err.Error()) } } // Pretty-print the response data. fmt.Println(awsutil.StringValue(resp)) }
func (d DriverEFS) Mount(r dkvolume.Request) dkvolume.Response { p := filepath.Join(d.Root, r.Name) // Check if the directory already exists. nfs, err := mount.Mounted(p) if err != nil { return dkvolume.Response{Err: err.Error()} } if Exists(p) && nfs { log.Printf("Existing: %s", r.Name) return dkvolume.Response{Mountpoint: p} } e := efs.New(&aws.Config{Region: aws.String(d.Region)}) m, err := GetEFS(e, d.Subnet, r.Name) if err != nil { return dkvolume.Response{Err: err.Error()} } if err := os.MkdirAll(p, 0755); err != nil { return dkvolume.Response{Err: err.Error()} } // Mount the EFS volume to the local filesystem. // @todo, Swap this out with an NFS client library. if err := Exec("mount", "-t", "nfs4", m+":/", p); err != nil { return dkvolume.Response{Err: err.Error()} } log.Printf("Mounting: %s", r.Name) return dkvolume.Response{Mountpoint: p} }
func ExampleEFS_DescribeMountTargetSecurityGroups() { svc := efs.New(nil) params := &efs.DescribeMountTargetSecurityGroupsInput{ MountTargetId: aws.String("MountTargetId"), // Required } resp, err := svc.DescribeMountTargetSecurityGroups(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_CreateFileSystem() { svc := efs.New(session.New()) params := &efs.CreateFileSystemInput{ CreationToken: aws.String("CreationToken"), // Required } resp, err := svc.CreateFileSystem(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_DeleteFileSystem() { svc := efs.New(nil) params := &efs.DeleteFileSystemInput{ FileSystemId: aws.String("FileSystemId"), // Required } resp, err := svc.DeleteFileSystem(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_DescribeMountTargets() { svc := efs.New(nil) params := &efs.DescribeMountTargetsInput{ FileSystemId: aws.String("FileSystemId"), // Required Marker: aws.String("Marker"), MaxItems: aws.Int64(1), } resp, err := svc.DescribeMountTargets(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_DescribeFileSystems() { svc := efs.New(session.New()) params := &efs.DescribeFileSystemsInput{ CreationToken: aws.String("CreationToken"), FileSystemId: aws.String("FileSystemId"), Marker: aws.String("Marker"), MaxItems: aws.Int64(1), } resp, err := svc.DescribeFileSystems(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_DeleteTags() { svc := efs.New(session.New()) params := &efs.DeleteTagsInput{ FileSystemId: aws.String("FileSystemId"), // Required TagKeys: []*string{ // Required aws.String("TagKey"), // Required // More values... }, } resp, err := svc.DeleteTags(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_ModifyMountTargetSecurityGroups() { svc := efs.New(nil) params := &efs.ModifyMountTargetSecurityGroupsInput{ MountTargetId: aws.String("MountTargetId"), // Required SecurityGroups: []*string{ aws.String("SecurityGroup"), // Required // More values... }, } resp, err := svc.ModifyMountTargetSecurityGroups(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
func ExampleEFS_DeleteMountTarget() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := efs.New(sess) params := &efs.DeleteMountTargetInput{ MountTargetId: aws.String("MountTargetId"), // Required } resp, err := svc.DeleteMountTarget(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(resp) }
// Client configures and returns a fully initialized AWSClient func (c *Config) Client() (interface{}, error) { var client AWSClient // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. var errs []error log.Println("[INFO] Building AWS region structure") err := c.ValidateRegion() if err != nil { errs = append(errs, err) } if len(errs) == 0 { // store AWS region in client struct, for region specific operations such as // bucket storage in S3 client.region = c.Region log.Println("[INFO] Building AWS auth structure") // We fetched all credential sources in Provider. If they are // available, they'll already be in c. See Provider definition. creds := credentials.NewStaticCredentials(c.AccessKey, c.SecretKey, c.Token) awsConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), } log.Println("[INFO] Initializing IAM Connection") client.iamconn = iam.New(awsConfig) err := c.ValidateCredentials(client.iamconn) if err != nil { errs = append(errs, err) } awsDynamoDBConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), Endpoint: aws.String(c.DynamoDBEndpoint), } log.Println("[INFO] Initializing DynamoDB connection") client.dynamodbconn = dynamodb.New(awsDynamoDBConfig) log.Println("[INFO] Initializing ELB connection") client.elbconn = elb.New(awsConfig) log.Println("[INFO] Initializing S3 connection") client.s3conn = s3.New(awsConfig) log.Println("[INFO] Initializing SQS connection") client.sqsconn = sqs.New(awsConfig) log.Println("[INFO] Initializing SNS connection") client.snsconn = sns.New(awsConfig) log.Println("[INFO] Initializing RDS Connection") client.rdsconn = rds.New(awsConfig) log.Println("[INFO] Initializing Kinesis Connection") client.kinesisconn = kinesis.New(awsConfig) authErr := c.ValidateAccountId(client.iamconn) if authErr != nil { errs = append(errs, authErr) } log.Println("[INFO] Initializing AutoScaling connection") client.autoscalingconn = autoscaling.New(awsConfig) log.Println("[INFO] Initializing EC2 Connection") client.ec2conn = ec2.New(awsConfig) log.Println("[INFO] Initializing ECS Connection") client.ecsconn = ecs.New(awsConfig) log.Println("[INFO] Initializing EFS Connection") client.efsconn = efs.New(awsConfig) // aws-sdk-go uses v4 for signing requests, which requires all global // endpoints to use 'us-east-1'. // See http://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html log.Println("[INFO] Initializing Route 53 connection") client.r53conn = route53.New(&aws.Config{ Credentials: creds, Region: aws.String("us-east-1"), MaxRetries: aws.Int(c.MaxRetries), }) log.Println("[INFO] Initializing Elasticache Connection") client.elasticacheconn = elasticache.New(awsConfig) log.Println("[INFO] Initializing Lambda Connection") client.lambdaconn = lambda.New(awsConfig) log.Println("[INFO] Initializing CloudWatch SDK connection") client.cloudwatchconn = cloudwatch.New(awsConfig) log.Println("[INFO] Initializing CloudWatch Logs connection") client.cloudwatchlogsconn = cloudwatchlogs.New(awsConfig) } if len(errs) > 0 { return nil, &multierror.Error{Errors: errs} } return &client, nil }
// Client configures and returns a fully initialized AWSClient func (c *Config) Client() (interface{}, error) { // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. log.Println("[INFO] Building AWS region structure") err := c.ValidateRegion() if err != nil { return nil, err } var client AWSClient // store AWS region in client struct, for region specific operations such as // bucket storage in S3 client.region = c.Region log.Println("[INFO] Building AWS auth structure") creds, err := GetCredentials(c) if err != nil { return nil, err } // Call Get to check for credential provider. If nothing found, we'll get an // error, and we can present it nicely to the user cp, err := creds.Get() if err != nil { if awsErr, ok := err.(awserr.Error); ok && awsErr.Code() == "NoCredentialProviders" { return nil, errors.New(`No valid credential sources found for AWS Provider. Please see https://terraform.io/docs/providers/aws/index.html for more information on providing credentials for the AWS Provider`) } return nil, fmt.Errorf("Error loading credentials for AWS Provider: %s", err) } log.Printf("[INFO] AWS Auth provider used: %q", cp.ProviderName) awsConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), HTTPClient: cleanhttp.DefaultClient(), S3ForcePathStyle: aws.Bool(c.S3ForcePathStyle), } if logging.IsDebugOrHigher() { awsConfig.LogLevel = aws.LogLevel(aws.LogDebugWithHTTPBody) awsConfig.Logger = awsLogger{} } if c.Insecure { transport := awsConfig.HTTPClient.Transport.(*http.Transport) transport.TLSClientConfig = &tls.Config{ InsecureSkipVerify: true, } } // Set up base session sess, err := session.NewSession(awsConfig) if err != nil { return nil, errwrap.Wrapf("Error creating AWS session: {{err}}", err) } // Removes the SDK Version handler, so we only have the provider User-Agent // Ex: "User-Agent: APN/1.0 HashiCorp/1.0 Terraform/0.7.9-dev" sess.Handlers.Build.Remove(request.NamedHandler{Name: "core.SDKVersionUserAgentHandler"}) sess.Handlers.Build.PushFrontNamed(addTerraformVersionToUserAgent) if extraDebug := os.Getenv("TERRAFORM_AWS_AUTHFAILURE_DEBUG"); extraDebug != "" { sess.Handlers.UnmarshalError.PushFrontNamed(debugAuthFailure) } // Some services exist only in us-east-1, e.g. because they manage // resources that can span across multiple regions, or because // signature format v4 requires region to be us-east-1 for global // endpoints: // http://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html usEast1Sess := sess.Copy(&aws.Config{Region: aws.String("us-east-1")}) // Some services have user-configurable endpoints awsEc2Sess := sess.Copy(&aws.Config{Endpoint: aws.String(c.Ec2Endpoint)}) awsElbSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.ElbEndpoint)}) awsIamSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.IamEndpoint)}) awsS3Sess := sess.Copy(&aws.Config{Endpoint: aws.String(c.S3Endpoint)}) dynamoSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.DynamoDBEndpoint)}) kinesisSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.KinesisEndpoint)}) // These two services need to be set up early so we can check on AccountID client.iamconn = iam.New(awsIamSess) client.stsconn = sts.New(sess) if !c.SkipCredsValidation { err = c.ValidateCredentials(client.stsconn) if err != nil { return nil, err } } if !c.SkipRequestingAccountId { partition, accountId, err := GetAccountInfo(client.iamconn, client.stsconn, cp.ProviderName) if err == nil { client.partition = partition client.accountid = accountId } } authErr := c.ValidateAccountId(client.accountid) if authErr != nil { return nil, authErr } client.acmconn = acm.New(sess) client.apigateway = apigateway.New(sess) client.appautoscalingconn = applicationautoscaling.New(sess) client.autoscalingconn = autoscaling.New(sess) client.cfconn = cloudformation.New(sess) client.cloudfrontconn = cloudfront.New(sess) client.cloudtrailconn = cloudtrail.New(sess) client.cloudwatchconn = cloudwatch.New(sess) client.cloudwatcheventsconn = cloudwatchevents.New(sess) client.cloudwatchlogsconn = cloudwatchlogs.New(sess) client.codecommitconn = codecommit.New(usEast1Sess) client.codedeployconn = codedeploy.New(sess) client.dsconn = directoryservice.New(sess) client.dynamodbconn = dynamodb.New(dynamoSess) client.ec2conn = ec2.New(awsEc2Sess) client.ecrconn = ecr.New(sess) client.ecsconn = ecs.New(sess) client.efsconn = efs.New(sess) client.elasticacheconn = elasticache.New(sess) client.elasticbeanstalkconn = elasticbeanstalk.New(sess) client.elastictranscoderconn = elastictranscoder.New(sess) client.elbconn = elb.New(awsElbSess) client.elbv2conn = elbv2.New(awsElbSess) client.emrconn = emr.New(sess) client.esconn = elasticsearch.New(sess) client.firehoseconn = firehose.New(sess) client.glacierconn = glacier.New(sess) client.kinesisconn = kinesis.New(kinesisSess) client.kmsconn = kms.New(sess) client.lambdaconn = lambda.New(sess) client.lightsailconn = lightsail.New(usEast1Sess) client.opsworksconn = opsworks.New(usEast1Sess) client.r53conn = route53.New(usEast1Sess) client.rdsconn = rds.New(sess) client.redshiftconn = redshift.New(sess) client.simpledbconn = simpledb.New(sess) client.s3conn = s3.New(awsS3Sess) client.sesConn = ses.New(sess) client.snsconn = sns.New(sess) client.sqsconn = sqs.New(sess) client.ssmconn = ssm.New(sess) client.wafconn = waf.New(sess) return &client, nil }
// Client configures and returns a fully initialized AWSClient func (c *Config) Client() (interface{}, error) { var client AWSClient // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. var errs []error log.Println("[INFO] Building AWS region structure") err := c.ValidateRegion() if err != nil { errs = append(errs, err) } if len(errs) == 0 { // store AWS region in client struct, for region specific operations such as // bucket storage in S3 client.region = c.Region log.Println("[INFO] Building AWS auth structure") // We fetched all credential sources in Provider. If they are // available, they'll already be in c. See Provider definition. creds := credentials.NewStaticCredentials(c.AccessKey, c.SecretKey, c.Token) awsConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), HTTPClient: cleanhttp.DefaultClient(), } log.Println("[INFO] Initializing IAM Connection") client.iamconn = iam.New(awsConfig) err := c.ValidateCredentials(client.iamconn) if err != nil { errs = append(errs, err) } awsDynamoDBConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), Endpoint: aws.String(c.DynamoDBEndpoint), } // Some services exist only in us-east-1, e.g. because they manage // resources that can span across multiple regions, or because // signature format v4 requires region to be us-east-1 for global // endpoints: // http://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html usEast1AwsConfig := &aws.Config{ Credentials: creds, Region: aws.String("us-east-1"), MaxRetries: aws.Int(c.MaxRetries), HTTPClient: cleanhttp.DefaultClient(), } log.Println("[INFO] Initializing DynamoDB connection") client.dynamodbconn = dynamodb.New(awsDynamoDBConfig) log.Println("[INFO] Initializing ELB connection") client.elbconn = elb.New(awsConfig) log.Println("[INFO] Initializing S3 connection") client.s3conn = s3.New(awsConfig) log.Println("[INFO] Initializing SQS connection") client.sqsconn = sqs.New(awsConfig) log.Println("[INFO] Initializing SNS connection") client.snsconn = sns.New(awsConfig) log.Println("[INFO] Initializing RDS Connection") client.rdsconn = rds.New(awsConfig) log.Println("[INFO] Initializing Kinesis Connection") client.kinesisconn = kinesis.New(awsConfig) authErr := c.ValidateAccountId(client.iamconn) if authErr != nil { errs = append(errs, authErr) } log.Println("[INFO] Initializing AutoScaling connection") client.autoscalingconn = autoscaling.New(awsConfig) log.Println("[INFO] Initializing EC2 Connection") client.ec2conn = ec2.New(awsConfig) log.Println("[INFO] Initializing ECS Connection") client.ecsconn = ecs.New(awsConfig) log.Println("[INFO] Initializing EFS Connection") client.efsconn = efs.New(awsConfig) log.Println("[INFO] Initializing ElasticSearch Connection") client.esconn = elasticsearch.New(awsConfig) log.Println("[INFO] Initializing Route 53 connection") client.r53conn = route53.New(usEast1AwsConfig) log.Println("[INFO] Initializing Elasticache Connection") client.elasticacheconn = elasticache.New(awsConfig) log.Println("[INFO] Initializing Lambda Connection") client.lambdaconn = lambda.New(awsConfig) log.Println("[INFO] Initializing Cloudformation Connection") client.cfconn = cloudformation.New(awsConfig) log.Println("[INFO] Initializing CloudWatch SDK connection") client.cloudwatchconn = cloudwatch.New(awsConfig) log.Println("[INFO] Initializing CloudWatch Logs connection") client.cloudwatchlogsconn = cloudwatchlogs.New(awsConfig) log.Println("[INFO] Initializing OpsWorks Connection") client.opsworksconn = opsworks.New(usEast1AwsConfig) log.Println("[INFO] Initializing Directory Service connection") client.dsconn = directoryservice.New(awsConfig) log.Println("[INFO] Initializing Glacier connection") client.glacierconn = glacier.New(awsConfig) log.Println("[INFO] Initializing CodeDeploy Connection") client.codedeployconn = codedeploy.New(awsConfig) } if len(errs) > 0 { return nil, &multierror.Error{Errors: errs} } return &client, nil }
func init() { Before("@efs", func() { // FIXME remove custom region World["client"] = efs.New(&aws.Config{Region: "us-west-2"}) }) }
func TestInterface(t *testing.T) { assert.Implements(t, (*efsiface.EFSAPI)(nil), efs.New(nil)) }
// Client configures and returns a fully initialized AWSClient func (c *Config) Client() (interface{}, error) { var client AWSClient // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. var errs []error log.Println("[INFO] Building AWS region structure") err := c.ValidateRegion() if err != nil { errs = append(errs, err) } if len(errs) == 0 { // store AWS region in client struct, for region specific operations such as // bucket storage in S3 client.region = c.Region log.Println("[INFO] Building AWS auth structure") creds := getCreds(c.AccessKey, c.SecretKey, c.Token) // Call Get to check for credential provider. If nothing found, we'll get an // error, and we can present it nicely to the user _, err = creds.Get() if err != nil { errs = append(errs, fmt.Errorf("Error loading credentials for AWS Provider: %s", err)) return nil, &multierror.Error{Errors: errs} } awsConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), HTTPClient: cleanhttp.DefaultClient(), } log.Println("[INFO] Initializing IAM Connection") sess := session.New(awsConfig) client.iamconn = iam.New(sess) err = c.ValidateCredentials(client.iamconn) if err != nil { errs = append(errs, err) } // Some services exist only in us-east-1, e.g. because they manage // resources that can span across multiple regions, or because // signature format v4 requires region to be us-east-1 for global // endpoints: // http://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html usEast1AwsConfig := &aws.Config{ Credentials: creds, Region: aws.String("us-east-1"), MaxRetries: aws.Int(c.MaxRetries), HTTPClient: cleanhttp.DefaultClient(), } usEast1Sess := session.New(usEast1AwsConfig) awsDynamoDBConfig := *awsConfig awsDynamoDBConfig.Endpoint = aws.String(c.DynamoDBEndpoint) log.Println("[INFO] Initializing DynamoDB connection") dynamoSess := session.New(&awsDynamoDBConfig) client.dynamodbconn = dynamodb.New(dynamoSess) log.Println("[INFO] Initializing ELB connection") client.elbconn = elb.New(sess) log.Println("[INFO] Initializing S3 connection") client.s3conn = s3.New(sess) log.Println("[INFO] Initializing SQS connection") client.sqsconn = sqs.New(sess) log.Println("[INFO] Initializing SNS connection") client.snsconn = sns.New(sess) log.Println("[INFO] Initializing RDS Connection") client.rdsconn = rds.New(sess) awsKinesisConfig := *awsConfig awsKinesisConfig.Endpoint = aws.String(c.KinesisEndpoint) log.Println("[INFO] Initializing Kinesis Connection") kinesisSess := session.New(&awsKinesisConfig) client.kinesisconn = kinesis.New(kinesisSess) authErr := c.ValidateAccountId(client.iamconn) if authErr != nil { errs = append(errs, authErr) } log.Println("[INFO] Initializing Kinesis Firehose Connection") client.firehoseconn = firehose.New(sess) log.Println("[INFO] Initializing AutoScaling connection") client.autoscalingconn = autoscaling.New(sess) log.Println("[INFO] Initializing EC2 Connection") client.ec2conn = ec2.New(sess) log.Println("[INFO] Initializing ECR Connection") client.ecrconn = ecr.New(sess) log.Println("[INFO] Initializing ECS Connection") client.ecsconn = ecs.New(sess) log.Println("[INFO] Initializing EFS Connection") client.efsconn = efs.New(sess) log.Println("[INFO] Initializing ElasticSearch Connection") client.esconn = elasticsearch.New(sess) log.Println("[INFO] Initializing Route 53 connection") client.r53conn = route53.New(usEast1Sess) log.Println("[INFO] Initializing Elasticache Connection") client.elasticacheconn = elasticache.New(sess) log.Println("[INFO] Initializing Lambda Connection") client.lambdaconn = lambda.New(sess) log.Println("[INFO] Initializing Cloudformation Connection") client.cfconn = cloudformation.New(sess) log.Println("[INFO] Initializing CloudWatch SDK connection") client.cloudwatchconn = cloudwatch.New(sess) log.Println("[INFO] Initializing CloudTrail connection") client.cloudtrailconn = cloudtrail.New(sess) log.Println("[INFO] Initializing CloudWatch Logs connection") client.cloudwatchlogsconn = cloudwatchlogs.New(sess) log.Println("[INFO] Initializing OpsWorks Connection") client.opsworksconn = opsworks.New(usEast1Sess) log.Println("[INFO] Initializing Directory Service connection") client.dsconn = directoryservice.New(sess) log.Println("[INFO] Initializing Glacier connection") client.glacierconn = glacier.New(sess) log.Println("[INFO] Initializing CodeDeploy Connection") client.codedeployconn = codedeploy.New(sess) log.Println("[INFO] Initializing CodeCommit SDK connection") client.codecommitconn = codecommit.New(usEast1Sess) log.Println("[INFO] Initializing Redshift SDK connection") client.redshiftconn = redshift.New(sess) } if len(errs) > 0 { return nil, &multierror.Error{Errors: errs} } return &client, nil }
// Client configures and returns a fully initialized AWSClient func (c *Config) Client() (interface{}, error) { // Get the auth and region. This can fail if keys/regions were not // specified and we're attempting to use the environment. var errs []error log.Println("[INFO] Building AWS region structure") err := c.ValidateRegion() if err != nil { errs = append(errs, err) } var client AWSClient if len(errs) == 0 { // store AWS region in client struct, for region specific operations such as // bucket storage in S3 client.region = c.Region log.Println("[INFO] Building AWS auth structure") creds := GetCredentials(c.AccessKey, c.SecretKey, c.Token, c.Profile, c.CredsFilename) // Call Get to check for credential provider. If nothing found, we'll get an // error, and we can present it nicely to the user cp, err := creds.Get() if err != nil { if awsErr, ok := err.(awserr.Error); ok && awsErr.Code() == "NoCredentialProviders" { errs = append(errs, fmt.Errorf(`No valid credential sources found for AWS Provider. Please see https://terraform.io/docs/providers/aws/index.html for more information on providing credentials for the AWS Provider`)) } else { errs = append(errs, fmt.Errorf("Error loading credentials for AWS Provider: %s", err)) } return nil, &multierror.Error{Errors: errs} } log.Printf("[INFO] AWS Auth provider used: %q", cp.ProviderName) awsConfig := &aws.Config{ Credentials: creds, Region: aws.String(c.Region), MaxRetries: aws.Int(c.MaxRetries), HTTPClient: cleanhttp.DefaultClient(), } if logging.IsDebugOrHigher() { awsConfig.LogLevel = aws.LogLevel(aws.LogDebugWithHTTPBody) awsConfig.Logger = awsLogger{} } if c.Insecure { transport := awsConfig.HTTPClient.Transport.(*http.Transport) transport.TLSClientConfig = &tls.Config{ InsecureSkipVerify: true, } } // Set up base session sess := session.New(awsConfig) sess.Handlers.Build.PushFrontNamed(addTerraformVersionToUserAgent) // Some services exist only in us-east-1, e.g. because they manage // resources that can span across multiple regions, or because // signature format v4 requires region to be us-east-1 for global // endpoints: // http://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html usEast1Sess := sess.Copy(&aws.Config{Region: aws.String("us-east-1")}) // Some services have user-configurable endpoints awsEc2Sess := sess.Copy(&aws.Config{Endpoint: aws.String(c.Ec2Endpoint)}) awsElbSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.ElbEndpoint)}) awsIamSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.IamEndpoint)}) dynamoSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.DynamoDBEndpoint)}) kinesisSess := sess.Copy(&aws.Config{Endpoint: aws.String(c.KinesisEndpoint)}) // These two services need to be set up early so we can check on AccountID client.iamconn = iam.New(awsIamSess) client.stsconn = sts.New(sess) err = c.ValidateCredentials(client.stsconn) if err != nil { errs = append(errs, err) return nil, &multierror.Error{Errors: errs} } accountId, err := GetAccountId(client.iamconn, client.stsconn, cp.ProviderName) if err == nil { client.accountid = accountId } authErr := c.ValidateAccountId(client.accountid) if authErr != nil { errs = append(errs, authErr) } client.apigateway = apigateway.New(sess) client.autoscalingconn = autoscaling.New(sess) client.cfconn = cloudformation.New(sess) client.cloudfrontconn = cloudfront.New(sess) client.cloudtrailconn = cloudtrail.New(sess) client.cloudwatchconn = cloudwatch.New(sess) client.cloudwatcheventsconn = cloudwatchevents.New(sess) client.cloudwatchlogsconn = cloudwatchlogs.New(sess) client.codecommitconn = codecommit.New(usEast1Sess) client.codedeployconn = codedeploy.New(sess) client.dsconn = directoryservice.New(sess) client.dynamodbconn = dynamodb.New(dynamoSess) client.ec2conn = ec2.New(awsEc2Sess) client.ecrconn = ecr.New(sess) client.ecsconn = ecs.New(sess) client.efsconn = efs.New(sess) client.elasticacheconn = elasticache.New(sess) client.elasticbeanstalkconn = elasticbeanstalk.New(sess) client.elastictranscoderconn = elastictranscoder.New(sess) client.elbconn = elb.New(awsElbSess) client.emrconn = emr.New(sess) client.esconn = elasticsearch.New(sess) client.firehoseconn = firehose.New(sess) client.glacierconn = glacier.New(sess) client.kinesisconn = kinesis.New(kinesisSess) client.kmsconn = kms.New(sess) client.lambdaconn = lambda.New(sess) client.opsworksconn = opsworks.New(usEast1Sess) client.r53conn = route53.New(usEast1Sess) client.rdsconn = rds.New(sess) client.redshiftconn = redshift.New(sess) client.simpledbconn = simpledb.New(sess) client.s3conn = s3.New(sess) client.sesConn = ses.New(sess) client.snsconn = sns.New(sess) client.sqsconn = sqs.New(sess) } if len(errs) > 0 { return nil, &multierror.Error{Errors: errs} } return &client, nil }
func (d *driver) Login(ctx types.Context) (interface{}, error) { sessionsL.Lock() defer sessionsL.Unlock() var ( endpoint *string ckey string hkey = md5.New() akey = d.accessKey region = d.mustRegion(ctx) ) if region != nil && d.endpointFormat != "" { szEndpoint := fmt.Sprintf(d.endpointFormat, *region) endpoint = &szEndpoint } else { endpoint = d.endpoint } if !d.disableSessionCache { writeHkey(hkey, region) writeHkey(hkey, endpoint) writeHkey(hkey, &akey) ckey = fmt.Sprintf("%x", hkey.Sum(nil)) // if the session is cached then return it if svc, ok := sessions[ckey]; ok { ctx.WithField(cacheKeyC, ckey).Debug("using cached efs service") return svc, nil } } var ( skey = d.getSecretKey() fields = map[string]interface{}{ efs.AccessKey: akey, efs.Tag: d.tag, cacheKeyC: ckey, } ) if skey == "" { fields[efs.SecretKey] = "" } else { fields[efs.SecretKey] = "******" } if region != nil { fields[efs.Region] = *region } if endpoint != nil { fields[efs.Endpoint] = *endpoint } ctx.WithFields(fields).Debug("efs service connetion attempt") sess := session.New() var ( awsLogger = &awsLogger{ctx: ctx} awsLogLevel = aws.LogOff ) if ll, ok := context.GetLogLevel(ctx); ok { switch ll { case log.DebugLevel: awsLogger.lvl = log.DebugLevel awsLogLevel = aws.LogDebugWithHTTPBody case log.InfoLevel: awsLogger.lvl = log.InfoLevel awsLogLevel = aws.LogDebug } } svc := awsefs.New(sess, &aws.Config{ Region: region, Endpoint: endpoint, MaxRetries: d.maxRetries, Credentials: credentials.NewChainCredentials( []credentials.Provider{ &credentials.StaticProvider{ Value: credentials.Value{ AccessKeyID: akey, SecretAccessKey: skey, }, }, &credentials.EnvProvider{}, &credentials.SharedCredentialsProvider{}, &ec2rolecreds.EC2RoleProvider{ Client: ec2metadata.New(sess), }, }, ), Logger: awsLogger, LogLevel: aws.LogLevel(awsLogLevel), }) ctx.WithFields(fields).Info("efs service connection created") if !d.disableSessionCache { sessions[ckey] = svc ctx.WithFields(fields).Info("efs service connection cached") } return svc, nil }