CLI 명령어를 사용하는 것을 정말 좋아하며, 이는 내 일상이다. 오늘은 CLI를 통해 "AWS에서 S3 버킷을 어떻게 생성하는지" 그리고 "S3 버킷 정책을 어떻게 설정하는지"를 설명한다. 시작하자...

먼저 AWS_ACCESS_KEY와 AWS_SECRET_ACCESS_KEY를 설정해야 한다. 즉, aws configure 명령을 미리 실행해야 한다는 의미다. 이 작업을 완료했다면 계속 진행할 수 있다.

먼저 S3 버킷 확인하기

우선 어떤 버킷이 있는지 확인해야 한다. aws s3 ls 명령을 실행하면 기존 버킷이 반환된다.

~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2021-04-26 11:02:08 www-ercanermis-com

S3 버킷 생성하기

S3 버킷 생성 명령도 간단하고 쉽다. aws s3 mb다. 실행하고 버킷을 다시 나열해보자.

~ aws s3 mb s3://hello-this-is-new-bucket
make_bucket: hello-this-is-new-bucket

이제 확인을 위해 기존 버킷을 모두 다시 나열해본다.

~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2022-07-17 14:23:29 hello-this-is-new-bucket
2021-04-26 11:02:08 www-ercanermis-com

그렇다, 새로 생성한 버킷이 보인다. 버킷 이름은 hello-this-is-new-bucket이다.

S3 버킷의 버킷 정책 확인하기

이전 단계에서 버킷을 생성했지만, 버킷 정책은 어떨까? 먼저 기존 정책이 있는지 확인해야 한다. 다음은 예시다:

~ aws s3api get-bucket-policy --bucket hello-this-is-new-bucket

An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist

새로 생성된 버킷은 기본적으로 정책이 없다. 이제 CLI로 정책을 생성할 시간이다.

버킷 정책 생성하기

정책은 JSON 형식이어야 하며 JSON 파일을 생성할 수 있다. 내 버킷 정책은 모든 사용자가 hello-this-is-new-bucketsecret-folder에 있는 객체를 제외한 모든 객체를 조회할 수 있도록 허용한다. 또한 AWS 계정 "1234-5678-9012"의 "root" 사용자에게 Put 및 Delete 권한을 부여한다.

my-s3-bucket-policy.json:
{
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/*"
      },
      {
         "Effect": "Deny",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/secret-folder/*"
      },
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:root"
         },
         "Action": [
            "s3:DeleteObject",
            "s3:PutObject"
         ],
         "Resource": "arn:aws:s3:::hello-this-is-new-bucket/*"
      }
   ]
}

S3 버킷에 버킷 정책 적용하기

정책 적용도 쉽다. 아래에서 확인할 수 있다.

aws s3api put-bucket-policy --bucket hello-this-is-new-bucket --policy file://my-s3-bucket-policy.json

put-bucket-policy 명령 후, aws cli는 어떤 출력도 제공하지 않지만, CLI를 통해 버킷 정책을 확인하는 방법을 이미 알고 있으므로 확인이 필요하면 확인할 수 있다.

이 글을 읽어줘서 매우 감사하며, 즐거운 코딩 되길!