

# 주석 테이블 활성화 또는 비활성화
<a name="metadata-tables-enable-disable-annotation-tables"></a>

기본적으로 메타데이터 테이블 구성에는 버킷의 객체에 대해 발생하는 이벤트를 기록하는 *저널 테이블*이 포함되어 있습니다. 저널 테이블은 각 메타데이터 테이블 구성에 필요합니다.

선택적으로 메타데이터 테이블 구성에 *주석 테이블*을 추가할 수 있습니다. 주석 테이블은 버킷의 객체에 대한 모든 주석을 추적하므로 주석 데이터를 대규모로 쿼리할 수 있습니다.

주석 테이블에는 버킷의 모든 객체에 대한 최신 주석이 포함되어 있습니다. 이 테이블을 사용하여 주석을 기반으로 객체를 식별하여 비즈니스 워크플로와 빅 데이터 작업을 간소화하고 속도를 높일 수 있습니다. 예를 들어 주석 테이블을 쿼리하여 다음을 수행할 수 있습니다.
+ 특정 주석 키 또는 값이 있는 모든 객체를 찾습니다.
+ 버킷의 객체 간에 주석 키 배포를 생성합니다.
+ 특정 보안 주체가 주석을 적용한 모든 객체를 찾습니다.

메타데이터 테이블 구성에 주석 테이블을 활성화하도록 선택한 경우 테이블은 *채우기*라는 프로세스를 거치며, 이 과정에서 Amazon S3는 범용 버킷을 스캔하여 버킷에 있는 모든 객체의 주석을 검색하여 채웁니다. 버킷의 객체 수에 따라 이 프로세스는 몇 분에서 몇 시간이 걸릴 수 있습니다. 채우기 프로세스가 완료되면 주석 테이블의 상태가 **채우기**에서 **활성**으로 변경됩니다. 채우기가 완료되면 객체에 대한 업데이트는 일반적으로 1시간 이내에 주석 테이블에 반영됩니다.

**참고**  
주석 테이블 채우기에 대한 요금이 부과됩니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.
주석 테이블에 대한 업데이트를 일시 중지한 다음 재개할 수 없습니다. 그러나 주석 테이블 구성을 비활성화할 수는 있습니다. 주석 테이블을 비활성화해도 삭제되지는 않습니다. 주석 테이블은 삭제하기로 결정할 때까지 레코드에 유지됩니다.  
주석 테이블을 비활성화한 후 나중에 다시 활성화하려면 먼저 AWS 관리형 테이블 버킷에서 이전 인벤토리 테이블을 삭제해야 합니다. 주석 테이블 구성을 다시 활성화하면 Amazon S3가 새 주석 테이블을 만들고 새 주석 테이블을 채우는 데 따른 요금이 다시 청구됩니다.

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용하여 주석 테이블을 활성화 또는 비활성화할 수 있습니다.

**사전 조건**  
주석 테이블을 비활성화한 후 다시 활성화하려면 먼저 AWS 관리형 테이블 버킷에서 이전 주석 테이블을 수동으로 삭제해야 합니다. 그러지 않으면 주석 테이블이 테이블 버킷에 이미 존재하기 때문에 주석 테이블을 다시 활성화하지 못합니다. 주석 테이블을 삭제하려면 [메타데이터 테이블 삭제](metadata-tables-delete-table.md#delete-metadata-table-procedure) 섹션을 참조하세요.

주석 테이블 구성을 다시 활성화하면 Amazon S3가 새 주석 테이블을 만들고 새 주석 테이블을 채우는 데 따른 요금이 다시 청구됩니다.

## 주석 테이블 IAM 역할
<a name="annotation-table-iam-role-section"></a>

주석 테이블에는 버킷에서 주석을 읽을 수 있는 Amazon S3 Metadata 권한을 부여하는 IAM 역할이 필요합니다. 이 역할을 생성할 때는 다음 신뢰 및 권한 정책을 사용합니다.

**신뢰 정책**  
다음 신뢰 정책은 Amazon S3 Metadata를 해당 역할을 맡을 수 있는 서비스 보안 주체로 지정합니다.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "metadata.s3.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{{123456789012}}"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                }
            }
        }
    ]
}
```

**권한 정책**  
다음 권한 정책은 주석을 읽는 데 필요한 최소 권한을 IAM 역할에 부여합니다.

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermissionForGetAnnotation",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectAnnotation",
        "s3:GetObjectVersionAnnotation"
      ],
      "Resource": ["arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"]
    },
    {
      "Sid": "PermissionsForListBucket",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:ListBucketVersions"
      ],
      "Resource": ["arn:aws:s3:::{{amzn-s3-demo-bucket}}"]
    },
    {
      "Sid": "PermissionsForDecryptAnnotation",
      "Effect": "Allow",
      "Action": ["kms:Decrypt"],
      "Resource": ["*"]
    }
  ]
}
```

