Terraform
[Terraform] 테라폼으로 Amazon S3 생성하기
횲
2023. 11. 28. 10:02
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