Amazon Simple Storage Service(Amazon S3) 버킷의 일부 객체를 공개적으로 읽기 가능하게 하려고 하지만 동일한 버킷에 있는 다른 객체에 대한 권한을 변경하지 않으려고 합니다. 어떻게 해야 합니까?

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

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

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

여러 객체를 한 번에 퍼블릭으로 설정하려면 다음 단계를 따르십시오.

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

개별 객체를 퍼블릭으로 설정하려면 다음 단계를 따르십시오.

  1. Amazon S3 콘솔에서 업데이트할 객체가 있는 버킷을 선택합니다.
  2. 객체가 포함된 폴더로 이동합니다.
  3. 객체 목록에서 객체의 이름을 선택합니다.
  4. 권한 보기를 선택합니다.
  5. Public access(퍼블릭 액세스)에서 Create new key(새 키 생성)를 클릭합니다.
  6. Everyone(모든 사람) 대화 상자의 Access to the object(이 객체에 액세스)에서 Read object(객체 읽기)를 선택합니다.
  7. Save를 선택합니다.

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

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

aws s3api put-object-acl --bucket bucket-name --key my_object --acl public-read

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

aws s3api put-object-acl --bucket bucket-name --key my_object --grant-full-control emailaddress=accountowneremail@emaildomain.com --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:::bucketname/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/public": "yes"
                }
            }
        }
    ]
}

그런 다음 공개적으로 읽기 가능하게 하려는 객체에 태그를 추가합니다. Amazon S3 콘솔을 사용하여 객체 태그를 추가할 수 있습니다. 또는 AWS CLI를 사용할 수 있습니다.

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

aws s3api get-object-tagging --bucket bucketname --key my_object

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

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

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

기존 태그가 있는 객체에 태그를 추가하려면 다음 명령을 실행합니다. 새 객체 태그뿐 아니라 유지하려고 하는 기존 태그도 포함해야 합니다.​

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

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

aws s3api get-object-tagging --bucket bucketname --key my_object

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

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

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

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

aws s3 cp s3://examplebucket/object s3://examplebucket/publicprefix/object

페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시: 2018-12-26