Lambda 컨테이너 이미지 배포에서 Lambda Insights 활성화 - Amazon CloudWatch

Lambda 컨테이너 이미지 배포에서 Lambda Insights 활성화

컨테이너 이미지로 배포된 Lambda 함수에서 Lambda Insights를 사용하도록 설정하려면 Dockerfile에 줄을 추가하세요. 이 줄은 Lambda Insights 에이전트를 컨테이너 이미지의 확장 프로그램으로 설치합니다. 추가할 줄은 x86-64 컨테이너와 ARM64 컨테이너에 따라 다릅니다.

참고

Lambda Insights 에이전트는 Amazon Linux 2를 사용하는 Lambda 런타임에서만 지원됩니다.

x86-64 컨테이너 이미지 배포

x86-64 컨테이너에서 실행되는 컨테이너 이미지로 배포된 Lambda 함수에서 Lambda Insights를 사용하도록 설정하려면 Dockerfile에 다음 줄을 추가하세요. 이 줄은 Lambda Insights 에이전트를 컨테이너 이미지의 확장 프로그램으로 설치합니다.

RUN curl -O https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm && \ rpm -U lambda-insights-extension.rpm && \ rm -f lambda-insights-extension.rpm

Lambda 함수를 생성한 후 [CloudWatchLambdaInsightsExecutionRolePolicy] IAM 정책을 함수의 실행 역할에 할당하면 Lambda Insights가 컨테이너 이미지 기반 Lambda 함수에서 사용하도록 설정됩니다.

참고

이전 버전의 Lambda Insights 익스텐션을 사용하려면 위 명령의 URL을 https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.1.0.111.0.rpm URL로 바꿉니다. 현재 Lambda Insights 버전 1.0.111.0 이상만 사용할 수 있습니다. 자세한 내용은 사용 가능한 Lambda Insights 익스텐션 버전 단원을 참조하세요.

Linux 서버에서 Lambda Insights 에이전트 패키지의 서명을 확인하려면
  1. 다음 명령을 입력하여 퍼블릭 키를 다운로드합니다.

    shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
  2. 다음 명령을 입력하여 퍼블릭 키를 키링으로 가져옵니다.

    shell$ gpg --import lambda-insights-extension.gpg

    출력은 다음과 비슷합니다. 다음 단계에서 필요하므로 key 값을 기록해 둡니다. 이 출력 예에서 ​​키 값은 848ABDC8입니다.

    gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
  3. 다음 명령을 입력하여 지문을 확인합니다. key-value를 이전 단계의 키 값으로 바꿉니다.

    shell$ gpg --fingerprint key-value

    이 명령의 출력에서 ​​지문 문자열은 E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8이어야 합니다. 문자열이 일치하지 않으면 에이전트를 설치하지 말고 AWS에 문의하세요.

  4. 지문을 확인한 후 이를 사용하여 Lambda Insights 에이전트 패키지를 확인할 수 있습니다. 다음 명령을 입력하여 패키지 서명 파일을 다운로드합니다.

    shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm.sig
  5. 다음 명령을 입력하여 서명을 확인합니다.

    shell$ gpg --verify lambda-insights-extension.rpm.sig lambda-insights-extension.rpm

    출력은 다음과 같아야 합니다.

    gpg: Signature made Thu 08 Apr 2021 06:41:00 PM UTC using RSA key ID 848ABDC8 gpg: Good signature from "Amazon Lambda Insights Extension" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8

    예상 출력에 신뢰할 수 있는 서명에 대한 경고가 있을 수 있습니다. 사용자 또는 사용자가 신뢰하는 사람이 서명한 키만 신뢰됩니다. 이는 서명이 잘못되었음을 의미하지 않으며, 단지 해당 사용자가 퍼블릭 키를 확인하지 않은 것입니다.

    출력에 BAD signature가 포함된 경우 단계를 올바르게 수행했는지 확인합니다. BAD signature 응답이 계속되는 경우 AWS에 문의하고, 다운로드한 파일을 사용하지 마세요.

x86-64 예

이 단원에는 컨테이너 이미지 기반 Python Lambda 함수에서 Lambda Insights를 사용 설정하는 예가 포함되어 있습니다.

Lambda 컨테이너 이미지에서 Lambda Insights를 사용 설정하는 예
  1. 다음과 유사한 Dockerfile을 생성합니다.

    FROM public.ecr.aws/lambda/python:3.8 // extra lines to install the agent here RUN curl -O https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm && \ rpm -U lambda-insights-extension.rpm && \ rm -f lambda-insights-extension.rpm COPY index.py ${LAMBDA_TASK_ROOT} CMD [ "index.handler" ]
  2. 다음과 유사한 index.py라는 Python 파일을 생성합니다.

    def handler(event, context): return { 'message': 'Hello World!' }
  3. Dockerfile 및 index.py를 동일한 디렉터리에 넣습니다. 그런 다음, 해당 디렉터리에서 다음 단계를 실행함으로써 Docker 이미지를 구축하여 Amazon ECR에 업로드합니다.

    // create an ECR repository aws ecr create-repository --repository-name test-repository // build the docker image docker build -t test-image . // sign in to AWS aws ecr get-login-password | docker login --username AWS --password-stdin "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com // tag the image docker tag test-image:latest "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest // push the image to ECR docker push "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
  4. 방금 생성한 Amazon ECR 이미지를 사용하여 Lambda 함수를 생성합니다.

  5. [CloudWatchLambdaInsightsExecutionRolePolicy] IAM 정책을 함수의 실행 역할에 할당합니다.

