Lambda 시작하기 - AWS Lambda

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

Lambda 시작하기

Lambda 사용을 시작하려면 Lambda 콘솔에서 함수를 생성해야 합니다. 몇 분 안에 함수를 생성하여 배포하고 콘솔에서 테스트할 수 있습니다.

자습서를 진행하면서 Lambda 이벤트 객체를 사용하여 함수에 인수를 전달하는 방법과 같은 몇 가지 기본적인 Lambda 개념을 배우게 됩니다. 또한 함수에서 로그 출력을 반환하는 방법과 Logs에서 함수의 호출 로그를 보는 방법도 알아봅니다. CloudWatch

작업을 단순화하려면 Python 또는 Node.js 런타임을 사용하여 함수를 생성하세요. 이러한 해석된 언어를 사용하면 콘솔의 기본 제공 코드 편집기에서 함수 코드를 직접 편집할 수 있습니다. Java 및 C#과 같은 컴파일된 언어를 사용하면 로컬 빌드 머신에 배포 패키지를 생성하여 Lambda에 업로드해야 합니다. 다른 런타임을 사용하여 Lambda에 함수를 배포하는 방법에 대해 알아보려면 추가 리소스 및 다음 단계 섹션의 링크를 참조하세요.

작은 정보

서버리스 솔루션을 빌드하는 방법을 알아보려면 서버리스 개발자 안내서를 확인하세요.

사전 조건

AWS 계정 항목이 없으면 다음 절차에 따라 생성하십시오.

AWS 계정에 가입하려면
  1. https://portal.aws.amazon.com/billing/signup을 엽니다.

  2. 온라인 지시 사항을 따릅니다.

    가입 절차 중 전화를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

    AWS 계정에 가입하면 AWS 계정 루트 사용자이(가) 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스및 리소스에 액세스하는 권한이 있습니다. 보안 모범 사례는 관리 사용자에게 관리자 액세스 권한을 할당하고, 루트 사용자만 루트 사용자 액세스 권한이 필요한 작업을 수행하는 것입니다.

가입 프로세스가 완료되면 AWS가 확인 이메일을 전송합니다. 언제든지 https://aws.amazon.com/으로 이동하고 내 계정을 선택하여 현재 계정 활동을 보고 계정을 관리할 수 있습니다.

AWS 계정에 가입하고 AWS 계정 루트 사용자를 보안하며 AWS IAM Identity Center을 활성화하고 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 생성합니다.

귀하의 AWS 계정 루트 사용자 보호
  1. 루트 사용자를 선택하고 AWS 계정이메일 주소를 입력하여 AWS Management Console에 계정 소유자로 로그인합니다. 다음 페이지에서 암호를 입력합니다.

    루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 AWS 로그인 사용 설명서루트 사용자로 로그인을 참조하십시오.

  2. 루트 사용자에 대해 다중 인증(MFA)을 활성화합니다.

    지침은 IAM 사용 설명서AWS 계정 루트 사용자용 가상 MFA 디바이스 활성화(콘솔)를 참조하십시오.

관리 사용자 생성
  1. IAM Identity Center를 활성화합니다.

    지침은 AWS IAM Identity Center 사용 설명서에서 Enabling AWS IAM Identity Center를 참조하세요.

  2. IAM Identity Center에서 관리 사용자에게 관리 액세스 권한을 부여합니다.

    IAM Identity Center 디렉터리를 ID 소스로 사용하는 방법에 대한 자습서는 AWS IAM Identity Center 사용 설명서의 Configure user access with the default IAM Identity Center 디렉터리를 참조하세요.

관리 사용자로 로그인
  • IAM 자격 증명 센터 사용자로 로그인하려면 IAM 자격 증명 센터 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

    IAM Identity Center 사용자로 로그인하는 데 도움이 필요한 경우 AWS 로그인 사용 설명서AWS 액세스 포털에 로그인을 참조하십시오.

콘솔로 Lambda 함수 생성

이 예제에서 함수는 "length""width"라는 레이블이 붙은 2개의 정수 값을 포함하는 JSON 객체를 사용합니다. 함수는 이러한 값을 곱하여 면적을 계산하고 이 값을 JSON 문자열로 반환합니다.

함수는 CloudWatch 로그 그룹 이름과 함께 계산된 영역도 인쇄합니다. 자습서 후반부에서는 CloudWatch 로그를 사용하여 함수 호출 기록을 보는 방법을 배우게 됩니다.

함수를 생성하려면 먼저 콘솔을 사용하여 기본 Hello world 함수를 생성합니다. 다음 단계에서는 자체 함수 코드를 추가합니다.

