func ExampleAPIGateway_CreateDeployment() { svc := apigateway.New(session.New()) params := &apigateway.CreateDeploymentInput{ RestApiId: aws.String("String"), // Required StageName: aws.String("String"), // Required CacheClusterEnabled: aws.Bool(true), CacheClusterSize: aws.String("CacheClusterSize"), Description: aws.String("String"), StageDescription: aws.String("String"), Variables: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, } resp, err := svc.CreateDeployment(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 ExampleAPIGateway_UpdateStage() { svc := apigateway.New(session.New()) params := &apigateway.UpdateStageInput{ RestApiId: aws.String("String"), // Required StageName: aws.String("String"), // Required PatchOperations: []*apigateway.PatchOperation{ { // Required From: aws.String("String"), Op: aws.String("op"), Path: aws.String("String"), Value: aws.String("String"), }, // More values... }, } resp, err := svc.UpdateStage(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 ExampleAPIGateway_PutMethodResponse() { svc := apigateway.New(session.New()) params := &apigateway.PutMethodResponseInput{ HttpMethod: aws.String("String"), // Required ResourceId: aws.String("String"), // Required RestApiId: aws.String("String"), // Required StatusCode: aws.String("StatusCode"), // Required ResponseModels: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, ResponseParameters: map[string]*bool{ "Key": aws.Bool(true), // Required // More values... }, } resp, err := svc.PutMethodResponse(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 ExampleAPIGateway_TestInvokeMethod() { svc := apigateway.New(session.New()) params := &apigateway.TestInvokeMethodInput{ HttpMethod: aws.String("String"), // Required ResourceId: aws.String("String"), // Required RestApiId: aws.String("String"), // Required Body: aws.String("String"), ClientCertificateId: aws.String("String"), Headers: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, PathWithQueryString: aws.String("String"), StageVariables: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, } resp, err := svc.TestInvokeMethod(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 ExampleAPIGateway_CreateApiKey() { svc := apigateway.New(session.New()) params := &apigateway.CreateApiKeyInput{ Description: aws.String("String"), Enabled: aws.Bool(true), Name: aws.String("String"), StageKeys: []*apigateway.StageKey{ { // Required RestApiId: aws.String("String"), StageName: aws.String("String"), }, // More values... }, } resp, err := svc.CreateApiKey(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 ExampleAPIGateway_CreateAuthorizer() { svc := apigateway.New(session.New()) params := &apigateway.CreateAuthorizerInput{ IdentitySource: aws.String("String"), // Required Name: aws.String("String"), // Required RestApiId: aws.String("String"), // Required Type: aws.String("AuthorizerType"), // Required AuthType: aws.String("String"), AuthorizerCredentials: aws.String("String"), AuthorizerResultTtlInSeconds: aws.Int64(1), AuthorizerUri: aws.String("String"), IdentityValidationExpression: aws.String("String"), ProviderARNs: []*string{ aws.String("ProviderARN"), // Required // More values... }, } resp, err := svc.CreateAuthorizer(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 ExampleAPIGateway_GetExport() { svc := apigateway.New(session.New()) params := &apigateway.GetExportInput{ ExportType: aws.String("String"), // Required RestApiId: aws.String("String"), // Required StageName: aws.String("String"), // Required Accepts: aws.String("String"), Parameters: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, } resp, err := svc.GetExport(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 ExampleAPIGateway_PutRestApi() { svc := apigateway.New(session.New()) params := &apigateway.PutRestApiInput{ Body: []byte("PAYLOAD"), // Required RestApiId: aws.String("String"), // Required FailOnWarnings: aws.Bool(true), Mode: aws.String("PutMode"), Parameters: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, } resp, err := svc.PutRestApi(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 ExampleAPIGateway_GetAccount() { svc := apigateway.New(session.New()) var params *apigateway.GetAccountInput resp, err := svc.GetAccount(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 ExampleAPIGateway_GetDomainName() { svc := apigateway.New(session.New()) params := &apigateway.GetDomainNameInput{ DomainName: aws.String("String"), // Required } resp, err := svc.GetDomainName(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 ExampleAPIGateway_GenerateClientCertificate() { svc := apigateway.New(session.New()) params := &apigateway.GenerateClientCertificateInput{ Description: aws.String("String"), } resp, err := svc.GenerateClientCertificate(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 ExampleAPIGateway_DeleteRestApi() { svc := apigateway.New(nil) params := &apigateway.DeleteRestApiInput{ RestApiId: aws.String("String"), // Required } resp, err := svc.DeleteRestApi(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 ExampleAPIGateway_FlushStageAuthorizersCache() { svc := apigateway.New(session.New()) params := &apigateway.FlushStageAuthorizersCacheInput{ RestApiId: aws.String("String"), // Required StageName: aws.String("String"), // Required } resp, err := svc.FlushStageAuthorizersCache(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 ExampleAPIGateway_GetApiKeys() { svc := apigateway.New(session.New()) params := &apigateway.GetApiKeysInput{ Limit: aws.Int64(1), Position: aws.String("String"), } resp, err := svc.GetApiKeys(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 ExampleAPIGateway_CreateResource() { svc := apigateway.New(session.New()) params := &apigateway.CreateResourceInput{ ParentId: aws.String("String"), // Required PathPart: aws.String("String"), // Required RestApiId: aws.String("String"), // Required } resp, err := svc.CreateResource(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 ExampleAPIGateway_CreateRestApi() { svc := apigateway.New(session.New()) params := &apigateway.CreateRestApiInput{ Name: aws.String("String"), // Required CloneFrom: aws.String("String"), Description: aws.String("String"), } resp, err := svc.CreateRestApi(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 ExampleAPIGateway_GetBasePathMappings() { svc := apigateway.New(nil) params := &apigateway.GetBasePathMappingsInput{ DomainName: aws.String("String"), // Required Limit: aws.Int64(1), Position: aws.String("String"), } resp, err := svc.GetBasePathMappings(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 ExampleAPIGateway_GetModel() { svc := apigateway.New(session.New()) params := &apigateway.GetModelInput{ ModelName: aws.String("String"), // Required RestApiId: aws.String("String"), // Required Flatten: aws.Bool(true), } resp, err := svc.GetModel(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 ExampleAPIGateway_GetIntegration() { svc := apigateway.New(session.New()) params := &apigateway.GetIntegrationInput{ HttpMethod: aws.String("String"), // Required ResourceId: aws.String("String"), // Required RestApiId: aws.String("String"), // Required } resp, err := svc.GetIntegration(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 ExampleAPIGateway_CreateBasePathMapping() { svc := apigateway.New(session.New()) params := &apigateway.CreateBasePathMappingInput{ DomainName: aws.String("String"), // Required RestApiId: aws.String("String"), // Required BasePath: aws.String("String"), Stage: aws.String("String"), } resp, err := svc.CreateBasePathMapping(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 ExampleAPIGateway_CreateDomainName() { svc := apigateway.New(nil) params := &apigateway.CreateDomainNameInput{ CertificateBody: aws.String("String"), // Required CertificateChain: aws.String("String"), // Required CertificateName: aws.String("String"), // Required CertificatePrivateKey: aws.String("String"), // Required DomainName: aws.String("String"), // Required } resp, err := svc.CreateDomainName(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 ExampleAPIGateway_CreateModel() { svc := apigateway.New(nil) params := &apigateway.CreateModelInput{ ContentType: aws.String("String"), // Required Name: aws.String("String"), // Required RestApiId: aws.String("String"), // Required Description: aws.String("String"), Schema: aws.String("String"), } resp, err := svc.CreateModel(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 ExampleAPIGateway_PutIntegration() { svc := apigateway.New(session.New()) params := &apigateway.PutIntegrationInput{ HttpMethod: aws.String("String"), // Required ResourceId: aws.String("String"), // Required RestApiId: aws.String("String"), // Required Type: aws.String("IntegrationType"), // Required CacheKeyParameters: []*string{ aws.String("String"), // Required // More values... }, CacheNamespace: aws.String("String"), Credentials: aws.String("String"), IntegrationHttpMethod: aws.String("String"), PassthroughBehavior: aws.String("String"), RequestParameters: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, RequestTemplates: map[string]*string{ "Key": aws.String("String"), // Required // More values... }, Uri: aws.String("String"), } resp, err := svc.PutIntegration(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 ExampleAPIGateway_CreateStage() { svc := apigateway.New(nil) params := &apigateway.CreateStageInput{ DeploymentId: aws.String("String"), // Required RestApiId: aws.String("String"), // Required StageName: aws.String("String"), // Required CacheClusterEnabled: aws.Bool(true), CacheClusterSize: aws.String("CacheClusterSize"), Description: aws.String("String"), } resp, err := svc.CreateStage(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("@apigateway", func() { World["client"] = apigateway.New(nil) }) }
func init() { Before("@apigateway", func() { World["client"] = apigateway.New(smoke.Session) }) }
func apiStageInfo(apiName string, stageName string, session *session.Session, noop bool, logger *logrus.Logger) (*apigateway.Stage, error) { logger.WithFields(logrus.Fields{ "APIName": apiName, "StageName": stageName, }).Info("Checking current APIGateway stage status") if noop { logger.Info("Bypassing APIGateway check to -n/-noop command line argument") return nil, nil } svc := apigateway.New(session) restApisInput := &apigateway.GetRestApisInput{ Limit: aws.Int64(500), } restApisOutput, restApisOutputErr := svc.GetRestApis(restApisInput) if nil != restApisOutputErr { return nil, restApisOutputErr } // Find the entry that has this name restAPIID := "" for _, eachRestAPI := range restApisOutput.Items { if *eachRestAPI.Name == apiName { if restAPIID != "" { return nil, fmt.Errorf("Multiple RestAPI matches for API Name: %s", apiName) } restAPIID = *eachRestAPI.Id } } if "" == restAPIID { return nil, nil } // API exists...does the stage name exist? stagesInput := &apigateway.GetStagesInput{ RestApiId: aws.String(restAPIID), } stagesOutput, stagesOutputErr := svc.GetStages(stagesInput) if nil != stagesOutputErr { return nil, stagesOutputErr } // Find this stage name... var matchingStageOutput *apigateway.Stage for _, eachStage := range stagesOutput.Item { if *eachStage.StageName == stageName { if nil != matchingStageOutput { return nil, fmt.Errorf("Multiple stage matches for name: %s", stageName) } matchingStageOutput = eachStage } } if nil != matchingStageOutput { logger.WithFields(logrus.Fields{ "DeploymentId": *matchingStageOutput.DeploymentId, "LastUpdated": matchingStageOutput.LastUpdatedDate, "CreatedDate": matchingStageOutput.CreatedDate, }).Info("Checking current APIGateway stage status") } else { logger.Info("APIGateway stage has not been deployed") } return matchingStageOutput, 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) { // 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) { 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") 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 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 CognitoIdentity SDK connection") client.cognitoidconn = cognitoidentity.New(usEast1Sess) log.Println("[INFO] Initializing APIGateway SDK connection") client.apigatewayconn = apigateway.New(usEast1Sess) } if len(errs) > 0 { return nil, &multierror.Error{Errors: errs} } return &client, nil }