AWS AppConfig 에이전트 Lambda 확장 프로그램을 사용하여 구성 데이터 검색 - AWS AppConfig

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

AWS AppConfig 에이전트 Lambda 확장 프로그램을 사용하여 구성 데이터 검색

AWS Lambda 확장은 Lambda 함수의 기능을 보강하는 동반 프로세스입니다. 확장은 함수가 간접적으로 호출되기 전에 시작되어 함수와 병렬로 실행되고 함수 호출이 처리된 후에도 계속 실행될 수 있습니다. 기본적으로, Lambda 확장은 Lambda 호출과 병렬로 실행되는 클라이언트와 같습니다. 이 병렬 클라이언트는 수명 주기 중 언제든지 함수와 연결될 수 있습니다.

Lambda 함수에서 AWS AppConfig 기능 플래그 또는 기타 동적 구성 데이터를 사용하는 경우, Lambda 함수에 AWS AppConfig 에이전트 Lambda 확장 프로그램을 계층으로 추가하는 것이 좋습니다. 이렇게 하면 기능 플래그를 더 간단하게 호출할 수 있으며 확장 프로그램 자체에는 사용을 단순화하는 동시에 비용을 절감하는 모범 사례가 포함됩니다. AWS AppConfig AWS AppConfig 서비스에 대한 API 호출이 줄어들고 Lambda 함수 처리 시간이 단축되어 비용이 절감됩니다. Lambda 확장에 대한 자세한 내용은 AWS Lambda 개발자 안내서Lambda 확장 을 참조하십시오.

참고

AWS AppConfig 요금은 구성이 호출되고 수신된 횟수를 기준으로 합니다. Lambda가 여러 번의 콜드 스타트를 수행하고 새 구성 데이터를 자주 검색하면 비용이 증가합니다.

이 주제에는 AWS AppConfig 에이전트 Lambda 확장 프로그램에 대한 정보와 Lambda 함수와 함께 작동하도록 확장 프로그램을 구성하는 방법에 대한 절차가 포함되어 있습니다.

작동 방식

Lambda 확장 프로그램이 없는 Lambda 함수의 구성을 관리하는 AWS AppConfig 데 사용하는 경우, 세션 및 구성 API 작업과 통합하여 구성 업데이트를 수신하도록 Lambda 함수를 구성해야 합니다. StartConfiguration GetLatest

AWS AppConfig 에이전트 Lambda 확장 프로그램을 Lambda 함수와 통합하면 이 프로세스가 간소화됩니다. 확장 프로그램은 서비스를 호출하고, 검색된 데이터의 로컬 캐시를 관리하고, 다음 AWS AppConfig 서비스 호출에 필요한 구성 토큰을 추적하고, 백그라운드에서 구성 업데이트를 정기적으로 확인합니다. 다음 다이어그램은 작동 방식을 보여 줍니다.

AWS AppConfig 에이전트 Lambda 확장 프로그램의 작동 방식 다이어그램
  1. AWS AppConfig 에이전트 Lambda 확장 프로그램을 Lambda 함수의 계층으로 구성합니다.

  2. 구성 데이터에 액세스하기 위해 함수는 에서 실행되는 HTTP 엔드포인트에서 AWS AppConfig 확장 프로그램을 호출합니다. localhost:2772

  3. 확장은 구성 데이터의 로컬 캐시를 유지합니다. 데이터가 캐시에 없는 경우 확장 프로그램은 구성 데이터를 가져오기 AWS AppConfig 위해 호출합니다.

  4. 서비스로부터 구성을 수신하면 확장은 구성을 로컬 캐시에 저장하고 Lambda 함수에 전달합니다.

  5. AWS AppConfig 에이전트 Lambda 확장 프로그램은 백그라운드에서 구성 데이터에 대한 업데이트를 정기적으로 확인합니다. Lambda 함수가 간접적으로 호출될 때마다 확장은 구성을 검색한 이후 경과된 시간을 확인합니다. 경과된 시간이 구성된 폴링 간격보다 길면 확장 프로그램은 새로 배포된 데이터를 확인하기 AWS AppConfig 위해 호출하고, 변경 사항이 있는 경우 로컬 캐시를 업데이트하고, 경과 시간을 재설정합니다.