콘솔로 Hello world 함수 생성
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수 생성을 선택합니다.

  3. 새로 작성을 선택합니다.

  4. 기본 정보 창의 함수 이름myLambdaFunction을 입력합니다.

  5. 런타임에서 Node.js 20.x 또는 Python 3.12를 선택합니다.

  6. 아키텍처x86_64로 설정된 상태로 두고 함수 생성을 선택합니다.

Lambda는 Hello from Lambda!라는 메시지를 반환하는 함수를 생성합니다. Lambda는 함수에 대한 실행 역할도 생성합니다. 실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 Lambda 함수에 부여하는 AWS Identity and Access Management(IAM) 역할입니다. 함수의 경우, Lambda가 생성하는 역할은 Logs에 쓸 수 있는 기본 권한을 부여합니다. CloudWatch

이제 콘솔의 기본 제공 코드 편집기를 사용하여 Lambda가 생성한 Hello world 코드를 사용자의 함수 코드로 바꿉니다.

Node.js
콘솔에서 코드 수정
  1. 코드 탭을 선택합니다.

    콘솔의 기본 제공 코드 편집기에서 Lambda가 생성한 함수 코드를 볼 수 있습니다. 코드 편집기에 index.mjs 탭이 표시되지 않으면 다음 다이어그램과 같이 파일 탐색기에서 index.mjs를 선택합니다.

    
                  파일 탐색기에서 index.mjs 파일을 강조 표시하는 화살표가 있는 콘솔 코드 편집기를 보여주는 다이어그램
  2. 다음 코드를 index.mjs 탭에 붙여 넣고 Lambda가 생성한 코드를 바꿉니다.

    export const handler = async (event, context) => { const length = event.length; const width = event.width; let area = calculateArea(length, width); console.log(`The area is ${area}`); console.log('CloudWatch log group: ', context.logGroupName); let data = { "area": area, }; return JSON.stringify(data); function calculateArea(length, width) { return length * width; } };
  3. 배포를 선택하여 함수의 코드를 업데이트합니다. Lambda가 변경 사항을 배포하면 콘솔에 함수가 성공적으로 업데이트되었음을 알리는 배너가 표시됩니다.

함수 코드 이해

다음 단계로 넘어가기 전에 함수 코드를 살펴보고 몇 가지 주요 Lambda 개념을 이해하는 시간을 갖도록 하겠습니다.

  • Lambda 핸들러:

    Lambda 함수에는 handler라는 Node.js 함수가 포함되어 있습니다. Node.js의 Lambda 함수에는 둘 이상의 Node.js 함수가 포함될 수 있지만 handler 함수는 항상 코드의 진입점입니다. 함수가 간접적으로 호출되면 Lambda가 이 메서드를 실행합니다.

    콘솔을 사용하여 Hello world 함수를 생성하면 Lambda는 자동으로 함수에 대한 핸들러 메서드의 이름을 handler로 설정합니다. 이 Node.js 함수의 이름을 편집하지 마세요. 그러면 함수를 간접적으로 호출할 때 Lambda에서 코드를 실행할 수 없게 됩니다.

    Node.js의 Lambda 핸들러에 대해 자세히 알아보려면 AWS Lambda 함수 핸들러(Node.js) 섹션을 참조하세요.

  • Lambda 이벤트 객체:

    handler 함수는 eventcontext라는 두 가지 인수를 사용합니다. Lambda의 이벤트는 함수가 처리할 데이터가 포함된 JSON 형식의 문서입니다.

    다른 AWS 서비스에서 함수를 간접적으로 호출하는 경우 이벤트 객체에는 간접 호출을 일으킨 이벤트에 대한 정보가 포함됩니다. 예를 들어, 객체가 업로드될 때 Amazon Simple Storage Service(S3) 버킷이 함수를 간접적으로 호출하면 이벤트에 Amazon S3 버킷 이름과 객체 키가 포함됩니다.

    이 예제에서는 2개의 키-값 쌍이 포함된 JSON 형식의 문서를 입력하여 콘솔에 이벤트를 생성합니다.

  • Lambda 컨텍스트 객체:

    함수가 사용하는 두 번째 인수는 context입니다. Lambda는 컨텍스트 객체를 함수에 자동으로 전달합니다. 컨텍스트 객체에는 함수 간접 호출과 실행 환경에 관한 정보가 포함됩니다.

    컨텍스트 객체를 사용하여 모니터링 목적으로 함수의 간접 호출에 대한 정보를 출력할 수 있습니다. 이 예제에서 함수는 logGroupName 파라미터를 사용하여 해당 CloudWatch 로그 그룹의 이름을 출력합니다.

    Node.js의 Lambda 컨텍스트 객체에 대해 자세히 알아보려면 AWS Lambda 컨텍스트 객체(Node.js) 섹션을 참조하세요.

  • Lambda에서 로깅:

    Node.js를 사용하면 console.logconsole.error와 같은 콘솔 메서드를 사용하여 함수의 로그에 정보를 보낼 수 있습니다. 예제 코드는 console.log 명령문을 사용하여 계산된 영역과 함수의 CloudWatch 로그 그룹 이름을 출력합니다. stdout 또는 stderr에 쓰는 로깅 라이브러리를 사용할 수도 있습니다.

    자세한 내용은 AWS Lambda 함수 로깅(Node.js)을 잠조하세요. 다른 런타임에서 로깅에 대해 알아보려면 관심 있는 런타임에 대한 'Lambda 함수 빌드' 페이지를 참조하세요.

