

# API Gateway 시작
<a name="getting-started"></a>

이번 시작하기 연습에서는 서버리스 API를 생성합니다. 서버리스 API를 사용하면 서버를 프로비저닝하고 관리하는 데 시간을 소비하는 대신 애플리케이션에 집중할 수 있습니다. 이 연습은 완료하는 데 20분을 넘지 않으며 [AWS 프리 티어](https://aws.amazon.com/free/) 내에서 가능합니다.

먼저, AWS Lambda 콘솔을 사용하여 Lambda 함수를 생성합니다. 그런 다음 API Gateway 콘솔을 사용하여 HTTP API를 생성합니다. 그런 다음 API를 호출합니다.

**참고**  
이 연습에서는 HTTP API를 사용합니다. API Gateway는 더 많은 기능을 포함하는 REST API도 지원합니다. REST API를 사용하는 튜토리얼은 [REST API 콘솔 시작](getting-started-rest-new-console.md) 섹션을 참조하세요.  
REST API와 HTTP API의 차이점에 대한 자세한 내용은 [REST API와 HTTP API 중에서 선택](http-api-vs-rest.md) 섹션을 참조하세요.

HTTP API를 호출하면 API Gateway는 요청을 Lambda 함수로 라우팅합니다. Lambda는 Lambda 함수를 실행하고 API Gateway에 응답을 반환합니다. 그러고 나면 API Gateway가 응답을 반환합니다.

![\[이 튜토리얼에서 생성하는 HTTP API의 개요입니다.\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/getting-started-overview.png)


이 연습을 완료하려면 AWS 계정과 콘솔 액세스 권한이 있는 AWS Identity and Access Management 사용자가 있어야 합니다. 자세한 내용은 [API Gateway를 사용하도록 설정](setting-up.md) 단원을 참조하세요.

**Topics**
+ [1단계: Lambda 함수 생성](#getting-started-create-function)
+ [2단계: HTTP API 생성](#getting-started-create-api)
+ [3단계: API 테스트](#getting-started-invoke-api)
+ [(선택 사항) 4단계: 정리](#getting-started-cleanup)
+ [다음 단계](#getting-started-next-steps)

## 1단계: Lambda 함수 생성
<a name="getting-started-create-function"></a>

API의 백엔드에 Lambda 함수를 사용합니다. Lambda는 필요 시에만 코드를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능합니다.

이 예제에서는 Lambda 콘솔에서 기본 Node.js 함수를 사용합니다.

**Lambda 함수를 만들려면**

1. [https://console.aws.amazon.com/lambda](https://console.aws.amazon.com/lambda)에서 Lambda 콘솔에 로그인합니다.

1. **함수 생성**을 선택합니다.

1. [**함수 이름(Function name)**]에 **my-function**을 입력합니다.

1. 다른 모든 옵션에는 기본 설정을 사용합니다.

1. **함수 생성**을 선택합니다.

예제 함수는 클라이언트에 `200` 응답과 텍스트 `Hello from Lambda!`을(를) 반환합니다.

함수의 응답이 [API Gateway에 필요한 형식](http-api-develop-integrations-lambda.md#http-api-develop-integrations-lambda.response)과 일치하는 한 Lambda 함수를 수정할 수 있습니다.

기본 Lambda 함수 코드는 다음과 유사해야 합니다.

```
export const handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
```

## 2단계: HTTP API 생성
<a name="getting-started-create-api"></a>

다음으로, HTTP API를 생성합니다. API Gateway는 REST API와 WebSocket API도 지원하지만 이 연습에서는 HTTP API가 가장 좋은 선택입니다. REST API는 HTTP API보다 더 많은 기능을 지원하지만 이 연습에서는 그러한 기능이 필요하지 않습니다. WebSocket API는 최소한의 기능으로 설계되어 더 낮은 가격으로 제공될 수 있습니다. WebSocket API는 전이중 통신을 위해 클라이언트와의 지속적인 연결을 유지하는데, 이 예제에는 필요하지 않습니다.

HTTP API는 Lambda 함수에 대한 HTTP 엔드포인트를 제공합니다. API Gateway는 요청을 Lambda 함수로 라우팅한 다음 함수의 응답을 클라이언트에 반환합니다.



**HTTP API 생성하기**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. 다음 중 하나를 수행하십시오.
   + 첫 번째 API를 생성하려면 **HTTP API**에서 [**빌드(Build)**]를 선택합니다.
   + 이전에 API를 생성한 경우 [**API 생성(Create API)**]을 선택한 다음 **HTTP API**에서 [**빌드(Build)**]를 선택합니다.

1. [**통합(Integrations)**]에서 [**통합 추가(Add integration)**]를 선택합니다.

1. **Lambda**를 선택합니다.

1. **Lambda 함수**에서 **my-function**을(를) 입력합니다.

1. **API 이름**에서 **my-http-api**을(를) 입력합니다.

1. [**Next**]를 선택합니다.

1. API Gateway가 생성하는 *경로*를 검토한 후 [**다음(Next)**]을 선택합니다.

1. API Gateway가 생성하는 *단계*를 검토한 후 [**다음(Next)**]을 선택합니다.

1. **Create**를 선택합니다.

이제 클라이언트에서 요청을 수신할 수 있는 Lambda 통합이 포함된 HTTP API가 생성되었습니다.

## 3단계: API 테스트
<a name="getting-started-invoke-api"></a>

다음으로, API를 테스트하여 제대로 작동하는지 확인합니다. 간단하게 하기 위해, 웹 브라우저를 사용하여 API를 호출합니다.

**API 테스트하기**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. API를 선택합니다.

1. API의 호출 URL을 기록해 둡니다.  
![\[API를 생성하면 콘솔에 API의 호출 URL이 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/getting-started-invoke-url.png)

1. API의 호출 URL을 복사하여 웹 브라우저에 입력합니다. Lambda 함수를 호출할 호출 URL에 Lambda 함수의 이름을 추가합니다. 기본적으로 API Gateway 콘솔은 Lambda 함수(`my-function`)와 이름이 같은 경로를 생성합니다.

   전체 URL은 `https://abcdef123.execute-api.us-east-2.amazonaws.com/my-function`와(과) 같아야 합니다.

   브라우저가 API에 `GET` 요청을 보냅니다.

1. API의 응답을 확인합니다. 브라우저에 텍스트 `"Hello from Lambda!"`이(가) 표시됩니다.

## (선택 사항) 4단계: 정리
<a name="getting-started-cleanup"></a>

불필요한 비용을 방지하려면 이 시작하기 연습의 일부로 생성한 리소스를 삭제하세요. 다음 단계에서는 HTTP API, Lambda 함수 및 관련 리소스를 삭제합니다.

**HTTP API 삭제하기**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. **API** 페이지에서 API를 선택합니다. [** Actions**]를 선택한 후 [**Delete**]를 선택합니다.

1. **삭제**를 선택합니다.

**Lambda 함수 삭제하기**

1. [https://console.aws.amazon.com/lambda](https://console.aws.amazon.com/lambda)에서 Lambda 콘솔에 로그인합니다.

1. **함수** 페이지에서 함수를 선택합니다. [** Actions**]를 선택한 후 [**Delete**]를 선택합니다.

1. **삭제**를 선택합니다.

**Lambda 함수의 로그 그룹 삭제하기**

1. Amazon CloudWatch 콘솔에서 [로그 그룹 페이지](https://console.aws.amazon.com/cloudwatch/home#logs:)를 엽니다.

1. **로그 그룹** 페이지에서 함수의 로그 그룹(`/aws/lambda/my-function`)을 선택합니다. **작업**을 선택한 다음 **로그 그룹 삭제**를 선택합니다.

1. **삭제**를 선택합니다.

**Lambda 함수의 실행 역할 삭제하기**

1. AWS Identity and Access Management 콘솔에서 [역할 페이지](https://console.aws.amazon.com/iam/home?#/roles)를 엽니다.

1. 함수의 역할(예: `my-function-31exxmpl`)을 선택합니다.

1. **역할 삭제**를 선택합니다.

1. **예, 삭제**를 선택합니다.

CloudFormation 또는 AWS SAM을 사용하여 AWS 리소스의 생성 및 정리를 자동화할 수 있습니다. [예제 CloudFormation 템플릿](https://github.com/awsdocs/amazon-api-gateway-developer-guide/tree/main/cloudformation-templates)에 대해서는 예제 CloudFormation 템플릿을 참조하세요.

## 다음 단계
<a name="getting-started-next-steps"></a>

이 예제에서는 AWS Management Console을 사용하여 간단한 HTTP API를 생성했습니다. HTTP API는 Lambda 함수를 호출하고 클라이언트에 응답을 반환합니다.

API Gateway 작업을 계속할 경우의 다음 단계는 아래와 같습니다.
+ 다음을 포함한 [API 통합의 추가 유형을 구성](http-api-develop-integrations.md)합니다.
  + [HTTP 엔드포인트](http-api-develop-integrations-http.md)
  + [VPC의 프라이빗 리소스(예: Amazon ECS 서비스)](http-api-develop-integrations-private.md)
  + [Amazon Simple Queue Service, AWS Step Functions, Kinesis Data Streams와 같은 AWS 서비스](http-api-develop-integrations-aws-services.md)
+ [API에 대한 액세스 제어](http-api-access-control.md)
+ [API에 대한 로깅 활성화](http-api-logging.md)
+ [API에 대한 조절 구성](http-api-throttling.md)
+ [API에 대한 사용자 지정 도메인 구성](http-api-custom-domain-names.md)

커뮤니티에서 Amazon API Gateway에 대한 도움말을 보려면 [API Gateway 토론 포럼](https://repost.aws/tags/TAx94GNHn2R3Ot5Ab_HCvlng)을 참조하세요. 이 포럼에 들어갈 때 AWS에서 로그인을 요청할 수 있습니다.

AWS에서 직접 API Gateway에 대한 도움을 받으려면 [AWS Support 페이지](https://aws.amazon.com/premiumsupport/)의 지원 옵션을 참조하세요.

또한 [FAQ](https://aws.amazon.com/api-gateway/faqs/)를 참조하거나 직접 [당사에 문의](https://aws.amazon.com/contact-us/)하십시오.