참고
  • Lambda는 함수에 필요한 동시성 레벨에 해당하는 별도의 인스턴스를 인스턴스화합니다. 각 인스턴스는 격리되며 구성 데이터의 자체 로컬 캐시를 유지합니다. Lambda 인스턴스 및 동시성에 대한 자세한 내용은 Lambda 함수의 동시성 관리를 참조하십시오.

  • 에서 업데이트된 구성을 배포한 후 Lambda 함수에 구성 변경 사항이 나타나는 데 걸리는 시간은 배포에 사용한 배포 전략과 확장 프로그램에 AWS AppConfig구성한 폴링 간격에 따라 다릅니다.

시작하기 전 준비 사항

AWS AppConfig 에이전트 Lambda 확장 프로그램을 활성화하기 전에 다음을 수행하십시오.

  • Lambda 함수에서 구성을 조직하여 AWS AppConfig로 외부화할 수 있습니다.

  • 기능 플래그 또는 자유 형식 구성 데이터를 비롯한 AWS AppConfig 아티팩트와 구성 데이터를 생성합니다. 자세한 정보는 기능 플래그 및 자유 형식 구성 데이터 생성 AWS AppConfig을 참조하세요.

  • Lambda 함수 실행 역할에서 사용하는 AWS Identity and Access Management (IAM) 정책에 appconfig:StartConfigurationSessionappconfig:GetLatestConfiguration 를 추가합니다. 자세한 내용은 AWS Lambda 개발자 안내서AWS Lambda 실행 역할을 참조하십시오. AWS AppConfig 권한에 대한 자세한 내용은 서비스 권한 부여 참조에서 AWS AppConfig에 대한 액션, 리소스 및 조건 키를 참조하십시오.

AWS AppConfig 에이전트 Lambda 확장 프로그램 추가

AWS AppConfig 에이전트 Lambda 확장 프로그램을 사용하려면 Lambda에 확장 프로그램을 추가해야 합니다. Lambda 함수에 AWS AppConfig 에이전트 Lambda 확장 프로그램을 계층으로 추가하거나 Lambda 함수에서 확장을 컨테이너 이미지로 활성화하여 이 작업을 수행할 수 있습니다.

참고

AWS AppConfig 확장 프로그램은 런타임에 구애받지 않으며 모든 런타임을 지원합니다.

계층과 ARN을 사용하여 AWS AppConfig 에이전트 Lambda 확장 추가

AWS AppConfig 에이전트 Lambda 확장 프로그램을 사용하려면 확장 프로그램을 Lambda 함수에 계층으로 추가합니다. 함수에 계층을 추가하는 방법에 대한 자세한 내용은 AWS Lambda 개발자 안내서확장 구성을 참조하십시오. AWS Lambda 콘솔에 있는 확장 프로그램의 이름은 - -Extension입니다.AWS AppConfig 또한 Lambda에 확장을 계층으로 추가하는 경우 Amazon 리소스 이름(ARN)을 지정해야 합니다. 다음 목록 중 플랫폼 및 Lambda를 생성한 AWS 리전 위치에 해당하는 ARN을 선택하십시오.

함수에 추가하기 전에 확장을 테스트하려는 경우 다음 코드 예제를 사용하여 확장이 작동하는지 확인할 수 있습니다.

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name' config = urllib.request.urlopen(url).read() return config

테스트하려면 Python용 Lambda 함수를 새로 생성하고 확장을 추가한 다음 Lambda 함수를 실행하십시오. Lambda 함수를 실행한 후 AWS AppConfig Lambda 함수는 http://localhost:2772 경로에 지정된 구성을 반환합니다. Lambda 함수 생성에 관한 정보는 AWS Lambda 개발자 안내서콘솔로 Lambda 함수 생성을 참조하십시오.

AWS AppConfig Agent Lambda 확장 프로그램을 컨테이너 이미지로 추가하려면 을 참조하십시오. 컨테이너 이미지를 사용하여 AWS AppConfig 에이전트 Lambda 확장 프로그램 추가

AWS AppConfig 에이전트 Lambda 확장 구성

다음 AWS Lambda 환경 변수를 변경하여 확장을 구성할 수 있습니다. 자세한 내용은 AWS Lambda 개발자 안내서의 AWS Lambda 환경 변수 사용을 참조하십시오.

구성 데이터 프리페칭

