본문 바로가기

Terraform

[Terraform] 테라폼으로 Amazon S3 생성하기

728x90

이번에는 Terraform으로 Amazon S3를 생성하자.

 

S3 생성하기

- S3를 생성할 때 가장 신경 써야하는 것은 버킷 이름이다.

- S3 버킷이름은 전세계에서 고유해야하기 때문에 같은 이름을 사용하면 리소스가 생성되지 않는다.

- bucket 변수에 고유한 값을 넣어준다.

resource "aws_s3_bucket" "s3_bucket" {
  bucket = "bucket-s3-11280945" #bucket 이름

  tags = {
    Name = "bucket-s3-11280945"
  }
}

 

 

S3 퍼블릭 액세스 구성

- S3를 생성할 때 다음과 같이 퍼블릭 액세스를 제어할 수 있다.

- 이를 다음과 같은 코드로 구성할 수 있다.

- false는 차단을 한다는 의미, true는 차단을 해제한다는 의미이다.

resource "aws_s3_bucket_public_access_block" "s3_bucket_access_block" {
  bucket = aws_s3_bucket.s3_bucket.id

  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

 

 

S3 버킷 정책

- AWS 콘솔에서 버킷을 생성하고 나면 버킷의 세부적인 정책을 변경할 수 있다.

- 이를 다음과 같은 코드로 구성할 수 있다.

- 실제로 버킷 정책에 넣을 구문을 json 형식으로 작성하여서 넣어준다.

   - 하기 정책에서 Get으로 시작하는 S3의 모든 버킷 액션을 허용하겠다는 의미이다.

- bucket 변수는 정책을 지정할 버킷

- "Resource"는 생성한 버킷의 arn을 지정한다.

resource "aws_s3_bucket_policy" "s3_bucket_policy" {
  bucket = "${aws_s3_bucket.s3_bucket.id}"
  policy = <<EOF
  {
      "Version": "2012-10-17", 
      "Statement": [ 
        { 
          "Sid": "Statement1", 
          "Effect": "Allow", 
          "Principal": "*", 
          "Action": "s3:Get*", 
          "Resource": "${aws_s3_bucket.s3_bucket.arn}/*" 
        }
      ]
    }
  EOF
}

 

728x90