Amazon ECS 및 Amazon EKS 에서 구성 데이터 검색 - AWS AppConfig

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

Amazon ECS 및 Amazon EKS 에서 구성 데이터 검색

에이전트를 AWS AppConfig 사용하여 아마존 Elastic Container Service (Amazon ECS) 및 아마존 Elastic Kubernetes 서비스 (Amazon EKS) 와 통합할 수 있습니다. AWS AppConfig 에이전트는 Amazon ECS 및 Amazon EKS 컨테이너 애플리케이션과 함께 실행되는 사이드카 컨테이너 역할을 합니다. 에이전트는 다음과 같은 방식으로 컨테이너식 애플리케이션 처리 및 관리를 개선합니다.

  • 에이전트는 AWS Identity and Access Management (IAM) 역할을 사용하고 구성 데이터의 로컬 캐시를 관리하여 사용자를 대신하여 전화를 겁니다 AWS AppConfig . 로컬 캐시에서 구성 데이터를 가져오면 애플리케이션에서 구성 데이터를 관리하는 데 필요한 코드 업데이트 횟수가 줄어들고, 구성 데이터를 밀리초 단위로 검색할 수 있으며, 이러한 데이터에 대한 호출을 방해할 수 있는 네트워크 문제의 영향을 받지 않습니다.*

  • 에이전트는 기능 플래그를 검색하고 해결하기 AWS AppConfig 위한 기본 환경을 제공합니다.

  • 에이전트는 기본적으로 캐싱 전략, 폴링 간격, 로컬 구성 데이터 가용성에 대한 모범 사례를 제공하는 동시에 후속 서비스 호출에 필요한 구성 토큰을 추적합니다.

  • 에이전트는 백그라운드에서 실행되는 동안 정기적으로 AWS AppConfig 데이터 플레인을 폴링하여 구성 데이터 업데이트를 확인합니다. 컨테이너화된 애플리케이션은 포트 2772(사용자 지정 가능한 기본 포트 값)에서 localhost에 연결하고 HTTP GET을 호출하여 데이터를 검색함으로써 데이터를 검색할 수 있습니다.

  • AWS AppConfig 에이전트는 컨테이너를 다시 시작하거나 재활용할 필요 없이 컨테이너의 구성 데이터를 업데이트합니다.

*AWS AppConfig 에이전트는 서비스가 구성 데이터를 처음 검색할 때 데이터를 캐시합니다. 이러한 이유로 데이터를 검색하기 위한 첫 번째 호출은 후속 호출보다 느립니다.

시작하기 전 준비 사항

컨테이너 AWS AppConfig 애플리케이션과 통합하려면 기능 플래그 또는 자유 형식 구성 데이터를 비롯한 AWS AppConfig 아티팩트와 구성 데이터를 생성해야 합니다. 자세한 정보는 기능 플래그 및 자유 형식 구성 데이터 생성 AWS AppConfig을 참조하세요.

에서 AWS AppConfig호스팅되는 구성 데이터를 검색하려면 데이터 플레인에 액세스할 수 있도록 컨테이너 애플리케이션을 구성해야 합니다. AWS AppConfig 애플리케이션에 액세스 권한을 부여하려면 컨테이너 서비스 IAM 역할이 사용하는 IAM 권한 정책을 업데이트하십시오. 특히, 정책에 appconfig:StartConfigurationSessionappconfig:GetLatestConfiguration 액션을 추가해야 합니다. 컨테이너 서비스 IAM 역할에는 다음이 포함됩니다.

  • Amazon ECS 태스크 역할

  • Amazon EKS 노드 역할

  • AWS Fargate (Fargate) 포드 실행 역할 (Amazon EKS 컨테이너가 컴퓨팅 프로세싱에 Fargate를 사용하는 경우)

정책에 권한을 추가하는 것에 대한 자세한 내용은 IAM 사용 설명서IAM 자격 증명 권한 추가 및 제거를 참조하십시오.

Amazon ECS 통합을 위한 AWS AppConfig 에이전트 시작

