如何在 Amazon S3 Glacier 存储类或 Amazon S3 Glacier 文件库中存储的对象上运行选择查询?
上次更新日期:2021 年 1 月 5 日
我想要在我使用 Amazon Simple Storage Service Glacier (Amazon S3 Glacier) 存储类存储的对象上运行选择查询。或者,我想在我已存档在 Amazon S3 Glacier 文件库中的对象上运行选择查询。如何使用 AWS 命令行界面 (AWS CLI) 运行此选择查询?
解决方法
Amazon S3 Glacier 存储类
按照以下步骤使用 AWS CLI 在 Amazon S3 Glacier 存储类中存储的对象上运行选择查询:
注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
1. 使用 restore-object AWS CLI 命令的参数创建 JSON 文件。请务必包含以下参数:
对于表达式参数,输入选择查询。
对于 OutputLocation 参数,输入您希望将查询结果存储到的 S3 位置。
例如,下面的 JSON 文件将运行查询 SELECT * FROM object。然后,它将查询结果发送到 S3 位置 docexamplebucket/outputJob:
{
"Type": "SELECT",
"Tier": "Standard",
"SelectParameters": {
"InputSerialization": {
"CSV": {
"FileHeaderInfo": "USE"
}
},
"ExpressionType": "SQL",
"Expression": "SELECT * FROM object",
"OutputSerialization": {
"CSV": {}
}
},
"OutputLocation": {
"S3": {
"BucketName": "docexamplebucket",
"Prefix": "outputJob",
"StorageClass": "STANDARD"
}
}
}
注意:此示例仅包含必需的参数。
>2. 运行 restore-object 命令并指定您要创建的 JSON 文件作为 -restore-request 值:
$ aws s3api restore-object --bucket docexamplebucket --key file.csv --restore-request file://restoreJob.json
3. 运行命令后,您将会收到选择查询结果存储到的 S3 位置。此输出类似于以下内容:
{
"RestoreOutputPath": "outputJob/example_iNHt-0sE2cqt8ZtwNdE1nHi7nKzRaIWLyzzcsW4QWIUaHduHVReDDdavy-aLfEdnD6ql3AR8s4f4oZzhdhBg/"
}
如果关于查询输出的更多信息,请参阅选择输出。
Amazon S3 Glacier 文件库
按照以下步骤使用 AWS CLI 在 Amazon S3 Glacier 文件库中存档的对象上运行选择查询:
1. 使用 initiate-job AWS CLI 命令的参数创建 JSON 文件。请务必包含以下参数:
对于表达式参数,输入选择查询。
对于 OutputLocation 参数,输入您希望将查询结果存储到的 S3 位置。
例如,下面的 JSON 文件将运行查询 SELECT * FROM archive。然后,它将查询结果发送到 S3 位置 docexamplebucket/outputJobGlacier:
{
"Type": "SELECT",
"ArchiveId": "example_QpOx5CphSp5VY8Jbhkmd1-TyIF5KFr_VYDAyyqb0n5r5i5_CBVKY0F0OfwzbsWrewjIJ1Kd1d9Tgp97C$",
"Tier": "Standard",
"SelectParameters": {
"InputSerialization": {
"csv": {
"FileHeaderInfo": "USE"
}
},
"ExpressionType": "SQL",
"Expression": "SELECT * FROM archive",
"OutputSerialization": {
"csv": {}
}
},
"OutputLocation": {
"S3": {
"BucketName": "docexamplebucket",
"Prefix": "outputJobGlacier",
"StorageClass": "STANDARD"
}
}
}
注意:此示例仅包含必需的参数。
2. 运行 initiate-job 命令并指定您创建的 JSON 文件作为 --job-parameters 值:
$ aws glacier initiate-job --account-id 111122223333 --vault-name docexamplevault --job-parameters file://restoreJobGlacier.json
3. 运行命令后,您将会收到响应,其中包括查询结果存储到的 S3 位置 (jobOutputPath)。此输出类似于以下内容:
{
"jobOutputPath": "outputJobGlacier/example_N4Zpv9bExi9TCv1gSSwWUhsK-371E9KBCFlAEMSnD2Gzq4GXhaT4aK7Gj8_s-jAn4aAvMNgUEbhTlxUfNYT9/",
"location": "/111122223333/vaults/docexamplevault/jobs/example_N4Zpv9bExi9TCv1gSSwWUhsK-371E9KBCFlAEMSnD2Gzq4GXhaT4aK7Gj8_s-jAn4aAvMNgUEbhTlxUfNYT9",
"jobId": "example_N4Zpv9bExi9TCv1gSSwWUhsK-371E9KBCFlAEMSnD2Gzq4GXhaT4aK7Gj8_s-jAn4aAvMNgUEbhTlxUfNYT9"
}
如果关于查询输出的更多信息,请参阅 Glacier 选择输出。