View a markdown version of this page

POST Object restore - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

POST Object restore

说明

此操作执行以下类型的请求:

  • select:对归档的对象执行 select 查询

  • restore an archive:还原归档的对象

要使用此操作,您必须拥有执行 s3:RestoreObjects3:GetObject 操作的权限。存储桶拥有者默认拥有此权限,并可以将此权限授予他人。有关权限的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的与存储桶子资源操作相关的权限管理对 Amazon S3 资源的访问权限

使用 Select 请求查询归档

您可以使用 select 类型的请求对归档的对象执行 SQL 查询。要由 select 请求查询的归档对象必须格式化为未压缩的逗号分隔值(CSV)文件。您可以针对归档的数据运行查询和自定义分析,而无需将数据还原到较热的 Amazon S3 层。有关 select 请求的概述,请参阅《Amazon Simple Storage Service 用户指南》中的查询归档对象

在发出 select 请求时,请执行以下操作:

  • 为 select 查询的输出定义输出位置。此位置必须是一个 Amazon S3 存储桶,与包含要查询的归档对象的存储桶位于同一 Amazon Web Services 区域。启动作业的 Amazon Web Services 账户必须拥有写入 S3 存储桶的权限。您可以为存储在存储桶中的输出对象指定存储类别和加密。有关输出的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的查询归档对象

    有关请求正文中 S3 结构的更多信息,请参阅以下内容:

  • 在请求正文的 SelectParameters 结构中为查询的 SELECT 还原类型定义 SQL 表达式。您可以使用类似以下示例的表达式。

    • 下面的表达式返回指定对象中的所有记录。

      SELECT * FROM Object
    • 假设您没有对存储在对象中的数据使用任何标头,则可以使用位置标头指定列。

      SELECT s._1, s._2 FROM Object s WHERE s._3 > 100
    • 如果您具有标头并且在请求正文的 CSV 结构中将 fileHeaderInfo 设置为 USE,则可以在查询中指定标头。(如果将 fileHeaderInfo 字段设置为 IGNORE,则查询会跳过第一行。) 您无法将序号位置与标题列名混合。

      SELECT s.Id, s.FirstName, s.SSN FROM S3Object s

有关将 SQL 与 Amazon Glacier Select 还原结合使用的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 Select 和 Amazon Glacier Select 的 SQL 参考

在发出 select 请求时,您还可以执行以下操作:

  • 要加快您的查询,请指定 Expedited 层。有关层的更多信息,请参阅本主题后面的“还原归档”。

  • 指定有关要查询的输入对象和 CSV 编码查询结果序列化的数据序列化格式的详细信息。

以下是有关 select 功能的其它重要信息:

  • 输出结果为新的 Amazon S3 对象。与归档检索不同,这些对象会一直存储,直至通过手动方式或生命周期策略进行显式删除。

  • 您可以对同一 Amazon S3 对象发出多个 select 请求。Amazon S3 不会删除重复的请求,因此请避免发出重复的请求。

  • 即使对象已经还原,Amazon S3 也会接受 select 请求。select 请求不会返回错误响应 409

还原归档

GLACIER 和 DEEP_ARCHIVE 存储类别中的对象已归档。要访问归档的对象,您必须先发起还原请求。这会还原归档对象的临时副本。在还原请求中,指定您希望还原的副本存在的天数。‌指定期限过后,Amazon S3 会删除临时副本,但对象仍会以原先还原时所处的 GLACIER 或 DEEP_ARCHIVE 存储类别进行归档。

要还原特定的对象版本,您可以提供版本 ID。如果您未提供版本 ID,Amazon S3 将还原当前版本。

完成还原作业所需的时间取决于从哪个存储类别还原对象以及您指定的数据访问层。

还原归档对象(或使用 select 请求)时,您可以在请求正文的 Tier 元素中指定以下数据访问层选项之一:

  • Expedited:加速检索可让您在偶尔需要紧急请求归档的子集时,快速访问存储在 GLACIER 存储类别中的数据。对于除最大型归档对象(250 MB+)之外的所有其它归档,使用加速检索访问的数据通常在 1 到 5 分钟内提供。预配置容量确保在您需要时,可以使用针对加速检索的检索容量。DEEP_ARCHIVE 存储类别不提供加速检索和预调配容量。

  • Standard - 标准检索允许您在数小时内访问您的任何存档对象。这是未指定检索选项的 GLACIER 和 DEEP_ARCHIVE 检索请求的默认选项。从 GLACIER 存储类别完成标准检索通常需要 3-5 小时,从 DEEP_ARCHIVE 存储类别进行标准检索通常会在 12 小时内完成。

  • Bulk:批量检索是 Amazon Glacier 的成本最低的检索选项,使您能够在一天内以较低的成本检索大量(甚至是 PB 级)的数据。从 GLACIER 存储类别完成批量检索通常需要 5-12 小时,从 DEEP_ARCHIVE 存储类别进行批量检索通常会在 48 小时内完成。