AWS AppConfig 에이전트 사이드카 컨테이너는 Amazon ECS 환경에서 자동으로 사용할 수 있습니다. AWS AppConfig 에이전트 사이드카 컨테이너를 사용하려면 해당 컨테이너를 시작해야 합니다.

Amazon ECS(콘솔)를 시작하려면
  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 탐색 창에서 작업 정의를 선택합니다.

  3. 애플리케이션의 작업 정의를 선택한 다음 최신 수정 버전을 선택합니다.

  4. 새 개정 생성, 새 개정 생성을 선택합니다.

  5. 컨테이너 추가를 선택합니다.

  6. 이름에는 AWS AppConfig 에이전트 컨테이너의 고유한 이름을 입력합니다.

  7. 이미지 URI에 다음을 입력합니다. public.ecr.aws/aws-appconfig/aws-appconfig-agent:2.x

  8. 필수 컨테이너의 경우 를 선택합니다.

  9. 포트 매핑 섹션에서, 포트 매핑 추가를 선택합니다.

  10. 컨테이너 포트2772를 입력합니다.

    참고

    AWS AppConfig 에이전트는 기본적으로 포트 2772에서 실행됩니다. 다른 포트를 지정할 수 있습니다.

  11. 생성을 선택합니다. Amazon ECS는 새 컨테이너 개정을 생성하고 세부 정보를 표시합니다.

  12. 탐색 창에서 클러스터를 선택한 다음 목록에서 애플리케이션 클러스터를 선택합니다.

  13. 서비스 탭에서 애플리케이션에 맞는 서비스를 선택합니다.

  14. 업데이트를 선택합니다.

  15. 배포 구성에서 개정에 대해 최신 버전을 선택합니다.

  16. 업데이트를 선택합니다. Amazon ECS는 최신 작업 정의를 배포합니다.

  17. 배포가 완료되면 구성 및 작업 탭에서 AWS AppConfig 에이전트가 실행 중인지 확인할 수 있습니다. 작업 탭에서 실행 중인 작업을 선택합니다.

  18. 컨테이너 섹션에서 AWS AppConfig 에이전트 컨테이너가 나열되어 있는지 확인합니다.

  19. AWS AppConfig 에이전트가 시작되었는지 확인하려면 로그 탭을 선택합니다. AWS AppConfig 에이전트 컨테이너에 대해 다음과 같은 명령문을 찾으십시오. [appconfig agent] 1970/01/01 00:00:00 INFO serving on localhost:2772

참고

환경 변수를 입력하거나 변경하여 AWS AppConfig 에이전트의 기본 동작을 조정할 수 있습니다. 사용할 수 있는 환경 변수에 대한 자세한 내용은 환경 변수를 사용하여 Amazon ECS 및 Amazon EKS용 AWS AppConfig 에이전트를 구성합니다. 섹션을 참조하십시오. Amazon ECS에서 환경 변수를 변경하는 방법에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서컨테이너에 환경 변수 전달을 참조하십시오.

Amazon EKS 통합을 위한 AWS AppConfig 에이전트 시작

AWS AppConfig 에이전트 사이드카 컨테이너는 Amazon EKS 환경에서 자동으로 사용할 수 있습니다. AWS AppConfig 에이전트 사이드카 컨테이너를 사용하려면 해당 컨테이너를 시작해야 합니다. 다음 절차에서는 Amazon EKS kubectl 명령줄 도구를 사용하여 컨테이너 애플리케이션에서 kubeconfig 파일을 변경하는 방법을 설명합니다. kubeconfig 파일 생성 또는 편집에 대한 자세한 내용은 Amazon EKS 사용 설명서Amazon EKS 클러스터용 kubeconfig 파일 생성 또는 업데이트를 참조하십시오.

