자습서: AWS 통합을 통해 REST API 생성 - Amazon API Gateway

자습서: AWS 통합을 통해 REST API 생성

자습서: Lambda 프록시 통합을 통해 REST API 생성자습서: Lambda 비 프록시 통합을 통해 REST API 생성 주제에서는 통합된 Lambda 함수를 공개하는 API Gateway API를 생성하는 방법에 대해 설명합니다. 또한 API Gateway API를 생성하여 Amazon SNS, Amazon S3, Amazon Kinesis, 심지어 AWS Lambda 등의 다른 AWS 서비스를 노출할 수 있습니다. 이는 AWS 통합을 통해 가능합니다. Lambda 통합 또는 Lambda 프록시 통합은 Lambda 함수 호출이 API Gateway API를 통해 공개되는 특수한 경우입니다.

모든 AWS 서비스는 전용 API를 지원하여 해당 기능을 공개합니다. 그러나 애플리케이션 프로토콜 또는 프로그래밍 인터페이스는 서비스마다 다를 수 있습니다. AWS 통합을 사용한 API Gateway API는 클라이언트가 서로 다른 AWS 서비스에 액세스할 수 있도록 일관된 애플리케이션 프로토콜을 제공한다는 이점이 있습니다.

이 연습에서는 Amazon SNS를 공개하는 API를 생성합니다. API와 다른 AWS 서비스를 통합하는 더 많은 예제를 보려면 Amazon API Gateway 자습서 및 워크숍를 참조하십시오.

Lambda 프록시 통합과 달리 다른 AWS 서비스에는 해당 프록시 통합이 없습니다. 따라서 API 메서드는 단일 AWS 작업과 통합됩니다. 유연성을 높이기 위해 프록시 통합과 마찬가지로 Lambda 프록시 통합을 설정할 수 있습니다. 그런 다음 Lambda 함수는 다른 AWS 작업에 대한 요청을 구문 분석하고 처리합니다.

API Gateway는 엔드포인트 시간이 초과되어도 재시도하지 않습니다. API 호출자는 엔드포인트 시간 초과를 처리하기 위한 재시도 로직을 구현해야 합니다.

이 연습은 자습서: Lambda 비 프록시 통합을 통해 REST API 생성의 지침 및 개념을 기반으로 합니다. 아직 그 연습을 완료하지 못했다면 먼저 완료하는 것이 좋습니다.

사전 조건 

이 연습을 시작하기 전에 다음을 수행합니다.

  1. API Gateway를 시작하기 위한 사전 조건의 단계를 수행합니다.

  2. MyDemoAPI라는 새 API를 생성합니다. 자세한 내용은 자습서: HTTP 비 프록시 통합을 통해 REST API 생성 단원을 참조하세요.

  3. API를 test이라는 단계에 1회 이상 배포합니다. 자세한 내용은 AWS Lambda 통합 튜토리얼 선택API 배포를 참조하세요.

  4. 의 나머지 단계를 완료합니다AWS Lambda 통합 튜토리얼 선택

  5. Amazon Simple Notification Service(Amazon SNS)에 하나 이상의 주제를 생성합니다. 배포된 API를 이용해 AWS 계정과 연결된 Amazon SNS에서 주제 목록을 가져옵니다. Amazon SNS에서 주제를 생성하는 방법은 주제 생성을 참조하세요. (5단계에 언급한 주제 ARN을 복사할 필요가 없습니다.)

1단계: AWS 서비스 프록시 실행 역할 생성

API에서 Amazon SNS 작업을 간접적으로 호출하도록 허용하려면 적절한 IAM 정책을 IAM 역할에 연결해야 합니다.

AWS 서비스 프록시 실행 역할을 생성하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. Roles를 선택합니다.

  3. 역할 생성을 선택합니다.

  4. 신뢰할 수 있는 유형의 엔터티 선택에서 AWS 서비스를 선택한 다음 API Gateway를 선택하고 API Gateway가 로그를 CloudWatch Logs로 푸시하도록 허용을 선택합니다.

  5. 다음을 선택한 후 다시 다음을 선택합니다.

  6. 역할 이름APIGatewaySNSProxyPolicy를 입력한 다음 역할 생성을 선택합니다.

  7. 역할 목록에서 방금 생성한 역할을 선택합니다. 스크롤하거나 검색 창을 사용하여 역할을 찾을 수 있습니다.

  8. 선택한 역할에 대해 권한 추가 탭을 선택합니다.

  9. 드롭다운 목록에서 정책 연결을 선택합니다.

  10. 검색 창에 AmazonSNSReadOnlyAccess를 입력하고 권한 추가를 선택합니다.

    참고

    이 자습서에서는 단순화를 위해 관리형 정책을 사용합니다. 가장 좋은 방법은 필요한 최소 권한을 부여하는 자체 IAM 정책을 생성하는 것입니다.

  11. 새로 생성된 역할 ARN은 나중에 사용할 수 있도록 기록해 둡니다.

2단계: 리소스 생성

이 단계에서는 AWS 서비스 프록시가 AWS 서비스와 상호 작용할 수 있도록 하는 리소스를 생성합니다.

