

# 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를 배포 또는 재배포합니다. **단계 편집기(Stage Editor)** 상단의 **URL 호출(Invoke URL)** 옆에 표시된 API의 기본 URL를 적어 둡니다.

1. Postman을 시작합니다.

1. **권한 부여**(Authorization)를 선택한 다음 `AWS Signature`를 선택합니다. IAM 사용자의 액세스 키 ID 및 비밀 액세스 키를 각각 **AccessKey** 및 **SecretKey** 입력 필드에 입력합니다. API가 배포되는 AWS 리전을 **AWS 리전** 텍스트 상자에 입력합니다. **서비스 이름** 입력 필드에 `execute-api`를 입력합니다.

   IAM Management Console의 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
   ```

   성공적으로 수행했을 경우, 이 요청을 제출하기 전에 더 많은 파일을 해당 버킷에 추가하지 않았다면, 지정된 버킷에 단일 항목을 보여 주는 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>
   ```

**참고**  
이미지를 업로드하거나 다운로드하려면 콘텐츠 처리를 CONVERT\$1TO\$1BINARY로 설정해야 합니다.