객체가 SSE-KMS 암호화를 사용하는 경우 `kms:Decrypt` 권한은 객체를 암호화하는 데 사용되는 AWS KMS 키의 복호화를 포함합니다. 또한 주석 테이블 구성에 역할을 할당할 수 있는 `iam:PassRole` 권한이 필요합니다.

## 주석 테이블 활성화 또는 비활성화
<a name="metadata-tables-enable-disable-annotation-tables-procedure"></a>

### S3 콘솔 사용
<a name="metadata-tables-enable-disable-annotation-tables-console"></a>

**주석 테이블을 활성화 또는 비활성화하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **범용 버킷**을 선택합니다.

1. 주석 테이블을 활성화하거나 비활성화하려는 메타데이터 테이블 구성이 있는 범용 버킷을 선택합니다.

1. 버킷의 세부 정보 페이지에서 **메타데이터** 탭을 선택합니다.

1. **메타데이터** 탭에서 **편집**을 선택한 다음 **주석 테이블 구성 편집**을 선택합니다.

1. **주석 테이블 구성 편집** 페이지의 **주석 테이블**에서 **활성화됨** 또는 **비활성화됨**을 선택합니다.
**참고**  
**활성화됨**을 선택하기 전에 [사전 조건](#annotation-table-config-prereqs)을 검토하고 충족했는지 확인합니다.
   + **활성화됨**을 선택한 경우 **IAM 역할**에서 다음 IAM 역할 선택 방법 중 하나를 선택합니다.
     + **새 IAM 역할 생성** - Amazon S3는 주석 테이블에 필요한 권한을 가진 새 IAM 역할을 생성합니다.
     + **기존 IAM 역할 선택** – **IAM 역할** 드롭다운에서 기존 IAM 역할을 선택합니다. 해당 역할에는 버킷에서 주석을 읽는 데 필요한 권한이 있어야 합니다.
     + **IAM 역할 ARN 입력** - 필요한 권한이 있는 기존 IAM 역할의 ARN을 입력합니다.

     주석 테이블 IAM 역할에 필요한 권한에 대한 자세한 내용은 [주석 테이블 IAM 역할](#annotation-table-iam-role-section)을 참조하세요.

     AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 테이블을 암호화할지 여부를 선택할 수 있습니다. 기본적으로 주석 테이블은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 사용하여 암호화됩니다.

     SSE-KMS를 사용하기로 선택한 경우 범용 버킷과 동일한 리전에 고객 관리형 KMS 키를 제공해야 합니다.
**중요**  
테이블을 만드는 중에만 메타데이터 테이블에 대한 암호화 유형을 설정할 수 있습니다. AWS 관리형 테이블이 만들어진 후에는 암호화 설정을 변경할 수 없습니다.
     + SSE-S3(기본값)로 주석 테이블을 암호화하려면 **암호화 유형을 지정하지 않음**을 선택합니다.
     + SSE-KMS로 주석 테이블을 암호화하려면 **암호화 유형 지정**을 선택합니다. **암호화 유형**에서 **AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)**를 선택합니다. **AWS KMS 키**에서 기존 KMS 키 중에 선택하거나 KMS 키 ARN을 입력합니다. 아직 KMS 키가 없는 경우 **KMS 키 ARN 입력**을 선택한 다음 **KMS 키 생성**을 선택합니다.
   + **비활성화됨**을 선택한 경우 **주석 테이블이 비활성화된 후 테이블이 더 이상 업데이트되지 않고 업데이트를 재개할 수 없음**에서 확인란을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

### AWS CLI 사용
<a name="metadata-tables-enable-disable-annotation-tables-cli"></a>

다음 명령을 실행하려면 AWS CLI를 설치하고 구성해야 합니다. AWS CLI를 설치하지 않은 경우 *AWS Command Line Interface 사용 설명서*의 [Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html)를 참조하세요.

또는 AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 *AWS CloudShell 사용 설명서*에서 [CloudShell이란 무엇인가요?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) 및 [AWS CloudShell 시작하기](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html)를 참조하세요.

**AWS CLI를 사용하여 주석 테이블을 활성화 또는 비활성화하려면**

다음 예제 명령을 사용하려면 `{{user input placeholders}}`를 사용자의 정보로 대체하세요.
**참고**  
주석 구성을 활성화하기 전에 [사전 조건](#annotation-table-config-prereqs)을 검토하고 충족했는지 확인합니다.

1. 주석 테이블 구성이 포함된 JSON 파일을 만들고 저장합니다(예: `annotation-config.json`). 다음은 새 주석 테이블을 활성화하기 위한 샘플 구성입니다.

   주석 테이블을 활성화하는 경우 선택적으로 암호화 구성을 지정할 수 있습니다. 기본적으로 메타데이터 테이블은 `SseAlgorithm`을 `AES256`으로 설정하여 지정할 수 있는 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)로 암호화됩니다.

   AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 주석 테이블을 암호화하려면 `SseAlgorithm`을 `aws:kms`로 설정합니다. 또한 범용 버킷이 위치한 동일한 리전에서 고객 관리형 KMS 키의 ARN으로 `KmsKeyArn`을 설정해야 합니다.

   ```
   {
     "ConfigurationState": "ENABLED",
     "Role": "arn:aws:iam::{{account-id}}:role/{{annotation-table-role}}",
     "EncryptionConfiguration": {
       "SseAlgorithm": "aws:kms",
       "KmsKeyArn": "arn:aws:kms:{{us-east-2}}:{{account-id}}:key/{{key-id}}"
     }
   }
   ```

   `Role` 필드는 주석 테이블을 처음 활성화하거나 IAM 역할을 변경할 때 필요합니다. 역할은 버킷에서 주석을 읽을 수 있는 권한을 Amazon S3 Metadata에 부여해야 합니다. 자세한 내용은 [주석 테이블 IAM 역할](#annotation-table-iam-role-section)을 참조하세요.

   기존 주석 테이블을 비활성화하려면 다음 구성을 사용합니다.

   ```
   {
     "ConfigurationState": "DISABLED"  }
   ```

1. 다음 명령을 사용하여 주석 테이블 구성을 범용 버킷에 업데이트합니다(예: `{{amzn-s3-demo-bucket}}`).

   ```
   aws s3api update-bucket-metadata-annotation-table-configuration \
   --bucket {{amzn-s3-demo-bucket}} \
   --annotation-table-configuration file://./{{annotation-config}}.json \
   --region {{us-east-2}}
   ```

### REST API 사용
<a name="metadata-tables-enable-disable-annotation-tables-rest-api"></a>

REST 요청을 전송하여 주석 테이블을 활성화하거나 비활성화할 수 있습니다. [자세한 내용은 UpdateBucketMetadataAnnotationTableConfiguration 단원을 참조하세요.](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataAnnotationTableConfiguration.html)

### AWS SDK 사용
<a name="metadata-tables-enable-disable-annotation-tables-sdk"></a>

AWS SDK를 사용하여 Amazon S3에서 주석 테이블을 활성화하거나 비활성화할 수 있습니다. 자세한 내용은 [지원되는 SDK 목록](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateBucketMetadataAnnotationTableConfiguration.html#API_UpdateBucketMetadataAnnotationTableConfiguration_SeeAlso)을 참조하세요.