리소스를 생성하려면
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. API를 선택합니다.

  3. 슬래시 하나(/)로 표현된 루트 리소스 /를 선택한 후 리소스 생성을 선택합니다.

  4. 프록시 리소스는 꺼진 상태로 둡니다.

  5. 리소스 경로/로 유지합니다.

  6. 리소스 이름mydemoawsproxy을 입력합니다.

  7. 오리진 간 리소스 공유(CORS)를 꺼진 상태로 둡니다.

  8. 리소스 생성을 선택합니다.

3단계: GET 메서드 생성

이 단계에서는 AWS 서비스 프록시가 AWS 서비스와 상호 작용할 수 있도록 하는 GET 메서드를 생성합니다.

GET 메서드를 생성하려면
  1. /mydemoawsproxy 리소스를 선택한 다음 메서드 생성을 선택합니다.

  2. 메서드 유형에서 GET을 선택합니다.

  3. 통합 유형에서 AWS 서비스를 선택합니다.

  4. AWS 리전에서 Amazon SNS 주제를 생성한 AWS 리전을 선택합니다.

  5. AWS 서비스에서 Amazon SNS를 선택합니다.

  6. AWS 하위 도메인은 비워 둡니다.

  7. HTTP 메서드에서 GET을 선택합니다.

  8. 작업 유형에서 작업 이름 사용을 선택합니다.

  9. 함수 이름ListTopics를 입력합니다.

  10. 실행 역할APIGatewaySNSProxyPolicy의 ARN을 입력합니다.

  11. 메서드 생성을 선택합니다.

4단계: 메서드 설정 지정 및 메서드 테스트

이제 GET 메서드를 테스트하여 Amazon SNS 주제를 나열하도록 적절히 설정되었는지 확인할 수 있습니다.

GET 메서드를 테스트하는 방법
  1. 테스트 탭을 선택합니다. 탭을 표시하려면 오른쪽 화살표 버튼을 선택해야 할 수도 있습니다.

  2. 테스트를 선택합니다.

    결과로 다음과 비슷한 응답이 표시됩니다.

    { "ListTopicsResponse": { "ListTopicsResult": { "NextToken": null, "Topics": [ { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1" }, { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2" }, ... { "TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N" } ] }, "ResponseMetadata": { "RequestId": "abc1de23-45fa-6789-b0c1-d2e345fa6b78" } } }

5단계: API 배포

이 단계에서는 API를 API Gateway 콘솔 외부에서 호출할 수 있도록 배포합니다.

API를 배포하려면
  1. Deploy API(API 배포)를 선택합니다.

  2. 스테이지에서 새 스테이지를 선택합니다.

  3. 단계 이름test를 입력합니다.

  4. (선택 사항) 설명에 설명을 입력합니다.

  5. [Deploy]를 선택합니다.

6단계: API 테스트

이 단계에서는 API Gateway 콘솔 외부로 이동한 후 AWS 서비스 프록시를 사용하여 Amazon SNS 서비스와 상호 작용합니다.

  1. 기본 탐색 창에서 스테이지를 선택합니다.

  2. 스테이지 세부 정보에서 복사 아이콘을 선택하여 API의 호출 URL을 복사합니다.

    형식은 다음과 같아야 합니다.

    https://my-api-id.execute-api.region-id.amazonaws.com/test
  3. URL을 새 브라우저 탭의 주소 표시줄에 입력합니다.

  4. /mydemoawsproxy를 추가하여 URL이 다음과 같이 되도록 합니다.

    https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoawsproxy

    해당 URL로 이동합니다. 다음과 비슷한 정보가 표시되어야 합니다.

    {"ListTopicsResponse":{"ListTopicsResult":{"NextToken": null,"Topics":[{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-1"},{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-2"},...{"TopicArn": "arn:aws:sns:us-east-1:80398EXAMPLE:MySNSTopic-N}]},"ResponseMetadata":{"RequestId":"abc1de23-45fa-6789-b0c1-d2e345fa6b78}}}

7단계: 정리

AWS 서비스 프록시가 작업해야 할 IAM 리소스를 삭제할 수 있습니다.

주의

AWS 서비스 프록시가 사용하는 IAM 리소스를 삭제하면 AWS 서비스 프록시 및 그것을 사용하는 모든 API는 더 이상 작동하지 않습니다. IAM 리소스 삭제는 실행 취소할 수 없습니다. IAM 리소스를 다시 사용하고 싶다면 재생성해야 합니다.

연결된 IAM 리소스를 삭제하려면
  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 세부 정보 영역에서 역할을 선택합니다.

  3. APIGatewayAWSProxyExecRole을 선택한 다음 역할 작업, 역할 삭제를 선택합니다. 확인 메시지가 나타나면 [Yes, Delete]를 선택합니다.

  4. 세부 정보 영역에서 정책을 선택합니다.

  5. APIGatewayAWSProxyExecPolicy를 선택한 다음 정책 작업, 삭제를 선택합니다. 확인 메시지가 나타나면 삭제를 선택합니다.

이 연습을 마칩니다. API를 AWS 서비스 프록시로 생성하는 방법에 대한 자세한 설명은 자습서: Amazon Kinesis 프록시로 REST API 생성, 튜토리얼: 두 개의 AWS 서비스 통합과 하나의 Lambda 비프록시 통합으로 REST API 생성 또는 자습서: REST API를 Amazon Kinesis 프록시로 생성 단원을 참조하세요.