725
Amazon API Gateway 개발자 안내서

Amazon API Gateway · 2019-11-08 · Amazon API Gateway 개발자 안내서 API Gateway의 아키텍처 Amazon API Gateway이란 무엇입니 까? Amazon API Gateway는 규모와

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

  • Amazon API Gateway개발자 안내서

  • Amazon API Gateway 개발자 안내서

    Amazon API Gateway: 개발자 안내서Copyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

    Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

  • Amazon API Gateway 개발자 안내서

    Table of ContentsAmazon API Gateway이란 무엇입니까? ................................................................................................. 1

    API Gateway의 아키텍처 ............................................................................................................. 1API Gateway의 기능 ................................................................................................................... 2API Gateway 사용 사례 ............................................................................................................... 2

    API Gateway를 사용하여 REST API 생성 ............................................................................... 3API 게이트웨이를 사용하여 WebSocket API 생성 .................................................................... 3API Gateway를 누가 사용하는가? ......................................................................................... 4

    API Gateway에 액세스 ................................................................................................................ 4서버를 사용하지 않는 AWS 인프라의 일부 ..................................................................................... 5처음으로 Amazon API Gateway 사용하기 ....................................................................................... 5API Gateway 개념 ...................................................................................................................... 5API Gateway 요금 ...................................................................................................................... 8API Gateway 규정 준수 ............................................................................................................... 8

    PCI DSS ........................................................................................................................... 8HIPAA ............................................................................................................................... 9

    API Gateway 시작하기 ...................................................................................................................... 10사전 조건: API Gateway에서 API 구축 준비 .................................................................................. 10

    AWS 계정에 가입 ............................................................................................................. 10IAM 관리자 사용자 생성 ..................................................................................................... 10

    Lambda 통합으로 REST API 생성 ............................................................................................... 101단계: Lambda 콘솔에서 Lambda 함수 생성 ......................................................................... 112단계: API Gateway 콘솔에서 REST API 생성 ...................................................................... 113단계: API Gateway 콘솔에서 REST API 배포 ...................................................................... 134단계: Lambda 콘솔에서 두 번째 Lambda 함수 생성 .............................................................. 145단계: API Gateway 콘솔에서 REST API에 리소스, 메서드, 파라미터 추가 ................................. 15다음 단계 ......................................................................................................................... 17

    모의 통합으로 REST API 생성 .................................................................................................... 181단계: API 생성 ................................................................................................................ 182단계: 모의 통합 생성 ....................................................................................................... 203단계: 성공적인 응답 정의 ................................................................................................. 214단계: HTTP 500 상태 코드 및 오류 메시지 추가 ................................................................... 215단계: 모의 통합 테스트 .................................................................................................... 22다음 단계 ......................................................................................................................... 24

    Amazon API Gateway 동영상 ..................................................................................................... 25Twich Build On AWS 이벤트 시리즈의 Amazon API Gateway 동영상 ........................................ 25기타 Amazon API Gateway 동영상 ...................................................................................... 25

    자습서 ............................................................................................................................................. 26Lambda 통합을 사용하여 API 구축 .............................................................................................. 26

    자습서: Lambda 프록시 통합을 사용한 Hello World API .......................................................... 26자습서: 교차 계정 Lambda 프록시 통합을 사용하여 API 빌드 ................................................... 31자습서: Lambda 비 프록시 통합을 사용하여 API 빌드 ............................................................. 33

    자습서: 예제를 가져와 REST API 생성 ......................................................................................... 42HTTP 통합을 사용하여 API 빌드 ................................................................................................. 49

    자습서: HTTP 프록시 통합을 사용하여 API 빌드 .................................................................... 49자습서: HTTP 비 프록시 통합을 사용하여 API 빌드 ................................................................ 54

    자습서: 프라이빗 통합을 사용하여 API 빌드 .................................................................................. 83자습서: AWS 통합을 사용하여 API 빌드 ....................................................................................... 85

    사전 조건 ......................................................................................................................... 861단계: 리소스 생성 ............................................................................................................ 862단계: GET 메서드 생성 .................................................................................................... 863단계: AWS 서비스 프록시 실행 역할 생성 ........................................................................... 874단계: 메서드 설정 지정 및 메서드 테스트 ............................................................................ 885단계: API 배포 ................................................................................................................ 896단계: API 테스트 ............................................................................................................. 89

    iii

  • Amazon API Gateway 개발자 안내서

    7단계: 정리 ...................................................................................................................... 89자습서: 세 가지 통합을 사용한 Calc API ..................................................................................... 90

    AWS 계정 만들기 ............................................................................................................. 90수임 가능한 IAM 역할 만들기 ............................................................................................. 91Calc Lambda 함수를 만듭니다. .......................................................................................... 93Calc Lambda 함수 테스트 ................................................................................................. 93Calc API를 만듭니다. ....................................................................................................... 94통합 1: Lambda 함수를 호출하기 위해 쿼리 파라미터를 사용하여 GET 메서드 만들기 ................... 95통합 2: Lambda 함수를 호출하기 위해 JSON 페이로드를 사용하여 POST 메서드 만들기 ............... 97통합 3: Lambda 함수를 호출하기 위해 경로 파라미터를 사용하여 GET 메서드 만들기 ................. 100Lambda 함수에 대한 샘플 API의 OpenAPI 정의 ................................................................... 105

    자습서: API Gateway에서 Amazon S3 프록시로 REST API 생성 ..................................................... 109API에서 Amazon S3 작업을 호출하도록 허용하는 IAM 권한 설정 ............................................ 110API 리소스를 생성하여 Amazon S3 리소스 표시 .................................................................. 111API 메서드를 노출하여 호출자의 Amazon S3 버킷 나열 ........................................................ 112API 메서드를 노출하여 Amazon S3 버킷 액세스 .................................................................. 118API 메서드를 노출하여 버킷에서 Amazon S3 객체 액세스 ..................................................... 121REST API 클라이언트를 사용하여 API 호출 ........................................................................ 124Amazon S3 프록시로 샘플 API의 OpenAPI 정의 .................................................................. 126

    자습서: Amazon Kinesis 프록시로 REST API 생성 ....................................................................... 135API에서 Kinesis 액세스를 위한 IAM 역할 및 정책 생성 .......................................................... 136API를 Kinesis 프록시로 생성 ............................................................................................. 137Kinesis에 스트림 나열 ...................................................................................................... 138Kinesis에서 스트림 생성, 설명, 삭제 ................................................................................... 142Kinesis의 스트림에서 레코드 가져오기 및 추가 .................................................................... 148Kinesis 프록시로서의 샘플 API의 OpenAPI 정의 .................................................................. 158

    REST API 생성, 배포 및 호출 ........................................................................................................... 174REST API 만들기 .................................................................................................................... 174

    API 엔드포인트 유형 선택 ................................................................................................ 175REST API 설정 초기화 .................................................................................................... 175REST API 메서드 설정 .................................................................................................... 195REST API 통합 설정 ....................................................................................................... 208게이트웨이 응답 설정 ...................................................................................................... 249데이터 매핑 설정 ............................................................................................................. 254이진 페이로드 지원 ......................................................................................................... 297페이로드 압축 활성화 ...................................................................................................... 319요청 검증 활성화 ............................................................................................................. 322REST API 가져오기 ......................................................................................................... 334

    REST API에 대한 액세스 제어 및 관리 ....................................................................................... 340API Gateway 리소스 정책 사용 ......................................................................................... 341IAM 권한 사용 ................................................................................................................ 355프라이빗 API에 대한 VPC 종단점 정책 사용 ........................................................................ 370태그를 사용하여 REST API에 대한 액세스 제어 ................................................................... 372Lambda 권한 부여자 사용 ................................................................................................ 372REST API에 대한 권한 부여자로 Cognito 사용자 풀 사용 ....................................................... 388REST API 리소스에 대한 CORS 활성화 ............................................................................. 397백엔드 인증을 위한 SSL 인증서 생성 및 구성 ...................................................................... 403AWS WAF를 사용하여 일반적인 웹 익스플로잇으로부터 API 보호 .......................................... 422API 키를 이용한 사용량 계획의 사용 .................................................................................. 424

    REST API 문서화 .................................................................................................................... 437API Gateway에서의 API 설명서 표현 ................................................................................. 438API Gateway 콘솔을 사용하여 API 문서화 ......................................................................... 445API Gateway 콘솔을 사용해 API 설명서 게시 ...................................................................... 453API Gateway REST API를 사용하여 API 문서화 ................................................................. 453API Gateway REST API를 사용해 API 설명서 게시 .............................................................. 468API 설명서 가져오기 ........................................................................................................ 475API 설명서에 대한 액세스 제어 ......................................................................................... 479

    iv

  • Amazon API Gateway 개발자 안내서

    REST API 업데이트 및 유지 ..................................................................................................... 479퍼블릭 또는 프라이빗 API 엔드포인트 유형 변경 .................................................................. 481콘솔을 사용한 API 유지 ................................................................................................... 482VPC 엔드포인트를 프라이빗 REST API와 연결 또는 연결 해제 ............................................... 484

    REST API 배포 ....................................................................................................................... 486REST API 배포 ............................................................................................................... 487단계 설정 ....................................................................................................................... 489API Gateway에서 REST API에 대한 SDK 생성 .................................................................... 512

    REST API 호출 ....................................................................................................................... 528API Gateway 콘솔에서 API의 호출 URL 얻기 ...................................................................... 528콘솔을 사용하여 REST API 메서드 테스트 .......................................................................... 529Postman을 사용하여 REST API 호출 ................................................................................. 530생성된 SDK를 통해 REST API 호출 ................................................................................... 530AWS Amplify JavaScript 라이브러리를 통해 REST API 호출 .................................................. 548프라이빗 API를 호출하는 방법 .......................................................................................... 548

    API 추적, 로깅 및 모니터링 ...................................................................................................... 550AWS X-Ray로 API 실행 추적 ............................................................................................ 551AWS CloudTrail를 이용한 Amazon API Gateway API 호출 로깅 .............................................. 561Amazon CloudWatch로 API 실행 모니터링 .......................................................................... 562API Gateway 액세스 로깅과 함께 Kinesis Data Firehose 사용 ................................................ 567

    WebSocket API 생성, 배포 및 호출 .................................................................................................... 569WebSocket API 소개 ............................................................................................................... 569

    연결된 사용자 및 클라이언트 앱 관리 ................................................................................. 570백엔드 통합 호출 ............................................................................................................. 571백엔드 서비스에서 연결된 클라이언트로 데이터 전송 ............................................................ 573

    WebSocket API 생성 ............................................................................................................... 574AWS CLI 명령을 사용하여 WebSocket API 생성 .................................................................. 574API Gateway 콘솔을 사용하여 WebSocket API 생성 ............................................................. 574

    WebSocket API 라우팅 설정 ..................................................................................................... 575라우팅 설정 .................................................................................................................... 575라우팅 요청 설정 지정 ..................................................................................................... 576

    WebSocket API 통합 설정 ........................................................................................................ 576WebSocket API 통합 요청을 설정 ...................................................................................... 577WebSocket API 통합 응답을 설정 ...................................................................................... 579

    WebSocket API 라우팅 응답을 설정 ........................................................................................... 581API Gateway 콘솔을 사용하여 라우팅 응답 설정 .................................................................. 581AWS CLI를 사용하여 라우팅 응답 설정 .............................................................................. 581

    WebSocket API 배포 ............................................................................................................... 582AWS CLI를 사용하여 WebSocket API 배포 생성 .................................................................. 582API Gateway 콘솔을 사용하여 WebSocket API 배포 생성 ...................................................... 583

    WebSocket API 호출 ............................................................................................................... 583wscat를 사용하여 WebSocket API에 연결하고 메시지 보내기 ................................................ 584백엔드 서비스에서 @connections 명령 사용 ..................................................................... 584

    WebSocket API에 대한 액세스 제어 ........................................................................................... 585IAM 권한 부여 사용 ......................................................................................................... 586Lambda REQUEST 권한 부여자 함수 ................................................................................... 586

    CloudWatch로 WebSocket API 실행 모니터링 ............................................................................. 588WebSocket 선택 표현식 ........................................................................................................... 590

    .................................................................................................................................... 590

    .................................................................................................................................... 591

    .................................................................................................................................... 592

    .................................................................................................................................... 592

    .................................................................................................................................... 592

    .................................................................................................................................... 592

    .................................................................................................................................... 592

    .................................................................................................................................... 593WebSocket 매핑 템플릿 참조 .................................................................................................... 596

    v

  • Amazon API Gateway 개발자 안내서

    HTTP API(베타) .............................................................................................................................. 600HTTP API 개념 ....................................................................................................................... 600

    라우팅 ........................................................................................................................... 601통합 .............................................................................................................................. 601Stages ........................................................................................................................... 601배포 .............................................................................................................................. 601CORS 구성 .................................................................................................................... 601JWT 권한 부여자 ............................................................................................................ 601빠른 생성 ....................................................................................................................... 601JWT 권한 부여자 ............................................................................................................ 602HTTP API CORS 구성 ..................................................................................................... 603

    HTTP API 또는 REST API 선택 ................................................................................................ 604.................................................................................................................................... 604

    HTTP API 생성 ....................................................................................................................... 606AWS Management 콘솔를 사용하여 HTTP API 생성 ............................................................. 606AWS CLI를 사용하여 HTTP API 생성 ................................................................................. 607

    HTTP API로 마이그레이션 ........................................................................................................ 607.................................................................................................................................... 607

    검증 정보 가져오기 ......................................................................................................... 607AWS CLI를 사용하여 API 가져오기 .................................................................................... 609

    HTTP API 로깅 ....................................................................................................................... 612HTTP API 로깅 ............................................................................................................... 612로깅 변수 ....................................................................................................................... 613

    HTTP API 할당량 .................................................................................................................... 615.................................................................................................................................... 615

    OpenAPI 확장 ................................................................................................................................. 617x-amazon-apigateway-any-method ..................................................................................... 617

    x-amazon-apigateway-any-method 예제 .............................................................................. 618x-amazon-apigateway-cors ........................................................................................................ 619

    x-amazon-apigateway-cors 예제 ........................................................................................ 619x-amazon-apigateway-api-key-source .............................................................................. 620

    x-amazon-apigateway-api-key-source 예 ............................................................................. 620x-amazon-apigateway-auth ................................................................................................ 620

    x-amazon-apigateway-auth 예제 ........................................................................................ 620x-amazon-apigateway-authorizer ..................................................................................... 621

    x-amazon-apigateway-authorizer 예 .................................................................................... 622x-amazon-apigateway-authtype ......................................................................................... 625

    x-amazon-apigateway-authtype 예 ..................................................................................... 625참고 항목 ....................................................................................................................... 626

    x-amazon-apigateway-binary-media-type ..................................................................................... 626x-amazon-apigateway-binary-media-types 예 ....................................................................... 626

    x-amazon-apigateway-documentation ......................................................................................... 626x-amazon-apigateway-documentation 예 ............................................................................. 626

    x-amazon-apigateway-endpoint-configuration ............................................................................... 627x-amazon-apigateway-endpoint-configuration 예제 ................................................................ 627

    x-amazon-apigateway-gateway-responses ................................................................................... 627x-amazon-apigateway-gateway-responses 예 ....................................................................... 628

    x-amazon-apigateway-gateway-responses.gatewayResponse ......................................................... 628x-amazon-apigateway-gateway-responses.gatewayResponse 예 ............................................. 629

    x-amazon-apigateway-gateway-responses.responseParameters ..................................................... 629x-amazon-apigateway-gateway-responses.repsonseParameters 예 ......................................... 629

    x-amazon-apigateway-gateway-responses.responseTemplates ....................................................... 630x-amazon-apigateway-gateway-responses.responseTemplates 예 ........................................... 630

    x-amazon-apigateway-importer-version ....................................................................................... 630api-gateway-swagger-extensions-importer-version 예제 ......................................................... 630

    x-amazon-apigateway-integration ................................................................................... 631x-amazon-apigateway-integration 예 ................................................................................... 633

    vi

  • Amazon API Gateway 개발자 안내서

    x-amazon-apigateway-integration.requestTemplates ...................................................................... 634x-amazon-apigateway-integration.requestTemplates 예 .......................................................... 634

    x-amazon-apigateway-integration.requestParameters .................................................................... 634x-amazon-apigateway-integration.requestParameters 예 ...................................... 635

    x-amazon-apigateway-integration.responses ................................................................................ 635x-amazon-apigateway-integration.responses 예 ..................................................... 636

    x-amazon-apigateway-integration.response .................................................................................. 636x-amazon-apigateway-integration.response 예 ....................................................... 637

    x-amazon-apigateway-integration.responseTemplates ................................................................... 637x-amazon-apigateway-integration.responseTemplate 예 ......................................................... 638

    x-amazon-apigateway-integration.responseParameters .................................................................. 638x-amazon-apigateway-integration.responseParameters 예 ..................................... 638

    x-amazon-apigateway-request-validator ....................................................................................... 639x-amazon-apigateway-request-validator 예 ............................................................ 639

    x-amazon-apigateway-request-validators ..................................................................................... 639x-amazon-apigateway-request-validators 예 .......................................................... 640

    x-amazon-apigateway-request-validators.requestValidator .............................................................. 640x-amazon-apigateway-request-validators.requestValidator 예 ........................... 641

    API 게시 ........................................................................................................................................ 642서버리스 개발자 포털을 사용하여 API를 목록화하십시오 ............................................................... 642

    개발자 포털 생성 ............................................................................................................. 643개발자 포털 설정 ............................................................................................................. 644개발자 포털의 관리자를 생성합니다. .................................................................................. 646개발자 포털에 API Gateway 관리형 API 게시 ...................................................................... 646API Gateway 관리형 API를 업데이트하거나 삭제합니다. ....................................................... 647API Gateway 관리형이 아닌 API를 제거하려면 .................................................................... 648개발자 포털에 API Gateway 관리형이 아닌 API를 게시하려면 ................................................ 648고객이 개발자 포털을 사용하는 방법 .................................................................................. 648개발자 포털 모범 사례 ..................................................................................................... 650

    API를 SaaS로 판매 ................................................................................................................. 650AWS Marketplace와 API Gateway의 통합 초기화 ................................................................. 650사용량 계획에 대한 고객 구독 처리 .................................................................................... 652

    API 사용자 지정 도메인 이름 설정 ............................................................................................. 653와일드카드 사용자 정의 도메인 이름 .................................................................................. 655AWS Certificate Manager에서 인증서 준비 .......................................................................... 656사용자 지정 도메인에 대한 최소 TLS 버전을 선택합니다 ....................................................... 658엣지 최적화 사용자 지정 도메인 이름을 생성하는 방법 .......................................................... 661REST 또는 WebSocket API에 대한 지역 사용자 지정 도메인 이름 설정 .................................... 667사용자 지정 도메인 이름을 마이그레이션 ............................................................................ 672

    REST API 내보내기 ................................................................................................................. 675REST API 내보내기 요청 ................................................................................................. 675REST API OpenAPI 정의를 JSON으로 다운로드 .................................................................. 676REST API OpenAPI 정의를 YAML로 다운로드 ..................................................................... 676Postman 확장이 포함된 REST API OpenAPI 정의를 JSON으로 다운로드 ................................. 677API Gateway 통합이 포함된 REST API OpenAPI 정의를 YAML로 다운로드 .............................. 677API Gateway 콘솔을 사용하여 REST API 내보내기 .............................................................. 678

    canary 릴리스 배포 설정 .......................................................................................................... 678API Gateway에서 canary 릴리스 배포 ................................................................................ 678canary 릴리스 배포 생성 .................................................................................................. 679canary 릴리스 업데이트 ................................................................................................... 683canary 릴리스 승격 ......................................................................................................... 685canary 릴리스 비활성화 ................................................................................................... 687

    API 구성 모니터링 ........................................................................................................................... 689지원되는 리소스 유형 .............................................................................................................. 689AWS Config 설정 .................................................................................................................... 690API Gateway 리소스를 기록하도록 AWS Config 구성 ................................................................... 690AWS Config 콘솔의 API Gateway 구성 세부 정보 보기 ................................................................. 690

    vii

  • Amazon API Gateway 개발자 안내서

    AWS Config 규칙을 사용해 API Gateway 리소스 평가 .................................................................. 691API Gateway 리소스에 태그 지정 ...................................................................................................... 692

    태그를 지정할 수 있는 API Gateway 리소스 ................................................................................ 692Amazon API Gateway V1 API의 태그 상속 .......................................................................... 693태그 제한 및 사용 규칙 .................................................................................................... 694

    태그 기반 액세스 제어 ............................................................................................................. 694예 1: 리소스 태그 기반 작업 제한 ...................................................................................... 694예 2: 요청의 태그 기반 작업 제한 ...................................................................................... 695예 3: 리소스 태그 기반 작업 거부 ...................................................................................... 696예 4: 리소스 태그 기반 작업 허용 ...................................................................................... 696

    API Gateway V1 및 V2 API 참조 ....................................................................................................... 698제한 및 중요 정보 ........................................................................................................................... 699

    API Gateway 제한 ................................................................................................................... 699API Gateway 계정 수준 제한 ............................................................................................ 699API Gateway WebSocket API 구성 및 실행에 대한 제한 ........................................................ 699API Gateway REST API 구성 및 실행에 대한 제한 ............................................................... 700API 생성, 배포, 관리에 대한 API Gateway 제한 .................................................................... 702

    중요 정보 ............................................................................................................................... 703REST 및 WebSocket API의 중요 정보 ................................................................................ 703WebSocket API의 중요 정보 ............................................................................................. 704REST API의 중요 정보 .................................................................................................... 704

    문서 이력 ....................................................................................................................................... 708이전 업데이트 ......................................................................................................................... 711

    AWS Glossary ................................................................................................................................ 717

    viii

  • Amazon API Gateway 개발자 안내서API Gateway의 아키텍처

    Amazon API Gateway이란 무엇입니까?

    Amazon API Gateway는 규모와 상관없이 REST 및 WebSocket API를 생성, 게시, 유지하고 모니터링 및 보안하기 위한 AWS 서비스입니다. API 개발자는 AWS 또는 다른 웹 서비스뿐 아니라 AWS 클라우드에 저장된데이터에 액세스하는 API를 생성할 수 있습니다. API Gateway API 개발자는 자체 클라이언트 애플리케이션(앱)에서 사용할 API를 만들 수 있습니다. 또는 타사 앱 개발자가 API를 사용하도록 제공할 수도 있습니다. 자세한 내용은 the section called “API Gateway를 누가 사용하는가?” (p. 4) 단원을 참조하십시오.

    API Gateway는 다음과 같은 REST API를 생성합니다.

    • HTTP 기반.• 상태가 없는 클라이언트-서버 통신을 지원하는 REST 프로토콜 준수.• 표준 HTTP 메서드 구현(예: GET, POST, PUT, PATCH, DELETE).

    API Gateway REST API에 대한 자세한 내용은 the section called “API Gateway를 사용하여 REST API 생성” (p. 3) 및 the section called “REST API 만들기” (p. 174) 단원을 참조하십시오.

    API Gateway는 다음과 같은 WebSocket API를 생성합니다.

    • 클라이언트와 서버 간에 상태를 저장하는 전이중 통신을 지원하는 WebSocket 프로토콜 준수.• 수신 메시지를 메시지 콘텐츠에 따라 라우팅.

    API Gateway WebSocket API에 대한 자세한 내용은 the section called “API 게이트웨이를 사용하여WebSocket API 생성” (p. 3) 및 the section called “WebSocket API 소개” (p. 569) 단원을 참조하십시오.

    주제• API Gateway의 아키텍처 (p. 1)• API Gateway의 기능 (p. 2)• API Gateway 사용 사례 (p. 2)• API Gateway에 액세스 (p. 4)• 서버를 사용하지 않는 AWS 인프라의 일부 (p. 5)• 처음으로 Amazon API Gateway 사용하기 (p. 5)• Amazon API Gateway 개념 (p. 5)• API Gateway 요금 (p. 8)• API Gateway 규정 준수 (p. 8)

    API Gateway의 아키텍처다음 다이어그램은 API Gateway 아키텍처를 보여줍니다.

    1

    https://aws.amazon.com/what-is-cloud-computing/https://en.wikipedia.org/wiki/Representational_state_transferhttps://tools.ietf.org/html/rfc6455

  • Amazon API Gateway 개발자 안내서API Gateway의 기능

    이 다이어그램에서는 Amazon API Gateway에 구축하는 API가 사용자 또는 사용자의 개발자 고객에게 AWS서버리스 애플리케이션을 구축하기 위한 통합되고 일관된 개발자 환경을 제공하는 방법을 보여 줍니다. APIGateway는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링, API 버전 관리를 포함하여 최대 수십만 개의 동시 API 호출 허용 및 처리에 관련된 모든 작업을 다룹니다. API Gateway는 애플리케이션이 AmazonElastic Compute Cloud(Amazon EC2)에서 실행되는 워크로드, AWS Lambda에서 실행되는 코드, 웹 애플리케이션 또는 실시간 통신 애플리케이션 등의 백엔드 서비스에서 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있도록 “대문” 역할을 합니다.

    API Gateway의 기능Amazon API Gateway는 다음과 같은 기능을 제공합니다.

    • 상태 저장(WebSocket (p. 569)) 및 상태 비저장(REST (p. 174)) API에 대한 지원.• 강력하고 유연한 인증 (p. 340) 메커니즘(예: AWS Identity and Access Management 정책, Lambda 권한

    부여자 함수, Amazon Cognito 사용자 풀 등).• API를 게시하기 위한 개발자 포털 (p. 642).• 변경 사항을 안전하게 롤아웃하기 위한 Canary 릴리스 배포 (p. 678).• API 사용 및 API 변경에 대한 CloudTrail (p. 561) 로깅 및 모니터링.• 경보 설정 기능을 포함한 CloudWatch 액세스 로깅 및 실행 로깅. 자세한 내용은 the section called

    “Amazon CloudWatch로 API 실행 모니터링” (p. 562) 및 the section called “CloudWatch로 WebSocketAPI 실행 모니터링” (p. 588) 단원을 참조하십시오.

    • AWS CloudFormation 템플릿을 사용하여 API 생성을 활성화할 수 있는 기능. 자세한 내용은 Amazon APIGateway 리소스 유형 참조 정보 및 Amazon API Gateway V2 리소스 유형 참조 정보.를 참조하십시오.

    • 사용자 지정 도메인 이름 (p. 653) 지원.• 일반적인 웹 익스플로잇으로부터 API를 보호하기 위해 AWS WAF (p. 422)와 통합.• 성능 지연 시간 파악 및 학습을 위해 AWS X-Ray (p. 551)와 통합.

    API Gateway 기능의 전체 목록은 문서 이력 (p. 708) 단원을 참조하십시오.

    API Gateway 사용 사례주제

    2

    https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-reference-apigateway.htmlhttps://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-reference-apigateway.htmlhttps://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-reference-apigatewayv2.html

  • Amazon API Gateway 개발자 안내서API Gateway를 사용하여 REST API 생성

    • API Gateway를 사용하여 REST API 생성 (p. 3)• API 게이트웨이를 사용하여 WebSocket API 생성 (p. 3)• API Gateway를 누가 사용하는가? (p. 4)

    API Gateway를 사용하여 REST API 생성API Gateway REST API는 리소스와 메서드로 구성됩니다. 리소스란 앱이 리소스 경로를 통해 액세스할 수있는 논리적 엔터티입니다. 메서드는 API 사용자가 제출한 REST API 요청 및 사용자에게 반환되는 응답에해당합니다.

    예를 들어 /incomes는 앱 사용자의 소득을 나타내는 리소스의 경로가 될 수 있습니다. 리소스는 GET,POST, PUT, PATCH, DELETE 등 적절한 HTTP 동사로 정의된 작업을 하나 이상 가질 수 있습니다. 리소스경로와 작업의 조합으로 API의 메서드를 식별합니다. 예를 들어 POST /incomes 메서드는 호출자가 획득한 소득을 추가하고 GET /expenses 메서드는 호출자로 인해 발생한 것으로 보고된 지출을 쿼리할 수 있습니다.

    앱은 요청된 데이터가 어디에 저장되고 백엔드의 어디에서 가져와지는지 인식할 필요가 없습니다. APIGateway REST API에서 프런트엔드는 메서드 요청 및 메서드 응답으로 캡슐화됩니다. API는 integrationrequests(통합 요청) 및 integration responses(통합 응답)을 이용해 백엔드와 통신합니다.

    예를 들어 DynamoDB가 백엔드일 때, API 개발자는 수신되는 메서드 요청을 선택한 백엔드로 전달하도록 통합 요청을 설정합니다. 이 설정에는 적절한 DynamoDB 작업, 필요한 IAM 역할 및 정책, 필요한 입력 데이터변환의 사양이 포함됩니다. 백엔드는 API Gateway에 통합 응답으로서 결과를 반환합니다. 통합 응답을 클라이언트에 대한 (해당 HTTP 상태 코드의) 적절한 메서드 응답으로 라우팅하려면, 통합에서 메서드로 필요한응답 파라미터를 매핑하도록 통합 응답을 구성하면 됩니다. 그런 다음, 필요에 따라 백엔드의 출력 데이터 형식을 프런트엔드의 형식으로 변환합니다. API Gateway를 사용하면 페이로드의 스키마나 모델을 정의하여본문 매핑 템플릿을 손쉽게 설정할 수 있습니다.

    API Gateway는 다음과 같은 REST API 관리 기능을 제공합니다.

    • OpenAPI에 대한 API Gateway 확장을 사용하여 SDK 생성 및 API 문서 생성 지원• HTTP 조절 요청

    API 게이트웨이를 사용하여 WebSocket API 생성WebSocket API에서 클라이언트와 서버는 언제든 서로 메시지를 보낼 수 있습니다. 백엔드 서버는 복잡한 폴링 메커니즘을 구현할 필요 없이 연결된 사용자 및 장치로 데이터를 쉽게 푸시할 수 있습니다.

    예를 들어, API Gateway WebSocket API 및 AWS Lambda을 사용하여 서버리스 애플리케이션을 구축하면채팅룸의 개별 사용자 또는 사용자 그룹과 메시지를 주고 받을 수 있습니다. 또는 메시지 내용에 따라 AWSLambda, Amazon Kinesis 또는 HTTP 엔드포인트 같은 백엔드 서비스를 호출할 수 있습니다.

    API Gateway WebSocket API를 사용하면 연결이나 대용량 데이터 교환을 관리하기 위해 서버를 프로비저닝하거나 관리하지 않고도 안전한 실시간 통신 애플리케이션을 구축할 수 있습니다. 타겟 사용 사례에는 다음과 같은 실시간 애플리케이션이 포함됩니다.

    • 채팅 애플리케이션• 주식 시세 표시기와 같은 실시간 대시 보드• 실시간 경고 및 알림

    API 게이트웨이는 다음과 같은 WebSocket API 관리 기능을 제공합니다.

    • 연결 및 메시지 모니터링 및 제한• AWS X-Ray를 사용하여 API를 통해 백엔드 서비스로 이동하는 메시지 추적

    3

    https://en.wikipedia.org/wiki/Payload_(computing)

  • Amazon API Gateway 개발자 안내서API Gateway를 누가 사용하는가?

    • HTTP/HTTPS 엔드포인트와 쉽게 통합

    API Gateway를 누가 사용하는가?API Gateway를 사용하는 개발자는 API 개발자와 앱 개발자, 두 가지 유형으로 나뉩니다.

    API 개발자는 API를 생성하고 배포하여 API Gateway에서 필요한 기능이 구현되도록 합니다. API 개발자는AWS 계정 내에서 API를 소유한 IAM 사용자여야 합니다.

    앱 개발자는 API Gateway에서 API 개발자가 생성한 WebSocket 또는 REST API를 호출하여 AWS 서비스를호출하기에 효과적인 애플리케이션을 구축합니다.

    앱 개발자는 API 개발자의 고객입니다. API에 IAM 권한이 필요하지 않거나 Amazon Cognito 사용자 풀 자격증명 연동에서 지원하는 타사 연동 자격 증명 공급자를 통해 사용자 권한 부여를 지원하는 경우 앱 개발자는AWS 계정을 보유할 필요가 없습니다. 이러한 자격 증명 공급자에는 Amazon, Amazon Cognito 사용자 풀,Facebook 및 Google이 포함됩니다.

    API Gateway API 생성 및 관리API 개발자는 apigateway라는 API 관리를 위한 API Gateway 서비스 구성 요소와 함께 작동하여 API를 생성, 구성 및 배포합니다. 각 API마다 리소스와 메서드 집합이 포함되어 있습니다. 리소스란 앱이 리소스 경로를 통해 액세스할 수 있는 논리적 엔터티입니다.

    API 개발자는 Amazon API Gateway 시작하기 (p. 10)에 설명된 대로 API Gateway; 콘솔을 사용하거나API Gateway V1 및 V2 API 참조 (p. 698)을 호출하여 API를 생성하고 관리할 수 있습니다. 이 API를 호출하는 몇 가지 방법이 있습니다. 여기에는 AWS 명령줄 인터페이스(CLI) 또는 AWS SDK를 이용하는 방법도포함됩니다. AWS CloudFormation 템플릿 또는 OpenAPI로 API Gateway 확장 (p. 617)(REST API의 경우)(으)로 API 생성을 지원할 수도 있습니다. 연결된 제어 서비스 엔드포인트를 비롯하여 API Gateway를 이용할 수 있는 리전 목록은 리전 및 엔드포인트를 참조하십시오.

    API Gateway API 호출앱 개발자는 execute-api라는 API 실행을 위한 API Gateway 서비스 구성 요소와 함께 작동하여 APIGateway에서 생성 또는 배포된 API를 호출합니다. 기본 프로그래밍 엔터티는 생성된 API에 의해 제공됩니다. 이러한 API를 호출하는 몇 가지 방법이 있습니다. API Gateway 콘솔을 사용해 API 호출을 테스트할 수있습니다. REST API의 경우, cURL 또는 POSTMAN 등의 REST API 클라이언트 또는 API Gateway가 해당API를 위해 생성한 SDK를 이용해 API를 호출할 수 있습니다.

    API Gateway에 액세스Amazon API Gateway에 액세스하는 방법은 다음과 같습니다.

    • AWS Management 콘솔 – 이 가이드의 절차는 AWS Management 콘솔을 사용하여 작업을 수행하는 방법을 설명합니다.

    • AWS SDK –AWS가 SDK를 제공하는 프로그래밍 언어를 사용하는 경우, SDK를 사용하여 API Gateway에액세스할 수 있습니다. SDK는 인증을 단순화하고, 개발 환경에 쉽게 통합되며, API Gateway 명령에 액세스할 수 있도록 합니다. 자세한 내용은 Amazon Web Services용 도구를 참조하십시오.

    • API Gateway V1 및 V2 API – SDK가 제공되지 않는 프로그래밍 언어를 사용할 경우 Amazon APIGateway 버전 1 API 참조 정보 및 Amazon API Gateway 버전 2 API 참조 정보를 참조하십시오.

    • AWS Command Line Interface – 자세한 내용은 AWS Command Line Interface 사용 설명서의 AWSCommand Line Interface 설정하기를 참조하십시오.

    • Windows PowerShell용 AWS 도구 – 자세한 내용은 Windows PowerShell용 AWS 도구 사용 설명서의Windows PowerShell용 AWS 도구 설정하기를 참조하십시오.

    4

    https://docs.aws.amazon.com/cognito/latest/developerguide/https://docs.aws.amazon.com/cognito/latest/developerguide/https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.htmlhttps://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_regionhttps://curl.haxx.se/https://www.getpostman.com/https://aws.amazon.com/toolshttps://docs.aws.amazon.com/apigateway/api-reference/https://docs.aws.amazon.com/apigateway/api-reference/https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/api-reference.htmlhttps://docs.aws.amazon.com/cli/latest/userguide/https://docs.aws.amazon.com/cli/latest/userguide/https://docs.aws.amazon.com/powershell/latest/userguide/

  • Amazon API Gateway 개발자 안내서서버를 사용하지 않는 AWS 인프라의 일부

    서버를 사용하지 않는 AWS 인프라의 일부API Gateway는 AWS Lambda와 함께 AWS 서버리스 인프라의 앱 페이싱(app-facing) 부분을 구성합니다.앱에서 공개적으로 사용할 수 있는 AWS 서비스를 호출하려면 Lambda을 사용해 필요한 서비스와 상호 작용하고, API Gateway에서 API 메서드를 통해 Lambda 함수를 제공할 수 있습니다. AWS Lambda은 고가용성 컴퓨팅 인프라에서 코드를 실행합니다. 컴퓨팅 리소스의 필요한 실행 및 관리를 수행합니다. 서버 없는애플리케이션을 활성화하기 위해 API Gateway는 AWS Lambda 및 HTTP 엔드포인트와 간소한 프록시 통합 (p. 211)을 지원합니다.

    처음으로 Amazon API Gateway 사용하기Amazon API Gateway에 대한 개요는 다음 항목을 참조하십시오.

    • API Gateway 시작하기 (p. 10) - Amazon API Gateway를 사용하여 API를 생성하는 방법을 알려주는 연습 및 동영상을 제공합니다.

    • Amazon API Gateway의 WebSocket API 소개 - WebSocket API를 만드는 방법을 설명합니다.

    Amazon API Gateway 개념API Gateway

    API Gateway는 다음을 지원하는 AWS 서비스입니다.• 백엔드 HTTP 엔드포인트, AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 REST 애플리

    케이션 프로그래밍 인터페이스(API)의 생성, 배포, 관리.• AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 WebSocket의 생성, 배포 및 관리.• 프런트 엔드 HTTP 및 WebSocket 엔드포인트를 통해 노출된 API 메서드 호출.

    API Gateway REST API

    백엔드 HTTP 엔드포인트, Lambda 함수 또는 기타 AWS 서비스와 통합되어 있는 HTTP 리소스와 메서드의 모음입니다. 이 모음은 하나 이상의 단계에 배포할 수 있습니다. 일반적으로 API 리소스는 애플리케이션 로직에 따른 리소스 트리로 정리되어 있습니다. 각 API 리소스는 API Gateway에서 지원하는 전용 HTTP 동사가 있는 API 메서드를 하나 이상 표시할 수 있습니다.

    API Gateway WebSocket API

    백엔드 HTTP 엔드포인트, Lambda 함수 또는 기타 AWS 서비스와 통합되어 있는 WebSocket 라우팅과라우팅 키의 모음입니다. 이 모음은 하나 이상의 단계에 배포할 수 있습니다. API 메서드는 프런트 엔드WebSocket 연결을 통해 호출되며, 이 엔드포인트를 등록된 사용자 지정 도메인 이름과 연결할 수 있습니다.

    API 배포

    API Gateway API의 특정 시점 스냅샷. 클라이언트가 사용할 수 있게 하려면 배포가 하나 이상의 API 단계와 연결되어 있어야 합니다.

    API 개발자

    API Gateway 배포를 소유한 AWS 계정(예: 프로그래밍 액세스도 지원하는 서비스 공급자)API 엔드포인트

    API Gateway에서 특정 리전에 배포되는 API의 호스트 이름. 호스트 이름은 {api-id}.execute-api.{region}.amazonaws.com 형식을 갖고 있습니다. 다음 API 엔드포인트 유형이 지원됩니다.

    5

    https://docs.aws.amazon.com/lambda/latest/dg/https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/https://en.wikipedia.org/wiki/Representational_state_transferhttps://tools.ietf.org/html/rfc6455

  • Amazon API Gateway 개발자 안내서API Gateway 개념

    • 엣지 최적화 API 엔드포인트 (p. 6)• 프라이빗 API 엔드포인트 (p. 7)• 리전 API 엔드포인트 (p. 7)

    API 키

    API Gateway가 REST 또는 WebSocket API를 사용하는 앱 개발자의 식별에 사용하는 영숫자 문자열입니다. API Gateway에서 사용자 대신 REST 키를 생성하거나, 사용자가 CSV 파일에서 API 키를 가져올수 있습니다. API 키와 Lambda 권한 부여자 (p. 372) 또는 사용량 계획 (p. 424)을 함께 사용하여 API액세스를 제어할 수 있습니다.

    API 엔드포인트 (p. 5)를 참조하십시오.API 소유자

    API 개발자 (p. 5) 단원을 참조하십시오.API 단계

    REST 또는 WebSocket API의 수명 주기 상태에 대한 논리적 참조(예: 'dev', 'prod', 'beta', 'v2')입니다.API 단계는 API ID와 단계 이름으로 식별됩니다.

    앱 개발자

    API 개발자가 배포한 API와 상호 작용하며 AWS 계정이 있거나 없을 수도 있는 앱 생성자. 앱 개발자는귀하의 고객입니다. 앱 개발자는 일반적으로 API 키 (p. 6)로 식별됩니다.

    콜백 URL

    새 클라이언트가 WebSocket 연결을 통해 연결되면 API 게이트웨이에서 통합을 호출하여 클라이언트의콜백 URL을 저장할 수 있습니다. 이 콜백 URL을 사용하여 백엔드 시스템에서 클라이언트로 메시지를보낼 수 있습니다.

    개발자 포털

    고객이 API 제품(API 게이트웨이 사용량 계획)을 등록, 검색 및 구독하고, API 키를 관리하고, API에 대한 사용 지표를 볼 수 있게 해주는 애플리케이션입니다.

    엣지 최적화 API 엔드포인트

    CloudFront 배포를 사용하여 일반적으로 AWS 리전 전역에서의 클라이언트 액세스를 지원하면서 특정리전에 배포되는 API Gateway API의 기본 호스트 이름입니다. API 요청은 지리적으로 다양한 클라이언트를 위해 연결 시간을 일반적으로 향상시키는 가장 가까운 CloudFront 입지 지점(POP)으로 라우팅됩니다.

    API 엔드포인트 (p. 5)를 참조하십시오.통합 요청

    API Gateway에서 WebSocket API 라우팅 또는 REST API 메서드의 내부 인터페이스로, 여기에서 라우팅 요청의 본문 또는 메서드의 본문 및 파라미터를 백엔드에서 요구하는 형식으로 매핑합니다.

    통합 응답

    API Gateway에서 WebSocket API 라우팅 또는 REST API 메서드의 내부 인터페이스로, 백엔드에서 클라이언트 앱으로 반환되는 응답 형식으로 받은 상태 코드, 헤더, 페이로드를 여기에서 매핑합니다.

    매핑 템플릿

    VTL(Velocity Template Language)에 나온 스크립트로, 프런트엔드 데이터 형식으로 된 요청 본문을 백엔드 데이터 형식으로 변환하거나 백엔드 데이터 형식으로 된 응답 본문을 프런트엔드 데이터 형식으로변환합니다. 통합 요청 또는 통합 응답에 매핑 템플릿이 지정될 수 있습니다. 이들은 컨텍스트 및 단계변수로 실행 시간에 사용할 수 있는 데이터를 참조할 수 있습니다. 매핑은 요청에 대해 클라이언트에서백엔드로 통합을 통해 헤더나 본문을 전달하는 자격 증명 변환만큼 간단할 수 있습니다. 백엔드에서 클라이언트로 페이로드가 전달되는 응답의 경우도 마찬가지입니다.

    6

    http://velocity.apache.org/engine/devel/vtl-reference.htmlhttps://en.wikipedia.org/wiki/Identity_transform

  • Amazon API Gateway 개발자 안내서API Gateway 개념

    메서드 요청

    API Gateway에 있는 REST API 메서드의 퍼블릭 인터페이스로, 파라미터와 본문을 정의합니다. 앱 개발자가 API를 통해 백엔드에 액세스하려면 반드시 이 파라미터와 본문을 요청에 포함시켜 보내야 합니다.

    메서드 응답

    REST API의 퍼블릭 인터페이스로, 앱 개발자가 API의 응답에 기대하는 본문 모델, 헤더, 상태 코드를 여기서 정의합니다.

    모의 통합

    모의 통합에서는 통합 백엔드가 없어도 API Gateway에서 직접 API 응답이 생성됩니다. API 개발자는API Gateway가 모의 통합 요청에 응답하는 방법을 결정합니다. 이를 위해, 메서드의 통합 요청 및 통합응답을 구성하여 정해진 상태 코드와 응답을 연결합니다.

    모델

    요청 또는 응답 페이로드의 데이터 구조를 지정하는 데이터 스키마입니다. 모델은 API에서 강력한 형식의 SDK를 생성하는 데 필요합니다. 페이로드를 확인하는 데에도 사용됩니다. 모델은 샘플 매핑 템플릿을 생성해 프로덕션 매핑 템플릿 생성을 시작하기에 편리한 도구입니다. 있으면 유용하기는 하지만 매핑템플릿을 생성할 때 모델은 필요하지 않습니다.

    프라이빗 API

    프라이빗 API 엔드포인트 (p. 7)를 참조하십시오.프라이빗 API 엔드포인트

    인터페이스 VPC 엔드포인트를 통해 노출되고 클라이언트가 VPC 내부의 프라이빗 API 리소스에 안전하게 액세스할 수 있도록 해주는 API 엔드포인트입니다. 프라이빗 API는 퍼블릭 인터넷과 격리되어 있으며, 액세스 권한이 있는 API Gateway의 VPC 엔드포인트를 사용해야만 액세스할 수 있습니다.

    프라이빗 통합

    리소스를 퍼블릭 인터넷에 노출하지 않고, 클라이언트가 프라이빗 REST API 엔드포인트를 통해 고객VPC 내부의 리소스에 액세스할 수 있는 API Gateway 통합 유형입니다.

    프록시 통합

    REST 또는 WebSocket API에 대해 간소화된 API Gateway 통합 구성. HTTP 프록시 통합 또는 Lambda프록시 통합으로 프록시 통합을 설정할 수 있습니다. HTTP 프록시 통합에서 API Gateway는 프런트 엔드와 HTTP 백엔드 간에 전체 요청 및 응답을 전달합니다. Lambda 프록시 통합에서 API Gateway는 전체 요청을 백엔드 Lambda 함수의 입력값으로 전송합니다. 그런 다음 API Gateway는 Lambda 함수 출력을 프런트 엔드 HTTP 응답으로 변환합니다. REST API에서 프록시 통합은 프록시 리소스에 가장 많이 사용되며, 복잡한 경로 변수(예: {proxy+})와 완전 포착형(catch-all) ANY 메서드로 표시됩니다.

    리전 API 엔드포인트

    특정 리전에 배포되고 동일한 AWS 리전에서 EC2 인스턴스와 같은 클라이언트에 서비스를 제공하는API의 호스트 이름입니다. API 요청은 CloudFront 배포를 거치지 않고 리전별 API Gateway로 직접 지정됩니다. 리전 내 요청의 경우 리전 엔드포인트는 불필요한 왕복을 CloudFront 배포로 우회합니다. 추가로 리전 엔드포인트에 대한 지연 시간 기반 라우팅을 API 개발자가 동일한 리전 API 엔드포인트 구성을 사용하여 여러 리전에 API를 배포할 수 있게 해줌으로써 배포된 각 API에 동일한 사용자 지정 도메인이름을 설정하고 Route 53에서 지연 시간 기반 DNS 레코드를 구성하여 클라이언트 요청을 지연 시간이가장 짧은 리전에 라우팅합니다.

    API 엔드포인트 (p. 5)를 참조하십시오.라우팅

    API Gateway에서 WebSocket 라우팅은 수신 메시지를 메시지 내용에 따라 AWS Lambda 함수 같은 특정 통합으로 연결하는 데 사용됩니다. WebSocket API를 정의할 때 라우팅 키와 통합 백엔드를 지정합니다. 라우팅 키는 메시지 본문의 속성입니다. 수신 메시지에서 라우팅 키가 일치하면 통합 백엔드가 호출

    7

    https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency

  • Amazon API Gateway 개발자 안내서API Gateway 요금

    됩니다. 일치하지 않는 라우팅 키에 대해 기본 라우팅을 설정하거나, 라우팅을 수행하고 요청을 처리하는 백엔드 구성 요소로 메시지를 전달하는 프록시 모델을 지정할 수도 있습니다.

    라우팅 요청

    API Gateway에 있는 WebSocket API 메서드의 퍼블릭 인터페이스로, 본문을 정의합니다. 앱 개발자가API를 통해 백엔드에 액세스하려면 반드시 이 파라미터와 본문을 요청에 포함시켜 보내야 합니다.

    라우팅 응답

    WebSocket API의 퍼블릭 인터페이스로, 앱 개발자가 API Gateway에 기대하는 본문 모델, 헤더, 상태코드를 여기서 정의합니다.

    사용량 계획

    사용량 계획 (p. 424)은 선택한 API 클라이언트에게 하나 이상의 배포된 REST 또는 WebSocket API에 대한 액세스를 제공합니다. 사용량 계획을 사용해 조절 및 할당량 제한을 구성할 수 있으며, 이는 개별 클라이언트 API 키에 적용됩니다.

    WebSocket 연결

    API Gateway는 클라이언트와 API Gateway 자체 사이에 영구적인 연결을 유지합니다. Lambda 함수 등의 백엔드 통합과 API Gateway 사이에는 지속적인 연결이 없습니다. 백엔드 서비스는 클라이언트에서수신한 메시지의 내용을 토대로 필요에 따라 호출됩니다.

    API Gateway 요금일반적인 API Gateway 리전별 요금 정보는 Amazon API Gateway 요금을 참조하십시오.

    다음은 일반 요금 체계의 예외 항목을 나열한 것입니다.

    • Amazon API Gateway의 API 캐싱은 AWS 프리 티어에서 제공되지 않습니다.• AWS_IAM, CUSTOM 및 COGNITO_USER_POOLS의 인증 유형으로 메서드를 호출하는 경우 인증 및 권한 부

    여에 대해 요금이 청구되지 않습니다.• API 키를 요구하는 호출 메서드는 API 키 누락 또는 무효 시에 요금이 청구되지 않습니다.• 병목 현상이 발생한 API Gateway-요청은 요청 빈도 또는 버스트가 미리 정해진 한도를 초과하는 경우 요

    금이 청구되지 않습니다.• 병목 현상이 발생한 사용량 계획 요청은 빈도 한도 또는 할당량이 미리 정해진 한도를 초과하는 경우 요금

    이 청구되지 않습니다.

    API Gateway 규정 준수API Gateway의 다양한 보안 준수 규정 및 감사 표준 준수에 대한 자세한 내용은 다음 페이지를 참조하십시오.

    • AWS 클라우드 규정 준수• 규정 준수 프로그램 제공 AWS 범위 내 서비스

    API Gateway가 PCI DSS 및 HIPAA 표준을 어떻게 준수하는지에 대한 자세한 내용은 다음을 참조하십시오.

    PCI DSSAPI Gateway에서는 전자 상거래 웹사이트 운영자 또는 서비스 공급자에 의한 신용 카드 데이터의 처리, 저장 및 전송을 지원하며, Payment Card Industry(PCI) Data Security Standard(DSS) 준수를 검증 받았습니다.

    8

    https://aws.amazon.com/api-gateway/pricing/https://docs.aws.amazon.com/apigateway/api-reference/resource/method/#authorizationTypehttps://aws.amazon.com/compliance/https://aws.amazon.com/compliance/services-in-scope/

  • Amazon API Gateway 개발자 안내서HIPAA

    AWS PCI 규정 준수 패키지의 사본을 요청하는 방법 등 PCI DSS에 대해 자세히 알아보려면 PCI DSS 레벨1을 참조하십시오.

    HIPAA이것은 HIPAA 적격 서비스입니다. AWS, 미국 HIPAA(Health Insurance Portability and Accountability Act of1996), AWS 서비스를 이용한 보호 대상 건강 정보(PHI)의 처리, 저장, 전송에 대한 자세한 정보는 HIPAA 개요를 확인하십시오.

    9

    https://aws.amazon.com/compliance/pci-dss-level-1-faqs/https://aws.amazon.com/compliance/pci-dss-level-1-faqs/https://aws.amazon.com/compliance/hipaa-compliance/https://aws.amazon.com/compliance/hipaa-compliance/

  • Amazon API Gateway 개발자 안내서사전 조건: API Gateway에서 API 구축 준비

    Amazon API Gateway 시작하기Amazon API Gateway 사용을 시작하는 데 도움을 받으려면 다음과 같은 실습 연습과 기타 리소스를 살펴봅니다.

    • Prerequisites: Get Ready to Build an API in API Gateway에서는 AWS 계정을 생성하고 IAM 관리자 사용자를 설정하는 방법을 논의합니다.

    • Create a REST API with Lambda Integrations에서는 백엔드에서 Lambda 함수로 REST API를 생성하는방법을 보여 줍니다. 프록시 및 비 프록시 통합 기술 모두 포함됩니다.

    • Create a REST API with a Mock Integration에서는 실제 백엔드 없이 REST API를 생성하는 방법을 보여줍니다.

    • TUTORIAL: Create a REST API by Importing an Example에서는 OpenAPI 2.0 파일을 가져와 예제 API를생성하는 방법을 보여 줍니다.

    • Create a WebSocket API에서는 API Gateway에서 WebSocket API를 생성하는 방법을 보여 줍니다.• Amazon API Gateway 동영상에서는 API Gateway 시작을 논의하는 동영상 링크를 제공합니다.

    사전 조건: API Gateway에서 API 구축 준비주제

    • AWS 계정에 가입 (p. 10)• IAM 관리자 사용자 생성 (p. 10)

    Amazon API Gateway를 처음 사용하기 전에 AWS 계정이 있어야 합니다.

    API Gateway 시작하기 (p. 10) 및 자습서 (p. 26)의 많은 자습서에서 필요한 IAM 정책이 자동으로 생성됩니다. 그러나 자체 API 생성을 시작할 때 아래 및 the section called “IAM 권한 사용” (p. 355)의 정보를 공부해야 합니다.

    AWS 계정에 가입Amazon API Gateway, AWS Lambda 및 기타 AWS 서비스를 사용하려면 AWS 계정이 필요합니다. 계정이없는 경우 aws.amazon.com으로 이동하여 Create an AWS Account를 선택합니다. 자세한 지침은 AWS 계정 생성 및 활성화를 참조하십시오.

    IAM 관리자 사용자 생성모범 사례로 관리자 권한이 있는 AWS Identity and Access Management(IAM) 사용자도 생성해야 합니다. 루트 자격 증명이 필요하지 않은 모든 작업에 이를 사용합니다. 콘솔 액세스를 위한 암호 및 명령줄 도구를 사용하기 위한 액세스 키를 만듭니다. 지침은 IAM 사용 설명서의 첫 번째 IAM 관리자 및 그룹 만들기를 참조하십시오.

    Amazon API Gateway에서 Lambda 통합으로 RESTAPI 생성

    이 연습을 사용하여 Amazon API Gateway에서 Lambda 프록시 통합 및 Lambda 비 프록시 통합으로 RESTAPI를 생성 및 배포할 수 있습니다.

    10

    https://docs.aws.amazon.com/apigateway/latest/developerguide/setting-up.htmlhttps://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-getting-started-with-rest-apis.htmlhttps://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-getting-started-mock.htmlhttps://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-from-example.htmlhttp://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-videos.htmlhttps://aws.amazon.com/https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html

  • Amazon API Gateway 개발자 안내서1단계: Lambda 콘솔에서 Lambda 함수 생성

    Lambda 통합에서 클라이언트의 HTTP 메서드 요청은 백엔드 Lambda 함수 호출로 매핑됩니다.

    Lambda 프록시 통합에서 전체 클라이언트 요청은 그대로 백엔드 Lambda 함수로 전송됩니다. 단 요청 파라미터의 순서는 보존되지 않습니다. API Gateway는 전체 클라이언트 요청을 백엔드 Lambda 함수의 입력 event 파라미터에 매핑합니다. 상태 코드, 헤더, 본문을 포함한 Lambda 함수의 출력은 그대로 클라이언트에 반환됩니다. 많은 사용 사례에서 이것이 선호되는 통합 유형입니다. 자세한 내용은 the section called“Lambda 프록시 통합 설정” (p. 215) 단원을 참조하십시오.

    Lambda 비 프록시 통합(“사용자 지정 통합”이라고도 함)에서 클라이언트 요청의 파라미터, 헤더 및 본문이백엔드 Lambda 함수가 요구하는 형식으로 변환되는 방식을 구성합니다. 또한 Lambda 함수 출력이 클라이언트가 요구하는 형식으로 다시 변환되는 방식을 구성합니다. 자세한 내용은 the section called “ Lambda 사용자 지정 통합 설정 ” (p. 227) 단원을 참조하십시오.

    사용 사례에 따라 API Gateway API에서 Lambda 프록시 통합, Lambda 비 프록시 통합 또는 둘 다 사용하도록 선택할 수 있습니다.

    주제• 1단계: Lambda 콘솔에서 Lambda 함수 생성 (p. 11)• 2단계: API Gateway 콘솔에서 REST API 생성 (p. 11)• 3단계: API Gateway 콘솔에서 REST API 배포 (p. 13)• 4단계: Lambda 콘솔에서 두 번째 Lambda 함수 생성 (p. 14)• 5단계: API Gateway 콘솔에서 REST API에 리소스, 메서드, 파라미터 추가 (p. 15)• 다음 단계 (p. 17)

    1단계: Lambda 콘솔에서 Lambda 함수 생성이 단계에서는 AWS Lambda 콘솔을 사용하여 간단한 Lambda 함수를 생성합니다. 다음 단계에서 이 함수를사용할 것입니다.

    1. 아직 하지 않았다면, the section called “사전 조건: API Gateway에서 API 구축 준비” (p. 10)의 단계를 완료합니다.

    2. AWS Lambda Developer Guide의 Lambda 함수를 만들려면의 단계를 완료합니다.

    2단계: API Gateway 콘솔에서 REST API 생성이 단계에서는 API Gateway 콘솔에서 간단한 REST API를 생성하고 Lambda 함수를 여기에 백엔드로 연결합니다.

    1. 서비스 메뉴에서 API Gateway를 선택하여 API Gateway 콘솔로 이동합니다.2. API Gateway을 처음 사용하는 경우, 서비스의 기능을 소개하는 페이지가 표시됩니다. [Get Started ]를

    선택합니다. 예제 API 생성 팝업이 나타나면 확인을 선택합니다.

    API Gateway을 처음 사용하는 것이 아닌 경우 API 생성을 선택합니다.

    11

    https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.htmlhttps://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html

  • Amazon API Gateway 개발자 안내서2단계: API Gateway 콘솔에서 REST API 생성

    3. Choose the protocol(프로토콜 선택)에서 REST를 선택합니다.4. 새 API 생성에서 새 API를 선택합니다.5. 설정에서 다음과 같이 합니다.

    • API 이름에 my-api를 입력합니다.• 필요한 경우 설명 필드에 설명을 입력합니다. 설명을 입력하지 않으려면 비워 둡니다.• 엔드포인트 유형 설정을 리전으로 그대로 둡니다.

    6. API 생성(Create API)을 선택합니다.7. 리소스 아래에 / 이외에는 아무 것도 보이지 않을 것입니다. 이는 API의 기본 경로 URL

    에 해당하는 루트 수준 리소스입니다(https://b123abcde4.execute-api.us-west-2.amazonaws.com/{stage-name})).

    작업 드롭다운 메뉴에서 메서드 생성을 선택합니다.8. 리소스 이름(/) 아래에 드롭다운 메뉴가 보일 것입니다. GET을 선택한 후 확인 표시 아이콘을 선택하여

    선택 사항을 저장합니다.9. / – GET – Setup 창의 통합 유형에서 Lambda 함수를 선택합니다.10. Lambda 프록시 통합 사용을 선택합니다.11. Lambda 리전에서 Lambda 함수를 생성한 리전을 선택합니다.12. Lambda 함수 필드에 문자를 입력한 후 드롭다운 메뉴에서 my-function(또는 이전 단계에서 생성한 함수

    에 부여한 이름)을 선택합니다. (드롭다운 메뉴가 표시되지 않는 경우 방금 입력한 문자를 삭제하여 드롭다운 메뉴가 표시되게 합니다.) Use Default Timeout(기본 제한 시간 사용)이 선택된 상태여야 합니다.저장을 선택하여 선택 사항을 저장합니다.

    13. Lambda 함수에 대한 권한 추가 팝업이 나타나면(API Gateway에 Lambda 함수를 호출할 권한을 부여하려고 합니다....”), 확인을 선택하여 API Gateway에 해당 권한을 부여합니다.

    이제 / – GET – Method Execution 창이 보일 것입니다.

    12

  • Amazon API Gateway 개발자 안내서3단계: API Gateway 콘솔에서 REST API 배포

    메서드 실행 창에 다음 항목이 시계 방향 순으로 포함되어 있습니다.

    • 클라이언트: 이 상자는 API의 GET 메서드를 호출하는 클라이언트(브라우저 또는 앱)를 나타냅니다. 테스트 링크를 선택한 후 테스트를 선택하면 클라이언트의 GET 요청이 시뮬레이션됩니다.

    • 메서드 요청: 이 상자는 API Gateway에서 수신한 클라이언트의 GET 요청을 나타냅니다. 메서드 요청을 선택하면 통합 요청으로 백엔드로 전달하기 전에 메서드 요청을 수정하기 위한 설정 및 권한 부여 등의 설정이 보일 것입니다. 이 단계에서는 모든 설정을 기본값으로 둡니다.

    • 통합 요청: 이 상자는 백엔드로 전달되는 GET 요청을 나타냅니다. 여기에서 설정은 선택한 통합 유형에 따라 다릅니다. URL 경로 파라미터, URL 쿼리 문자열 파라미터, HTTP 헤더, 매핑 템플릿 설정은 특정 백엔드의 요구에 따라 메서드 요청을 수정하기 위한 것입니다. 통합 유형 설정을 Lambda 함수로 두고, 다른 설정은 기본값으로 둡니다.

    • Lambda my-function: 이 상자는 1단계에서 생성한 백엔드 Lambda 함수를 나타냅니다. my-function을 선택하면 Lambda 콘솔에서 my-function Lambda 함수가 열립니다.

    • 통합 응답: 이 상자는 메서드 응답으로 클라이언트에 전달되기 전 백엔드의 응답을 나타냅니다. Lambda프록시 통합의 경우 이 전체 상자는 회색으로 표시됩니다. 프록시 통합이 Lambda 함수의 출력을 그대로반환하기 때문입니다. Lambda 비 프록시 통합의 경우 Lambda 함수의 출력을 클라이언트 애플리케이션에적합한 형태로 변환하도록 통합 응답을 구성할 수 있습니다. 이 연습에서 나중에 이를 수행하는 방법을 알아봅니다.

    이 시작하기 절차에서는 모든 설정을 기본값으로 둡니다.• 메서드 응답: 이 상자는 HTTP 상태 코드, 응답 헤더(선택 사항), 응답 본문(선택 사항)으로 클라이언트에

    반환된 메서드 응답을 나타냅니다. 기본적으로 Lambda 함수가 반환하는 응답 본문은 JSON 문서로 그대로 전달되므로, 응답 본문 기본 설정은 빈 모델(본문이 그대로 전달됨을 나타냄)이 있는 application/json입니다. 여기에서도 모든 설정을 기본값으로 둡니다.

    3단계: API Gateway 콘솔에서 REST API 배포2단계를 완료하면 API를 생성했지만 아직 실제로 사용할 수는 없습니다. 배포해야 하기 때문입니다.

    13

    https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-output-format

  • Amazon API Gateway 개발자 안내서4단계: Lambda 콘솔에서 두 번째 Lambda 함수 생성

    1. 작업 드롭다운 메뉴에서 Deploy API(API 배포)를 선택합니다.2. 배포 단계 드롭다운 메뉴에서 [새 단계]를 선택합니다.3. 단계 이름에 prod를 입력합니다.4. Deploy을 선택합니다.5. prod 단계 편집기의 맨 위에 있는 Invoke URL(호출 URL)을 적어 둡니다.

    https://b123abcde4.execute-api.us-west-2.amazonaws.com/prod 형식일 것입니다.Invoke URL(호출 URL)을 선택하면 해당 URL이 있는 새 브라우저 탭이 열립니다. 새 브라우저 탭을 새로 고치면 반환된 메시지 본문("Hello from Lambda!")이 보일 것입니다.

    실제 API 테스트의 경우 cURL 또는 POSTMAN 등의 도구를 사용하여 API를 테스트합니다. 예를 들어 컴퓨터에 cURL이 설치된 경우 API를 다음과 같이 테스트할 수 있습니다.

    1. 터미널 창을 엽니다.2. 다음 cURL 명령을 복사하여 터미널 창에 붙여 넣습니다. b123abcde4를 해당 API의 API ID로 바꾸고,

    us-west-2을 해당 API가 배포된 리전으로 바꾸십시오.

    Linux or Macintosh

    curl -X GET 'https://b123abcde4.execute-api.us-west-2.amazonaws.com/prod'

    Windows

    curl -X GET "https://b123abcde4.execute-api.us-west-2.amazonaws.com/prod"

    이 명령은 "Hello from Lambda!" 출력을 반환합니다.

    4단계: Lambda 콘솔에서 두 번째 Lambda 함수 생성이 단계에서는 두 번째 백엔드 Lambda 함수를 생성합니다. 이는 입력 파라미터를 사용합니다. 5단계에서는파라미터 값을 이 새 함수로 전달하도록 구성하는 자체 GET 메서드가 있는 API의 하위 리소스를 생성합니다.

    1. 서비스 메뉴에서 Lambda를 선택하여 Lambda 콘솔로 이동합니다.2. 함수 만들기를 선택합니다.3. 새로 작성을 선택합니다.4. 함수 이름에 my-function2을 입력합니다.5. Runtime(런타임)에서 Node.js 8.10 또는 Python 3.7을 선택합니다.6. 권한에서 실행 역할 선택 또는 생성을 확장합니다. 실행 역할 드롭다운 목록에서 기존 역할 사용을 선

    택합니다. 기존 역할에서 이전 Lambda 함수의 역할을 선택합니다. 역할의 이름은 service-role/my-function-a1b23c4d 형식입니다. 또는 Create a new role with basic Lambda permissions(기본Lambda 권한을 가진 새 역할 생성)를 선택합니다.

    7. 함수 만들기를 선택합니다.8. 함수 코드 창에 기본 “Hello from Lambda!” 함수가 보일 것입니다. 전체 함수를 다음으로 바꿉니다.

    Node.js 8.10

    exports.handler = async (event) => { let myParam = event.myParam; const response = { statusCode: 200, body: JSON.stringify(myParam) };

    14

    https://curl.haxx.se/https://www.getpostman.com/

  • Amazon API Gateway 개발자 안내서5단계: API Gateway 콘솔에서 RESTAPI에 리소스, 메서드, 파라미터 추가

    return response;};

    Python 3.7

    import jsondef lambda_handler(event, context): myParam = event['myParam'] return { 'statusCode': 200, 'body': json.dumps(myParam) }

    9. Save를 선택합니다.

    5단계: API Gateway 콘솔에서 REST API에 리소스, 메서드, 파라미터 추가리소스 및 메서드는 REST API의 명사 및 동사입니다. 이 단계에서는 API의 하위 리소스를 만들고 이 리소스에 GET 메서드를 추가합니다. 새 메서드에 쿼리 문자열 파라미터를 추가하여 4단계에서 생성한 Lambda함수의 입력 파라미터와 일치시킵니다. 새 함수를 메서드와 통합하여 사용자 입력(간단한 "Hello from APIGateway!" 텍스트 문자열)을 가져오고 이를 Lambda 함수의 입력(역시 간단한 문자열)에 매핑하는 방법을 보여 줍니다.

    1. 서비스 메뉴에서 API Gateway를 선택하여 API Gateway 콘솔로 이동합니다.2. API 목록에서 my-api를 선택합니다.3. 리소스 아래에서 /를 선택합니다.4. 작업 드롭다운 메뉴에서 리소스 생성을 선택합니다.5. 리소스 이름에 my-resource를 입력합니다. 리소스 경로 필드가 리소스 이름으로 자동으로 채워집니

    다.6. Create Resourc(리소스 생성)을 선택합니다.7. 작업 드롭다운 메뉴에서 메서드 생성을 선택합니다.8. 리소스 이름(my-resource) 아래에 드롭다운 메뉴가 보일 것입니다. GET을 선택한 후 확인 표시 아이콘

    을 선택하여 선택 사항을 저장합니다.9. /my-resource – GET – Setup 창의 통합 유형에서 Lambda 함수를 선택합니다.10. Lambda 리전에서 Lambda 함수를 생성한 리전을 선택합니다.11. Lambda 함수 상자에 문자를 입력한 후 드롭다운 메뉴에서 my-function2를 선택합니다. (드롭다운 메뉴

    가 표시되지 않는 경우 방금 입력한 문자를 삭제하여 드롭다운 메뉴가 표시되게 합니다.) 저장을 선택하여 선택 사항을 저장합니다.

    12. Lambda 함수에 대한 권한 추가 팝업이 나타나면(API Gateway에 Lambda 함수를 호출할 권한을 부여하려고 합니다....”), 확인을 선택하여 API Gateway에 해당 권한을 부여합니다.

    13. 이제 /my-resource – GET – Method Execution 창이 보일 것입니다. 이번에는 통합 응답 상자가 회색으로 표시되지 않습니다.

    통합 요청(Integration Request)을 선택합니다.

    15

  • Amazon API Gateway 개발자 안내서5단계: API Gateway 콘솔에서 RESTAPI에 리소스, 메서드, 파라미터 추가

    14. 매핑 템플릿(Mapping Templates)을 확장합니다.15. Request body passthrough(요청 본문 패스스루)를 When there are no templates defined(정의된 템플릿

    이 없는 경우)로 설정합니다.16. 매핑 템플릿 추가(Add mapping template)를 선택합니다.17. 작업 유형에 application/json을 입력하고 확인 표시 아이콘을 선택하여 선택 사항을 저장합니다.18. 패스스루 동작 변경 팝업이 나타나면 Yes, secure this integration을 선택합니다. 그러면 통합이 방금 정

    의한 콘텐츠 유형과 일치하는 요청만 허용합니다.19. 템플릿 창에 다음을 입력합니다.

    { "myParam": "$input.params('myParam')"}

    이는 입력 이벤트 객체의 본문에 있는 Lambda 함수로 전달되는 JSON 문서입니다. 오른쪽은 APIGateway에 입력 쿼리 문자열에서 검색할 내용을 알려 줍니다. 왼쪽은 Lamdba 함수에 추가하려는 파라미터에 이를 저장합니다.

    20. Save를 선택합니다.21. 작업 드롭다운 메뉴에서 Deploy API(API 배포)를 선택합니다.22. 배포 단계 드롭다운 메뉴에서 prod를 선