

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

# 在請求身分驗證中指定簽章版本
<a name="specify-signature-version"></a>

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

如需所有 Amazon S3 區域及其支援之簽章版本的清單，請參閱《AWS 一般參考》**中的[區域與端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)。

對於所有 AWS 區域， AWS SDKs 預設使用 Signature 第 4 版來驗證請求。使用 2016 年 5 月之前發行 AWS SDKs 時，您可能需要請求 Signature 第 4 版，如下表所示。


| SDK | 要求 Signature 第 4 版進行要求身分驗證 | 
| --- | --- | 
| AWS CLI | 針對預設描述檔，執行下列命令：<pre>$ aws configure set default.s3.signature_version s3v4</pre><br />針對自訂描述檔，執行下列命令：<pre>$ aws configure set profile.your_profile_name.s3.signature_version s3v4</pre> | 
| Java 開發套件 | 在程式碼中新增下列程式碼：<pre>System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");</pre><br />或者，在命令列指定下列項目：<pre>-Dcom.amazonaws.services.s3.enableV4</pre> | 
| PHP SDK | 針對 PHP SDK v2 建構 Amazon S3 服務用戶端時，請將 `signature` 參數設為 `v4`：<pre><?php <br />$client = S3Client::factory([<br />    'region' => 'YOUR-REGION',<br />    'version' => 'latest',<br />    'signature' => 'v4'<br />]);</pre><br />使用 PHP SDK 第 3 版時，請在建構 Amazon S3 服務用戶端時，將 `signature_version` 參數設為 `v4`：<pre><?php <br />$s3 = new Aws\S3\S3Client([<br />    'version' => '2006-03-01',<br />    'region' => 'YOUR-REGION',<br />    'signature_version' => 'v4'<br />]);</pre> | 
| Python-Boto SDK | 在 boto 預設組態檔中，指定以下內容：<pre>[s3] use-sigv4 = True</pre> | 
| Ruby 開發套件 | Ruby 開發套件 - 第 1 版：建構用戶端時，請將 `:s3_signature_version` 參數設定為 `:v4`：<pre>s3 = AWS::S3::Client.new(:s3_signature_version => :v4)</pre><br />Ruby 開發套件 - 第 3 版：建構用戶端時，請將 `signature_version` 參數設定為 `v4`：<pre>s3 = Aws::S3::Client.new(signature_version: 'v4')</pre> | 
| .NET 開發套件 | 在建立 Amazon S3 用戶端之前，將以下內容新增至程式碼：<pre>AWSConfigsS3.UseSignatureVersion4 = true;</pre><br />或者，將以下內容新增至組態檔：<pre><appSettings><br />   <add key="AWS.S3.UseSignatureVersion4" value="true" /><br /></appSettings></pre> | 

 

## AWS Amazon S3 的 Signature 第 2 版已關閉 （已棄用）
<a name="UsingAWSSDK-sig2-deprecation"></a>

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 請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)*AWS 一般參考*。

**更新包含什麼內容？**  
我們目前支援使用 Signature 第 2 版和 Signature 第 4 版程序簽署的 Amazon S3 API 請求。在此之後，Amazon S3 將僅接受使用 Signature 第 4 版簽署的請求。