환경 변수 AWS_APPCONFIG_EXTENSION_PREFETCH_LIST는 함수 시작 시간을 개선할 수 있습니다. AWS AppConfig Agent Lambda 확장 프로그램이 초기화되면 Lambda가 함수를 초기화하고 핸들러를 AWS AppConfig 호출하기 시작하기 전부터 지정된 구성을 검색합니다. 함수가 요청하기 전에 로컬 캐시에서 구성 데이터를 이미 사용할 수 있는 경우도 있습니다.

프리페치 기능을 사용하려면 환경 변수 값을 구성 데이터에 해당하는 경로로 설정하십시오. 예를 들어 구성이 각각 “my_application”, “my_environment” 및 “my_configuration_data”라는 이름의 애플리케이션, 환경 및 구성 프로파일에 해당하는 경우 경로는 /applications/my_application/environments/my_environment/configurations/my_configuration_data입니다. 여러 구성 항목을 쉼표로 구분된 목록으로 나열하여 지정할 수 있습니다(리소스 이름에 쉼표가 포함된 경우 해당 이름 대신 리소스의 ID 값을 사용하십시오.).

다른 계정에서 구성 데이터에 액세스

AWS AppConfig Agent Lambda 확장 프로그램은 데이터에 권한을 부여하는 IAM 역할을 지정하여 다른 계정에서 구성 데이터를 검색할 수 있습니다. 이를 설정하려면 다음 단계를 수행합니다.

  1. 구성 데이터를 관리하는 데 사용되는 계정에서 Lambda 함수를 실행하는 계정에 구성 리소스에 해당하는 부분 또는 전체 ARN과 함께 appconfig:GetLatestConfiguration 및 작업에 대한 액세스 권한을 부여하는 appconfig:StartConfigurationSession 신뢰 정책이 포함된 역할을 생성합니다. AWS AppConfig AWS AppConfig

  2. Lambda 함수를 실행하는 계정에서 1단계에서 생성한 역할의 ARN을 사용하여 Lambda 함수에 AWS_APPCONFIG_EXTENSION_ROLE_ARN 환경 변수를 추가합니다.

  3. (선택 사항) 필요한 경우 AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID 환경 변수를 사용하여 외부 ID를 지정할 수 있습니다. 마찬가지로 AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME 환경 변수를 사용하여 세션 이름을 구성할 수 있습니다.

참고

다음 정보를 참고하세요.

  • AWS AppConfig 에이전트 Lambda 확장 프로그램은 한 계정에서만 데이터를 검색할 수 있습니다. IAM 역할을 지정하는 경우 확장은 Lambda 함수가 실행되는 계정에서 구성 데이터를 검색할 수 없습니다.

  • AWS Lambda Amazon Logs를 사용하여 AWS AppConfig 에이전트 Lambda 확장 프로그램 및 Lambda 함수에 대한 정보를 기록합니다. CloudWatch

환경 변수 Details 기본값

AWS_APPCONFIG_EXTENSION_HTTP_PORT

이 환경 변수는 확장을 호스팅하는 로컬 HTTP 서버가 실행되는 포트를 지정합니다.

2772

AWS_APPCONFIG_EXTENSION_LOG_LEVEL

이 환경 변수는 함수에 대해 Amazon Logs로 전송할 AWS AppConfig 확장별 CloudWatch 로그를 지정합니다. 대/소문자를 구분하지 않는 유효한 값은 debug, info, warn, errornone입니다. 디버그에는 타이밍 정보를 비롯한 확장에 대한 세부 정보가 포함됩니다.

info

AWS_APPCONFIG_EXTENSION_MAX_CONNECTIONS

이 환경 변수는 확장이 AWS AppConfig에서 구성을 검색하는 데 사용하는 최대 연결 수를 구성합니다.

3

AWS_APPCONFIG_EXTENSION_POLL_INTERVAL_SECONDS

이 환경 변수는 확장 프로그램이 업데이트된 구성을 AWS AppConfig 폴링하는 빈도를 초 단위로 제어합니다.

45

AWS_APPCONFIG_EXTENSION_POLL_TIMEOUT_MILLIS

이 환경 변수는 확장 프로그램이 캐시의 데이터를 새로 고칠 AWS AppConfig 때 응답을 기다리는 최대 시간 (밀리초) 을 제어합니다. 지정된 시간 내에 AWS AppConfig 응답하지 않으면 확장 프로그램은 이 폴링 간격을 건너뛰고 이전에 업데이트된 캐시된 데이터를 반환합니다.

3000

AWS_APPCONFIG_EXTENSION_PREFETCH_LIST