AWS AppConfig 에이전트를 시작하려면 (kubectl 명령줄 도구)
  1. kubeconfig 파일을 열고 Amazon EKS 애플리케이션이 단일 컨테이너 배포로 실행되고 있는지 확인합니다. 파일 콘텐츠는 다음과 비슷해야 합니다.

    apiVersion: apps/v1 kind: Deployment metadata: name: my-app namespace: my-namespace labels: app: my-application-label spec: replicas: 1 selector: matchLabels: app: my-application-label template: metadata: labels: app: my-application-label spec: containers: - name: my-app image: my-repo/my-image imagePullPolicy: IfNotPresent
  2. YAML AWS AppConfig 배포 파일에 에이전트 컨테이너 정의 세부 정보를 추가합니다.

    - name: appconfig-agent image: public.ecr.aws/aws-appconfig/aws-appconfig-agent:2.x ports: - name: http containerPort: 2772 protocol: TCP env: - name: SERVICE_REGION value: region imagePullPolicy: IfNotPresent
    참고

    다음 정보를 참고하세요.

  3. kubectl 도구에서 다음 명령을 실행하여 클러스터에 변경 내용을 적용합니다.

    kubectl apply -f my-deployment.yml
  4. 배포가 완료된 후 에이전트가 실행 중인지 확인합니다 AWS AppConfig . 다음 명령을 사용하여 Application Pod 로그 파일을 확인합니다.

    kubectl logs -n my-namespace -c appconfig-agent my-pod

    AWS AppConfig 에이전트 컨테이너에 대한 다음과 같은 명령문을 찾으십시오. [appconfig agent] 1970/01/01 00:00:00 INFO serving on localhost:2772

참고

환경 변수를 입력하거나 변경하여 AWS AppConfig 에이전트의 기본 동작을 조정할 수 있습니다. 사용할 수 있는 환경 변수에 대한 자세한 내용은 환경 변수를 사용하여 Amazon ECS 및 Amazon EKS용 AWS AppConfig 에이전트를 구성합니다. 섹션을 참조하십시오.

환경 변수를 사용하여 Amazon ECS 및 Amazon EKS용 AWS AppConfig 에이전트를 구성합니다.

AWS AppConfig 에이전트 컨테이너의 다음 환경 변수를 변경하여 에이전트를 구성할 수 있습니다.

환경 변수 Details 기본값

ACCESS_TOKEN

이 환경 변수는 에이전트 HTTP 서버에 구성 데이터를 요청할 때 제공해야 하는 토큰을 정의합니다. 토큰 값은 권한 부여 유형이 Bearer인 HTTP 요청 승인 헤더에서 설정해야 합니다. 다음 예를 참고하세요

GET /applications/my_app/... Host: localhost:2772 Authorization: Bearer <token value>
None

BACKUP_DIRECTORY

이 환경 변수를 사용하면 AWS AppConfig 에이전트가 검색한 각 구성의 백업을 지정된 디렉터리에 저장할 수 있습니다.

중요

디스크에 백업된 구성은 암호화되지 않습니다. 구성에 민감한 데이터가 포함된 경우 파일 시스템 권한에 대한 최소 권한 원칙을 적용하는 것이 좋습니다. AWS AppConfig 자세한 정보는 AWS AppConfig의 보안을 참조하세요.

None

HTTP_PORT

이 환경 변수는 에이전트의 HTTP 서버가 실행되는 포트를 지정합니다.

2772

LOG_LEVEL

이 환경 변수는 에이전트가 기록하는 세부 정보 수준을 지정합니다. 각 레벨에는 현재 레벨과 모든 상위 레벨이 포함됩니다. 변수는 대소문자를 구분합니다. 로그 수준은 가장 세부적인 것부터 세부적이지 않은 것까지 debug, info, warn, error, 및 none 입니다. Debug는 타이밍 정보를 비롯한 에이전트에 대한 자세한 정보가 포함됩니다.

info

MANIFEST

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

  • "app:env:manifest-config"

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

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

true

MAX_CONNECTIONS

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

3

POLL_INTERVAL

이 환경 변수는 에이전트가 업데이트된 구성 데이터를 AWS AppConfig 폴링하는 빈도를 제어합니다. 간격을 초 단위로 지정할 수 있습니다. 시간 단위를 사용하여 숫자를 지정할 수도 있습니다. 초는 s, 분은 m, 시간은 h입니다. 단위를 지정하지 않으면 에이전트의 기본값은 초로 설정됩니다. 예를 들어 60, 60초, 1분은 폴링 간격이 동일합니다.

