Amazon Glacierの一通りの流れ

##目的
S3のライフサイクルポリシーでGlacierに移動することはあるが、直接Glacierをさわることがあまりないので再度やってみる。
S3のライフサイクルポリシーでGlacierに移動した場合は、Glacierのコンソールから操作できず、S3のコンソールから操作することになる。

Glacierのコンソール操作は、Vaultの作成、削除が可能
その他、アーカイブのダウンロードや削除はCLIかAPI経由で実施する必要がある
それぞれの操作は、数時間かかるものもある
https://docs.aws.amazon.com/amazonglacier/latest/dev/downloading-an-archive.html

##Glacierで使用する用語
ボールト
ボールトは、アーカイブを格納するコンテナ
https://docs.aws.amazon.com/ja_jp/amazonglacier/latest/dev/working-with-vaults.html

アーカイブ
写真、動画、ドキュメントなど、ボールトに格納するオブジェクト
https://docs.aws.amazon.com/ja_jp/amazonglacier/latest/dev/working-with-archives.html

インベントリ
ボールトの情報が格納されている
Amazon Glacier はボールトインベントリを約 1 日 1 回のペースで更新される

ジョブ

>
ジョブ
Amazon Glacier ジョブを開始して、アーカイブに SELECT クエリを実行したり、アーカイブを取得したり、またはボールトインベントリを取得することができます。
以下は、Amazon Glacier ジョブのタイプです。
select— アーカイブに SELECT クエリを実行。
archive-retrieval— アーカイブを取得。
inventory-retrieval— ボールトのインベントリ。

https://docs.aws.amazon.com/ja_jp/amazonglacier/latest/dev/amazon-glacier-supported-operations.html

##流れ
ボールトの作成(管理コンソール/CLI/API)※即時完了
アーカイブの登録(CLI/API)
アーカイブのダウンロード(CLI/API)
アーカイブの削除(CLI/API)
ボールトの削除(管理コンソール/CLI/API)※即時完了

