버킷을 생성할때 퍼블릭 액세스 차단 설정을 해제하여 누구든지 접속인 가능하게 합니다.
그리고 해당 버킷의 정책을 아래와 같이 객체 읽기 권한만 줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucketname>/*"
}
]
}
그리고 해당 버킷만 접근이 가능하도록 IAM 사용자를 생성해야하는데 Role을 먼저 생성후 사용자를 생성해서 연결을 해주는 작업을 합니다.
정책은 아래와 같이 put 과 get 만 주었습니다. 그외 다른권한은 호스팅을 할때 필요한지를 모르겠어서 최소한의 권한만 주었습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::<bucketname>/*"
}
]
}
이후 사용자를 생성한후 프로그래밍 방식으로 접근하기를 선택합니다. 그리고 사용자 생성후 credential 을 다운로드하면 됩니다.
aws cli 를 설치한뒤 aws configure 라는 명렁어로 아까 다운로드 받은 credential 파일안에 있는 정보를 입력해 줍니다.
그런 다음 aws s3 sync 로 S3 생성된 버킷에 빌드된 코드를 업로드하려고 했더니 아래와 같이 처움 보는 에러가 출력이 되었습니다.
해당 에러가 출력이 되었다.. 이건 처음 보는 권한인데 어디에 있을까?.. 구글링을 열심히 해보았더니 아래와 같은 AWS 커뮤니티에대한 글을 찾을수 있었다
https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-access-denied-listobjects-sync/
즉 aws s3 sync 는 ListObjectsV2, CopyObject, GetObject 및 PutObject API 호출을 하여 실행하는데 ListBucket 권한이 없어서 발생이 되는 문제였다
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::<bucketname>",
"Resource": "arn:aws:s3:::<bucketname>/*"
}
]
}
해당 정책을 변경후 테스트를 하였을때는 정상적으로 동작을 하였습니다.
'AWS > S3' 카테고리의 다른 글
S3 (Simple Storage Service) 이란 (0) | 2021.01.24 |
---|