有关 Expedited 数据访问的归档检索选项和预调配容量的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的还原已归档的对象

您可以使用 Amazon S3 还原速度升级,以便在还原进行期间将还原速度更改为更快的速度。通过向同一对象发出另一个还原请求并设置新的 Tier 请求元素,可以提升正在进行的还原的速度。在发出升级还原层的请求时,您必须选择比正在进行的还原所使用的层更快的层。您不得更改任何其他参数,如 Days 请求元素。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的升级正在进行的还原的速度

要获取对象还原的状态,您可以发送 HEAD 请求。操作会在响应中返回 x-amz-restore 标头,该标头提供有关还原状态的信息。您可以使用 Amazon S3 事件通知在还原启动或完成时通知您。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的配置 Amazon S3 事件通知

还原归档对象后,您可以通过重新发出具有新时段的请求来更新还原时段。Amazon S3 会相对于当前时间更新还原期限,并且仅针对该请求收费,而不收取数据传输费用。当 Amazon S3 正在处理您当前对该对象的还原请求时,您无法更新还原期限。

如果存储桶的生命周期配置带有包含过期操作的规则,则对象过期时间将覆盖您在还原请求中指定的生命期。例如,如果您将对象副本的还原期限设为 10 天,但该对象计划在 3 天后过期,则 Amazon S3 会在 3 天后删除该对象。有关生命周期配置的更多信息,请参阅 PutBucketLifecycleConfiguration 和《Amazon Simple Storage Service 用户指南》中的对象生命周期管理

请求

语法

POST /ObjectName?restore&versionId=VersionID HTTP/1.1 Host: BucketName.s3.amazonaws.com Date: date Authorization: authorization string (see 对请求进行身份验证(Amazon 签名版本 4)) Content-MD5: MD5 request body
注意

语法显示了一些请求标头。有关完整列表,请参阅本主题后面的“请求标头”。

请求参数

此操作的实施不使用请求参数。

请求标头

名称 描述 必填
Content-MD5

数据的 base64 编码的 128 位 MD5 摘要。您必须将此标头用作消息完整性检查,以验证请求正文在传输过程中是否未损坏。有关更多信息,请参阅 RFC 1864

类型:字符串

默认值:无

请求元素

以下是用于还原归档的请求正文的 XML 示例。

<RestoreRequest> <Days>2</Days> <GlacierJobParameters> <Tier>Bulk</Tier> </GlacierJobParameters> </RestoreRequest>

下表说明了请求正文中用于还原归档的 XML。

名称 描述 必填
RestoreRequest

还原信息的容器。

类型:容器

Days

已还原(活动)副本的生命周期。您可以从 Amazon Glacier 还原对象的最少天数为 1。在对象副本达到指定的生命周期后,Amazon S3 会将其从存储桶中移除。如果要还原归档,则此元素是必需的。

请勿在 SELECT 类型的请求中使用此元素。

类型:正整数

原级:RestoreRequest

是,如果还原归档
GlacierJobParameters

S3 Glacier 存储类别作业参数的容器。

请勿在 SELECT 类型的请求中使用此元素。

类型:容器

原级:RestoreRequest

Tier

还原归档时要使用的数据访问层。Standard 是默认值。

类型:Enum

有效值:Expedited |Standard |Bulk

原级:GlacierJobParameters

以下 XML 是对归档的对象进行 select 查询的请求正文:

