

# REST API クライアントを使用して API を呼び出す
<a name="api-as-s3-proxy-test-using-postman"></a>

エンドツーエンドのチュートリアルを提供するため、ここで AWS IAM 認可をサポートする [Postman](https://www.postman.com/) を使用して API を呼び出す方法を説明します。<a name="api-as-s3-proxy-test-using-postman-steps"></a>

**Postman を使用して Amazon S3 のプロキシの API を呼び出すには**

1. API をデプロイまたは再デプロイします。[**ステージエディタ**] の最上部にある [**呼び出し URL**] の横に表示された API のベース URL を書き留めます。

1. Postman を起動します。

1. [**Authorization**] (認可) を選択し、次に `AWS Signature` を選択します。[**AccessKey**] と [**SecretKey**] の各入力フィールドに、IAM ユーザーのアクセスキー ID とシークレットアクセスキーをそれぞれ入力します。API のデプロイ先の AWS リージョンを [**AWS リージョン**] テキストボックスに入力します。[**サービス名**] 入力フィールドに「`execute-api`」と入力します。

   キーのペアは、IAM マネジメントコンソールの IAM ユーザーアカウントの [**Security Credentials (認証情報)**] タブで作成できます。

1. 次の手順に従って、`amzn-s3-demo-bucket` リージョンの Amazon S3 アカウントに `{region}` という名前のバケットを追加します。

   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. バケットにテキストファイルを追加するには、上記の手順に従います。**amzn-s3-demo-bucket** に対して `{folder}` というバケット名を指定し、URL の中の **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
   ```

   成功したときは、このリクエストを送信する前にバケットにファイルを追加した場合を除き、指定のバケット内に項目が 1 つだけ表示されている XML ペイロードを持った `200 OK` レスポンスを受け取ります。

   ```
   <?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>
   ```

**注記**  
画像をアップロードまたはダウンロードするには、処理したコンテンツを [バイナリに変換] に設定する必要があります。