###ボールト作成
![image.png](https://qiita-image-store.s3.amazonaws.com/0/78184/4ead1a4e-6f10-6081-ce3d-b8b263468478.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/78184/64815953-45f2-1cc1-17a0-33d4dabea558.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/78184/7e2366dd-8fec-d1b0-6544-1a118c27a8bd.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/78184/1294cb59-d459-590a-1195-1ae3865ca4d0.png)

ここまでは待ち時間なく終わる

###アーカイブの登録

アーカイブとして、CloudFormationのYamlファイルを登録する

```yaml:test.yml

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  SecurityGroupB:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: vpc-26505643
      GroupDescription: SecurityGroupB
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '80'
        ToPort: '80'
        CidrIp: 0.0.0.0/0
  SecurityGroupC:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: vpc-26505643
      GroupDescription: SecurityGroupC
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '22'
        ToPort: '22'
        CidrIp: 172.0.0.0/32
```

aws glacier upload-archiveコマンドでファイルをアップロードする

```
$ aws glacier upload-archive --account-id - --vault-name sample-vault --body test.yaml 
{
    "archiveId": "85L5vbNDcG7IxIC32_aXfDxoN8WFNkX7qM1XtKvdQhHvbeOlv_brvdS6QysS2oQANkz5bGSYt45bF3uG4WFBNnkYLM3BLeLjMCqTO1Fgi1tu8dYXKqJSJWIE2p0pv_uiM_ckBclsMA",
    "checksum": "069ea4906c8c23a7f9a2e87ef6c3c104a10921ed794933d8d874133d7a3f9f6f",
    "location": "/*******/vaults/sample-vault/archives/85L5vbNDcG7IxIC32_aXfDxoN8WFNkX7qM1XtKvdQhHvbeOlv_brvdS6QysS2oQANkz5bGSYt45bF3uG4WFBNnkYLM3BLeLjMCqTO1Fgi1tu8dYXKqJSJWIE2p0pv_uiM_ckBclsMA"
}
```

Glacierのコンソールに表示されるのに数時間がかかる
archiveIdを控えておく。ダウンロードする際に必要となる。

####archiveIDを忘れた場合は、インベントリから取得する。

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

インベントリからarchiveidを確認

```
aws glacier get-job-output --account-id - --vault-name sample-vault --job-id q14SmZRD91RxroYz08Ck6STEB9yTagRp40a7MMFgz5QGJuo9GweKAHSTZlbWjRDijFM7R9Eh5axgmAJpAm5NSYSNJANq output.json
```

```
cat output.json 
{"VaultARN":"arn:aws:glacier:ap-northeast-1:******:vaults/sample-vault","InventoryDate":"2017-03-11T12:17:12Z","ArchiveList":[{"ArchiveId":"85L5vbNDcG7IxIC32_aXfDxoN8WFNkX7qM1XtKvdQhHvbeOlv_brvdS6QysS2oQANkz5bGSYt45bF3uG4WFBNnkYLM3BLeLjMCqTO1Fgi1tu8dYXKqJSJWIE2p0pv_uiM_ckBclsMA","ArchiveDescription":"","CreationDate":"2017-03-11T07:48:53Z","Size":629,"SHA256TreeHash":"5d088045dde3c9025e2a7ab9433834e9119cb2c41a03d6b3e49641145e444233"}]}
```

###アーカイブのダウンロード

```
$ cat archive.json 
{
  "Type": "archive-retrieval",
  "ArchiveId": "85L5vbNDcG7IxIC32_aXfDxoN8WFNkX7qM1XtKvdQhHvbeOlv_brvdS6QysS2oQANkz5bGSYt45bF3uG4WFBNnkYLM3BLeLjMCqTO1Fgi1tu8dYXKqJSJWIE2p0pv_uiM_ckBclsMA",
  "Description": "download"
}
```

```
aws glacier initiate-job --account-id - --vault-name sample-vault --job-parameters file://archive.json
```

```
aws glacier list-jobs --account-id - --vault-name sample-vault
        {
            "ArchiveSHA256TreeHash": "069ea4906c8c23a7f9a2e87ef6c3c104a10921ed794933d8d874133d7a3f9f6f",
            "JobDescription": "download",
            "ArchiveSizeInBytes": 562,
            "Tier": "Standard",
            "StatusCode": "Succeeded",
            "VaultARN": "arn:aws:glacier:ap-northeast-1:******:vaults/sample-vault",
            "StatusMessage": "Succeeded",
            "CompletionDate": "2018-11-18T06:19:15.468Z",
            "Completed": true,
            "SHA256TreeHash": "069ea4906c8c23a7f9a2e87ef6c3c104a10921ed794933d8d874133d7a3f9f6f",
            "JobId": "0042iEYqslXqASauSliWh-fUK4ryR3ESBE0allQJlMVSukZCXesyhOy5V0ekXtHIWppFsn2rDaHzk-mWsIm8M5lCx_wu",
            "ArchiveId": "85L5vbNDcG7IxIC32_aXfDxoN8WFNkX7qM1XtKvdQhHvbeOlv_brvdS6QysS2oQANkz5bGSYt45bF3uG4WFBNnkYLM3BLeLjMCqTO1Fgi1tu8dYXKqJSJWIE2p0pv_uiM_ckBclsMA",
            "RetrievalByteRange": "0-561",
            "Action": "ArchiveRetrieval",
            "CreationDate": "2018-11-18T02:31:07.857Z"
        }

```

Statusがコンプリートになっていること
JobIDを確認する

ダウンロードする

```
aws glacier get-job-output --account-id - --vault-name sample-vault --job-id 0042iEYqslXqASauSliWh-fUK4ryR3ESBE0allQJlMVSukZCXesyhOy5V0ekXtHIWppFsn2rDaHzk-mWsIm8M5lCx_wu sample.yaml
{
    "acceptRanges": "bytes",
    "checksum": "069ea4906c8c23a7f9a2e87ef6c3c104a10921ed794933d8d874133d7a3f9f6f",
    "contentType": "application/octet-stream",
    "status": 200
}
```

```yaml:sample.yaml 
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  SecurityGroupB:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: vpc-26505643
      GroupDescription: SecurityGroupB
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '80'
        ToPort: '80'
        CidrIp: 0.0.0.0/0
  SecurityGroupC:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: vpc-26505643
      GroupDescription: SecurityGroupC
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '22'
        ToPort: '22'
        CidrIp: 172.0.0.0/32
```


###アーカイブの削除

```
aws glacier delete-archive --account-id - --vault-name 'sample-vault' --archive-id 85L5vbNDcG7IxIC32_aXfDxoN8WFNkX7qM1XtKvdQhHvbeOlv_brvdS6QysS2oQANkz5bGSYt45bF3uG4WFBNnkYLM3BLeLjMCqTO1Fgi1tu8dYXKqJSJWIE2p0pv_uiM_ckBclsMA
```
インベントリに反映されるのは最大1日かかる

###ボールト削除

GUIで実施

##お約束

投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。