메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

객체 태그 지정

객체 태그 지정을 통해 스토리지를 분류할 수 있습니다. 각 태그는 키-값 페어입니다. 태그 지정에 대한 다음 예시를 참고하십시오.

  • 객체에는 보호 대상 건강 정보(PHI) 데이터가 포함되어 있다고 가정합시다. 다음과 같이 키-값 페어를 사용하여 객체에 태그를 지정할 수 있습니다.

    Copy
    PHI=True

    또는

    Copy
    Classification=PHI
  • S3 버킷에 프로젝트 파일을 저장한다고 가정합시다. 아래와 같이 Project라는 키와 값으로 이 객체들에 태그를 지정할 수 있습니다.

    Copy
    Project=Blue
  • 다음과 같이 한 객체에 태그를 여러 개 덧붙일 수 있습니다.

    Copy
    Project=x Classification=confidential

새 객체를 업로드할 때 태그를 덧붙이거나 기존 객체에 태그를 덧붙일 수 있습니다. 다음을 참조하십시오.

  • 한 개체에 태그를 최대 10개까지 연결할 수 있습니다. 각 객체에 연결된 태그에는 고유한 태그 키가 있어야 합니다.

  • 태그 키는 최대 128개 유니코드 문자이며, 태그 값은 최대 256개 유니코드 문자입니다.

  • 키와 값은 대/소문자를 구분합니다.

객체 키 이름 접두사 역시 스토리지를 분류할 수 있게 해줍니다. 그러나 접두사 기반 분류는 1차원적입니다. 다음 객체 키 이름을 참고하십시오.

Copy
photos/photo1.jpg project/projectx/document.pdf project/projecty/document2.pdf

이 키 이름들에는 photos/, project/projectx/project/projecty/라는 접두사가 있습니다. 이 접두사들을 사용하여 1차원 분류를 할 수 있습니다. 즉 하나의 접두사 아래에 있는 모든 것이 하나의 범주가 됩니다. 예를 들어 project/projectx라는 접두사는 프로젝트 x와 관련된 모든 문서를 식별합니다.

태그 지정을 통해 이제 또 다른 차원을 갖게 되었습니다. 프로젝트 x 범주에 속한 photo1을 원하는 경우, 그에 따라 객체에 태그를 지정할 수 있습니다. 태그 지정은 데이터 분류뿐 아니라 다른 이익도 제공합니다. 예,

  • 객체 태그를 통해 권한에 대한 액세스 제어를 세부적으로 수행할 수 있습니다. 예를 들어, IAM 사용자에게 특정 태그가 있는 객체만 읽을 수 있는 권한을 부여할 수 있습니다.

  • 객체 태그를 통해 수명 주기 규칙 내에서 키 이름 접두사뿐만 아니라 태그 기반 필터를 지정할 수 있는 세분화된 객체 수명 주기 관리가 가능합니다.

  • 또한 Amazon CloudWatch 측정치 및 AWS CloudTrail 로그를 사용자 지정하여 특정 태그 필터로 걸러 정보를 표시할 수도 있습니다. 다음 단원들에서 세부 정보가 제공됩니다.

중요

태그를 사용하여 기밀 데이터(예: 개인 식별 정보(PII) 또는 보호 대상 건강 정보(PHI))가 포함된 객체를 라벨링하는 것이 허용되는 한편, 태그 자체에는 기밀 정보가 포함되어서는 안 됩니다.

객체 태그 지정과 관련된 API 작업

Amazon S3는 특히 객체 태그 지정을 위한 다음 API 작업을 지원합니다.

객체 API 작업

  • PUT Object 태그 지정 - 객체에 있는 태그를 교체합니다. 요청 본문에서 태그를 지정합니다. 이 API를 사용하는, 서로 뚜렷이 구분되는 두 가지 객체 태그 관리 시나리오가 있습니다.

    • 객체에는 태그가 없는 경우 - 이 API를 사용하여 객체에 태그 세트를 붙일 수 있습니다(객체에는 이전에 붙인 태그가 없음).

    • 객체에 기존 태그 세트가 있는 경우 - 기존 태그 세트를 수정하려면 기존 태그 세트를 조회하여 클라이언트 측에서 해당 세트를 수정한 다음, 이 API를 사용하여 태그 세트를 교체해야 합니다. 빈 태그 세트를 사용하여 이 요청을 전송하는 경우, S3는 객체에 있는 기존 태그 세트를 삭제합니다.

     

  • GET Object 태그 지정 - 객체에 연결된 태그 세트를 반환합니다. Amazon S3는 응답 본문의 객체 태그를 반환합니다.

     

  • DELETE Object 태그 지정 - 객체에 연결된 태그 세트를 삭제합니다.