ARM64 컨테이너 이미지 배포

AL2_aarch64 컨테이너(ARM64 아키텍처 사용)에서 실행되는 컨테이너 이미지로 배포된 Lambda 함수에서 Lambda Insights를 사용하도록 설정하려면 Dockerfile에 다음 줄을 추가하세요. 이 줄은 Lambda Insights 에이전트를 컨테이너 이미지의 확장 프로그램으로 설치합니다.

RUN curl -O https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm && \ rpm -U lambda-insights-extension-arm64.rpm && \ rm -f lambda-insights-extension-arm64.rpm

Lambda 함수를 생성한 후 [CloudWatchLambdaInsightsExecutionRolePolicy] IAM 정책을 함수의 실행 역할에 할당하면 Lambda Insights가 컨테이너 이미지 기반 Lambda 함수에서 사용하도록 설정됩니다.

참고

이전 버전의 Lambda Insights 익스텐션을 사용하려면 위 명령의 URL을 https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.1.0.229.0.rpm URL로 바꿉니다. 현재 Lambda Insights 버전 1.0.229.0 이상만 사용할 수 있습니다. 자세한 내용은 사용 가능한 Lambda Insights 익스텐션 버전 단원을 참조하십시오.

Linux 서버에서 Lambda Insights 에이전트 패키지의 서명을 확인하려면
  1. 다음 명령을 입력하여 퍼블릭 키를 다운로드합니다.

    shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
  2. 다음 명령을 입력하여 퍼블릭 키를 키링으로 가져옵니다.

    shell$ gpg --import lambda-insights-extension.gpg

    출력은 다음과 비슷합니다. 다음 단계에서 필요하므로 key 값을 기록해 둡니다. 이 출력 예에서 ​​키 값은 848ABDC8입니다.

    gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
  3. 다음 명령을 입력하여 지문을 확인합니다. key-value를 이전 단계의 키 값으로 바꿉니다.

    shell$ gpg --fingerprint key-value

    이 명령의 출력에서 ​​지문 문자열은 E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8이어야 합니다. 문자열이 일치하지 않으면 에이전트를 설치하지 말고 AWS에 문의하세요.

  4. 지문을 확인한 후 이를 사용하여 Lambda Insights 에이전트 패키지를 확인할 수 있습니다. 다음 명령을 입력하여 패키지 서명 파일을 다운로드합니다.

    shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm.sig
  5. 다음 명령을 입력하여 서명을 확인합니다.

    shell$ gpg --verify lambda-insights-extension-arm64.rpm.sig lambda-insights-extension-arm64.rpm

    출력은 다음과 같아야 합니다.

    gpg: Signature made Thu 08 Apr 2021 06:41:00 PM UTC using RSA key ID 848ABDC8 gpg: Good signature from "Amazon Lambda Insights Extension" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8

    예상 출력에 신뢰할 수 있는 서명에 대한 경고가 있을 수 있습니다. 사용자 또는 사용자가 신뢰하는 사람이 서명한 키만 신뢰됩니다. 이는 서명이 잘못되었음을 의미하지 않으며, 단지 해당 사용자가 퍼블릭 키를 확인하지 않은 것입니다.

    출력에 BAD signature가 포함된 경우 단계를 올바르게 수행했는지 확인합니다. BAD signature 응답이 계속되는 경우 AWS에 문의하고, 다운로드한 파일을 사용하지 마세요.

ARM64 예

이 단원에는 컨테이너 이미지 기반 Python Lambda 함수에서 Lambda Insights를 사용 설정하는 예가 포함되어 있습니다.

Lambda 컨테이너 이미지에서 Lambda Insights를 사용 설정하는 예
  1. 다음과 유사한 Dockerfile을 생성합니다.

    FROM public.ecr.aws/lambda/python:3.8 // extra lines to install the agent here RUN curl -O https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm && \ rpm -U lambda-insights-extension-arm64.rpm && \ rm -f lambda-insights-extension-arm64.rpm COPY index.py ${LAMBDA_TASK_ROOT} CMD [ "index.handler" ]
  2. 다음과 유사한 index.py라는 Python 파일을 생성합니다.

    def handler(event, context): return { 'message': 'Hello World!' }
  3. Dockerfile 및 index.py를 동일한 디렉터리에 넣습니다. 그런 다음, 해당 디렉터리에서 다음 단계를 실행함으로써 Docker 이미지를 구축하여 Amazon ECR에 업로드합니다.

    // create an ECR repository aws ecr create-repository --repository-name test-repository // build the docker image docker build -t test-image . // sign in to AWS aws ecr get-login-password | docker login --username AWS --password-stdin "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com // tag the image docker tag test-image:latest "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest // push the image to ECR docker push "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
  4. 방금 생성한 Amazon ECR 이미지를 사용하여 Lambda 함수를 생성합니다.

  5. [CloudWatchLambdaInsightsExecutionRolePolicy] IAM 정책을 함수의 실행 역할에 할당합니다.