<RestoreRequest> <Type>SELECT</Type> <Tier>Expedited</Tier> <Description>Job description</Description> <SelectParameters> <Expression>Select * from Object</Expression> <ExpressionType>SQL</ExpressionType> <InputSerialization> <CSV> <FileHeaderInfo>IGNORE</FileHeaderInfo> <RecordDelimiter>\n</RecordDelimiter> <FieldDelimiter>,</FieldDelimiter> <QuoteCharacter>"</QuoteCharacter> <QuoteEscapeCharacter>"</QuoteEscapeCharacter> <Comments>#</Comments> </CSV> </InputSerialization> <OutputSerialization> <CSV> <QuoteFields>ASNEEDED</QuoteFields> <RecordDelimiter>\n</RecordDelimiter> <FieldDelimiter>,</FieldDelimiter> <QuoteCharacter>"</QuoteCharacter> <QuoteEscapeCharacter>"</QuoteEscapeCharacter> </CSV> </OutputSerialization> </SelectParameters> <OutputLocation> <S3> <BucketName>Name of bucket</BucketName> <Prefix>Key prefix</Prefix> <CannedACL>Canned ACL string</CannedACL> <AccessControlList> <Grantee> <Type>Grantee Type</Type> <ID>Grantee identifier</ID> <URI>Grantee URI</URI> <Permission>Granted permission</Permission> <DisplayNmae>Display Name</DisplayName> <EmailAddress>email</EmailAddress> </Grantee> </AccessControlList> <Encryption> <EncryptionType>Encryption type</EncryptionType> <KMSKeyId>KMS Key ID</KMSKeyId> <KMSContext>Base64-encoded JSON<KMSContext> </Encryption> <UserMetadata> <MetadataEntry> <Name>Key</Name> <Value>Value</Value> </MetadataEntry> </UserMetadata> <Tagging> <TagSet> <Tag> <Key>Tag name</Key> <Value>Tag value</Value> </Tag> </TagSet> </Tagging> <StorageClass>Storage class</StorageClass> </S3> </OutputLocation> </RestoreRequest>

下表说明了请求正文中用于 SELECT 还原类型的 XML。

名称 描述 必填
RestoreRequest

还原信息的容器。

类型:容器

Tier

还原归档时要使用的数据访问层。Standard 是默认值。

类型:Enum

有效值:Expedited |Standard |Bulk

原级:RestoreRequest

Description

请求的可选描述。

类型:字符串

原级:RestoreRequest

SelectParameters

描述 select 作业请求的参数。

类型:容器

原级:RestoreRequest

是,如果请求类型是 SELECT
OutputLocation

描述用于接收 select 还原请求结果的位置。

类型:Amazon S3 的容器

原级:RestoreRequest

是,如果请求类型是 SELECT
SelectParameters 容器元素包含以下元素。
名称 描述 必填
Expression

SQL 表达式。例如:

  • 以下 SQL 表达式从以 CSV 格式存储的对象中检索第一列数据:

    SELECT s._1 FROM Object s

  • 以下 SQL 表达式返回对象中的所有内容:

    SELECT * FROM Object

类型:字符串

原级:SelectParameters

ExpressionType

标识表达式类型。

类型:字符串

有效值:SQL

原级:SelectParameters

InputSerialization

描述对象的序列化格式。

类型:CSV 的容器

原级:SelectParameters

OutputSerialization

描述如何序列化 select 任务的结果。

类型:CSV 的容器

原级:SelectParameters

InputSerialization 元素中的 CSV 容器元素包含以下元素。
名称 描述 必填
RecordDelimiter

用于分隔输入中各个记录的单个字符。您可以指定任意分隔符,而不是默认值。

类型:字符串

默认:\n

原级:CSV

FieldDelimiter

用于分隔记录中各个字段的单个字符。您可以指定任意分隔符。

类型:字符串

默认:,

原级:CSV

QuoteCharacter

当字段分隔符是值的一部分时,用于转义的单个字符。

考虑 CSV 文件中的以下示例:

"a, b"

用引号将值括起来,可使该值成为单个字段。如果不使用引号,则逗号是字段分隔符(这使其成为两个单独的字段值,a 和 b)。

类型:字符串

默认:"

原级:CSV

QuoteEscapeCharacter

用于对已转义值内的引号字符进行转义的单个字符。例如,值 """ a , b """ 解析为 " a , b "

类型:字符串

默认:"

原级:CSV

FileHeaderInfo

描述输入数据中的第一行。它是 ENUM 值之一。

  • NONE:第一行不是标题。

  • IGNORE:第一行是标题,但不能使用标题值来指示表达式中的列。您可以使用列位置(例如 _1、_2、...)来指示列 (SELECT s._1 FROM OBJECT s)。

  • Use:第一行是标题,您可以使用标题值来标识表达式 (SELECT "name" FROM OBJECT) 中的列。

类型:Enum

有效值:NONE | USE | IGNORE

原级:CSV

Comments

单个字符,用于指示在行的开头出现该字符时应忽略该行。您可以指定任何字符来表示注释行。

