本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
POST 物件還原
說明
此操作會執行下列類型的請求:
-
select– 在封存的物件上執行選取查詢 -
restore an archive– 還原封存的物件
若要使用此操作,您必須具有執行 s3:RestoreObject和 s3:GetObject動作的許可。根據預設,儲存貯體擁有者具有此許可,並且可以將此許可授予其他人。如需許可的詳細資訊,請參閱《Amazon S3與儲存貯體子資源操作和管理 Amazon S3 資源存取許可相關的許可。
使用選取請求查詢封存
您可以使用選取類型的請求,對封存的物件執行 SQL 查詢。選取請求查詢的封存物件必須格式化為未壓縮的逗號分隔值 (CSV) 檔案。您可以對封存的資料執行查詢和自訂分析,而不必將資料還原至較熱的 Amazon S3 層。如需選取請求的概觀,請參閱《Amazon Simple Storage Service 使用者指南》中的查詢封存物件。
提出選取請求時,請執行下列動作:
-
定義選取查詢輸出的輸出位置。這必須與包含正在查詢之封存物件的儲存貯體 AWS 區域 位於相同的 Amazon S3 儲存貯體。 AWS 帳戶 啟動任務的 必須具有寫入 S3 儲存貯體的許可。您可以為存放在儲存貯體中的輸出物件指定儲存類別和加密。如需輸出的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的查詢封存物件。
如需請求內文中
S3結構的詳細資訊,請參閱下列內容:-
《Amazon Simple Storage Service 使用者指南》中的使用 ACLs 管理存取權
-
《Amazon Simple Storage Service 使用者指南》中的使用伺服器端加密保護資料
-
在請求內文
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
-
如需搭配 Amazon Glacier Select 還原使用 SQL 的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的 Amazon S3 Select 和 Amazon Glacier Select 的 SQL 參考。
提出選取請求時,您也可以執行下列動作:
-
若要加速查詢,請指定
Expedited層。如需層的詳細資訊,請參閱本主題稍後的「還原封存」。 -
指定正在查詢之輸入物件的資料序列化格式的詳細資訊,以及 CSV 編碼查詢結果的序列化。
以下是有關選取功能的其他重要事實:
-
輸出結果是新的 Amazon S3 物件。與封存擷取不同,它們會儲存到明確刪除為止,無論是手動或透過生命週期政策。
-
您可以在同一個 Amazon S3 物件上發出多個選取請求。Amazon S3 不會刪除重複的請求,因此請避免發出重複的請求。
-
即使物件已還原,Amazon S3 也會接受選取請求。選取請求不會傳回錯誤回應
409。
還原封存
GLACIER 和 DEEP_ARCHIVE 儲存類別中的物件會封存。若要存取封存的物件,您必須先啟動還原請求。這會還原封存物件的暫時副本。在還原請求中,您可以指定要還原複本存在的天數。在指定的期間之後,Amazon S3 會刪除暫時複本,但物件會保留在還原物件的 GLACIER 或 DEEP_ARCHIVE 儲存類別中封存。
若要還原特定物件版本,您可以提供版本 ID。如果您未提供版本 ID,Amazon S3 會還原目前的版本。
還原任務完成所需的時間取決於物件正在還原的儲存體方案,以及您指定的資料存取層。
還原封存的物件 (或使用選取請求) 時,您可以在請求內文的 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 天內刪除物件。如需生命週期組態的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的 PutBucketLifecycleConfiguration 和物件生命週期管理。
要求
語法
POST /ObjectName?restore&versionId=VersionIDHTTP/1.1 Host:BucketName.s3.amazonaws.com Date:dateAuthorization:authorization string(see 驗證請求AWS (簽章第 4 版)) Content-MD5:MD5request 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 會從儲存貯體中移除它。如果您要還原封存,則需要此元素。 請勿將此元素與 請求 類型:正整數 Ancestors: |
是,如果還原封存 |
GlacierJobParameters |
S3 Glacier 儲存類別任務參數的容器。 請勿將此元素與 請求 類型:容器 Ancestors: |
否 |
Tier |
還原封存時要使用的資料存取層。 類型:列舉 有效值: Ancestors: |
否 |
下列 XML 是封存物件上選取查詢的請求內文:
<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 |
還原封存時要使用的資料存取層。 類型:列舉 有效值: Ancestors: |
否 |
Description |
請求的選用描述。 類型:字串 Ancestors: |
否 |
SelectParameters |
描述選取任務請求的參數。 類型:容器 Ancestors: |
是,如果請求類型為 SELECT |
OutputLocation |
描述接收選取還原請求結果的位置。 類型:Amazon S3 的容器 Ancestors: |
是,如果請求類型為 SELECT |
| 名稱 | 描述 | 必要 |
|---|---|---|
Expression |
SQL 表達式。例如:
類型:字串 Ancestors: |
是 |
ExpressionType |
識別表達式類型。 類型:字串 有效值: Ancestors: |
是 |
InputSerialization |
描述 物件的序列化格式。 類型:CSV 的容器 Ancestors: |
是 |
OutputSerialization |
描述如何序列化選擇任務的結果。 類型:CSV 的容器 Ancestors: |
是 |
| 名稱 | 描述 | 必要 |
|---|---|---|
RecordDelimiter |
用於分隔輸入中個別記錄的單一字元。您可以指定任意分隔符號,而不是預設值。 類型:字串 預設: Ancestors: |
否 |
FieldDelimiter |
用於分隔記錄中個別欄位的單一字元。您可以指定任意分隔符號。 類型:字串 預設: Ancestors: |
否 |
QuoteCharacter |
當欄位分隔符號是 值的一部分時,用於逸出的單一字元。 在 CSV 檔案中考慮此範例:
以引號包裝值會使此值成為單一欄位。如果您不使用引號,則逗號是欄位分隔符號 (讓它有兩個不同的欄位值,a 和 b)。 類型:字串 預設: Ancestors: |
否 |
QuoteEscapeCharacter |
用於在已逸出值內逸出引號字元的單一字元。例如, 值會 類型:字串 預設: Ancestors: |
否 |
FileHeaderInfo |
描述輸入資料的第一行。這是其中一個 ENUM 值。
類型:列舉 有效值: Ancestors: |
否 |
Comments |
單一字元用於表示當該字元出現在該資料列的開頭時應應該忽略該資料列。您可以指定任何字元來表示註解行。 類型:字串 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
QuoteFields |
指出是否在輸出欄位周圍使用引號。
類型:列舉 有效值: 預設: Ancestors: |
否 |
RecordDelimiter |
用於分隔輸出中個別記錄的單一字元。您可以指定任意分隔符號,而不是預設值。 類型:字串 預設: Ancestors: |
否 |
FieldDelimiter |
用於分隔記錄中個別欄位的單一字元。您可以指定任意分隔符號。 類型:字串 預設: Ancestors: |
否 |
QuoteCharacter |
當欄位分隔符號是 值的一部分時,用於逸出的單一字元。例如,如果值為 類型:字串 預設: Ancestors: |
否 |
QuoteEscapeCharacter |
用於在已逸出值內逸出引號字元的單一字元。例如,如果值為 類型:字串 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
AccessControlList |
控制暫存結果存取的授予清單。 類型:授予的容器 Ancestors: |
否 |
BucketName |
儲存選取還原結果的 S3 儲存貯體名稱。儲存貯體必須與包含輸入封存物件的儲存貯體位於相同的 AWS 區域 。 類型:字串 Ancestors: |
是 |
CannedACL |
要套用至選取還原結果的固定存取控制清單 (ACL)。 類型:字串 有效值: Ancestors: |
否 |
Encryption |
包含儲存結果的加密資訊。 類型:Container for Encryption Ancestors: |
否 |
Prefix |
選取還原結果前綴的字首。字首的最大長度為 512 位元組。 類型:字串 Ancestors: |
是 |
StorageClass |
用於存放選取請求結果的儲存體類別。 類型:字串 有效值: Ancestors: |
否 |
Tagging |
標籤資訊的容器。 類型:標籤結構 Ancestors: |
否 |
UserMetadata |
包含要與選取還原結果一起存放的中繼資料清單。 類型:MetadataEntry 結構 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
DisplayName |
承授者的螢幕名稱。 類型:字串 Ancestors: |
否 |
EmailAddress |
承授者的電子郵件地址。 類型:字串 Ancestors: |
否 |
ID |
承授者的正式使用者 ID。 類型:字串 Ancestors: |
否 |
Type |
承授者的類型。 類型:字串 Ancestors: |
否 |
URI |
承授者群組的 URI。 類型:字串 Ancestors: |
否 |
Permission |
授予的許可。 類型:字串 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
EncryptionType |
儲存任務結果時使用的伺服器端加密演算法。預設值是不加密。 類型:字串 有效值 Ancestors: |
否 |
KMSContext |
選用。如果加密類型為 類型:字串 Ancestors:加密 |
否 |
KMSKeyId |
用於物件加密的 AWS Key Management Service (AWS KMS) 金鑰 ID。 類型:字串 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
Tag |
包含標籤。 類型:容器 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
Key |
標籤的名稱。 類型:字串 Ancestors: |
否 |
Value |
標籤的值。 類型:字串 Ancestors: |
否 |
| 名稱 | 描述 | 必要 |
|---|---|---|
MetadataKey |
中繼資料索引鍵。 類型:字串 Ancestors: |
否 |
MetadataEntry |
中繼資料值。 類型:字串 Ancestors: |
否 |
回應
成功的操作會傳回 200 OK或 202 Accepted 狀態碼。
-
如果之前未還原物件複本,則 Amazon S3 會在回應
202 Accepted中傳回 。 -
如果物件複本先前已還原,Amazon S3 會在回應
200 OK中傳回 。
回應標頭
此操作的實作只會使用大多數回應通用的回應標頭。如需詳細資訊,請參閱常見回應標頭。
回應元素
此操作不會傳回回應元素。
特殊錯誤
| 錯誤程式碼 | 說明 | HTTP 狀態碼 | SOAP 故障碼字首 |
|---|---|---|---|
RestoreAlreadyInProgress |
物件還原已在進行中。(此錯誤不適用於 SELECT 類型請求。) | 409 衝突 | 用戶端 |
GlacierExpeditedRetrievalNotAvailable |
S3 Glacier 儲存類別快速擷取目前不可用。請稍後再試。(如果沒有足夠的容量來處理Expedited請求,則傳回 。 此錯誤僅適用於Expedited擷取,不適用於 Standard或 Bulk擷取。) |
503 | N/A |
範例
使用快速擷取選項還原物件兩天
下列還原請求會使用快速擷取選項,從 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 stringContent-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 請求查詢封存
以下是範例選取還原請求。
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 stringContent-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