[Error] Failed getting S3 bucket: BadRequest: Bad Request >> multi-region problem

Jisun-Rea·2021년 12월 26일
0

cloudfront + s3 으로 정적인 웹호스팅을 만드는 과정에서 terraform state file로부터 s3 정보를 읽어오지 못하는 오류가 발생하였다.
분명히 존재하는 버킷인데 읽어오지 못한다는 것은 terraform이 s3를 어디 엉뚱한데서 찾고있다는 생각이 들었다.

Problem

Error: Failed getting S3 bucket (버킷명): BadRequest: Bad Request
status code: 400,
...
with data.aws_s3_bucket.hosting,
on main.tf line 30, in data "aws_s3_bucket" "hosting":
30: data "aws_s3_bucket" "hosting" {

# aws provider
provider "aws" {
  version = "~> 3.0"
  region  = "us-east-1"
}

# S3 bucket
data "aws_s3_bucket" "hosting" {
  bucket = "<버킷명>"
}

Why

region 문제였다.
cloudfront는 항상 N. Virginia에서만 사용가능하기 때문에 aws provider의 기본 region을 us-east-1으로 설정을 해두었다.
그러나 s3 bucket은 Singapore(ap-southeast-1) region에 있었고, 그렇기에 'aws_s3_bucket' data source에서 'bucket' argument만으로는 원하는 s3 bucket을 찾아가지 못한 것이었다.

Solution

provider의 alias를 사용함으로써
다중 region을 구현할 수 있다.

# default aws provider
provider "aws" {
  version = "~> 3.0"
  region  = "us-east-1"
}

# s3 alias aws provider
provider "aws" {
  alias = "s3"

  version = "~> 3.0"
  region = "ap-southeast-1"
}

# S3 bucket
data "aws_s3_bucket" "hosting" {
  provider = aws.s3  # set provider

  bucket = "<버킷명>"
}
profile
호기심 많고 걱정도 많은 사람👻 @DevOps @Cloud

0개의 댓글