45초

PREFETCH_LIST

이 환경 변수는 에이전트가 AWS AppConfig 시작하자마자 요청하는 구성 데이터를 지정합니다.

None

PRELOAD_BACKUPS

true 설정하면 AWS AppConfig 에이전트는 에서 찾은 구성 백업을 BACKUP_DIRECTORY 메모리로 로드하고 서비스에 새 버전이 있는지 즉시 확인합니다. 로 false 설정된 경우 AWS AppConfig 에이전트는 서비스에서 구성 데이터를 검색할 수 없는 경우 (예: 네트워크에 문제가 있는 경우) 에만 구성 백업의 내용을 로드합니다.

true
PROXY_HEADERS 이 환경 변수는 PROXY_URL 환경 변수에서 참조되는 프록시에 필요한 헤더를 지정합니다. 값은 쉼표로 구분된 헤더 목록입니다. 각 헤더는 다음 형식을 사용합니다.
"header: value"
None
PROXY_URL 이 환경 변수는 다음을 포함하여 에이전트와의 연결에 사용할 프록시 URL을 지정합니다 AWS AppConfig. AWS 서비스HTTPSHTTP URL이 지원됩니다. None

REQUEST_TIMEOUT

이 환경 변수는 에이전트가 응답을 기다리는 시간을 제어합니다. AWS AppConfig서비스가 응답하지 않으면 요청이 실패합니다.

초기 데이터 검색을 위한 요청인 경우 에이전트는 애플리케이션에 오류를 반환합니다.

업데이트된 데이터에 대한 백그라운드 확인 중에 제한 시간이 초과되면 에이전트는 오류를 기록하고 잠시 후 다시 시도합니다.

제한 시간을 밀리초로 지정할 수 있습니다. 시간 단위로 숫자를 지정할 수도 있습니다. 밀리초는 ms이고 초는 s입니다. 단위를 지정하지 않으면 에이전트의 기본값은 밀리초로 설정됩니다. 예를 들어 5000, 5000ms 및 5s의 경우 요청 제한 시간 값이 동일합니다.

3000 밀리초
ROLE_ARN 이 환경 변수는 IAM 역할의 Amazon 리소스 이름 (ARN) 을 지정합니다. AWS AppConfig 에이전트는 이 역할을 맡아 구성 데이터를 검색합니다. None
ROLE_EXTERNAL_ID 이 환경 변수는 수임된 역할 ARN과 함께 사용할 외부 ID를 지정합니다. None
ROLE_SESSION_NAME 이 환경 변수는 수임된 IAM 역할의 자격 증명과 연결할 세션 이름을 지정합니다. None
SERVICE_REGION 이 환경 변수는 AWS AppConfig 에이전트가 AWS AppConfig 서비스를 AWS 리전 호출하는 데 사용하는 대안을 지정합니다. 정의되지 않은 상태로 두면 에이전트는 현재 리전을 확인하려고 시도합니다. 그렇게 할 수 없는 경우 에이전트가 시작되지 않습니다. None

WAIT_ON_MANIFEST

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

true

구성 데이터 검색

HTTP localhost 호출을 사용하여 AWS AppConfig 에이전트에서 구성 데이터를 검색할 수 있습니다. 다음 예제는 HTTP 클라이언트와 curl을 함께 사용합니다. 애플리케이션 언어 또는 사용 가능한 라이브러리에서 지원하는 사용 가능한 모든 HTTP 클라이언트를 사용하여 에이전트를 호출할 수 있습니다.

참고

애플리케이션에서 순방향 슬래시를 사용하는 경우 (예: “test-backend/test-service”) 구성 데이터를 검색하려면 URL 인코딩을 사용해야 합니다.

배포된 구성의 전체 내용을 검색하려면

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name"

Feature Flag 유형의 AWS AppConfig 구성에서 단일 플래그와 해당 속성을 검색하려면

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name"

Feature Flag 유형의 AWS AppConfig 구성에서 여러 플래그와 해당 속성에 액세스하려면

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two"