{Glacier}Amazon S3 Glacier の開始方法

https://qiita.com/fkooo/items/9c49a084a1926def627b
https://dev.classmethod.jp/articles/glacier-instructions-001/


※インベントリ(アーカイブ一覧)取得やアーカイブダウンロードの処理の流れ

①該当のジョブタイプ(とアーカイブダウンロードの場合はアーカイブID)を指定してinitiate-jobを実行
②ジョブ完了を待つ。list-jobsで状況を確認できる
③ジョブが完了したらそのジョブIDを指定してget-job-outputを実行


S3 Glacier は、出力を取得する前にジョブを完了している必要があります。
ジョブは、完了から少なくとも 24 時間は有効です。
つまり、ジョブが完了してから 24 時間は、出力をダウンロードできます。

 

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

-- 1.2 jqインストール
sudo yum -y install jq


-- 2. ボールトを作成

aws glacier create-vault \
--account-id 999999999999 \
--vault-name vault01


aws glacier describe-vault \
--account-id 999999999999 \
--vault-name vault01

 

-- 3. ボールトにアーカイブをアップロードする

アーカイブとは、写真、動画、ドキュメントなど、ボールトに保存するオブジェクトを指します。これは、S3 Glacier のストレージの基本単位です。


echo test01 > test01.txt
echo test02 > test02.txt

aws glacier upload-archive \
--account-id 999999999999 \
--vault-name vault01 \
--body test01.txt \
--archive-description "test01.txt"


aws glacier upload-archive \
--account-id 999999999999 \
--vault-name vault01 \
--body test02.txt \
--archive-description "test02.txt"

aws glacier describe-vault --vault-name vault01 --account-id 999999999999

※ボールトのステータスは約 1 日 1 回更新されます。


-- 4. SNSトピック作成

aws sns list-topics
aws sns list-subscriptions

aws sns create-topic --name topic01

aws sns subscribe \
--topic-arn arn:aws:sns:ap-northeast-1:999999999999:topic01 \
--protocol email \
--notification-endpoint admin@example.com


-- 5. ボールト通知の設定

vim sns.json
{
  "SNSTopic": "arn:aws:sns:ap-northeast-1:999999999999:topic01",
  "Events": ["ArchiveRetrievalCompleted", "InventoryRetrievalCompleted"]
}

aws glacier set-vault-notifications \
--account-id 999999999999 \
--vault-name vault01 \
--vault-notification-config file://sns.json

 

aws glacier get-vault-notifications \
--account-id 999999999999 \
--vault-name vault01

 


-- 6. ボールトインベントリ(アーカイブ一覧)取得

最初のアーカイブをボールトにアップロードすると、Amazon S3 Glacier(S3 Glacier)により、
ボールトインベントリが自動的に作成され、インベントリが約 1 日 1 回のペースで更新されます。
S3 Glacier が最初のインベントリを作成した後、そのインベントリを取得できるようになるまで、通常半日から最大 1 日かかります。

アーカイブのアップロードがインベントリに反映されるまで1日程度待つ。

-- 6.1 アーカイブ一覧取得のジョブ実行
aws glacier initiate-job \
--account-id 999999999999 \
--vault-name vault01 \
--job-parameters '{"Type": "inventory-retrieval"}'

 

-- 6.2 ジョブ確認
aws glacier list-jobs --account-id 999999999999 --vault-name vault01

★ジョブが完了するまで6時間程度待つ。

-- 6.3 アーカイブ一覧取得
aws glacier get-job-output \
--account-id 999999999999 \
--vault-name vault01 \
--job-id='-aBkgbwQoxyguOhnyKnVX2JuP_1j44OCHsa7QMqUGIjjGwW7qs7QHmnssOmS7ZYHbOPTr5ypUCPN6-zJgveBPftXT1oe' \
archivelist.txt

cat archivelist.txt | jq

 

-- 7. ボールトからアーカイブをダウンロードする

迅速取り出しでアクセスしたデータは通常 1-5 分以内で使用可能になります。
標準取り出しを使用したアーカイブの取得は、通常 3-5 時間で完了します。
通常、大容量取り出しは 5-12 時間で完了します。


-- 7.1 アーカイブダウンロードのジョブ実行

vim a.json
{
  "Type": "archive-retrieval",
  "ArchiveId": "X8ibHLj5zoXW53i7gHvDs3c7J7qkwJLuuWTRgxCJcyNfJQ_aEIeErPB9k7ZCkZ8qE11igEtiTFAa0UmBO7V1qV49o-cMqXjSYldZYIiK-DlacWpZ0HxkbZGHpY67BJVqHfFpvPiXdA",
  "Description": "retrieval_20211125_001"
}


aws glacier initiate-job \
--account-id 999999999999 \
--vault-name vault01 \
--job-parameters file://a.json

 

-- 7.2 ジョブ確認
aws glacier list-jobs --account-id 999999999999 --vault-name vault01

★ジョブが完了するまで6時間程度待つ。

-- 7.3 アーカイブダウンロード
aws glacier get-job-output \
--account-id 999999999999 \
--vault-name vault01 \
--job-id='YMoCk3Iqqq4FonMEtuzfRkyD-JY4Sc4WXHp9fB-jFH1_shWkfcl4uqi5hu8IjARoh64s4k89WGsaDfPKzs7OP3LMNgWz' \
test11.txt

cat test11.txt


-- 8. ボールトからアーカイブを削除する

aws glacier delete-archive \
--account-id 999999999999 \
--vault-name vault01 \
--archive-id "X8ibHLj5zoXW53i7gmvDs3c7J7qkwJLuuWTRgxCJcyNfJQ_aEIeErPB4k7ZCkZ8qE11igEtiTFAa0UmBO7V1qV49o-cMqXjSYldZYIiK-DlacWpZ0HxkbZGHpY67BJVqHfFpvPiXdA"


アーカイブ削除がインベントリに反映されるまで1日程度待つ。

aws glacier describe-vault \
--account-id 999999999999 \
--vault-name vault01

 


-- 9. クリーンアップ

-- SNSトピック削除

aws sns unsubscribe --subscription-arn arn:aws:sns:ap-northeast-1:999999999999:topic01:11111111-2222-3333-4444-555555555555
aws sns delete-topic --topic-arn arn:aws:sns:ap-northeast-1:999999999999:topic01

aws sns list-topics
aws sns list-subscriptions


-- ボールトを削除

S3 Glacier では、最後にインベントリを計算した時点でボールト内にアーカイブがなく、
また、最後にインベントリを計算してからボールトへの書き込みがない場合にのみ、
ボールトを削除できます。


aws glacier delete-vault \
--account-id 999999999999 \
--vault-name vault01

aws glacier list-vaults \
--account-id 999999999999