类型:字符串

原级:CSV

CSV 容器元素(在 OutputSerialization 元素中)包含以下元素。
名称 描述 必填
QuoteFields

指示是否在输出字段周围使用引号。

  • ALWAYS:始终为输出字段使用引号。

  • ASNEEDED:根据需要为输出字段使用引号。

类型:Enum

有效值:ALWAYS | ASNEEDED

默认值:AsNeeded

原级:CSV

RecordDelimiter

用于分隔输出中各个记录的单个字符。您可以指定任意分隔符,而不是默认值。

类型:字符串

默认:\n

原级:CSV

FieldDelimiter

用于分隔记录中各个字段的单个字符。您可以指定任意分隔符。

类型:字符串

默认:,

原级:CSV

QuoteCharacter

当字段分隔符是值的一部分时,用于转义的单个字符。例如,如果值为 a, b,则 Amazon S3 将此字段值用引号括起来,如下所示:" a , b "

类型:字符串

默认:"

原级:CSV

QuoteEscapeCharacter

用于对已转义值内的引号字符进行转义的单个字符。例如,如果值为 " a , b ",则 Amazon S3 将此值用引号括起来,如下所示:""" a , b """

类型:字符串

原级:CSV

S3 容器元素(在 OutputLocation 元素中)包含以下元素。
名称 描述 必填
AccessControlList

控制对暂存结果的访问权限的授权列表。

类型:授权的容器

原级:S3

BucketName

存储 select 还原结果的 S3 存储桶的名称。该存储桶必须与包含输入归档对象的存储桶位于同一个 Amazon Web Services 区域中。

类型:字符串

原级:S3

CannedACL

要应用于 select 还原结果的标准访问控制列表(ACL)。

类型:字符串

有效值: private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control

原级:S3

Encryption

包含所存储结果的加密信息。

类型:加密的容器

原级:S3

Prefix

附加到 select 还原结果前的前缀。前缀的最大长度是 512 字节。

类型:字符串

原级:S3

StorageClass

用于存储 select 请求结果的存储类别。

类型:字符串

有效值:STANDARD |REDUCED_REDUNDANCY |STANDARD_IA |ONEZONE_IA

原级:S3

Tagging

标签信息的容器。

类型:标签结构

原级:S3

UserMetadata

包含要与 select 还原结果一起存储的元数据的列表。

类型:MetadataEntry 结构

原级:S3

被授权者容器元素(在 AccessControlList 元素中)包含以下元素。
名称 描述 必填
DisplayName

被授权者的屏幕名称。

类型:字符串

原级:Grantee

EmailAddress

被授权者的电子邮件地址。

类型:字符串

原级:Grantee

ID

被授权者的规范用户 ID。

类型:字符串

原级:Grantee

Type

被授权者的类型。

类型:字符串

原级:Grantee

URI

被授权者组的 URI。

类型:字符串

原级:Grantee

Permission

授予的权限。

类型:字符串

原级:Grantee

Encryption 容器元素(在 S3 中)包含以下元素。
名称 描述 必填
EncryptionType

存储作业结果时使用的服务器端加密算法。默认值为无加密。

类型:字符串

有效值 aws:kms | AES256

原级:Encryption

KMSContext

可选。如果加密类型是 aws:kms,您可以使用此值为 select 还原结果指定加密上下文。

类型:字符串

原级:Encryption

KMSKeyId

用于对象加密的 Amazon Key Management Service (Amazon KMS) 密钥 ID。

类型:字符串

原级:Encryption

TagSet 容器元素(在 Tagging 元素中)包含以下元素。
名称 描述 必填
Tag

包含标签。

类型:容器

原级:TagSet

标签容器元素(在 TagSet 元素中)包含以下元素。
名称 描述 必填
Key

标签的名称。

类型:字符串

原级:Tag

Value

标签的值。

类型:字符串

原级:Tag

MetadataEntry 容器元素(在 UserMetadata 元素中)包含以下要与对象一起存储的键-值对元素。
名称 描述 必填
MetadataKey

元数据键。

类型:字符串

原级:

MetadataEntry

元数据值。

类型:字符串

原级:

响应

成功的操作将返回 200 OK202 Accepted 状态代码。

  • 如果之前未还原对象副本,则 Amazon S3 将在响应中返回 202 Accepted

  • 如果之前还原了对象副本,则 Amazon S3 将在响应中返回 200 OK

响应标头

