

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

# 使用 REST API 用戶端呼叫 API
<a name="api-as-s3-proxy-test-using-postman"></a>

為了提供end-to-end教學課程，我們現在示範如何使用支援 IAM 授權的 [Postman](https://www.postman.com/) AWS 呼叫 API。<a name="api-as-s3-proxy-test-using-postman-steps"></a>

**使用 Postman 呼叫 Amazon S3 代理 API**

1. 部署或重新部署 API。請記下 API 的基本 URL，而此 API 顯示在**階段編輯器**頂端的**呼叫 URL** 旁邊。

1. 啟動 Postman。

1. 選擇**授權**，然後選擇 `AWS Signature`。在 **AccessKey** 和 **SecretKey** 輸入欄位中，分別輸入 IAM 使用者的存取金鑰 ID 和私密存取金鑰。在**AWS 區域**文字方塊中輸入要部署 API 的 AWS 區域 。在**服務名稱**輸入欄位中，輸入 `execute-api`。

   您可以從 IAM 管理主控台之 IAM 使用者帳戶的 **Security Credentials (安全登入資料)** 標籤中建立一對金鑰。

1. 將名為 `amzn-s3-demo-bucket` 的儲存貯體新增至 `{region}` 區域中的 Amazon S3 帳戶：

   1. 從下拉式方法清單中選擇 **PUT**，並輸入方法 URL (`https://api-id.execute-api.aws-region.amazonaws.com/stage/folder-name`

   1. 將 `Content-Type` 標頭值設定為 `application/xml`。您可能需要先刪除任何現有標頭，再設定內容類型。

   1. 選擇**內文**選單項目，並輸入下列 XML 片段做為請求內文：

      ```
      <CreateBucketConfiguration> 
        <LocationConstraint>{region}</LocationConstraint> 
      </CreateBucketConfiguration>
      ```

   1. 選擇**傳送**，以提交請求。如果成功，您應該會收到具有空承載的 `200 OK` 回應。

1. 若要將文字檔案新增至儲存貯體，請遵循上述說明操作。如果您在 URL 中指定 **amzn-s3-demo-bucket** 的儲存貯體名稱 `{folder}` 和 **Readme.txt** 的檔案名稱 `{item}`，並提供字串 **Hello, World\$1** 做為檔案內容 (因此其會成為請求承載)，則請求會如下所示：

   ```
   PUT /S3/amzn-s3-demo-bucket/Readme.txt HTTP/1.1
   Host: 9gn28ca086.execute-api.{region}.amazonaws.com
   Content-Type: application/xml
   X-Amz-Date: 20161015T062647Z
   Authorization: AWS4-HMAC-SHA256 Credential=access-key-id/20161015/{region}/execute-api/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=ccadb877bdb0d395ca38cc47e18a0d76bb5eaf17007d11e40bf6fb63d28c705b
   Cache-Control: no-cache
   Postman-Token: 6135d315-9cc4-8af8-1757-90871d00847e
   
   Hello, World!
   ```

   如果一切順利，您應該會收到含有空白承載的 `200 OK` 回應。

1. 若要取得剛剛新增至 `Readme.txt` 儲存貯體之 `amzn-s3-demo-bucket` 檔案的內容，請執行 GET 請求，如下所示：

   ```
   GET /S3/amzn-s3-demo-bucket/Readme.txt HTTP/1.1
   Host: 9gn28ca086.execute-api.{region}.amazonaws.com
   Content-Type: application/xml
   X-Amz-Date: 20161015T063759Z
   Authorization: AWS4-HMAC-SHA256 Credential=access-key-id/20161015/{region}/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=ba09b72b585acf0e578e6ad02555c00e24b420b59025bc7bb8d3f7aed1471339
   Cache-Control: no-cache
   Postman-Token: d60fcb59-d335-52f7-0025-5bd96928098a
   ```

   如果成功，您應該會收到具有 `200 OK` 字串做為承載的 `Hello, World!` 回應。

1. 若要列出 `amzn-s3-demo-bucket` 儲存貯體中的項目，請提交下列請求：

   ```
   GET /S3/amzn-s3-demo-bucket HTTP/1.1
   Host: 9gn28ca086.execute-api.{region}.amazonaws.com
   Content-Type: application/xml
   X-Amz-Date: 20161015T064324Z
   Authorization: AWS4-HMAC-SHA256 Credential=access-key-id/20161015/{region}/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=4ac9bd4574a14e01568134fd16814534d9951649d3a22b3b0db9f1f5cd4dd0ac
   Cache-Control: no-cache
   Postman-Token: 9c43020a-966f-61e1-81af-4c49ad8d1392
   ```

   如果成功，除非先將更多檔案新增至儲存貯體再提交此請求，否則您應該會收到 `200 OK` 回應，而其 XML 承載顯示所指定儲存貯體中的單一項目。

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
       <Name>apig-demo-5</Name>
       <Prefix></Prefix>
       <Marker></Marker>
       <MaxKeys>1000</MaxKeys>
       <IsTruncated>false</IsTruncated>
       <Contents>
           <Key>Readme.txt</Key>
           <LastModified>2016-10-15T06:26:48.000Z</LastModified>
           <ETag>"65a8e27d8879283831b664bd8b7f0ad4"</ETag>
           <Size>13</Size>
           <Owner>
               <ID>06e4b09e9d...603addd12ee</ID>
               <DisplayName>user-name</DisplayName>
           </Owner>
           <StorageClass>STANDARD</StorageClass>
       </Contents>
   </ListBucketResult>
   ```

**注意**  
若要上傳或下載影像，您需要將內容處理設定為 CONVERT\$1TO\$1BINARY。