흰 스타렉스에서 내가 내리지

Terraform 으로 s3 리소스 생성하기 본문

DevOps

Terraform 으로 s3 리소스 생성하기

주씨. 2024. 9. 5. 12:58
728x90
vim provider.tf
provider "aws" {
  region  = "ap-northeast-2"
}

 

 

vim s3.tf
resource "aws_s3_bucket" "s3" {
  bucket = "joos-devops-terraform"

  tags = {
    Name = "joos-devops-terraform"
  }
}

 

버킷을 생성해보자

terraform init

 

terraform plan

 

 

terraform apply

 

aws 콘솔로 이동하여 생성 되었는지 확인해보자.

잘 됐죠?

 

 


aws cli 를 사용하여 파일을 버킷에 업로드해보자.

vim index.html
<h1>안녕하세요!</h1>

 

 

aws s3 cp ./index.html s3://joos-devops-terraform/index.html

 

파일이 잘 업로드 되었습니다. 

 

버킷 안에 디렉토리에 저장하고 싶다면 `s3://~~~/디렉토리명/파일명` 이렇게 해도 된다.

 

반대로 다운로드 받고 싶다면 어떻게 할까? 

위에서 작성했던 명령어의 파일 순서를 반대로 하면 된다. 

aws s3 cp s3://joos-devops-terraform/index.html .

 

파일을 다운로드 받으려면 aws 에서 이 파일을 다운로드 받을 수 있는 권한이 있어야 한다.

 


s3 객체마다 object url 을 가지고 있다. 

 

위 링크로 브라우저에서 접근을 하면, 객체에 대한 접근 권한이 없기 때문에 파일을 열람할 수 없다. 

 

권한을 주는 방법은 다양하다. 

public 으로 설정하면 누구나 접근 가능하게 된다. 

 

그렇다면 현업에서는 어떻게 사용할까?

어떤 파일은 퍼블릭이어야 하고, 어떤 파일은 퍼블릭이면 안되는 것들이 있을 것이다.

권한 관리를 철저하게 해서 s3 버킷을 분리한다거나, 아니면 각 파일에 대한 권한을 퍼블릭으로 준다거나의 방법이 있다. 

 

추가로 s3 에서 정적 웹 사이트 호스팅이 가능하다. 

인덱스 페이지는 뭘로 할지, 에러 페이지는 뭘로 할지 설정을 할 수 있다. 

 

versioning 기능도 제공하기 때문에 파일에 대한 버전 관리가 용이하고, 유실 걱정을 하지 않아도 된다.