이 모듈에서는 AWS Lambda 및 Amazon DynamoDB를 사용하여 웹 애플리케이션에 대한 요청을 처리하는 백엔드 프로세스를 구축해 봅니다. 첫 번째 모듈에서 배포한 브라우저 애플리케이션을 사용하면 사용자가 원하는 위치로 유니콘을 보내도록 요청할 수 있습니다. 이 같은 요청을 처리하려면 브라우저에서 실행되는 JavaScript가 클라우드에서 실행 중인 서비스를 호출해야 합니다.

Serverless_Web_App_LP_assets-04

사용자가 유니콘을 요청할 때마다 호출되는 Lambda 함수를 구현합니다. 이 함수는 플릿에서 유니콘을 선택하고, DynamoDB 테이블에 요청을 기록한 후, 보내는 유니콘에 대한 세부 정보로 프런트엔드 애플리케이션에 응답합니다.

이 함수는 브라우저에서 Amazon API Gateway를 사용하여 호출됩니다. 해당 연결은 다음 모듈에서 구현합니다. 이 모듈에서는 격리된 환경에서 함수를 테스트합니다.

모듈 소요 시간: 30분

사용된 서비스: AWS Lambda, Amazon DynamoDB


아래의 단계별 지침에 따라 서버리스 백엔드 프로세스를 생성합니다. 섹션을 확장하려면 각 단계 번호를 클릭하십시오.

  • 1단계. Amazon DynamoDB 테이블 생성

    Amazon DynamoDB 콘솔을 사용하여 새 DynamoDB 테이블을 생성합니다. 테이블 Rides 를 호출하고 String(문자열) 유형인 RideId 라는 파티션 키를 지정합니다. 테이블 이름과 파티션 키는 대/소문자를 구분합니다. 따라서 정확한 ID를 입력하십시오. 다른 모든 설정에는 기본값을 사용합니다.

    테이블을 생성한 후 다음 단계에서 사용할 수 있도록 ARN을 기록해 둡니다.


    1. AWS Management Console에서 Services(서비스)를 선택한 후 Databases(데이터베이스)에서 DynamoDB를 선택합니다.

    2. Create table(테이블 생성)을 선택합니다.

    3. 다음으로, RidesTable name(테이블 이름)에 입력합니다. 이 필드는 대/소문자를 구분합니다.

    4. 다음으로, RideIdPartition key(파티션 키)에 입력하고 키 유형을 String(문자열)로 선택합니다. 이 필드는 대/소문자를 구분합니다.

    5. Use default settings(기본 설정 사용) 확인란을 선택하고 Create(생성)를 선택합니다.

    6. 새 테이블의 Overview(개요) 섹션에서 맨 아래로 스크롤한 후 ARN을 기록해 둡니다. 이 값은 다음 섹션에서 사용하게 됩니다.

  • 2단계. Lambda 함수에 대한 IAM 역할 생성

    모든 Lambda 함수에는 IAM 역할이 할당되어 있습니다. 이 역할은 함수가 상호 작용할 수 있는 다른 AWS 서비스를 정의합니다. 이 워크숍에서는 Amazon CloudWatch 로그에 로그를 기록할 권한과 DynamoDB 테이블에 항목을 쓸 수 있는 액세스 권한을 Lambda 함수에 부여하는 IAM 역할을 생성해야 합니다.

    IAM 콘솔을 사용하여 새 역할을 생성합니다. 이 역할의 이름을 WildRydesLambda 로 지정하고 AWS Lambda 역할 유형을 선택합니다. Amazon CloudWatch 로그에 데이터를 쓰고 DynamoDB 테이블에 항목을 추가할 수 있는 함수 권한을 부여할 정책을 연결해야 합니다.

    이름이 AWSLambdaBasicExecutionRole 인 관리형 정책을 이 역할에 연결하여 필요한 CloudWatch 로그 권한을 부여합니다. 또한 이전 섹션에서 생성한 테이블에 대해 ddb:PutItem 작업을 수행할 수 있는 역할의 사용자 정의 인라인 정책을 생성합니다.


    1. AWS Management Console에서 Services(서비스)를 클릭한 후 Security, Identity & Compliance(보안, 자격 증명 및 규정 준수) 섹션에서 IAM을 선택합니다.

    2. 왼쪽 탐색 표시줄에서 Roles(역할)를 선택한 후 Create New Role(새 역할 생성)을 선택합니다.

    3. 역할 유형으로 AWS Lambda를 선택합니다.

      참고: 역할 유형을 선택하면 AWS 서비스가 사용자를 대신해 이 역할을 수행할 수 있도록 허용하는 이 역할에 대한 트러스트 정책이 자동으로 생성됩니다. CLI, AWS CloudFormation 또는 다른 메커니즘을 사용하여 이 역할을 생성하는 경우 트러스트 정책을 직접 지정합니다.

    4. 그리고 AWSLambdaBasicExecutionRoleFilter(필터) 입력란에 입력하고 해당 역할 엽에 있는 확인란을 선택합니다.

    5. Next Step(다음 단계)을 선택합니다.

    6. 다음으로, WildRydesLambdaRole Name(역할 이름)으로 입력합니다.

    7. Create Role(역할 생성)을 선택합니다.

    8. Roles(역할) 페이지의 필터 입력란에 WildRydesLambda 를 입력하고 방금 생성한 역할을 선택합니다.

    9. Permissions(권한) 탭에서 Inline Policies(인라인 정책) 섹션을 펼치고 click here(여기를 클릭하십시오) 링크를 선택하여 새 인라인 정책을 생성합니다.

    10. Policy Generator(정책 생성기)가 선택되어 있는지 확인하고 Select(선택)를 선택합니다.

    11. AWS Service(AWS 서비스) 드롭다운에서 Amazon DynamoDB를 선택합니다.

    12. Actions(작업) 목록에서 PutItem을 선택합니다.

    13. 이전 섹션에서 생성한 테이블의 ARN을 Amazon Resource Name (ARN)(Amazon 리소스 이름(ARN)) 필드에 붙여 넣습니다.

    14. Add Statement(명세서 추가)를 선택합니다.

    15. Next Step(다음 단계), Apply Policy(정책 적용)를 차례로 선택합니다.

  • 3단계. 요청 처리를 위한 Lambda 함수 생성

    AWS Lambda는 HTTP 요청과 같은 이벤트의 응답으로 코드를 실행합니다. 이 단계에서는 웹 애플리케이션에서 발생하는 API 요청을 처리하여 유니콘을 보내는 핵심 함수를 구축합니다. 다음 모듈에서는 Amazon API Gateway를 사용하여 사용자의 브라우저에서 호출 가능한 HTTP 엔드포인트를 노출할 RESTful API를 생성합니다. 그런 다음 이 단계에서 생성한 Lambda 함수를 해당 API에 연결하여 웹 애플리케이션을 위해 완벽하게 작동하는 백엔드를 만듭니다.

    AWS Lambda 콘솔을 사용하여, API 요청을 처리할 RequestUnicorn 이라는 새로운 Lambda 함수를 생성합니다. 제공된 requestUnicorn.js 예제 구현 파일을 함수 코드에 사용합니다. 해당 파일을 복사해 AWS Lambda 콘솔의 편집기에 붙여 넣으면 됩니다.

    이전 섹션에서 생성한 WildRydesLambda IAM 역할을 사용하도록 함수를 구성해야 합니다.


    1. Services(서비스)를 선택한 후 Compute(컴퓨팅) 섹션에서 Lambda를 선택합니다.

    2. Create function(함수 생성)을 선택합니다.

    3. Author from Scratch(새로 작성)를 선택합니다.

    4. 다음으로, RequestUnicorn 을 Name(이름) 필드에 입력합니다.

    5. 그리고 WildRydesLambdaExisting Role(기존 역할) 드롭다운에서 선택합니다.

    6. Create function(함수 생성)을 선택합니다.

    7. requestUnicorn.js에서 코드를 복사해 코드 입력 영역에 붙여 넣습니다.

    8. Runtime(런타임)Node.js 6.10이 선택되어 있는지 확인합니다.

    9. 기본값인 index.handlerHandler(핸들러) 필드에 그대로 둡니다.

  • 4단계. 구현 테스트

    이 모듈에서는 AWS Lambda 콘솔을 사용하여 구축한 함수를 테스트합니다. 다음 모듈에서는 첫 번째 모듈에서 배포한 브라우저 기반 애플리케이션에서 함수를 호출할 수 있도록 API Gateway에 REST API를 추가합니다.


    1. Select a test event(테스트 이벤트 선택) 드롭다운을 선택한 후 Configure test event(테스트 이벤트 구성)를 선택합니다.

    2. 다음 테스트 이벤트를 복사해 편집기에 붙여 넣습니다.

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }
    1. Event Name(이벤트 이름)을 입력하고 Create(생성), test(테스트)를 차례로 선택합니다.

    2. 성공적으로 실행되었는지, 그리고 다음과 같은 함수 결과가 나타나는지를 확인합니다.

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }