Amazon S3 버킷의 일부 객체에 퍼블릭 읽기 액세스 권한을 부여하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 3월 27일

Amazon Simple Storage Service(Amazon S3) 버킷의 일부 객체에서 퍼블릭 읽기가 가능하도록 하려고 합니다. 하지만 동일한 버킷에 있는 다른 객체에 대한 권한을 변경하고 싶지 않습니다. 어떻게 해야 합니까?

간략한 설명

다음 방법 중 하나로 퍼블릭 읽기 액세스를 활성화합니다.

  • Amazon S3 콘솔을 사용하여 객체의 ACL(액세스 제어 목록) 업데이트
  • AWS Command Line Interface(AWS CLI)를 사용하여 객체의 ACL 업데이트
  • 특정 객체 태그에 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용
  • 특정 접두사에 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용

​해결 방법

중요: 시작하기 전에 객체를 퍼블릭으로 설정할 수 없게 하는 계정 수준 또는 버킷 수준의 퍼블릭 액세스 차단 설정이 없는지 확인합니다. 기본적으로 퍼블릭 액세스 차단 설정은 새 S3 버킷에서 True로 설정됩니다.

Amazon S3 콘솔을 사용하여 객체의 ACL 업데이트

여러 객체를 한 번에 퍼블릭으로 설정하려면 다음 단계를 수행합니다.

경고: 여러 객체를 퍼블릭으로 설정한 후에는 여러 객체에 대해 이 작업을 한 번에 실행 취소할 수 없습니다. 퍼블릭 액세스 권한을 제거하려면 Amazon S3 콘솔에서 각 객체로 이동한 다음, 객체의 [권한] 탭에서 [퍼블릭 액세스]를 수정해야 합니다. 부여한 퍼블릭 액세스 권한을 실행 취소하려는 모든 객체에 대해 이 작업을 수행해야 합니다. 객체를 퍼블릭으로 설정하기 전에 객체 목록을 신중하게 검토해야 합니다.

  1. Amazon S3 콘솔을 엽니다.
  2. 버킷 목록에서 업데이트하려는 객체를 포함하는 버킷을 선택합니다.
  3. 객체가 포함된 폴더로 이동합니다.
  4. 객체 목록에서 퍼블릭으로 설정할 모든 객체를 선택합니다.
  5. [작업]을 선택하고 [퍼블릭으로 설정]을 선택합니다.
  6. [퍼블릭으로 설정] 대화 상자에서 객체 목록이 올바른지 확인합니다.
  7. [퍼블릭으로 설정]을 선택합니다.

개별 객체를 퍼블릭으로 설정하려면 다음 단계를 수행합니다.

  1. Amazon S3 콘솔에서 업데이트할 객체를 포함하는 버킷을 선택합니다.
  2. 객체가 포함된 폴더로 이동합니다.
  3. 객체 이름의 링크를 선택하여 객체를 엽니다.
  4. [권한] 탭을 선택합니다.
  5. [퍼블릭 액세스]에서 [모든 사람]을 선택합니다.
  6. [모든 사람] 대화 상자의 [이 객체에 액세스]에 대해 [객체 읽기]를 선택합니다.
  7. [저장]을 선택합니다.

AWS CLI를 사용하여 객체의 ACL 업데이트

Amazon S3에 이미 저장한 객체의 경우 이 명령을 실행하여 퍼블릭 읽기 액세스에 대해 ACL을 업데이트할 수 있습니다.

aws s3api put-object-acl --bucket awsexamplebucket --key exampleobject --acl public-read

또는 다음 명령을 실행하여 AWS 계정 소유자에게는 객체에 대한 모든 제어 권한을 부여하고, 다른 모든 사용자에게는 읽기 액세스 권한을 부여할 수 있습니다.

참고: --grant-full-control 값으로 계정의 정식 사용자 ID를 입력합니다.

aws s3api put-object-acl --bucket awsexamplebucket --key exampleobject --grant-full-control id="008exampleA45666666668889999008853" --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

특정 객체 태그에 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용

중요: 시작하기 전에 S3 객체 태그 지정 요금을 검토해야 합니다.

먼저, 특정 태그가 지정된 객체에 퍼블릭 읽기 액세스 권한을 허용하는 버킷 정책을 추가합니다. 예를 들어, 이 정책은 키–값 페어 public=yes로 태그가 지정된 모든 객체에 대해 퍼블릭 읽기 액세스 권한을 허용합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::awsexamplebucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/public": "yes"
                }
            }
        }
    ]
}

그런 다음, 퍼블릭 읽기를 허용할 객체에 태그를 추가합니다. Amazon S3 콘솔을 사용하여 객체 태그를 추가할 수 있습니다. 또는 AWS CLI를 사용할 수 있습니다.

객체에 기존 태그가 있는지 확인하려면 다음 AWS CLI 명령을 실행합니다. 

aws s3api get-object-tagging --bucket awsexamplebucket --key exampleobject

기존 태그가 없는 객체에 태그를 추가하려면 다음 명령을 실행합니다.

경고: 이 명령은 기존 객체 태그를 덮어씁니다. 

aws s3api put-object-tagging --bucket awsexamplebucket --key exampleobject --tagging 'TagSet={Key=public,Value=yes}'

기존 태그가 있는 객체에 태그를 추가하려면 다음 명령을 실행합니다. 이때 새 객체 태그와 유지할 기존 태그를 포함해야 합니다. 

aws s3api put-object-tagging --bucket awsexamplebucket --key exampleobject --tagging 'TagSet=[{Key=public,Value=n},{Key=exampletag1,Value=one},{Key=exampletag2,Value=two}]'

객체 태그를 추가한 후 이 명령을 실행하여 모든 객체의 태그를 검토합니다. 

aws s3api get-object-tagging --bucket awsexamplebucket --key exampleobject

특정 접두사에 퍼블릭 읽기 액세스 권한을 부여하는 버킷 정책 사용

특정 객체 접두사에 퍼블릭 읽기 액세스 권한을 부여하려면 다음과 비슷한 버킷 정책을 추가합니다. 

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::awsexamplebucket/publicprefix/*"]
      }
  ]
}

그런 다음, 퍼블릭 읽기 액세스 권한이 있는 접두사로 객체를 복사합니다. 다음과 비슷한 명령을 실행하여 객체를 접두사로 복사할 수 있습니다.

aws s3 cp s3://awsexamplebucket/exampleobject s3://awsexamplebucket/publicprefix/exampleobject

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?