Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.2k views
in Technique[技术] by (71.8m points)

amazon web services - How to use multiple AWS account to isolate terraform state between environment

How can I do to use s3 backend that points to a different AWS account?

In other words, I would like to have something like that:

Dev environment state on an S3 bucket in AWS account A

Stage environment state on another S3 bucket on AWS account B

Anyone can help me, please?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There are a few solutions to it:

  1. provide aws profile name at the command line while running terraform init and injec terraform backend variables during runtime:

         AWS_PROFILE=aws-dev terraform init -backend-config="bucket=825df6bc4eef-state" 
                 -backend-config="dynamodb_table=825df6bc4eef-state-lock" 
                 -backend-config="key=terraform-multi-account/terraform.tfstate"
    

or wrap this command in a Makefile as it is pretty long and forgettable.

  1. Keep separate directories and provide the roles or your credentials or profile name even using shared-credentials

     provider "aws" {
     region                  = "us-west-2"
     shared_credentials_file = "/Users/tf_user/.aws/creds"
     profile                 = "customprofile"
     }
    
  2. Terraform Workspaces

  3. terragrunt


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...