반응형
사용자에게 권한 추가
AWS CLI를 통해 사용자가 S3 버킷에 접근할 권한을 주기 위해 terraform을 사용할 사용자에게 `AmazonS3FullAccess` 권한을 추가한다.
테라폼 S3 버킷 생성 코드
provider와 s3 버킷 생성
provider "aws" {
region = "ap-northeast-2"
}
# first-terraform-bucket 이라는 이름의 s3 버킷을 생성한다.
resource "aws_s3_bucket" "first-terraform-mybucket" {
bucket = "first-terraform-mybucket"
tags = {
environment = "manager"
}
}
버킷 public access block 구성 변경
버킷 생성 시 s3에 대한 접근 권한이 존재하지 않으므로 public access에 대한 block을 `false`로 설정해준다.
# 버킷에 대한 public access block 구성을 변경해준다.
resource "aws_s3_bucket_public_access_block" "public-access" {
bucket = aws_s3_bucket.first-terraform-mybucket.id
block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}
버킷에 object 생성하기
이미 로컬에 존재하는 파일을 생성한 s3 버킷에 업로드하는 것이다.
따라서, 해당 terraform 코드의 `source` 옵션에 현재 디렉토리 기준 상대경로로 업로드 대상이 되는 파일의 경로를 입력해주어야 한다.
# sample s3 object 생성하기
# 현재 작업하는 디렉토리에 sample.txt가 존재해야함
resource "aws_s3_object" "first-terraform-sample-txt" {
bucket = aws_s3_bucket.first-terraform-mybucket.id
key = "sample.txt"
source = "sample.txt"
}
버킷에 정책 연결하기
resource "aws_s3_bucket_policy" "bucket-policy" {
bucket = aws_s3_bucket.first-terraform-mybucket.id
depends_on = [
aws_s3_bucket_public_access_block.public-access
]
policy = <<POLICY
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicRead",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject"],
"Resource": ["arn:aws:s3:::${aws_s3_bucket.first-terraform-mybucket.id}/*"]
}
]
}
POLICY
}
main.tf 적용하기
`terraform init` -> `terraform plan` -> `terraform apply`
버킷 생성 확인하기
참고 자료
인프런 - 실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)
실리콘밸리 엔지니어와 함께하는 테라폼(Terraform) | 미쿡엔지니어 - 인프런
미쿡엔지니어 | "클라우드 인프라스트럭처 자동화(Infrastructure Automation)의 세계로 떠나보세요!" 인프라스트럭처 자동화 도구, 테라폼은 클라우드 환경에서 리소스를 프로비저닝(Provisioning)하고 관
www.inflearn.com
반응형
'Terraform' 카테고리의 다른 글
[Terraform]테라폼을 사용하여 EC2 생성하기(네트워크 구성 X) (0) | 2024.04.29 |
---|---|
[Terraform]테라폼으로 AWS IAM 생성하기 (0) | 2024.04.25 |