태그 지정을 지원하는 기타 API 작업

  • PUT Object - 객체를 만들 때 태그를 지정할 수 있습니다. x-amz-tagging 요청 헤더를 사용하여 태그를 지정합니다.

     

  • GET Object - 헤더 응답 크기가 8킬로바이트로 제한되어 있기 때문에 Amazon S3는 태그 세트를 반환하는 대신에 x-amz-tag-count 헤더의 객체 태그 개수를 반환합니다(요청자에게 태그를 읽을 수 있는 권한이 있는 경우에 한함). 태그를 보고 싶은 경우, GET Object 태그 지정 API 작업에 대해 또 다른 요청을 합니다.

     

  • POST Object - POST 요청에서 태그를 지정할 수 있습니다.

    요청 시 태그가 8킬로바이트 HTTP 요청 헤더 크기 제한을 초과하지 않는 한, PUT Object API를 사용하여 태그가 있는 객체를 만들 수 있습니다. 지정하는 태그가 헤더 크기 제한을 초과하는 경우, 태그를 본문에 포함시키는 이 POST 방법을 사용할 수 있습니다.

     

  • PUT Object - 복사 - 요청 시 x-amz-tagging-directive를 지정하여 Amazon S3가 태그를 복사(기본 동작)하거나 요청 시 제공되는 새로운 태그 세트로 태그를 교체하도록 유도할 수 있습니다.

다음을 참조하십시오.

  • 태그 지정은 최종 일관성 모델을 따릅니다. 즉 객체에 태그를 붙인 직후에 태그를 조회하고자 하는 경우, 객체에 붙은 이전 태그(있는 경우)를 조회할 수 있습니다. 그러나 후속 호출은 업데이트된 태그를 제공할 수 있습니다.

객체 태그 지정 및 부가 정보

이 단원에서는 객체 태그 지정이 다른 구성과 어떤 관계를 맺는지에 대해 설명합니다.

객체 태그 지정 및 수명 주기 관리

버킷 수명 주기 구성에서 필터를 지정하여 규칙을 적용할 객체의 하위 집합을 선택할 수 있습니다. 키 이름 접두사, 객체 태그 또는 이 두 가지를 바탕으로 필터를 지정할 수 있습니다.

Amazon S3 버킷에 사진(원본 및 마감 형식)을 저장한다고 가정합시다. 이 객체들에 다음과 같이 태그를 지정할 수 있습니다.

Copy
phototype=raw or phototype=finished

원본 사진은 생성한 후 언젠가 Amazon Glacier에 보관하는 것을 고려해볼 수 있습니다. 특정 태그(phototype=raw)를 지닌 키 이름 접두사(photos/)가 있는 객체의 하위 집합을 식별하는 필터를 사용하여 수명 주기 규칙을 구성할 수 있습니다.

자세한 내용은 객체 수명 주기 관리 단원을 참조하십시오.

객체 태그 지정 및 교차 리전 복제(CRR)

버킷에서 교차 리전 복제(CRR)을 구성한 경우, S3에 태그를 읽을 수 있는 권한을 부여하면 Amazon S3는 태그를 복제합니다. 자세한 내용은 교차 리전 복제 설정 방법 단원을 참조하십시오.

객체 태그 지정 및 멀티파트 업로드

멀티파트 업로드 API 작업을 사용하여 객체를 생성하는 경우에는 멀티파트 업로드를 완료한 후(즉 객체를 생성한 후)에야 객체에 태그를 붙일 수 있습니다. 그 다음에는 PUT Object 태그 지정 API 작업을 사용하여 기존 객체에 태그를 붙일 수 있습니다.

객체 태그 지정 및 액세스 제어 정책

또한 권한 정책(버킷 및 사용자 정책)을 사용하여 객체 태그 지정과 관련된 권한을 관리할 수 있습니다. 정책 작업에 대해서는 다음 주제를 참조하십시오.