如需簽署 AWS 請求的詳細資訊，請參閱[《》中的簽章版本 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html) 的變更*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 版](#UsingAWSSDK-move-to-Sig4)。

如需有關在 Amazon S3 REST API 中使用 Signature 第 4 版的詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的[身分驗證請求 (AWS Signature 第 4 版)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)。

**如果不更新會發生什麼情況？**  
在此之後使用 Signature 第 2 版簽署的請求，將無法向 Amazon S3 進行身分驗證。請求者將看到系統顯示錯誤，表示必須使用 Signature 第 4 版簽署請求。

**即使我使用的預先簽章 URL 要求大於 7 天的簽署時間，是否也需要進行更新？**  
如果您使用的預先簽章 URL 要求大於 7 天的簽署時間，則目前無需採取任何動作。您可以繼續使用 AWS Signature 第 2 版來簽署和驗證預先簽章的 URL。如需如何針對預先簽章的 URL 案例遷移至 Signature 第 4 版的詳細資訊，請參閱 Amazon S3 文件。

### 詳細資訊
<a name="UsingAWSSDK-sev2-deprecation-more-info"></a>
+ 如需使用 Signature 第 4 版的詳細資訊，請參閱[簽署 AWS API 請求](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)。
+ 在 [Signature 第 4 版的變更](https://docs.aws.amazon.com/general/latest/gr/sigv4_changes.html)中檢視 Signature 第 2 版和 Signature 第 4 版之間的變更清單。
+ 檢視 [AWS Signature 第 4 版文章，取代 AWS Signature 第 2 版，以在論壇中簽署 Amazon S3 API 請求](https://forums.aws.amazon.com/ann.jspa?annID=5816)。 AWS 
+ 如果您有其他問題或疑慮，請聯絡 [支援](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html)。

   

## 從 Signature 第 2 版遷移至 Signature 第 4 版
<a name="UsingAWSSDK-move-to-Sig4"></a>

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

如需有關在 Amazon S3 REST API 中使用 Signature 第 4 版的詳細資訊，請參閱《Amazon Simple Storage Service API 參考》**中的[身分驗證請求 (AWS Signature 第 4 版)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)。

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


| 如果您使用此軟體開發套件/產品 | 升級至此軟體開發套件版本 | 用戶端使用 Sigv4 時需要變更程式碼嗎？ | 軟體開發套件文件的連結 | 
| --- | --- | --- | --- | 
| 適用於 Java 的 AWS SDK v1 | 升級至 Java 1.11.201\+ 或 v2。 | 是 | [在請求身分驗證中指定簽章版本](#specify-signature-version) | 
| 適用於 Java 的 AWS SDK v2 | 無需升級軟體開發套件。 | 否 | [適用於 Java 的 AWS SDK](https://aws.amazon.com/sdk-for-java/) | 
| 適用於 .NET 的 AWS SDK v1  | 升級至 3.1.10 或更新版本。 | 是 | [適用於 .NET 的 AWS SDK](https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v1/) | 
| 適用於 .NET 的 AWS SDK v2  | 升級至 3.1.10 或更新版本。 | 否 | [適用於 .NET 的 AWS SDK](https://github.com/aws/aws-sdk-net/tree/aws-sdk-net-v2/) v2 | 
| 適用於 .NET 的 AWS SDK v3  | 升級至 3.3.0.0 或更新版本。 | 是 | [適用於 .NET 的 AWS SDK v3](https://github.com/aws/aws-sdk-net) | 
| 適用於 JavaScript 的 AWS SDK v1  | 升級至 2.68.0 或更新版本。 | 是 | [適用於 JavaScript 的 AWS SDK](https://github.com/aws/aws-sdk-js) | 
| 適用於 JavaScript 的 AWS SDK v2  | 升級至 2.68.0 或更新版本。 | 是 | [適用於 JavaScript 的 AWS SDK](https://github.com/aws/aws-sdk-js) | 
| 適用於 JavaScript 的 AWS SDK v3  | 目前無需採取動作。在 2019 年第 3 季升級至主要版本 V3。 | 否 | [適用於 JavaScript 的 AWS SDK](https://github.com/aws/aws-sdk-js) | 
| 適用於 PHP 的 AWS SDK v1  | 建議升級至 PHP 的最新版本，或至少升級至 v2.7.4，其中 S3 用戶端組態中的簽署參數應設為 v4。 | 是 | [適用於 PHP 的 AWS SDK](https://aws.amazon.com/sdk-for-php/) | 
| 適用於 PHP 的 AWS SDK v2  | 建議升級至 PHP 的最新版本，或至少升級至 v2.7.4，其中 S3 用戶端組態中的簽署參數應設為 v4。 | 否 | [適用於 PHP 的 AWS SDK](https://aws.amazon.com/sdk-for-php/) | 
| 適用於 PHP 的 AWS SDK v3  | 無需升級軟體開發套件。 | 否 | [適用於 PHP 的 AWS SDK](https://aws.amazon.com/sdk-for-php/) | 
| Boto2  | 升級至 Boto2 v2.49.0。 | 是 | [Boto 2 升級](https://github.com/boto/boto/commit/16729da27b95d6dbbd81bcebb43bcf099ce23fd3) | 
| Boto3  | 升級至 1.5.71 (Botocore)、1.4.6 (Boto3)。 | 是 | [適用於 Python 的 Boto 3 - AWS SDK](https://github.com/boto/boto3) | 
| AWS CLI  | 升級至 1.11.108。 | 是 | [AWS Command Line Interface](https://aws.amazon.com/cli/) | 
| AWS CLI v2 （預覽版）  | 無需升級軟體開發套件。 | 否 | [AWS Command Line Interface 第 2 版](https://github.com/aws/aws-cli/tree/v2) | 
| 適用於 Ruby 的 AWS SDK v1  | 升級至 Ruby V3。 | 是 | [適用於 AWS的 Ruby V3](https://rubygems.org/gems/aws-sdk/versions) | 
| 適用於 Ruby 的 AWS SDK v2  | 升級至 Ruby V3。 | 是 | [適用於 AWS的 Ruby V3](https://rubygems.org/gems/aws-sdk/versions) | 
| 適用於 Ruby 的 AWS SDK v3  | 無需升級軟體開發套件。 | 否 | [適用於 AWS的 Ruby V3](https://rubygems.org/gems/aws-sdk/versions) | 
| Go  | 無需升級軟體開發套件。 | 否 | [適用於 Go 的 AWS SDK](https://aws.amazon.com/sdk-for-go/) | 
| C\+\+  | 無需升級軟體開發套件。 | 否 | [適用於 C\+\+ 的 AWS SDK](https://aws.amazon.com/sdk-for-cpp/) | 

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