

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# aws-코그니토-아피가테이웨이 - 람다
<a name="aws-cognito-apigateway-lambda"></a>

![](http://docs.aws.amazon.com/ko_kr/solutions/latest/constructs/images/experimental.png)


 모든 클래스는 활발히 개발 중이며 향후 버전에서 이전 버전과 호환되지 않는 변경 또는 제거 될 수 있습니다. 이들은 적용되지 않습니다[의미 체계 버전](https://semver.org/)모델을 선택합니다. 즉, 이 패키지를 사용할 수도 있지만 이 패키지의 최신 버전으로 업그레이드할 때 소스 코드를 업데이트해야 할 수도 있습니다.

**참고:** 적절한 기능을 보장하려면 프로젝트의 AWS 솔루션 구성 패키지와 AWS CDK 패키지가 동일한 버전이어야 합니다.


|  **언어**  |  **패키지**  | 
| --- | --- | 
|  ![](http://docs.aws.amazon.com/ko_kr/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_cognito\_apigateway\_lambda  | 
|  ![](http://docs.aws.amazon.com/ko_kr/solutions/latest/constructs/images/typescript.png) 타이프 스크립트  |  @aws-solutions-constructs/aws-cognito-apigateway-lambda  | 
|  ![](http://docs.aws.amazon.com/ko_kr/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.cognitoapigatewaylambda  | 

## Overview
<a name="overview-4"></a>

 이 AWS 솔루션 구성은 Amazon API 게이트웨이 람다 지원 REST API를 보호하는 Amazon Cognito를 구현합니다.

 다음은 TypeScript 터의 최소 배포 가능한 패턴 정의입니다.

```
import { CognitoToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cognito-apigateway-lambda';

new CognitoToApiGatewayToLambda(this, 'test-cognito-apigateway-lambda', {
    lambdaFunctionProps: {
        runtime: lambda.Runtime.NODEJS_14_X,
        // This assumes a handler function in lib/lambda/index.js
        code: lambda.Code.fromAsset(`${__dirname}/lambda`),
        handler: 'index.handler'
    }
});
```

 API에서 리소스와 메소드를 정의하는 경우 (예:`proxy = false`) 를 호출해야 합니다.`addAuthorizers()`API가 완전히 정의 된 후 메서드입니다. 이렇게하면 API의 모든 메소드가 보호됩니다.

 다음은 TypeScript 터의 예입니다.

```
import { CognitoToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cognito-apigateway-lambda';

const construct = new CognitoToApiGatewayToLambda(this, 'test-cognito-apigateway-lambda', {
    lambdaFunctionProps: {
        // This assumes a handler function in lib/lambda/index.js
        code: lambda.Code.fromAsset(`${__dirname}/lambda`),
        runtime: lambda.Runtime.NODEJS_12_X,
        handler: 'index.handler'
    },
    apiGatewayProps: {
      proxy: false
    }
});

const resource = construct.apiGateway.root.addResource('foobar');
resource.addMethod('POST');

// Mandatory to call this method to Apply the Cognito Authorizers on all API methods
construct.addAuthorizers();
```

## Initializer
<a name="initializer-6"></a>

```
new CognitoToApiGatewayToLambda(scope: Construct, id: string, props: CognitoToApiGatewayToLambdaProps);
```

 *파라미터* 
+  scope[https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) 
+  id`string` 
+  props[`CognitoToApiGatewayToLambdaProps`](#pattern-construct-props-6) 

## 패턴 구성
<a name="pattern-construct-props-6"></a>


|  **이름**  |  **유형**  |  **설명**  | 
| --- | --- | --- | 
|  람다오브즈 기존인가요? |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  Lambda 함수 객체의 기존 인스턴스, 이 및lambdaFunctionProps를 호출하면 오류가 발생합니다. | 
|  람다기능소품? |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html)  |  Lambda 함수의 기본 속성을 재정의하는 선택적 사용자 제공 속성입니다. 의 경우에는 무시됩니다.existingLambdaObj가 제공될 예정입니다. | 
|  아피가트웨이 소품? |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.LambdaRestApi.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.LambdaRestApi.html)  |  API Gateway 기본 소품을 재정의하는 선택적 사용자 제공 소품  | 
|  Cognitouser풀Props? |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolProps.html)  |  Cognito 사용자 풀의 기본 소품을 재정의하는 선택적 사용자 제공 소품  | 
|  Cognitouser풀클라이언트Props? |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClientProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClientProps.html)  |  Cognito 사용자 풀 클라이언트에 대한 기본 소품을 재정의하는 선택적 사용자 제공 prop  | 
|  로그그룹Props? |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html)  |  CloudWatch Logs 로그 그룹에 대한 기본 소품을 무시하기 위한 선택적 사용자 제공 소품입니다. | 

## 패턴 속성
<a name="pattern-properties-6"></a>


|  **이름**  |  **유형**  |  **설명**  | 
| --- | --- | --- | 
|  ApiGateway  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApi.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApi.html)  |  패턴에 의해 생성 된 API Gateway REST API의 인스턴스를 돌려줍니다. | 
|  람다함수  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  패턴에 의해 생성 된 Lambda 함수의 인스턴스를 돌려줍니다. | 
|  userPool  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPool.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPool.html)  |  패턴에 의해 생성된 Cognito 사용자 풀의 인스턴스를 반환합니다. | 
|  UserPool  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClient.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClient.html)  |  패턴에 의해 생성된 Cognito 사용자 풀 클라이언트의 인스턴스를 반환합니다. | 
|  APIGateway클라우드워치역할  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)  |  API Gateway REST API에서 CloudWatch 로의 액세스 로깅을 활성화하는 패턴으로 생성된 IAM 역할의 인스턴스를 반환합니다. | 
|  에이피가트웨이로그 그룹  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html)  |  API Gateway REST API 액세스 로그가 전송되는 패턴으로 생성된 로그 그룹의 인스턴스를 반환합니다. | 
|  어피가트웨이 인가자  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.CfnAuthorizer.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.CfnAuthorizer.html)  |  패턴에 의해 생성 된 API Gateway 인가자의 인스턴스를 돌려줍니다. | 

