使用 AWS SDK 和 Explorer 來透過 Amazon S3 進行開發 - Amazon Simple Storage Service

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

使用 AWS SDK 和 Explorer 來透過 Amazon S3 進行開發

使用 Amazon S3 開發應用程式時,您可以使用 AWS SDK。AWS SDK 透過包裝基礎 REST API 來簡化您的程式設計任務。行AWS動開發套件和 AWS Amplify 程式 JavaScript 庫也可用來建置連線的行動和 Web 應用程式。AWS

本節概觀如何使用 AWS SDK 來開發 Amazon S3 應用程式。本節也說明如何測試這個指南中所提供的 AWS SDK 程式碼範例。

除了 AWS 開發套件之外,AWS Explorer 也適用於 Visual Studio 與 Eclipse for Java IDE。在此情況下,SDK 與 Explorer 可以一起組合為 AWS 工具組。

您也可以使用 AWS Command Line Interface (AWS CLI) 來管理 Amazon S3 儲存貯體與物件。

AWS Toolkit for Eclipse

AWS Toolkit for Eclipse 包括 AWS SDK for Java 和 AWS Explorer for Eclipse。AWS Explorer for Eclipse 是 Eclipse for Java IDE 的開源外掛程式,可讓開發人員使用 AWS 更輕鬆地開發、除錯與部署 Java 應用程式。使用 easy-to-use 者介面可讓您存取和管理包括 Amazon S3 在內的AWS基礎設施。您可以在開發應用程式時執行通用操作 (例如,管理儲存貯體與物件以及設定 IAM 政策),而所有操作都是在 Eclipse for Java IDE 的內容下執行。如需設定說明,請參閱設定工具組。如需使用 Explorer 的範例,請參閱如何存取 AWS Explorer

AWS Toolkit for Visual Studio

AWS Explorer for Visual Studio 是 Microsoft Visual Studio 的延伸,可讓開發人員使用 Amazon Web Services 更輕鬆地開發、除錯與部署 .NET 應用程式。使用 easy-to-use 者介面可讓您存取和管理包括 Amazon S3 在內的AWS基礎設施。您可以在開發應用程式時執行通用操作 (例如,管理儲存貯體與物件,或設定 IAM 政策),而所有操作都是在 Visual Studio 的內容下執行。如需設定說明,請前往設定 AWS Toolkit for Visual Studio。如需利用 Explorer 來使用 Amazon S3 的範例,請參閱從 AWS Explorer 使用 Amazon S3

AWS 開發套件

您只能下載開發套件。如需下載軟體開發套件程式庫的詳細資訊,請參閱範本程式碼程式庫

AWS CLI

AWS CLI 是統一工具,用於管理 AWS 服務 (包含 Amazon S3)。如需下載 AWS CLI 的資訊,請參閱 AWS Command Line Interface

透過 AWS SDK 使用此服務

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

如需此服務的特定範例,請參閱 使用 AWS 開發套件的 Amazon S3 程式碼範例

可用性範例

找不到所需的內容嗎? 請使用本頁面底部的提供意見回饋連結申請程式碼範例。

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

Amazon S3 在大部分的 AWS 區域 中僅支援 AWS Signature 第 4 版。在某些較舊的 AWS 區域 中,Amazon S3 同時支援 Signature 第 4 版與 Signature 第 2 版。然而,Signature 第 2 版已結束 (已廢除)。如需 Signature 第 2 版終止支援的詳細資訊,請參閱Amazon S3 適用的 AWS Signature 第 2 版已結束 (已取代)

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

在所有 AWS 區域 中,AWS SDK 預設會使用 Signature 第 4 版對要求進行身分驗證。使用 2016 年 5 月之前發行的 AWS SDK 時,您可能必須要求 Signature 第 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>

 

Amazon S3 適用的 AWS Signature 第 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 API 請求

更新包含什麼內容?

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

如需簽署 AWS 請求的詳細資訊,請參閱《AWS 一般參考》中的 Signature 第 4 版的變更

更新的原因?

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

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

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

如需在移到 Signature 第 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 Signature 第 2 版來簽章和驗證預先簽章的 URL。我們將持續追蹤,並提供如何針對預先簽章 URL 的情形遷移到 Signature 第 4 版的詳細資訊。

詳細資訊

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

如果您目前使用 Signature 第 2 版進行 Amazon S3 API 請求身分驗證,應改為使用 Signature 第 4 版。系統即將終止對 Signature 第 2 版的支援,如 Amazon S3 適用的 AWS Signature 第 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)。 Boto 3 - 適用於 Python 的 AWS 開發套件

AWS CLI

升級至 1.11.108。 AWS Command Line Interface

AWS CLI v2 (預覽)

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

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 版流量。