이 환경 변수는 함수가 초기화되고 처리기가 실행되기 전에 확장에서 검색을 시작하는 구성 데이터를 지정합니다. 이렇게 하면 함수의 콜드 스타트 시간을 크게 줄일 수 있습니다.

None
AWS_APPCONFIG_EXTENSION_PROXY_HEADERS 이 환경 변수는 AWS_APPCONFIG_EXTENSION_PROXY_URL 환경 변수에서 참조되는 프록시에 필요한 헤더를 지정합니다. 값은 쉼표로 구분된 헤더 목록입니다. 각 헤더는 다음 형식을 사용합니다.
"header: value"
None
AWS_APPCONFIG_EXTENSION_PROXY_URL 이 환경 변수는 AWS AppConfig 내선에서 확장으로의 연결에 사용할 프록시 URL을 지정합니다. AWS 서비스HTTPS그리고 HTTP URL도 지원됩니다. None
AWS_APPCONFIG_EXTENSION_ROLE_ARN 이 환경 변수는 구성을 검색하기 위해 확장 프로그램이 맡아야 하는 역할에 해당하는 IAM 역할 AWS AppConfig ARN을 지정합니다. None
AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID 이 환경 변수는 수임된 역할 ARN과 함께 사용할 외부 ID를 지정합니다. None
AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME 이 환경 변수는 수임된 IAM 역할의 자격 증명과 연결할 세션 이름을 지정합니다. None
AWS_APPCONFIG_EXTENSION_SERVICE_REGION 이 환경 변수는 확장 프로그램이 서비스를 호출하는 데 사용해야 하는 대체 지역을 지정합니다. AWS AppConfig 정의되지 않은 경우 확장은 현재 지역의 엔드포인트를 사용합니다. None

AWS_APPCONFIG_EXTENSION_MANIFEST

이 환경 변수는 다중 계정 검색과 같은 추가 구성별 기능을 활용하고 구성을 디스크에 저장하도록 AWS AppConfig 에이전트를 구성합니다. 다음 값 중 하나를 입력할 수 있습니다.

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

이러한 기능에 대한 자세한 내용은 추가 검색 기능 섹션을 참조하세요.

true

AWS_APPCONFIG_EXTENSION_WAIT_ON_MANIFEST

이 환경 변수는 AWS AppConfig 에이전트가 시작을 완료하기 전에 매니페스트가 처리될 때까지 기다리도록 구성합니다.

true

기능 플래그 구성에서 하나 이상의 플래그 검색

기능 플래그 구성(AWS.AppConfig.FeatureFlags 유형의 구성)의 경우, Lambda 확장을 사용하면 구성에서 단일 플래그 또는 플래그의 하위 집합을 검색할 수 있습니다. Lambda가 구성 프로필에서 몇 개의 플래그만 사용해야 하는 경우 하나 또는 두 개의 플래그를 검색하는 것이 유용합니다. 다음 예에서는 Python을 사용합니다.

참고

구성에서 단일 기능 플래그 또는 일부 플래그를 호출하는 기능은 Agent AWS AppConfig Lambda 확장 버전 2.0.45 이상에서만 사용할 수 있습니다.

로컬 HTTP 엔드포인트에서 AWS AppConfig 구성 데이터를 검색할 수 있습니다. 특정 플래그 또는 플래그 목록에 액세스하려면 AWS AppConfig 구성 프로필의 ?flag=flag_name 쿼리 파라미터를 사용하십시오.

단일 플래그와 해당 속성에 액세스하려면

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name' config = urllib.request.urlopen(url).read() return config

여러 플래그와 해당 속성에 액세스하려면

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two' config = urllib.request.urlopen(url).read() return config

AWS AppConfig 에이전트 Lambda 확장 로그 보기

로그에서 AWS AppConfig 에이전트 Lambda 확장 프로그램의 로그 데이터를 볼 수 있습니다. AWS Lambda 로그 항목 앞에는 가 붙습니다. appconfig agent 다음은 그 예입니다.

[appconfig agent] 2024/05/07 04:19:01 ERROR retrieve failure for 'SourceEventConfig:SourceEventConfigEnvironment:SourceEventConfigProfile': StartConfigurationSession: api error AccessDenied: User: arn:aws:sts::0123456789:assumed-role/us-east-1-LambdaRole/extension1 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::0123456789:role/test1 (retry in 60s)