此操作的实施仅使用大多数响应通用的响应标头。有关更多信息,请参阅通用响应标头

响应元素

此操作不返回响应元素。

特殊错误

错误代码 说明 HTTP 状态代码 SOAP 故障代码前缀
RestoreAlreadyInProgress 对象还原已在进行中。(此错误不适用于 SELECT 类型请求。) 409 冲突 客户端
GlacierExpeditedRetrievalNotAvailable S3 Glacier 存储类别的加速检索目前不可用。请稍后重试。(如果处理 Expedited 请求的容量不足,则返回该错误。此错误仅适用于 Expedited 检索,而不适用于 StandardBulk 检索。) 503 不适用

示例

使用加速检索选项还原对象,为期两天

以下还原请求使用加速检索选项从 Amazon Glacier 还原 photo1.jpg 对象的副本,为期两天。

POST /photo1.jpg?restore HTTP/1.1 Host: examplebucket.s3.amazonaws.com Date: Mon, 22 Oct 2012 01:49:52 GMT Authorization: authorization string Content-Length: content length <RestoreRequest> <Days>2</Days> <GlacierJobParameters> <Tier>Expedited</Tier> </GlacierJobParameters> </RestoreRequest>

如果 examplebucket 没有已还原的对象副本,Amazon S3 将返回以下 202 Accepted 响应。

HTTP/1.1 202 Accepted x-amz-id-2: GFihv3y6+kE7KG11GEkQhU7/2/cHR3Yb2fCb2S04nxI423Dqwg2XiQ0B/UZlzYQvPiBlZNRcovw= x-amz-request-id: 9F341CD3C4BA79E0 Date: Sat, 20 Oct 2012 23:54:05 GMT Content-Length: 0 Server: AmazonS3

如果对象的副本已还原,Amazon S3 会返回 200 OK 响应,并且仅更新已还原副本的过期时间。

使用 SELECT 请求查询归档

以下是 select 还原请求示例。

POST /object-one.csv?restore HTTP/1.1 Host: examplebucket.s3.amazonaws.com Date: Date: Sat, 20 Oct 2012 23:54:05 GMT Authorization: authorization string Content-Length: content length <RestoreRequest xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Type>SELECT</Type> <Tier>Expedited</Tier> <Description>this is a description</Description> <SelectParameters> <InputSerialization> <CSV> <FileHeaderInfo>IGNORE</FileHeaderInfo> <Comments>#</Comments> <QuoteEscapeCharacter>"</QuoteEscapeCharacter> <RecordDelimiter>\n</RecordDelimiter> <FieldDelimiter>,</FieldDelimiter> <QuoteCharacter>"</QuoteCharacter> </CSV> </InputSerialization> <ExpressionType>SQL</ExpressionType> <Expression>select * from object</Expression> <OutputSerialization> <CSV> <QuoteFields>ALWAYS</QuoteFields> <QuoteEscapeCharacter>"</QuoteEscapeCharacter> <RecordDelimiter>\n</RecordDelimiter> <FieldDelimiter>\t</FieldDelimiter> <QuoteCharacter>\'</QuoteCharacter> </CSV> </OutputSerialization> </SelectParameters> <OutputLocation> <S3> <BucketName>example-output-bucket</BucketName> <Prefix>test-s3</Prefix> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="AmazonCustomerByEmail"> <EmailAddress>jane-doe@example.com</EmailAddress> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> <UserMetadata> <MetadataEntry> <Name>test</Name> <Value>test-value</Value> </MetadataEntry> <MetadataEntry> <Name>other</Name> <Value>something else</Value> </MetadataEntry> </UserMetadata> <StorageClass>STANDARD</StorageClass> </S3> </OutputLocation> </RestoreRequest>

Amazon S3 返回以下 202 Accepted 响应。

HTTP/1.1 202 Accepted x-amz-id-2: GFihv3y6+kE7KG11GEkQhU7/2/cHR3Yb2fCb2S04nxI423Dqwg2XiQ0B/UZlzYQvPiBlZNRcovw= x-amz-request-id: 9F341CD3C4BA79E0 x-amz-restore-output-path: js-test-s3/qE8nk5M0XIj-LuZE2HXNw6empQm3znLkHlMWInRYPS-Orl2W0uj6LyYm-neTvm1-btz3wbBxfMhPykd3jkl-lvZE7w42/ Date: Sat, 20 Oct 2012 23:54:05 GMT Content-Length: 0 Server: AmazonS3

更多信息