## 기본 설정
<a name="default-settings-6"></a>

 재정의없이이 패턴을 즉시 구현하면 다음과 같은 기본값이 설정됩니다.

### Amazon Cognito
<a name="amazon-cognito"></a>
+  사용자 풀에 대한 암호 정책 설정 
+  사용자 풀에 고급 보안 모드 적용 

### Amazon API Gateway
<a name="amazon-api-gateway-5"></a>
+  엣지 최적화 API 엔드포인트 배포 
+  API Gateway 대한 CloudWatch 로깅 설정 
+  API Gateway 대한 최소 권한 액세스 IAM 역할 구성 
+  모든 API 메소드에 대한 기본 권한 부여 유형을 IAM으로 설정 
+  X-Ray 추적하기

### AWS Lambda 함수
<a name="aws-lambda-function-2"></a>
+  Lambda 용 제한된 권한 액세스 IAM 역할 구성 
+  NodeJS Lambda 함수에 대한 연결 유지로 연결 재사용 사용 
+  X-Ray 추적하기
+  환경 변수를 설정합니다.
  +  `AWS_NODEJS_CONNECTION_REUSE_ENABLED`(노드 10.x 이상 함수의 경우)

## Architecture
<a name="architecture-6"></a>

![](http://docs.aws.amazon.com/ko_kr/solutions/latest/constructs/images/aws-cognito-apigateway-lambda.png)


## GitHub
<a name="github-6"></a>


<table>
<thead>
  <tr><th colspan="2"> 이 패턴의 코드를 보려면 문제 및 끌어오기 요청을 작성/조회하는 등의 작업을 수행합니다. </th></tr>
</thead>
<tbody>
  <tr><td> ![](http://docs.aws.amazon.com/ko_kr/solutions/latest/constructs/images/GitHub-Mark-32px.png) </td><td> [@aws -솔루션 - 구성/aws - 인식 - 아피 가티 웨이 - 람다](https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-cognito-apigateway-lambda) </td></tr>
</tbody>
</table>