Python
콘솔에서 코드 수정
  1. 코드 탭을 선택합니다.

    콘솔의 기본 제공 코드 편집기에서 Lambda가 생성한 함수 코드를 볼 수 있습니다. 코드 편집기에 lambda_function.py 탭이 표시되지 않으면 다음 다이어그램과 같이 파일 탐색기에서 lambda_function.py를 선택합니다.

    
                  파일 탐색기에서 lambda_function.py 파일을 강조 표시하는 화살표가 있는 콘솔 코드 편집기를 보여주는 다이어그램
  2. 다음 코드를 lambda_function.py 탭에 붙여 넣고 Lambda가 생성한 코드를 바꿉니다.

    import json import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): # Get the length and width parameters from the event object. The # runtime converts the event object to a Python dictionary length=event['length'] width=event['width'] area = calculate_area(length, width) print(f"The area is {area}") logger.info(f"CloudWatch logs group: {context.log_group_name}") # return the calculated area as a JSON string data = {"area": area} return json.dumps(data) def calculate_area(length, width): return length*width
  3. 배포를 선택하여 함수의 코드를 업데이트합니다. Lambda가 변경 사항을 배포하면 콘솔에 함수가 성공적으로 업데이트되었음을 알리는 배너가 표시됩니다.

함수 코드 이해

다음 단계로 넘어가기 전에 함수 코드를 살펴보고 몇 가지 주요 Lambda 개념을 이해하는 시간을 갖도록 하겠습니다.

  • Lambda 핸들러:

    Lambda 함수에는 lambda_handler라는 Python 함수가 포함되어 있습니다. Python의 Lambda 함수에는 둘 이상의 Python 함수가 포함될 수 있지만 handler 함수는 항상 코드의 진입점입니다. 함수가 간접적으로 호출되면 Lambda가 이 메서드를 실행합니다.

    콘솔을 사용하여 Hello world 함수를 생성하면 Lambda는 자동으로 함수에 대한 핸들러 메서드의 이름을 lambda_handler로 설정합니다. 이 Python 함수의 이름을 편집하지 마세요. 그러면 함수를 간접적으로 호출할 때 Lambda에서 코드를 실행할 수 없게 됩니다.

    Python의 Lambda 핸들러에 대해 자세히 알아보려면 Python으로 작성한 Lambda 함수 핸들러 섹션을 참조하세요.

  • Lambda 이벤트 객체:

    lambda_handler 함수는 eventcontext라는 두 가지 인수를 사용합니다. Lambda의 이벤트는 함수가 처리할 데이터가 포함된 JSON 형식의 문서입니다.

    다른 AWS 서비스에서 함수를 간접적으로 호출하는 경우 이벤트 객체에는 간접 호출을 일으킨 이벤트에 대한 정보가 포함됩니다. 예를 들어, 객체가 업로드될 때 Amazon Simple Storage Service(S3) 버킷이 함수를 간접적으로 호출하면 이벤트에 Amazon S3 버킷 이름과 객체 키가 포함됩니다.

    이 예제에서는 2개의 키-값 쌍이 포함된 JSON 형식의 문서를 입력하여 콘솔에 이벤트를 생성합니다.

  • Lambda 컨텍스트 객체:

    함수가 사용하는 두 번째 인수는 context입니다. Lambda는 컨텍스트 객체를 함수에 자동으로 전달합니다. 컨텍스트 객체에는 함수 간접 호출과 실행 환경에 관한 정보가 포함됩니다.

    컨텍스트 객체를 사용하여 모니터링 목적으로 함수의 간접 호출에 대한 정보를 출력할 수 있습니다. 이 예제에서 함수는 log_group_name 파라미터를 사용하여 해당 CloudWatch 로그 그룹의 이름을 출력합니다.

    Python의 Lambda 컨텍스트 객체에 대해 자세히 알아보려면 AWS Lambda 컨텍스트 객체(Python) 섹션을 참조하세요.

  • Lambda에서 로깅:

    Python을 사용하면 print 문이나 Python 로깅 라이브러리를 사용하여 정보를 함수의 로그로 보낼 수 있습니다. 캡처된 내용의 차이를 설명하기 위해 예제 코드에서는 두 가지 방법을 모두 사용합니다. 프로덕션 애플리케이션에서는 로깅 라이브러리를 사용하는 것이 좋습니다.

    자세한 내용은 AWS Lambda 함수 로깅(Python)을 잠조하세요. 다른 런타임에서 로깅에 대해 알아보려면 관심 있는 런타임에 대한 'Lambda 함수 빌드' 페이지를 참조하세요.

