【AWS】S3 Glacier アーカイブの削除からボールトの削除(Win)


負の遺産を整理するために仕方なくAWSをコマンドラインから操作した記録です。

とても丁寧な取説が用意されているんですが、とにかく初級者には敷居が高い。
そもそものAWSの仕組みを理解していないので厳しいものがありました。

手順は↓こんな感じで、ひとつずつ見ていきましょう。

1.AWS CLI(Ver2)をインストール
2.ユーザと認証キーの作成
3.セットアップ
4.Glacierのジョブの開始
5.アーカイブリストの取得
6.アーカイブの削除
7.ボールトの削除

1.AWS CLI(Ver2)をインストール

これは難しいことはありません。
インストーラーをダウンロードしてインストールするだけです。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html

バージョンが1と2がありましたが2を選びました。理由は特にありません。

2.ユーザと認証キーの作成

まずコマンドラインを使うためにユーザが必要です。
↓未作成の場合はここで作成します。
https://console.aws.amazon.com/iam/home#/users

私の場合はすでに複数のユーザがあったのでフルアクセス権限の付与されたユーザを使うことにしました。

ユーザが作成出来たらそのユーザの認証キーを作成します。

ユーザ名をクリックした先の「認証情報タブ」に行き「アクセスキーの作成」をクリックします。
ポップアップが開きアクセスキーが表示されますが、必要なキー情報はポップアップを閉じると閲覧できなくなってしまうので控えておきましょう。

3.セットアップ

コマンドプロンプトを開き、初期設定をするため下記のコマンドを打ちます。

$ aws configure

すると認証キーを求められるので以下順番に入力していきます。

AWS Access Key ID [None]: xxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

4.Glacierのジョブの開始

セットアップが完了したらジョブを開始します。

aws glacier initiate-job --vault-name xxxxx --account-id xxxxx --job-parameters '{"Type": "inventory-retrieval"}'

--vault-nameは対象のボールトの名前で、--account-idはログイン後のアカウント名のプルダウンに記載があります。

ジョブの開始コマンドを打ってから3~4時間くらい待たないとジョブが開始されません。
今回の一連の作業ではコマンド打った後の処理がどれも時間がかかるため、計画的なご利用を推奨します。

5.アーカイブリストの取得

ジョブを開始して3~4時間くらいたつとようやく色々コマンドが叩けます。
ボールトは空じゃないと削除できないので、まずはアーカイブを削除するためにアーカイブのリストを取得します。

aws glacier get-job-output --vault-name xxxxx --account-id xxxxx --job-id xxxxx output.json

上記コマンドを打つと所定のディレクトリ(私の場合はC:\Users[User])に「output.json」というファイルが生成されます。
中身は↓こんな感じです。
※ジョブが開始されていないとエラーが返されます。


{
"VaultARN":"arn:aws:glacier:region:111122223333:vaults/awsexamplevault",
"InventoryDate":"*** job completion date ***",
"ArchiveList":[
{"ArchiveId":"*** archiveid ***",
"ArchiveDescription":*** archive description (if set) ***,
"CreationDate":"*** archive creation date ***",
"Size":"*** archive size (in bytes) ***",
"SHA256TreeHash":"*** archive hash ***"
}
{"ArchiveId":
...
]}

6.アーカイブの削除

output.jsonに記載されているArchiveIdを使ってアーカイブ削除のコマンドを打ちます。

aws glacier delete-archive --vault-name xxxxx --account-id xxxxx --archive-id xxxxx

※--archive-idは「-」とか「=」で始まる文字列の場合があり、コマンドではじかれるので「'」で括ってあげると良いです。

うまくいくと何も起きません。(レスポンスはありません)
で、ここでも時間がかなりかかります。
私の場合はコマンド打ってから実際にアーカイブが削除されるまで5時間くらいかかりました

7.ボールトの削除

コマンドでもいけるようですが管理画面で対象のボールトを選択肢て削除しました。

以上かなり恐る恐る操作しましたがなんとか削除することができました。
この手の引継ぎ資料はちゃんと用意しましょうね。