View a markdown version of this page

範例:簽章第 4 版中的 AWS 簽章計算 - Amazon Simple Storage Service

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

範例:簽章第 4 版中的 AWS 簽章計算

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

本節提供以 Java 和 C# 撰寫的簽章計算範例。程式碼範例會傳送下列請求,並使用 HTTP 授權標頭來提供身分驗證資訊:

  • PUT 物件 – 個別範例說明一次上傳完整承載並以區塊形式上傳承載。如需使用授權標頭進行身分驗證的詳細資訊,請參閱 驗證請求:使用授權標頭AWS (簽章第 4 版)

  • GET 物件 – 此範例會產生預先簽章的 URL 以取得物件。查詢參數提供簽章和其他身分驗證資訊。使用者可以在瀏覽器中貼上預先簽章的 URL 來擷取物件,或者您可以使用 URL 來建立可點選的連結。如需使用查詢參數進行身分驗證的詳細資訊,請參閱驗證請求:使用查詢參數AWS (簽章第 4 版)

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

使用 Java AWS 的簽章計算範例 (簽章第 4 版)

顯示簽章計算的 Java 範例可在 https://https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AWSS3SigV4JavaSamples.zip 下載。請注意,這些範例使用適用於 Java 的 AWS SDK v1,我們建議您將AWS 適用於 Java 的 SDK v2 用於新應用程式。在 中RunAllSamples.javamain()函數會執行範例請求來建立物件、擷取物件,以及建立物件的預先簽章 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

  2. 解壓縮 .zip 檔案。

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

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

      注意

      這些範例使用虛擬託管樣式請求來存取儲存貯體。為了避免潛在的錯誤,請確保您的儲存貯體名稱符合 Amazon Simple Storage Service 使用者指南中的儲存貯體限制和限制中所述的儲存貯體命名規則。

    • AWS 區域 儲存貯體所在的位置。

      如果儲存貯體位於美國東部 (維吉尼亞北部) 區域,請使用 us-east-1 指定區域。如需其他 的清單 AWS 區域,請前往 中的 Amazon Simple Storage Service (S3)AWS 一般參考

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

    javac -d bin -source 6 -verbose com
  5. 將目錄變更為 bin/,然後執行 RunAllSamples

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

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

使用 C# 的簽章計算範例AWS (簽章版本 4)

顯示簽章計算的 C# 範例可在 https://https://docs.aws.amazon.com/AmazonS3/latest/API/samples/AmazonS3SigV4_Samples_CSharp.zip 下載。請注意,這些範例使用適用於 .NET v1 的 AWS SDK,我們建議您針對新應用程式使用AWS 適用於 .NET v3 的 SDK。在 中Program.csmain()函數會執行範例請求來建立物件、擷取物件,以及建立物件的預先簽章 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 檔案。

  2. 啟動 Visual Studio,然後開啟 .sln 檔案。

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

  4. 更新程式碼,如下所示:

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

  5. 執行程式碼。

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