func ExampleEMR_CancelSteps() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.CancelStepsInput{ ClusterId: aws.String("XmlStringMaxLen256"), StepIds: []*string{ aws.String("XmlStringMaxLen256"), // Required // More values... }, } resp, err := svc.CancelSteps(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 ExampleEMR_ListInstances() { svc := emr.New(nil) params := &emr.ListInstancesInput{ ClusterID: aws.String("ClusterId"), // Required InstanceGroupID: aws.String("InstanceGroupId"), InstanceGroupTypes: []*string{ aws.String("InstanceGroupType"), // Required // More values... }, Marker: aws.String("Marker"), } resp, err := svc.ListInstances(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 ExampleEMR_ModifyInstanceGroups() { svc := emr.New(session.New()) params := &emr.ModifyInstanceGroupsInput{ InstanceGroups: []*emr.InstanceGroupModifyConfig{ { // Required InstanceGroupId: aws.String("XmlStringMaxLen256"), // Required EC2InstanceIdsToTerminate: []*string{ aws.String("InstanceId"), // Required // More values... }, InstanceCount: aws.Int64(1), }, // More values... }, } resp, err := svc.ModifyInstanceGroups(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 ExampleEMR_ListSteps() { svc := emr.New(session.New()) params := &emr.ListStepsInput{ ClusterId: aws.String("ClusterId"), // Required Marker: aws.String("Marker"), StepIds: []*string{ aws.String("XmlString"), // Required // More values... }, StepStates: []*string{ aws.String("StepState"), // Required // More values... }, } resp, err := svc.ListSteps(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 ExampleEMR_DescribeStep() { svc := emr.New(nil) params := &emr.DescribeStepInput{ ClusterID: aws.String("ClusterId"), // Required StepID: aws.String("StepId"), // Required } resp, err := svc.DescribeStep(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 ExampleEMR_RemoveTags() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.RemoveTagsInput{ ResourceId: aws.String("ResourceId"), // Required TagKeys: []*string{ // Required aws.String("String"), // Required // More values... }, } resp, err := svc.RemoveTags(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 ExampleEMR_DescribeJobFlows() { svc := emr.New(session.New()) params := &emr.DescribeJobFlowsInput{ CreatedAfter: aws.Time(time.Now()), CreatedBefore: aws.Time(time.Now()), JobFlowIds: []*string{ aws.String("XmlString"), // Required // More values... }, JobFlowStates: []*string{ aws.String("JobFlowExecutionState"), // Required // More values... }, } resp, err := svc.DescribeJobFlows(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 ExampleEMR_AddTags() { svc := emr.New(session.New()) params := &emr.AddTagsInput{ ResourceId: aws.String("ResourceId"), // Required Tags: []*emr.Tag{ // Required { // Required Key: aws.String("String"), Value: aws.String("String"), }, // More values... }, } resp, err := svc.AddTags(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 ExampleEMR_RemoveAutoScalingPolicy() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.RemoveAutoScalingPolicyInput{ ClusterId: aws.String("ClusterId"), // Required InstanceGroupId: aws.String("InstanceGroupId"), // Required } resp, err := svc.RemoveAutoScalingPolicy(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 ExampleEMR_ListClusters() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.ListClustersInput{ ClusterStates: []*string{ aws.String("ClusterState"), // Required // More values... }, CreatedAfter: aws.Time(time.Now()), CreatedBefore: aws.Time(time.Now()), Marker: aws.String("Marker"), } resp, err := svc.ListClusters(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 ExampleEMR_ListInstances() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.ListInstancesInput{ ClusterId: aws.String("ClusterId"), // Required InstanceGroupId: aws.String("InstanceGroupId"), InstanceGroupTypes: []*string{ aws.String("InstanceGroupType"), // Required // More values... }, InstanceStates: []*string{ aws.String("InstanceState"), // Required // More values... }, Marker: aws.String("Marker"), } resp, err := svc.ListInstances(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 ExampleEMR_ListBootstrapActions() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.ListBootstrapActionsInput{ ClusterId: aws.String("ClusterId"), // Required Marker: aws.String("Marker"), } resp, err := svc.ListBootstrapActions(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 ExampleEMR_DescribeStep() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.DescribeStepInput{ ClusterId: aws.String("ClusterId"), // Required StepId: aws.String("StepId"), // Required } resp, err := svc.DescribeStep(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 ExampleEMR_CreateSecurityConfiguration() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.CreateSecurityConfigurationInput{ Name: aws.String("XmlString"), // Required SecurityConfiguration: aws.String("String"), // Required } resp, err := svc.CreateSecurityConfiguration(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 ExampleEMR_TerminateJobFlows() { svc := emr.New(nil) params := &emr.TerminateJobFlowsInput{ JobFlowIDs: []*string{ // Required aws.String("XmlString"), // Required // More values... }, } resp, err := svc.TerminateJobFlows(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 ExampleEMR_SetVisibleToAllUsers() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.SetVisibleToAllUsersInput{ JobFlowIds: []*string{ // Required aws.String("XmlString"), // Required // More values... }, VisibleToAllUsers: aws.Bool(true), // Required } resp, err := svc.SetVisibleToAllUsers(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 ExampleEMR_AddInstanceGroups() { svc := emr.New(session.New()) params := &emr.AddInstanceGroupsInput{ InstanceGroups: []*emr.InstanceGroupConfig{ // Required { // Required InstanceCount: aws.Int64(1), // Required InstanceRole: aws.String("InstanceRoleType"), // Required InstanceType: aws.String("InstanceType"), // Required BidPrice: aws.String("XmlStringMaxLen256"), Configurations: []*emr.Configuration{ { // Required Classification: aws.String("String"), Configurations: []*emr.Configuration{ // Recursive values... }, Properties: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, }, // More values... }, EbsConfiguration: &emr.EbsConfiguration{ EbsBlockDeviceConfigs: []*emr.EbsBlockDeviceConfig{ { // Required VolumeSpecification: &emr.VolumeSpecification{ // Required SizeInGB: aws.Int64(1), // Required VolumeType: aws.String("String"), // Required Iops: aws.Int64(1), }, VolumesPerInstance: aws.Int64(1), }, // More values... }, EbsOptimized: aws.Bool(true), }, Market: aws.String("MarketType"), Name: aws.String("XmlStringMaxLen256"), }, // More values... }, JobFlowId: aws.String("XmlStringMaxLen256"), // Required } resp, err := svc.AddInstanceGroups(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 ExampleEMR_AddInstanceGroups() { svc := emr.New(nil) params := &emr.AddInstanceGroupsInput{ InstanceGroups: []*emr.InstanceGroupConfig{ // Required { // Required InstanceCount: aws.Int64(1), // Required InstanceRole: aws.String("InstanceRoleType"), // Required InstanceType: aws.String("InstanceType"), // Required BidPrice: aws.String("XmlStringMaxLen256"), Configurations: []*emr.Configuration{ { // Required Classification: aws.String("String"), Configurations: []*emr.Configuration{ // Recursive values... }, Properties: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, }, // More values... }, Market: aws.String("MarketType"), Name: aws.String("XmlStringMaxLen256"), }, // More values... }, JobFlowID: aws.String("XmlStringMaxLen256"), // Required } resp, err := svc.AddInstanceGroups(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 ExampleEMR_ModifyInstanceGroups() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.ModifyInstanceGroupsInput{ ClusterId: aws.String("ClusterId"), InstanceGroups: []*emr.InstanceGroupModifyConfig{ { // Required InstanceGroupId: aws.String("XmlStringMaxLen256"), // Required EC2InstanceIdsToTerminate: []*string{ aws.String("InstanceId"), // Required // More values... }, InstanceCount: aws.Int64(1), ShrinkPolicy: &emr.ShrinkPolicy{ DecommissionTimeout: aws.Int64(1), InstanceResizePolicy: &emr.InstanceResizePolicy{ InstanceTerminationTimeout: aws.Int64(1), InstancesToProtect: []*string{ aws.String("InstanceId"), // Required // More values... }, InstancesToTerminate: []*string{ aws.String("InstanceId"), // Required // More values... }, }, }, }, // More values... }, } resp, err := svc.ModifyInstanceGroups(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 ExampleEMR_AddJobFlowSteps() { svc := emr.New(nil) params := &emr.AddJobFlowStepsInput{ JobFlowID: aws.String("XmlStringMaxLen256"), // Required Steps: []*emr.StepConfig{ // Required { // Required HadoopJARStep: &emr.HadoopJARStepConfig{ // Required JAR: aws.String("XmlString"), // Required Args: []*string{ aws.String("XmlString"), // Required // More values... }, MainClass: aws.String("XmlString"), Properties: []*emr.KeyValue{ { // Required Key: aws.String("XmlString"), Value: aws.String("XmlString"), }, // More values... }, }, Name: aws.String("XmlStringMaxLen256"), // Required ActionOnFailure: aws.String("ActionOnFailure"), }, // More values... }, } resp, err := svc.AddJobFlowSteps(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 ExampleEMR_AddJobFlowSteps() { sess, err := session.NewSession() if err != nil { fmt.Println("failed to create session,", err) return } svc := emr.New(sess) params := &emr.AddJobFlowStepsInput{ JobFlowId: aws.String("XmlStringMaxLen256"), // Required Steps: []*emr.StepConfig{ // Required { // Required HadoopJarStep: &emr.HadoopJarStepConfig{ // Required Jar: aws.String("XmlString"), // Required Args: []*string{ aws.String("XmlString"), // Required // More values... }, MainClass: aws.String("XmlString"), Properties: []*emr.KeyValue{ { // Required Key: aws.String("XmlString"), Value: aws.String("XmlString"), }, // More values... }, }, Name: aws.String("XmlStringMaxLen256"), // Required ActionOnFailure: aws.String("ActionOnFailure"), }, // More values... }, } resp, err := svc.AddJobFlowSteps(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 ExampleEMR_DescribeCluster() { svc := emr.New(session.New()) params := &emr.DescribeClusterInput{ ClusterId: aws.String("ClusterId"), // Required } resp, err := svc.DescribeCluster(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 ExampleEMR_ListInstanceGroups() { svc := emr.New(session.New()) params := &emr.ListInstanceGroupsInput{ ClusterId: aws.String("ClusterId"), // Required Marker: aws.String("Marker"), } resp, err := svc.ListInstanceGroups(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 ExampleEMR_TerminateJobFlows() { svc := emr.New(session.New()) params := &emr.TerminateJobFlowsInput{ JobFlowIds: []*string{ // Required aws.String("XmlString"), // Required // More values... }, } resp, err := svc.TerminateJobFlows(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 ExampleEMR_SetTerminationProtection() { svc := emr.New(nil) params := &emr.SetTerminationProtectionInput{ JobFlowIds: []*string{ // Required aws.String("XmlString"), // Required // More values... }, TerminationProtected: aws.Bool(true), // Required } resp, err := svc.SetTerminationProtection(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 ExampleEMR_ModifyInstanceGroups() { svc := emr.New(nil) params := &emr.ModifyInstanceGroupsInput{ InstanceGroups: []*emr.InstanceGroupModifyConfig{ { // Required InstanceGroupID: aws.String("XmlStringMaxLen256"), // Required EC2InstanceIDsToTerminate: []*string{ aws.String("InstanceId"), // Required // More values... }, InstanceCount: aws.Int64(1), }, // More values... }, } resp, err := svc.ModifyInstanceGroups(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)) }
// 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 }
// 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 }
func init() { Before("@emr", func() { World["client"] = emr.New(nil) }) }
func init() { Before("@emr", func() { World["client"] = emr.New(smoke.Session) }) }