콘솔을 사용하여 간접적으로 Lambda 함수 호출

Lambda 콘솔을 사용하여 함수를 간접적으로 호출하려면 먼저 함수에 보낼 테스트 이벤트를 생성합니다. 이벤트는 "length""width" 키가 있는 2개의 키-값 페어를 포함하는 JSON 형식의 문서입니다.

테스트 이벤트 생성
  1. 코드 소스 창에서 테스트를 선택합니다.

  2. 새 이벤트 생성을 선택합니다.

  3. 이벤트 이름myTestEvent를 입력합니다.

  4. 이벤트 JSON 패널에서 다음을 붙여 넣어 기본값을 바꿉니다.

    { "length": 6, "width": 7 }
  5. 저장을 선택합니다.

이제 함수를 테스트하고 Lambda CloudWatch 콘솔과 로그를 사용하여 함수 호출 기록을 확인합니다.

함수 테스트 및 콘솔에서 간접 호출 레코드 보기
  • 코드 소스 창에서 테스트를 선택합니다. 함수 실행이 완료되면 실행 결과 탭에 응답 및 함수 로그가 표시됩니다. 다음과 유사한 결과가 출력됩니다.

    Node.js
    Test Event Name myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2023-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-31T23:39:45.331Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a REPORT RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Duration: 20.67 ms Billed Duration: 21 ms Memory Size: 128 MB Max Memory Used: 66 MB Init Duration: 163.87 ms Request ID 5c012b0a-18f7-4805-b2f6-40912935034a
    Python
    Test Event Name myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2023-08-31T23:43:26.428Z 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b REPORT RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Duration: 1.42 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 39 MB Init Duration: 123.74 ms Request ID 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b

이 예제에서는 콘솔의 테스트 기능을 사용하여 코드를 간접적으로 호출했습니다. 즉, 콘솔에서 함수의 실행 결과를 직접 볼 수 있습니다. 함수를 콘솔 외부에서 호출할 때는 로그를 사용해야 합니다. CloudWatch

로그에서 함수의 호출 기록을 보려면 CloudWatch
  1. CloudWatch 콘솔의 로그 그룹 페이지를 엽니다.

  2. 함수에 대한 로그 그룹(/aws/lambda/myLambdaFunction)을 선택합니다. 이는 함수가 콘솔에 인쇄한 로그 그룹 이름입니다.

  3. 로그 스트림 탭에서 함수의 간접 호출에 대한 로그 스트림을 선택합니다.

    다음과 유사한 출력 화면이 표시되어야 합니다.

    Node.js
    INIT_START Runtime Version: nodejs:20.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2023-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms
    Python
    INIT_START Runtime Version: python:3.12.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072 START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST The area is 42 [INFO] 2023-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB

정리

예제 함수를 사용한 작업을 마치면 해당 함수를 삭제하세요. 함수의 로그를 저장하는 로그 그룹과 콘솔에서 생성된 실행 역할을 삭제할 수도 있습니다.

Lambda 함수 삭제하기
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 작업, 삭제를 선택합니다.

  4. Delete function(함수 삭제) 대화 상자에 delete를 입력한 후 Delete(삭제)를 선택합니다.

로그 그룹 삭제
  1. CloudWatch 콘솔의 로그 그룹 페이지를 엽니다.

  2. 함수의 로그 그룹(/aws/lambda/my-function)을 선택합니다.

  3. 작업(Actions), 로그 그룹 삭제(Delete log group(s))를 선택합니다.

  4. 로그 그룹 삭제(Delete log group(s)) 대화 상자에서 삭제(Delete)를 선택합니다.

실행 역할을 삭제하려면
  1. AWS Identity and Access Management(IAM) 콘솔의 역할 페이지를 엽니다.

  2. 함수의 실행 역할(예: myLambdaFunction-role-31exxmpl)을 선택합니다.

  3. Delete를 선택합니다.

  4. Delete role(역할 삭제) 대화 상자에 역할 이름을 입력한 후 Delete(삭제)를 선택합니다.

AWS CloudFormation 및 AWS Command Line Interface(AWS CLI)를 사용하여 함수, 로그 그룹 및 역할의 생성 및 정리를 자동화할 수 있습니다.

추가 리소스 및 다음 단계

이제 콘솔을 사용하여 간단한 Lambda 함수를 생성하고 테스트했으니 다음 단계를 수행하세요.