使用開發 AWS 套件使用 Amazon S3 進行開發 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用開發 AWS 套件使用 Amazon S3 進行開發

AWS 軟件開發套件(SDK)可用於許多流行的編程語言。每個 SDK 都提供 API、程式碼範例和說明文件,讓開發人員能夠更輕鬆地以偏好的語言建置應用程式。

注意

您可以用 AWS Amplify 於 Web 和移動應用程序的 end-to-end 全棧開發。Amplify Storage 將檔案儲存和管理功能無縫整合到建置在 Amazon S3 之上的前端 Web 和行動應用程式中。如需詳細資訊,請參閱 Amplify 使用指南中的儲存空間

SDK 程式設計介面

每個 AWS 開發套件都提供一或多個程式設計界面,以便與 Amazon S3 搭配使用。每個開發套件都為 Amazon S3 提供低階介面,其方法與 API 操作非常類似。有些開發套件為 Amazon S3 提供高階介面,這些介面是旨在簡化常見使用案例的抽象化。

例如,當您使用低階 API 作業執行多部分上傳時,您需要使用作業來啟動上載,另一項上載零件的作業,以及完成上載作業的最終作業。高階分段上傳 API 作業可讓您在單一 API 呼叫中執行上傳所需的所有作業。如需範例,請參閱 使用分段上傳來上傳物件

低級 API 操作允許更好地控制上傳。如果您需要暫停和繼續上傳、在上傳期間變更零件大小,或者在事先不知道資料大小時開始上傳,建議您使用低階 API 作業。

在請求身分驗證中指定 Signature 版本

Amazon S3 在大多數情況下僅支持 AWS 簽名版本 4 AWS 區域。在某些較舊版本中 AWS 區域,Amazon S3 同時支援簽名版本 4 和簽名版本 2。然而,Signature 第 2 版已結束 (已廢除)。如需 Signature 第 2 版終止支援的詳細資訊,請參閱AWS Amazon S3 的簽名版本 2 已關閉 (已淘汰)

如需所有 Amazon S3 區域及其支援之簽章版本的清單,請參閱《AWS 一般參考》中的區域與端點

對於所有 AWS SDK AWS 區域,默認情況下使用簽名版本 4 來驗證請求。使用 2016 年 5 月之前發行的 AWS SDK 時,您可能需要請求簽名版本 4,如下表所示。

SDK 要求 Signature 第 4 版進行要求身分驗證
AWS CLI

針對預設描述檔,執行下列命令:

$ aws configure set default.s3.signature_version s3v4

針對自訂描述檔,執行下列命令:

$ aws configure set profile.your_profile_name.s3.signature_version s3v4
Java 開發套件

在程式碼中新增下列程式碼:

System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");

或者,在命令列指定下列項目:

-Dcom.amazonaws.services.s3.enableV4
JavaScript SDK

建構用戶端時,請將 signatureVersion 參數設定為 v4

var s3 = new AWS.S3({signatureVersion: 'v4'});
PHP SDK

針對 PHP SDK v2 建構 Amazon S3 服務用戶端時,請將 signature 參數設為 v4

<?php $client = S3Client::factory([ 'region' => 'YOUR-REGION', 'version' => 'latest', 'signature' => 'v4' ]);

使用 PHP SDK 第 3 版時,請在建構 Amazon S3 服務用戶端時,將 signature_version 參數設為 v4

<?php $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'YOUR-REGION', 'signature_version' => 'v4' ]);
Python-Boto SDK

在 boto 預設組態檔中,指定以下內容:

[s3] use-sigv4 = True
Ruby 開發套件

Ruby 開發套件 - 第 1 版:建構用戶端時,請將 :s3_signature_version 參數設定為 :v4

s3 = AWS::S3::Client.new(:s3_signature_version => :v4)

Ruby 開發套件 - 第 3 版:建構用戶端時,請將 signature_version 參數設定為 v4

s3 = Aws::S3::Client.new(signature_version: 'v4')
.NET 開發套件

在建立 Amazon S3 用戶端之前,將以下內容新增至程式碼:

AWSConfigsS3.UseSignatureVersion4 = true;

或者,將以下內容新增至組態檔:

<appSettings> <add key="AWS.S3.UseSignatureVersion4" value="true" /> </appSettings>

 

AWS Amazon S3 的簽名版本 2 已關閉 (已淘汰)

Amazon S3 中的 Signature 第 2 版已結束 (已廢除)。Amazon S3 將僅接受使用 Signature 第 4 版簽署的 API 請求。

本節提供有關 Signature 第 2 版終止支援的常見問答。

什麼是 Signature 第 2/4 版,而簽署請求又表示什麼意思?

Signature 第 2 版或 Signature 第 4 版簽署程序用於驗證您的 Amazon S3 API 請求。簽署請求可讓 Amazon S3 識別傳送請求的人員,並保護請求免於受到不良執行者的破壞。

如需簽署 AWS 要求的詳細資訊,參閱 AWS 一般參考. AWS

更新包含什麼內容?

我們目前支援使用 Signature 第 2 版和 Signature 第 4 版程序簽署的 Amazon S3 API 請求。在此之後,Amazon S3 將僅接受使用 Signature 第 4 版簽署的請求。

如需有關簽署 AWS 要求的詳細資訊,請參閱 AWS 一般參考.

更新的原因?

Signature 第 4 版使用簽署金鑰 (而不使用私密存取金鑰) 來提高安全性。目前所有簽名版本 4 都支援 AWS 區域,而簽名版本 2 僅在 2014 年 1 月之前推出的地區支援。這項更新可讓我們在所有區域中提供更一致的體驗。

我要如何確定正在使用的是 Signature 第 4 版,以及我需要進行哪些更新?

用於簽署請求的 Signature 版本,其常見的設定方法為用戶端上的工具或 SDK。根據預設,我們 AWS SDK 的最新版本使用簽名版本 4。對於第三方軟體,請聯絡適當的軟體支援團隊以確認您需要的版本。如果要向 Amazon S3 傳送直接 REST 呼叫,必須修改應用程式以使用 Signature 第 4 版簽署程序。

如需移至簽名版本 4 時要使用的 AWS SDK 版本的相關資訊,請參閱從 Signature 第 2 版遷移至 Signature 第 4 版

如需有關在 Amazon S3 REST API 中使用 Signature 第 4 版的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的身分驗證請求 (AWS Signature 第 4 版)

如果不更新會發生什麼情況?

在此之後使用 Signature 第 2 版簽署的請求,將無法向 Amazon S3 進行身分驗證。請求者將看到系統顯示錯誤,表示必須使用 Signature 第 4 版簽署請求。

即使我使用的預先簽章 URL 要求大於 7 天的簽署時間,是否也需要進行更新?

如果您使用的預先簽章 URL 要求大於 7 天的簽署時間,則目前無需採取任何動作。您可以繼續使用「 AWS 簽名版本 2」來簽署和驗證預先簽署的 URL。我們將持續追蹤,並提供如何針對預先簽章 URL 的情形遷移到 Signature 第 4 版的詳細資訊。

詳細資訊

從 Signature 第 2 版遷移至 Signature 第 4 版

如果您目前使用 Signature 第 2 版進行 Amazon S3 API 請求身分驗證,應改為使用 Signature 第 4 版。系統即將終止對 Signature 第 2 版的支援,如 AWS Amazon S3 的簽名版本 2 已關閉 (已淘汰) 中所述。

如需有關在 Amazon S3 REST API 中使用 Signature 第 4 版的詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的身分驗證請求 (AWS Signature 第 4 版)

下表列出使用 Signature 第 4 版 (SigV4) 所需的最低軟體開發套件版本。如果您將預先簽署的 URL 與 AWS Java、 JavaScript (Node.js) 或 Python (BOTO/ CLI) 開發套件搭配使用,您必須在用戶端設定中設定正確 AWS 區域 的簽章版本 4。如需在用戶端組態中設定 SigV4 的資訊,請參閱 在請求身分驗證中指定 Signature 版本

如果您使用此軟體開發套件/產品 升級至此軟體開發套件版本 用戶端使用 Sigv4 時需要變更程式碼嗎? 軟體開發套件文件的連結

AWS SDK for Java V1

升級至 Java 1.11.201+ 或 v2。 在請求身分驗證中指定 Signature 版本

AWS SDK for Java V2

無需升級軟體開發套件。 AWS SDK for Java

AWS SDK for .NET V1

升級至 3.1.10 或更新版本。 AWS SDK for .NET

AWS SDK for .NET V2

升級至 3.1.10 或更新版本。 AWS SDK for .NET v2

AWS SDK for .NET V3

升級至 3.3.0.0 或更新版本。 AWS SDK for .NET V3

AWS SDK for JavaScript V1

升級至 2.68.0 或更新版本。 AWS SDK for JavaScript

AWS SDK for JavaScript V2

升級至 2.68.0 或更新版本。 AWS SDK for JavaScript

AWS SDK for JavaScript V3

目前無需採取動作。在 2019 年第 3 季升級至主要版本 V3。 AWS SDK for JavaScript

AWS SDK for PHP V1

建議升級至 PHP 的最新版本,或至少升級至 v2.7.4,其中 S3 用戶端組態中的簽署參數應設為 v4。 AWS SDK for PHP

AWS SDK for PHP V2

建議升級至 PHP 的最新版本,或至少升級至 v2.7.4,其中 S3 用戶端組態中的簽署參數應設為 v4。 AWS SDK for PHP

AWS SDK for PHP V3

無需升級軟體開發套件。 AWS SDK for PHP

Boto2

升級至 Boto2 v2.49.0。 Boto 2 升級

Boto3

升級至 1.5.71 (Botocore)、1.4.6 (Boto3)。 博托 3-適用於 AWS Python 的 SDK

AWS CLI

升級至 1.11.108。 AWS Command Line Interface

AWS CLI 第 2 版 (預覽版)

無需升級軟體開發套件。 AWS Command Line Interface 第二版

AWS SDK for Ruby V1

升級至 Ruby V3。 適用於 AWS的 Ruby V3

AWS SDK for Ruby V2

升級至 Ruby V3。 適用於 AWS的 Ruby V3

AWS SDK for Ruby V3

無需升級軟體開發套件。 適用於 AWS的 Ruby V3

Go

無需升級軟體開發套件。 AWS SDK for Go

C++

無需升級軟體開發套件。 AWS SDK for C++
AWS Tools for Windows PowerShell 或 AWS Tools for PowerShell Core

如果您使用的模組版本早於 3.3.0.0,則必須升級到 3.3.0.0。

如需取得版本資訊,請使用 Get-Module cmdlet:

Get-Module –Name AWSPowershell Get-Module –Name AWSPowershell.NetCore

若要更新 3.3.0.0 版,請使用 Update-Module cmdlet:

Update-Module –Name AWSPowershell Update-Module –Name AWSPowershell.NetCore

您可以使用有效期超過 7 天的預先簽署 URL,您將使用該 URL 傳送 Signature 第 2 版流量。