

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

# 範例：簽章第 4 版中的 AWS 簽章計算
<a name="sig-v4-examples-using-sdks"></a>

**Topics**
+ [使用 Java AWS 的簽章計算範例 （簽章第 4 版）](#sig-v4-examples-using-sdk-java)
+ [使用 C\# 的簽章計算範例AWS （簽章版本 4)](#sig-v4-examples-using-sdk-dotnet)

 對於已驗證的請求，除非您使用 AWS SDKs，否則您必須撰寫程式碼來計算在請求中提供驗證資訊的簽章。Signature 第 4 版中的 AWS 簽章計算 （請參閱[驗證請求AWS （簽章第 4 版）](sig-v4-authenticating-requests.md)) 可能是一項複雜的任務，我們建議您盡可能使用 AWS SDKs。

 本節提供以 Java 和 C\# 撰寫的簽章計算範例。程式碼範例會傳送下列請求，並使用 HTTP 授權標頭來提供身分驗證資訊：
+ **PUT 物件** – 個別範例說明一次上傳完整承載並以區塊形式上傳承載。如需使用授權標頭進行身分驗證的詳細資訊，請參閱 [驗證請求：使用授權標頭AWS （簽章第 4 版）](sigv4-auth-using-authorization-header.md)。
+ **GET 物件** – 此範例會產生預先簽章的 URL 以取得物件。查詢參數提供簽章和其他身分驗證資訊。使用者可以在瀏覽器中貼上預先簽章的 URL 來擷取物件，或者您可以使用 URL 來建立可點選的連結。如需使用查詢參數進行身分驗證的詳細資訊，請參閱[驗證請求：使用查詢參數AWS （簽章第 4 版）](sigv4-query-string-auth.md)。

本節其餘部分說明 Java 和 C\# 中的範例。這些主題包含下載範例和執行範例的說明。

## 使用 Java AWS 的簽章計算範例 （簽章第 4 版）
<a name="sig-v4-examples-using-sdk-java"></a>

顯示簽章計算的 Java 範例可在 https：//[https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip](samples/AWSS3SigV4JavaSamples.zip) 下載。請注意，這些範例使用適用於 Java 的 AWS SDK v1，我們建議您將[AWS 適用於 Java 的 SDK v2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) 用於新應用程式。在 中`RunAllSamples.java`， `main()`函數會執行範例請求來建立物件、擷取物件，以及建立物件的預先簽章 URL。範例會從程式碼中提供的文字字串建立物件：

```
PutS3ObjectSample.putS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
GetS3ObjectSample.getS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
PresignedUrlSample.getPresignedUrlToS3Object(bucketName, regionName, awsAccessKey, awsSecretKey); 
PutS3ObjectChunkedSample.putS3ObjectChunked(bucketName, regionName, awsAccessKey, awsSecretKey);
```

**在 Linux 型電腦上測試範例**

下列指示適用於 Linux 作業系統。

1. 在終端機中，導覽至包含 的目錄`AWSS3SigV4JavaSamples.zip`。

1. 解壓縮 .zip 檔案。

1. 在文字編輯器中開啟檔案 `./com/amazonaws/services/s3/samples/RunAllSamples.java`。使用下列資訊更新程式碼：

    
   + 可以建立新物件的儲存貯體名稱。

      
**注意**  
這些範例使用虛擬託管樣式請求來存取儲存貯體。為了避免潛在的錯誤，請確保您的儲存貯體名稱符合 *Amazon Simple Storage Service 使用者指南*中的[儲存貯體限制和限制中所述](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)的儲存貯體命名規則。
   + AWS 區域 儲存貯體所在的位置。

      如果儲存貯體位於美國東部 （維吉尼亞北部） 區域，請使用 us-east-1 指定區域。如需其他 的清單 AWS 區域，請前往 中的 [Amazon Simple Storage Service (S3)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)*AWS 一般參考*。

1. 編譯原始程式碼，並將編譯的類別存放在 `bin/`目錄中。

   ```
   javac -d bin -source 6 -verbose com
   ```

1. 將目錄變更為 `bin/`，然後執行 `RunAllSamples`。

    

   ```
   java com.amazonaws.services.s3.sample.RunAllSamples
   ```

   此程式碼會執行 中的所有方法`main()`。對於每個請求，輸出將顯示正式請求、要簽署的字串和簽章。



## 使用 C\# 的簽章計算範例AWS （簽章版本 4)
<a name="sig-v4-examples-using-sdk-dotnet"></a>

 顯示簽章計算的 C\# 範例可在 https：//[https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4\_Samples\_CSharp.zip](samples/AmazonS3SigV4_Samples_CSharp.zip) 下載。請注意，這些範例使用適用於 .NET v1 的 AWS SDK，我們建議您針對新應用程式使用[AWS 適用於 .NET v3 的 SDK](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/home.html)。在 中`Program.cs`， `main()`函數會執行範例請求來建立物件、擷取物件，以及建立物件的預先簽章 URL。簽章計算的程式碼位於 `\Signers` 資料夾中。

```
PutS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt");

Console.WriteLine("\n\n************************************************");
PutS3ObjectChunkedSample.Run(awsRegion, bucketName, "MySampleFileChunked.txt");

Console.WriteLine("\n\n************************************************");
GetS3ObjectSample.Run(awsRegion, bucketName, "MySampleFile.txt");

Console.WriteLine("\n\n************************************************");
PresignedUrlSample.Run(awsRegion, bucketName, "MySampleFile.txt");
```

**使用 Microsoft Visual Studio 2010 或更新版本測試範例**

1. 解壓縮 .zip 檔案。

1.  啟動 Visual Studio，然後開啟 .sln 檔案。

1. 使用有效的安全登入資料更新 App.config 檔案。

1. 更新程式碼，如下所示：

    
   +  在 中`Program.cs`，提供儲存貯 AWS 區域 體名稱和儲存貯體所在的 。此範例會在此儲存貯體中建立 物件。

1. 執行程式碼。

1.  若要確認物件已建立，請複製程式建立的預先簽章 URL，然後將其貼入瀏覽器視窗。