LoginSignup
2
2

More than 5 years have passed since last update.

S3でDeleteMarkerの付いたファイルを取得する

Last updated at Posted at 2015-11-13

S3のVersioningを有効にしていると,aws s3 rmとかやっても実体は削除されておらず,削除済みという目印(DeleteMarker)が付いた状態になります.

この状態で当該ファイルを取ろうとしても

uraura@rosemary$ aws s3api get-object --bucket target-bucket --key db.dump.gz ./db.dump.gz

A client error (NoSuchKey) occurred when calling the GetObject operation: The specified key does not exist.

と,悲しい思いをします.(まぁ削除したんだから当然ですね...)

そこで,DeleteMarkersの付いてないバージョンを調べます.

uraura@rosemary$ aws s3api list-object-versions --bucket target-bucket --prefix db.dump.gz
{
    "DeleteMarkers": [
        {
            "Owner": {
                "DisplayName": "admin",
                "ID": "87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7"
            },
            "IsLatest": true,
            "VersionId": "uZALiONs1lXzsJBvjv.jgnLSdBrHfCox",
            "Key": "db.dump.gz",
            "LastModified": "2015-10-30T17:55:38.000Z"
        }
    ],
    "CommonPrefixes": [],
    "Versions": [
        {
            "LastModified": "2015-09-30T17:55:30.000Z",
            "VersionId": "b8O0kCjQYrPvtMNXTGRayqRe.U11dxzx",
            "ETag": "\"712fe04afa2e31dee3583dc6586bf74a-11\"",
            "StorageClass": "STANDARD",
            "Key": "db.dump.gz",
            "Owner": {
                "DisplayName": "admin",
                "ID": "87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7"
            },
            "IsLatest": false,
            "Size": 80885743
        }
    ]
}

この場合は"VersionId": "b8O0kCjQYrPvtMNXTGRayqRe.U11dxzx"でよさそうですのでバージョンまで指定して呼びだしてやりましょう.

uraura@rosemary$ aws s3api get-object --bucket target-bucket --key db.dump.gz --version-id b8O0kCjQYrPvtMNXTGRayqRe.U11dxzx ./db.dump.gz
{
    "AcceptRanges": "bytes",
    "ContentType": "binary/octet-stream",
    "LastModified": "Wed, 30 Sep 2015 17:55:30 GMT",
    "ContentLength": 80885743,
    "VersionId": "b8O0kCjQYrPvtMNXTGRayqRe.U11dxzx",
    "ETag": "\"712fe04afa2e31dee3583dc6586bf74a-11\"",
    "Metadata": {}
}

まとめ

aws s3apiってあんまり使ってなかったけど便利やん

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2