この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
S3 バケットのレプリケーション設定を有効にしています。レプリケーション元のオブジェクトに削除マーカーを付与した場合、レプリケーション先のオブジェクトにも削除マーカーは付与されるかどうかが分かりません。
どう対応すればいいの?
レプリケーション元のオブジェクトに削除マーカーを付与した場合の挙動は、レプリケーション設定によって挙動が異なります。 レプリケーション設定は、最新バージョン、及び、V1 が存在します。
レプリケーション設定の見分け方
AWS CLI コマンドで以下のコマンドを実行します。
aws s3api get-bucket-replication --bucket <バケット名>
結果に Filter 要素、または、DeleteMarkerReplication 要素があれば、最新バージョンのレプリケーション設定です。
最新バージョンのレプリケーション設定の場合
{
"ReplicationConfiguration": {
"Role": "arn:aws:iam::<アカウントID>:role/service-role/",
"Rules": [
{
"ID": "rule02",
"Priority": 2,
"Filter": {
"Tag": {
"Key": "<タグのキー>",
"Value": "<タグの値>"
}
},
"Status": "Enabled",
"Destination": {
"Bucket": "<レプリケーション先バケット名>"
},
"DeleteMarkerReplication": {
"Status": "Disabled"
}
},
{
"ID": "rule01",
"Priority": 1,
"Filter": {
"Prefix": "<プレフィックス名>"
},
"Status": "Enabled",
"Destination": {
"Bucket": "<レプリケーション先バケット名>"
},
"DeleteMarkerReplication": {
"Status": "Disabled"
}
}
]
}
}
V1 のレプリケーション設定の場合
{
"ReplicationConfiguration": {
"Role": "arn:aws:iam::<アカウントID>:role/service-role/",
"Rules": [
{
"ID": "OTY0MGJhY2MtNGQyYy00MDkyLWI3OWUtZTE3YzI5YEXAMPLE",
"Prefix": "<プレフィックス名>",
"Status": "Enabled",
"Destination": {
"Bucket": "arn:aws:s3:::<レプリケーション先バケット名>"
}
}
]
}
}
最新バージョンのレプリケーション設定の場合
レプリケーション元のオブジェクトに削除マーカーを付与した場合、レプリケーション先のオブジェクトには削除マーカーをレプリケートしません。
V1 のレプリケーション設定を使用した場合
レプリケーション元のオブジェクトに削除マーカーを付与した場合、レプリケーション先のオブジェクトには削除マーカーをレプリケートします。
補足情報
現在では、マネジメントコンソールでレプリケーション設定を行った場合は、最新バージョンのレプリケーション設定が設定されます。
V1 のレプリケーション設定を行いたい場合は、AWS CLI コマンド put-bucket-replication
にて V1 のレプリケーション設定に沿った json ファイルを指定する必要があります。
実行例
実行コマンド
aws s3api put-bucket-replication \
--bucket <バケット名> \
--replication-configuration file://replication.json
replicaton.json ファイル
{
"Role": "arn:aws:iam::<アカウントID>:role/service-role/",
"Rules": [
{
"Status": "Enabled",
"Prefix": "<プレフィックス名>",
"Destination": {
"Bucket": "arn:aws:s3:::<レプリケーション先バケット名>"
}
}
]
}
参考情報
Amazon S3 は何をレプリケートしますか - Amazon Simple Storage Service