View a markdown version of this page

在請求身分驗證中指定簽章版本 - Amazon Simple Storage Service

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

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

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

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

對於所有 AWS 區域, AWS SDKs 預設使用 Signature 第 4 版來驗證請求。使用 2016 年 5 月之前發行 AWS SDKs 時,您可能需要請求 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
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 的 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 API 請求AWS 一般參考

更新包含什麼內容?

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

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

更新的原因?

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

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

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

如需有關移動到 Signature 第 4 版時要使用的 AWS SDKs 版本的資訊,請參閱 從 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 版的詳細資訊,請參閱 Amazon S3 文件。

詳細資訊

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

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

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

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

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

適用於 Java 的 AWS SDK v1

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

適用於 Java 的 AWS SDK v2

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

適用於 .NET 的 AWS SDK v1

升級至 3.1.10 或更新版本。 適用於 .NET 的 AWS SDK

適用於 .NET 的 AWS SDK v2

升級至 3.1.10 或更新版本。 適用於 .NET 的 AWS SDK v2

適用於 .NET 的 AWS SDK v3

升級至 3.3.0.0 或更新版本。 適用於 .NET 的 AWS SDK v3

適用於 JavaScript 的 AWS SDK v1

升級至 2.68.0 或更新版本。 適用於 JavaScript 的 AWS SDK

適用於 JavaScript 的 AWS SDK v2

升級至 2.68.0 或更新版本。 適用於 JavaScript 的 AWS SDK

適用於 JavaScript 的 AWS SDK v3

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

適用於 PHP 的 AWS SDK v1

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

適用於 PHP 的 AWS SDK v2

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

適用於 PHP 的 AWS SDK v3

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

Boto2

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

Boto3

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

AWS CLI

升級至 1.11.108。 AWS Command Line Interface

AWS CLI v2 (預覽版)

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

適用於 Ruby 的 AWS SDK v1

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

適用於 Ruby 的 AWS SDK v2

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

適用於 Ruby 的 AWS SDK v3

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

Go

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

C++

無需升級軟體開發套件。 適用於 C++ 的 AWS SDK
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 版流量。