高阶18 使用cloudformation 自动提取Glacier Vaults 到 S3

说实话,这个标题相当的绕,初学者估计都不知道在讲什么,先别急,先看使用场景是不是适合你,再决定自己需不需要看下去吧。 -- D.C

基本概念

首先理解一下基本概念:

如何理解?Glacier有两种数据概念,一种是Vaults,另一种是Archive。简单来说, object(文件)--[归档]-> archive --[集合]--> Vaults。 Vautls是便于存放管理不同archive集合的容器。

如何使用vaults

创建一个Vaults

在主控制台搜索 Glacier 就可以找到对应界面,然后点击 Create Vaults就能创建多个Vaults。

create_vaults

或者,用 sdk 支持Java,.Net,REST,CLI。

上传数据

可以使用 AWS CLI 或者SDK。示例教程

注意,上传以后,我去console是看不到有文件的,因为Vaults一天刷新一次,所以要过段时间才能看到下面有多少个archive。

see_vaults

检索数据

其实是检索 metadata, 文档

aws glacier describe-vault --vault-name awsexamplevault --account-id 111122223333

恢复数据到本地

参考 文档

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

$ aws glacier describe-job --vault-name awsexamplevault --account-id 111122223333 --job-id *** jobid ***

{
    "InventoryRetrievalParameters": {
        "Format": "JSON"
    },
    "VaultARN": "*** vault arn ***",
    "Completed": false,
    "JobId": "*** jobid ***",
    "Action": "InventoryRetrieval",
    "CreationDate": "*** job creation date ***",
    "StatusCode": "InProgress"
}       

恢复数据到S3(数据不出云)

这里其实就是本文的 重点 了,会用到 cloudformation的一键部署。具体步骤如下

create_vaults

set_vaults

GlacierArchiveID,FileName
WVfrXME2KC6JIedfadJF937412-e,mydata1.txt
yLam5H76JXYSKKIY34404D-Kwcrk,myfolder/mydata2.txt
...

庞大的集成能力

最后不得不感叹下AWS服务的强大集成能力,严格而标准的API接口,使得规模化的服务集成成为可能,而且还要保证稳定性,从这一点上看,目前市面上还没有出现够格的挑战者。让我们欣赏下这个cf模板背后“庞大”的结构。 这个庞大只是针对我这种小白来说,在真正的高科技企业内部,也许连渺小都不够格。

cf_structure

躬身入局,胜过摇旗呐喊千倍万倍。