SSE-KMS を設定したオブジェクトがレプリケーション対象にならない事象を回避するには

2024.06.11

困っていた内容

S3 のレプリケーションで宛先にオブジェクトが表示されません。
レプリケーション状態を確認したところ、そもそもReplicationStatusがありませんでした。

クリックすると確認例を表示します

ReplicationStatusがない

$ aws s3api head-object --bucket <バケット名> --key hato-file
{
    "AcceptRanges": "bytes",
    "LastModified": "2024-01-02T03:04:05+00:00",
    "ContentLength": 0,
    "ETag": "\"45b33ab6df0a43b9e12386d7b94112ef\"",
    "VersionId": "fME7rgdhTatNP123RyUYpwALCkvj4SQD",
    "ContentType": "binary/octet-stream",
    "ServerSideEncryption": "aws:kms",
    "Metadata": {},
    "SSEKMSKeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/aaa123bf-bcad-123-b3c5-5d539c4f88dc"
}

ReplicationStatusがある

$ aws s3api head-object --bucket <バケット名> --key hato-file
{
    "AcceptRanges": "bytes",
    "LastModified": "2024-01-02T03:04:05+00:00",
    "ContentLength": 0,
    "ETag": "\"45b33ab6df0a43b9e12386d7b94112ef\"",
    "VersionId": "fME7rgdhTatNP123RyUYpwALCkvj4SQD",
    "ContentType": "binary/octet-stream",
    "ServerSideEncryption": "aws:kms",
    "Metadata": {},
    "SSEKMSKeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/aaa123bf-bcad-123-b3c5-5d539c4f88dc",
    "ReplicationStatus": "COMPLETED"
}

オブジェクトは SSE-KMS で暗号化していますが、関係ありますか。対処法を教えてください。

レプリケーションのトラブルシューティング - Amazon Simple Storage Service

HeadObject API オペレーションを呼び出して、オブジェクトのレプリケーションの状態を確認できます。HeadObject API オペレーションは、PENDING、COMPLETED、または FAILED で、オブジェクトのレプリケーションの状態を返します。

どう対応すればいいの?

レプリケーションルールで、KMS で暗号化されたオブジェクトが対象になっているか確認してください。

S3 のレプリケーションでは、デフォルトで SSE-KMS を利用して暗号化したオブジェクトをレプリケーションしません。
レプリケーション対象にするには、レプリケーションルールの暗号化セクションで「AWS Key Management Service (AWS KMS)で暗号化されたオブジェクトをレプリケートする」を選択してください。

なお、S3 のレプリケーションは設定前のオブジェクトを自動的に再レプリケーションしないため、必要に応じて S3 バッチレプリケーションを使用してください。

参考資料

レプリケート元バケットには、AWS Key Management Service (AWS KMS) (SSE-KMS) キーを使用したサーバー側の暗号化で作成されたオブジェクトが含まれている場合があります。デフォルトでは、Amazon S3 はこれらのオブジェクトをレプリケートしません。オプションで、これらのオブジェクトをレプリケートするように Amazon S3 に指示できます。