주석 테이블 활성화 또는 비활성화
주석 테이블 활성화 또는 비활성화 (Enabling or disabling annotation tables)
기본적으로 메타데이터 테이블 구성에는 버킷의 객체에서 발생하는 이벤트를 기록하는 저널 테이블이 포함돼요. 저널 테이블은 각 메타데이터 테이블 구성에 필수예요.
출처: 문서
본문
선택적으로 메타데이터 테이블 구성에 주석 테이블을 추가할 수 있어요. 주석 테이블은 버킷 객체의 모든 주석을 추적해서 주석 데이터를 대규모로 조회할 수 있게 해줘요.
주석 테이블은 버킷의 모든 객체에 대한 최신 주석을 포함해요. 이 테이블을 사용해 주석을 기준으로 객체를 식별함으로써 비즈니스 워크플로와 빅데이터 작업을 단순화하고 가속화할 수 있어요. 예를 들어 주석 테이블을 조회해 다음을 수행할 수 있어요.
- 특정 주석 키나 값을 가진 모든 객체 찾기
- 버킷 객체 전체에 걸친 주석 키 분포 만들기
- 특정 보안 주체가 적용한 주석이 있는 모든 객체 찾기
메타데이터 테이블 구성에 주석 테이블을 활성화하도록 선택했다면 테이블은 *백필링(backfilling)*이라는 과정을 거치게 돼요. 이 과정에서 Amazon S3가 범용 버킷을 스캔해 버킷에 존재하는 모든 객체의 주석을 검색하고 채워요. 버킷의 객체 수에 따라 이 과정은 수 분에서 수 시간이 걸릴 수 있어요. 백필링이 끝나면 주석 테이블 상태가 **백필링(Backfilling)**에서 **활성(Active)**으로 바뀌어요. 백필링이 완료된 후에는 일반적으로 객체에 대한 업데이트가 1시간 이내에 주석 테이블에 반영돼요.
참고
- 주석 테이블 백필링에는 요금이 부과돼요. 자세한 내용은 Amazon S3 요금을 참고하세요.
- 주석 테이블에 대한 업데이트를 일시 중지했다가 다시 시작할 수는 없어요. 다만 주석 테이블 구성을 비활성화할 수는 있어요. 주석 테이블을 비활성화해도 삭제되지는 않아요. 주석 테이블은 삭제하기로 결정할 때까지 기록으로 유지돼요. 주석 테이블을 비활성화했고 나중에 다시 활성화하려면 먼저 AWS 관리형 테이블 버킷에서 이전 주석 테이블을 삭제해야 해요. 주석 테이블 구성을 다시 활성화하면 Amazon S3가 새 주석 테이블을 만들고, 새 주석 테이블 백필링에 다시 요금이 부과돼요.
주석 테이블은 Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK 또는 Amazon S3 REST API를 사용해 활성화하거나 비활성화할 수 있어요.
사전 조건 (Prerequisites)
주석 테이블을 비활성화했고 지금 다시 활성화하려면 먼저 AWS 관리형 테이블 버킷에서 이전 주석 테이블을 수동으로 삭제해야 해요. 그렇지 않으면 테이블 버킷에 주석 테이블이 이미 존재하므로 주석 테이블 재활성화가 실패해요. 주석 테이블을 삭제하려면 메타데이터 테이블 삭제를 참고하세요.
주석 테이블 구성을 다시 활성화하면 Amazon S3가 새 주석 테이블을 만들고, 새 주석 테이블 백필링에 다시 요금이 부과돼요.
주석 테이블 IAM 역할 (Annotation table IAM role)
주석 테이블에는 Amazon S3 Metadata가 버킷에서 주석을 읽을 수 있는 권한을 부여하는 IAM 역할이 필요해요. 이 역할을 만들 때 다음 신뢰 정책과 권한 정책을 사용하세요.
신뢰 정책 (Trust policy)
다음 신뢰 정책은 역할을 수임할 수 있는 서비스 보안 주체로 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"
}
}
}
]
}
권한 정책 (Permissions policy)
다음 권한 정책은 주석을 읽는 데 필요한 최소 권한을 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 권한이 필요해요.
주석 테이블 활성화 또는 비활성화 (Enable or disable annotation tables)
주석 테이블을 활성화하거나 비활성화하려면 다음 단계를 따라 해요.
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
- 왼쪽 탐색 창에서 **범용 버킷(General purpose buckets)**을 선택해요.
- 주석 테이블을 활성화하거나 비활성화하려는 메타데이터 테이블 구성이 있는 범용 버킷을 선택해요.
- 버킷의 세부 정보 페이지에서 메타데이터(Metadata) 탭을 선택해요.
- 메타데이터(Metadata) 탭에서 **편집(Edit)**을 선택한 다음 **주석 테이블 구성 편집(Edit annotation table configuration)**을 선택해요.
- 주석 테이블 구성 편집(Edit annotation table configuration) 페이지에서 주석 테이블(Annotation table) 아래 활성화(Enabled) 또는 **비활성화(Disabled)**를 선택해요. > 참고 **활성화(Enabled)**를 선택하기 전에 사전 조건을 검토하고 충족했는지 확인하세요.
- **활성화(Enabled)**를 선택했다면 IAM 역할(IAM role) 아래에서 다음 IAM 역할 선택 방법 중 하나를 선택해요.
- 새 IAM 역할 만들기(Create new IAM role) – Amazon S3가 주석 테이블에 필요한 권한을 가진 새 IAM 역할을 만들어요.
- 기존 IAM 역할에서 선택(Choose from existing IAM roles) – IAM 역할(IAM role) 드롭다운에서 기존 IAM 역할을 선택해요. 역할에는 버킷에서 주석을 읽는 데 필요한 권한이 있어야 해요.
- IAM 역할 ARN 입력(Enter IAM role ARN) – 필요한 권한이 있는 기존 IAM 역할의 ARN을 입력해요. 주석 테이블 IAM 역할에 필요한 권한에 대한 자세한 내용은 주석 테이블 IAM 역할을 참고하세요. AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 테이블을 암호화할지도 선택할 수 있어요. 기본적으로 주석 테이블은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)로 암호화돼요. SSE-KMS를 사용하려면 범용 버킷과 같은 리전에 고객 관리형 KMS 키를 제공해야 해요. > 중요 메타데이터 테이블의 암호화 유형은 테이블 생성 시에만 설정할 수 있어요. AWS 관리형 테이블이 생성된 후에는 암호화 설정을 변경할 수 없어요.
- 주석 테이블을 SSE-S3(기본값)로 암호화하려면 **암호화 유형 지정 안 함(Don't specify encryption type)**을 선택해요.
- 주석 테이블을 SSE-KMS로 암호화하려면 **암호화 유형 지정(Specify encryption type)**을 선택해요. 암호화 유형(Encryption type) 아래에서 **AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)**를 선택해요. **AWS KMS 키(AWS KMS key)**에서 기존 KMS 키를 선택하거나 KMS 키 ARN을 입력해요. KMS 키가 없다면 **KMS 키 ARN 입력(Enter KMS key ARN)**을 선택한 다음 **KMS 키 만들기(Create a KMS key)**를 선택해요.
- **비활성화(Disabled)**를 선택했다면 주석 테이블이 비활성화된 후에는 테이블이 더 이상 업데이트되지 않으며 업데이트를 재개할 수 없습니다(After the annotation table is disabled, the table will no longer be updated, and updates can't be resumed) 아래에서 확인란을 선택해요.
- **활성화(Enabled)**를 선택했다면 IAM 역할(IAM role) 아래에서 다음 IAM 역할 선택 방법 중 하나를 선택해요.
- **변경 사항 저장(Save changes)**을 선택해요.
다음 명령을 실행하려면 AWS CLI가 설치·구성되어 있어야 해요. AWS CLI가 설치되어 있지 않다면 AWS Command Line Interface 사용자 가이드의 최신 버전의 AWS CLI 설치 또는 업데이트를 참고하세요.
또는 AWS CloudShell을 사용해 콘솔에서 AWS CLI 명령을 실행할 수 있어요. AWS CloudShell은 AWS Management Console에서 직접 시작할 수 있는 브라우저 기반의 사전 인증된 셸이에요. 자세한 내용은 AWS CloudShell 사용자 가이드의 CloudShell이란 무엇인가요?와 AWS CloudShell 시작하기를 참고하세요.
AWS CLI로 주석 테이블 활성화 또는 비활성화 (To enable or disable annotation tables by using the AWS CLI)
다음 예시 명령을 사용하려면 user input placeholders를 자신의 정보로 바꾸세요.
참고 주석 구성을 활성화하기 전에 사전 조건을 검토하고 충족했는지 확인하세요.
- 주석 테이블 구성을 포함하는 JSON 파일을 만들고 저장해요(예:
annotation-config.json). 다음은 새 주석 테이블을 활성화하는 샘플 구성이에요. 주석 테이블을 활성화하는 경우 선택적으로 암호화 구성을 지정할 수 있어요. 기본적으로 메타데이터 테이블은SseAlgorithm을AES256으로 설정해 지정할 수 있는 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)로 암호화돼요. 주석 테이블을 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 암호화하려면SseAlgorithm을aws:kms로 설정해요. 또한KmsKeyArn을 범용 버킷이 있는 리전의 고객 관리형 KMS 키 ARN으로 설정해야 해요.
{
"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 역할을 참고하세요.
기존 주석 테이블을 비활성화하려면 다음 구성을 사용해요.
{
"ConfigurationState": "DISABLED" }
- 다음 명령을 사용해 범용 버킷(예:
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 요청을 보낼 수 있어요. 자세한 내용은 UpdateBucketMetadataAnnotationTableConfiguration을 참고하세요.
AWS SDK를 사용해 Amazon S3에서 주석 테이블을 활성화하거나 비활성화할 수도 있어요. 자세한 내용은 지원되는 SDK 목록을 참고하세요.