% aws configure --profile account1
% aws configure --profile account2
...
provider "aws" {
region = "ap-northeast-2"
profile = "account1"
}
provider "aws" {
region = "ap-northeast-2"
profile = "account2"
}
Terraform 코드에서 AWS provider 블록을 사용하여 프로파일을 설정한다. profile
속성을 사용하여 원하는 프로파일을 지정할 수 있다.
필요한 경우, 위와 같은 블록을 각각의 AWS 리소스에 적용하여 각각의 계정에 대한 프로파일을 설정할 수 있다.
terraform {
backend "s3" {
bucket = "remote-state-bucket" # S3 버킷 이름
key = "path/to/statefile" # tfstate 저장 경로
region = "ap-northeast-2" # S3 버킷 위치
encrypt = true # 암호화 여부
dynamodb_table = "dynamodb-lock-table" # DynamoDB 테이블 이름
}
}
여러 계정 간에 Terraform 상태를 공유하려면, AWS S3와 같은 원격 상태 저장소를 사용하는 것이 좋다. 각 계정에 대한 별도의 S3 버킷 및 DynamoDB 테이블을 설정하여 상태를 저장하고 잠금을 관리할 수 있다.
Terraform Backend 는 Terraform 의 state file 을 어디에 저장하고, 가져올지에 대한 설정이다.
기본적으로 로컬 스토리지에 저장을 하지만, 설정에 따라 S3, consul 등 다양한 Type을 사용할 수 있다.
만약 한 쪽에서 작업을 하고 있고, 다른 한 쪽에서도 작업을 하고자 한다면 위와 같은 에러가 발생한다.
참고
https://kim-dragon.tistory.com/210
https://terraform101.inflearn.devopsart.dev/advanced/backend/