컨테이너 이미지를 사용하여 AWS AppConfig 에이전트 Lambda 확장 프로그램 추가 - AWS AppConfig

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

컨테이너 이미지를 사용하여 AWS AppConfig 에이전트 Lambda 확장 프로그램 추가

AWS AppConfig 에이전트 Lambda 확장 프로그램을 컨테이너 이미지로 패키징하여 Amazon Elastic Container Registry (Amazon ECR) 에서 호스팅되는 컨테이너 레지스트리에 업로드할 수 있습니다.

AWS AppConfig 에이전트 Lambda 확장 프로그램을 Lambda 컨테이너 이미지로 추가하려면
  1. 아래와 같이 () 에 AWS 리전 와 Amazon 리소스 이름 (ARN AWS CLI) 을 AWS Command Line Interface 입력합니다. 지역 및 ARN 값을 지역 및 일치하는 ARN으로 대체하여 Lambda 계층의 복사본을 검색하십시오. AWS AppConfig x86-64 및 ARM64 플랫폼을 위한 ARN을 제공합니다.

    aws lambda get-layer-version-by-arn \ --region AWS 리전 \ --arn extension ARN

    다음은 그 예입니다.

    aws lambda get-layer-version-by-arn \ --region us-east-1 \ --arn arn:aws:lambda:us-east-1:027255383542:layer:AWS-AppConfig-Extension:128

    응답은 다음과 같습니다.

    { "LayerVersionArn": "arn:aws:lambda:us-east-1:027255383542:layer:AWS-AppConfig-Extension:128", "Description": "AWS AppConfig extension: Use dynamic configurations deployed via AWS AppConfig for your AWS Lambda functions", "CreatedDate": "2021-04-01T02:37:55.339+0000", "LayerArn": "arn:aws:lambda::layer:AWS-AppConfig-Extension", "Content": { "CodeSize": 5228073, "CodeSha256": "8otOgbLQbexpUm3rKlMhvcE6Q5TvwcLCKrc4Oe+vmMY=", "Location" : "S3-Bucket-Location-URL" }, "Version": 30, "CompatibleRuntimes": [ "python3.8", "python3.7", "nodejs12.x", "ruby2.7" ], }
  2. 위 응답에서 Location에 대해 반환된 값은 Lambda 확장을 포함하는 Amazon Simple Storage Service(S3) 버킷의 URL입니다. URL을 웹 브라우저에 붙여 넣어 Lambda 확장 .zip 파일을 다운로드합니다.

    참고

    Amazon S3 버킷 URL은 10분 동안만 사용할 수 있습니다.

    (선택 사항) 또는 다음 curl 명령을 사용하여 Lambda 확장을 다운로드할 수 있습니다.

    curl -o extension.zip "S3-Bucket-Location-URL"

    (선택 사항) 또는 1단계2단계를 결합하여 ARN을 검색하고 .zip 확장 파일을 한꺼번에 다운로드할 수도 있습니다.

    aws lambda get-layer-version-by-arn \ --arn extension ARN \ | jq -r '.Content.Location' \ | xargs curl -o extension.zip
  3. Dockerfile에 다음 줄을 추가하여 컨테이너 이미지에 확장을 추가합니다.

    COPY extension.zip extension.zip RUN yum install -y unzip \ && unzip extension.zip /opt \ && rm -f extension.zip
  4. Lambda 함수 실행 역할에 GetConfigurationappconfig: 권한 세트가 있는지 확인하십시오.

이 섹션에는 컨테이너 이미지 기반 Python Lambda 함수에서 AWS AppConfig 에이전트 Lambda 확장을 활성화하는 예제가 포함되어 있습니다.

  1. 다음과 유사한 Dockerfile을 생성합니다.

    FROM public.ecr.aws/lambda/python:3.8 AS builder COPY extension.zip extension.zip RUN yum install -y unzip \ && unzip extension.zip -d /opt \ && rm -f extension.zip FROM public.ecr.aws/lambda/python:3.8 COPY --from=builder /opt /opt COPY index.py ${LAMBDA_TASK_ROOT} CMD [ "index.handler" ]
  2. 확장 레이어를 Dockerfile과 동일한 디렉터리에 다운로드합니다.

    aws lambda get-layer-version-by-arn \ --arn extension ARN \ | jq -r '.Content.Location' \ | xargs curl -o extension.zip
  3. Dockerfile과 동일한 디렉터리에서 index.py라는 이름의 Python 파일을 만듭니다.

    import urllib.request def handler(event, context): return { # replace parameters here with your application, environment, and configuration names 'configuration': get_configuration('myApp', 'myEnv', 'myConfig'), } def get_configuration(app, env, config): url = f'http://localhost:2772/applications/{app}/environments/{env}/configurations/{config}' return urllib.request.urlopen(url).read()
  4. 다음 단계를 실행함으로써 docker 이미지를 구축하여 Amazon ECR에 업로드합니다.

    // set environment variables export ACCOUNT_ID = <YOUR_ACCOUNT_ID> export REGION = <AWS_REGION> // 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"
  5. 위에서 생성한 Amazon ECR 이미지를 사용하여 Lambda 함수를 생성합니다. 컨테이너로서의 Lambda 함수에 대한 자세한 내용은 컨테이너 이미지로 정의된 Lambda 함수 생성을 참조하십시오.

  6. Lambda 함수 실행 역할에 GetConfigurationappconfig: 권한 세트가 있는지 확인하십시오.