객체 태그를 통해 권한 관리에 대한 액세스 제어를 세부적으로 수행할 수 있습니다. 객체 태그를 바탕으로 조건적인 권한을 부여할 수 있습니다. Amazon S3에서는 객체에 태그 기반 조건적 권한을 부여하는 데 사용할 수 있는 다음과 같은 조건 키를 지원합니다.

  • s3:ExistingObjectTag/<tag-key> - 이 조건 키를 사용하여 기존 객체 태그에 특정 태그 키 및 값이 있다는 것을 확인합니다.

     

    참고

    PUT ObjectDELETE Object 작업에 대한 권한을 부여할 때 이 조건 키는 지원되지 않습니다. 즉 기존 태그에 기반을 둔 기존 객체를 삭제 또는 무시할 수 있는 권한을 사용자에게 부여하거나 거부할 수 있는 정책을 생성할 수 없습니다.

     

  • s3:RequestObjectTagKeys - 이 조건을 사용하여 객체에 대해 허용하고자 하는 태그 키를 제한합니다. 이것은 PutObjectTagging 및 PutObject, 그리고 POST 객체 요청을 사용하여 객체에 태그를 붙일 때 유용합니다.

     

  • s3:RequestObjectTag/<tag-key> - 이 조건을 사용하여 객체에 대해 허용하고자 하는 태그 키 및 값을 제한합니다. 이것은 PutObjectTagging 및 PutObject, 그리고 POST Bucket 요청을 사용하여 객체에 태그를 붙일 때 유용합니다.

Amazon S3 서비스별 조건 키 전체 목록은 사용 가능한 조건 키 단원을 참조하십시오. 다음 권한 정책들은 객체 태그 지정을 통해 어떻게 세부적인 액세스 권한 관리가 가능한지 보여줍니다.

예 1: 사용자가 특정 태그가 있는 객체만을 읽도록 허용

다음 권한 정책은 객체를 읽을 수 있는 권한을 사용자에게 부여하지만, 해당 조건으로 인해 읽기 권한은 다음과 같은 특정 태그 키 및 값이 있는 객체로 제한됩니다.

Copy
security : public

이 정책은 Amazon S3 조건 키 s3:ExistingObjectTag/<tag-key>를 사용하여 키 및 값을 지정한다는 점에 유의하십시오.

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

예 2: 사용자가 객체 태그를 붙일 수 있게 하되, 허용되는 태그 키에 제한을 둠

다음 권한 정책은 사용자에게 s3:PutObjectTagging 작업을 수행할 수 있는 권한을 부여합니다. 이에 따라 사용자는 기존 객체에 태그를 붙일 수 있습니다. 이 조건은 사용자가 사용하도록 허용된 태그 키를 제한합니다. 이 조건은 s3:RequestObjectTagKeys 조건 키를 사용하여 태그 키 세트를 지정합니다.

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

이 정책은 요청에 지정된 경우, 태그 세트에 지정된 키가 있는지 확인합니다. 사용자는 PutObjectTagging에 빈 태그 세트를 전송할 수 있습니다. 이는 이 정책에 의해 허용됩니다(요청의 빈 태그 세트는 객체의 기존 태그를 제거함). 사용자가 태그 세트를 제거하지 못하도록 하려면 다른 조건을 추가하여 사용자가 최소한 1개의 값을 제공하도록 할 수 있습니다. 조건 내의 ForAnyValue는 지정된 값 중 최소한 1개가 요청에 반드시 있도록 보장합니다.

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] }, "ForAnyValue:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

자세한 내용은 IAM 사용 설명서여러 키 값을 테스트하는 조건 생성(설정 작업) 단원을 참조하십시오.

예 3: 사용자가 특정 태그 키 및 값이 포함된 객체 태그를 붙일 수 있게 허용

다음 사용자 정책은 사용자에게 s3:PutObjectTagging 작업을 수행할 수 있는 권한을 부여합니다. 이에 따라 사용자는 기존 객체에 태그를 붙일 수 있습니다. 이 조건은 사용자에게 X로 설정된 값을 지닌 특정 태그(Project)를 포함하도록 요구합니다.

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::examplebucket/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/Project": "X" } } } ] }

관련 주제

객체 태그 관리