Amazon EC2 및 온프레미스 시스템에서 AWS AppConfig Agent 사용
AWS AppConfig 에이전트를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에서 실행되는 애플리케이션과 AWS AppConfig를 통합할 수 있습니다. 에이전트는 다음과 같은 방법으로 애플리케이션 처리 및 관리를 개선합니다.
-
에이전트는 AWS Identity and Access Management (IAM) 역할을 사용하고 구성 데이터의 로컬 캐시를 관리하여 사용자를 대신하여 AWS AppConfig를 호출합니다. 로컬 캐시에서 구성 데이터를 가져오면 애플리케이션에서 구성 데이터를 관리하는 데 필요한 코드 업데이트 횟수가 줄어들고, 구성 데이터를 밀리초 단위로 검색할 수 있으며, 이러한 데이터에 대한 호출을 방해할 수 있는 네트워크 문제의 영향을 받지 않습니다.*
-
에이전트는 AWS AppConfig 기능 플래그를 검색하고 해결하기 위한 기본 경험을 제공합니다.
-
에이전트는 기본적으로 캐싱 전략, 폴링 간격, 로컬 구성 데이터의 가용성에 대한 모범 사례를 제공하는 동시에 후속 서비스 호출에 필요한 구성 토큰을 추적합니다.
-
에이전트는 백그라운드에서 실행되는 동안 구성 데이터 업데이트를 위해 정기적으로 AWS AppConfig 데이터 영역을 폴링합니다. 애플리케이션은 포트 2772 (사용자 지정 가능한 기본 포트 값) 에서 localhost에 연결하고 HTTP GET을 호출하여 데이터를 검색함으로써 데이터를 검색할 수 있습니다.
*AWS AppConfig 에이전트는 서비스가 구성 데이터를 처음 검색할 때 데이터를 캐시합니다. 이러한 이유로 데이터를 검색하기 위한 첫 번째 호출은 후속 호출보다 느립니다.
주제
1단계: (필수) 리소스 생성 및 권한 구성
Amazon EC2 인스턴스에서 실행되는 애플리케이션과 AWS AppConfig가 통합되려면 기능 플래그 또는 자유 형식 구성 데이터를 비롯한 AWS AppConfig 아티팩트와 구성 데이터를 생성해야 합니다. 자세한 내용은 AWS AppConfig에서 기능 플래그 및 자유 형식 구성 데이터 생성 섹션을 참조하십시오.
AWS AppConfig에서 호스팅되는 구성 데이터를 검색하려면 애플리케이션이 AWS AppConfig 데이터 영역에 액세스할 수 있도록 구성되어 있어야 합니다. 애플리케이션에 액세스 권한을 부여하려면 Amazon EC2 인스턴스 역할에 할당된 IAM 권한 정책을 업데이트하십시오. 특히, 정책에 appconfig:StartConfigurationSession
및 appconfig:GetLatestConfiguration
액션을 추가해야 합니다. 예:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "*" } ] }
정책에 권한을 추가하는 것에 대한 자세한 내용은 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거를 참조하십시오.
2단계: (필수) Amazon EC2 인스턴스에 AWS AppConfig 에이전트 설치 및 시작
AWS에서 관리하는 Amazon Simple Storage Service(S3) 버킷에서 AWS AppConfig 에이전트를 호스팅합니다. 다음 절차를 사용하여 Linux 인스턴스에 최신 버전의 에이전트를 설치합니다. 애플리케이션이 여러 인스턴스에 분산되어 있는 경우 애플리케이션을 호스팅하는 각 인스턴스에서 이 절차를 수행해야 합니다.
참고
다음과 같은 정보를 참고합니다.
-
AWS AppConfig 에이전트는 커널 버전 4.15 이상을 실행하는 Linux 운영 체제에서 사용할 수 있습니다. Ubuntu와 같은 Debian 기반 시스템은 지원되지 않습니다.
-
에이전트는 x86_64 및 ARM64 아키텍처를 지원합니다.
-
분산 애플리케이션의 경우 Auto Scaling 그룹의 Amazon EC2 사용자 데이터에 설치 및 시작 명령을 추가하는 것이 좋습니다. 그러면 각 인스턴스가 명령을 자동으로 실행합니다. 자세한 내용은 Amazon EC2 사용 설명서에서 시작 시 Linux 인스턴스에서 명령 실행을 참조하세요. 추가로 Amazon EC2 Auto Scaling 사용 설명서의 자습서: 인스턴스 메타데이터를 통해 대상 수명 주기 상태를 검색하기 위한 사용자 데이터 구성하기를 참조하십시오.
-
이 주제 전체의 절차에서는 인스턴스에 로그인하여 명령을 실행하여 에이전트를 설치하는 등의 액션을 수행하는 방법을 설명합니다. AWS Systems Manager의 기능인 Run Command를 사용하여 로컬 클라이언트 머신에서 명령을 실행하고 하나 이상의 인스턴스를 대상으로 지정할 수 있습니다. 자세한 내용은 AWS Systems Manager 사용 설명서에서 AWS Systems Manager Run Command를 참조하십시오.
-
Amazon EC2 Linux 인스턴스의 AWS AppConfig 에이전트는
systemd
서비스입니다.
인스턴스에 AWS AppConfig 에이전트를 설치하고 시작하려면
-
Linux 인스턴스에 로그인합니다.
-
터미널을 열고 관리자 권한으로 다음 명령 중 하나를 실행합니다.
x86_64
sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/latest/aws-appconfig-agent.rpm
ARM64
sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/arm64/latest/aws-appconfig-agent.rpm
특정 버전의 AWS AppConfig 에이전트를 설치하려면 URL의
latest
를 특정 버전 번호로 바꾸십시오. 다음은 x86_64의 예시입니다.sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/2.0.2/aws-appconfig-agent.rpm
-
에이전트를 시작하려면 다음 명령을 실행합니다.
sudo systemctl start aws-appconfig-agent
-
다음 명령을 실행하여 에이전트가 실행 중인지 확인합니다.
sudo systemctl status aws-appconfig-agent
명령이 제대로 실행되면 다음과 비슷한 정보를 반환합니다.
aws-appconfig-agent.service - aws-appconfig-agent ... Active: active (running) since Mon 2023-07-26 00:00:00 UTC; 0s ago ...
참고
에이전트를 중지하려면 다음 명령을 실행합니다.
sudo systemctl stop aws-appconfig-agent
3단계: (선택 사항이지만 권장됨) CloudWatch Logs에 로그 파일 전송
기본적으로 AWS AppConfig 에이전트는 STDERR에 로그를 게시합니다. Systemd는 Linux 인스턴스에서 실행되는 모든 서비스의 STDOUT 및 STDERR을 시스템 저널로 리디렉션합니다. 하나 또는 두 개의 인스턴스에서만 AWS AppConfig 에이전트를 실행하는 경우 systemd 저널에서 로그 데이터를 보고 관리할 수 있습니다. 분산 애플리케이션에 강력히 권장하는 더 나은 솔루션은 디스크에 로그 파일을 기록한 다음 Amazon CloudWatch 에이전트를 사용하여 로그 데이터를 AWS 클라우드에 업로드하는 것입니다. 또한 인스턴스에서 오래된 로그 파일을 삭제하도록 CloudWatch 에이전트를 구성하여 인스턴스의 디스크 공간이 부족해지는 것을 방지할 수 있습니다.
디스크 로깅을 활성화하려면 4단계: (선택 사항) 환경 변수를 사용하여 Amazon EC2용 AWS AppConfig 에이전트 구성에 설명된 대로 LOG_PATH
환경 변수를 설정해야 합니다.
CloudWatch 에이전트로 시작하려면 Amazon CloudWatch 사용 설명서의 CloudWatch 에이전트를 사용하여 Amazon EC2 인스턴스 및 온프레미스 서버로부터 지표 및 로그 수집을 참조하십시오. Systems Manager의 기능인 빠른 설정을 사용하여 CloudWatch 에이전트를 빠르게 설치할 수 있습니다. 자세한 내용은 AWS Systems Manager 사용 설명서의 빠른 설정 호스트 관리를 참조하십시오.
주의
CloudWatch 에이전트를 사용하지 않고 디스크에 로그 파일을 쓰도록 선택한 경우 이전 로그 파일을 삭제해야 합니다. AWS AppConfig 에이전트는 1시간마다 로그 파일을 자동으로 교체합니다. 오래된 로그 파일을 삭제하지 않으면 인스턴스의 디스크 공간이 부족해질 수 있습니다.
인스턴스에 CloudWatch 에이전트를 설치한 후 CloudWatch 에이전트 구성 파일을 생성합니다. 구성 파일은 CloudWatch 에이전트에 AWS AppConfig 에이전트 로그 파일 사용 방법을 지시합니다. CloudWatch 에이전트 구성 파일을 구성하는 방법에 대한 자세한 내용은 CloudWatch 에이전트 구성 파일 생성 섹션을 참조하십시오.
인스턴스의 CloudWatch 에이전트 구성 파일에 다음 logs
섹션을 추가하고 변경 내용을 저장합니다.
"logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/
path_you_specified_for_logging
", "log_group_name": "${YOUR_LOG_GROUP_NAME
}/aws-appconfig-agent.log", "auto_removal": true }, ... ] }, ... }, ... }
auto_removal
값이 true
인 경우 CloudWatch 에이전트는 교체된 AWS AppConfig 에이전트 로그 파일을 자동으로 삭제합니다.
4단계: (선택 사항) 환경 변수를 사용하여 Amazon EC2용 AWS AppConfig 에이전트 구성
환경 변수를 사용하여 Amazon EC2용 AWS AppConfig 에이전트를 구성할 수 있습니다. systemd
서비스의 환경 변수를 설정하려면 드롭인 단위 파일을 생성합니다. 다음 예제는 드롭인 단위 파일을 생성하여 AWS AppConfig 에이전트 로깅 수준을 DEBUG
로 설정하는 방법을 보여줍니다.
환경 변수에 대한 드롭인 단위 파일을 만드는 방법의 예
-
Linux 인스턴스에 로그인합니다.
-
터미널을 열고 다음 명령을 관리자 권한으로 실행합니다. 이 명령은 구성 디렉터리를 생성합니다.
sudo mkdir /etc/systemd/system/aws-appconfig-agent.service.d
-
다음 명령을 실행해 드롭인 단위 파일을 생성합니다.
file_name
을 파일 이름으로 바꿉니다. 확장자는 다음과 같아야 합니다:.conf
sudo touch /etc/systemd/system/aws-appconfig-agent.service.d/
file_name
.conf -
드롭인 단위 파일에 정보를 입력합니다. 다음 예제에서는 환경 변수를 정의하는
Service
섹션을 추가합니다. 이 예제에서는 AWS AppConfig 에이전트 로그 수준을DEBUG
로 설정합니다.[Service] Environment=LOG_LEVEL=DEBUG
-
다음 명령을 실행하여 systemd 구성을 다시 로드합니다.
sudo systemctl daemon-reload
-
AWS AppConfig 에이전트를 다시 시작하려면 다음 명령을 실행합니다.
sudo systemctl restart aws-appconfig-agent
드롭인 단위 파일에 다음 환경 변수를 지정하여 Amazon EC2용 AWS AppConfig 에이전트를 구성할 수 있습니다.
환경 변수 | Details | 기본값 |
---|---|---|
|
이 환경 변수는 에이전트 HTTP 서버에 구성 데이터를 요청할 때 제공해야 하는 토큰을 정의합니다. 토큰 값은 권한 부여 유형이
|
None |
|
이 환경 변수를 사용하면 AWS AppConfig Agent에서 검색하는 각 구성의 백업을 지정된 디렉터리에 저장할 수 있습니다. 중요디스크에 백업된 구성은 암호화되지 않습니다. 구성에 민감한 데이터가 포함된 경우 AWS AppConfig는 파일 시스템 권한으로 최소 권한 원칙을 실천할 것을 권장합니다. 자세한 내용은 AWS AppConfig의 보안 단원을 참조하십시오. |
None |
|
이 환경 변수는 에이전트의 HTTP 서버가 실행되는 포트를 지정합니다. |
2772 |
|
이 환경 변수는 에이전트가 기록하는 세부 정보 수준을 지정합니다. 각 레벨에는 현재 레벨과 모든 상위 레벨이 포함됩니다. 변수는 대소문자를 구분합니다. 로그 수준은 가장 세부적인 것부터 세부적이지 않은 것까지 |
|
|
로그가 기록되는 디스크 위치. 지정하지 않으면 로그가 stderr에 기록됩니다. |
None |
|
이 환경 변수는 다중 계정 검색과 같은 구성별 추가 기능을 활용하고 구성을 디스크에 저장하도록 AWS AppConfig Agent를 구성합니다. 다음 값 중 하나를 입력할 수 있습니다.
이러한 기능에 대한 자세한 내용은 매니페스트를 사용하여 추가 검색 기능 활성화 섹션을 참조하세요. |
true |
|
이 환경 변수는 에이전트가 AWS AppConfig에서 구성을 검색하는 데 사용하는 최대 연결 수를 구성합니다. |
3 |
|
이 환경 변수는 에이전트가 업데이트된 구성 데이터를 AWS AppConfig 폴링하는 빈도를 제어합니다. 간격을 초 단위로 지정할 수 있습니다. 시간 단위를 사용하여 숫자를 지정할 수도 있습니다. 초는 s, 분은 m, 시간은 h입니다. 단위를 지정하지 않으면 에이전트의 기본값은 초로 설정됩니다. 예를 들어 60, 60초, 1분은 폴링 간격이 동일합니다. |
45초 |
|
이 환경 변수는 에이전트가 AWS AppConfig가 시작하자마자 요청하는 구성 데이터를 지정합니다. |
None |
|
|
true |
PROXY_HEADERS |
이 환경 변수는 PROXY_URL 환경 변수에서 참조되는 프록시에 필요한 헤더를 지정합니다. 값은 쉼표로 구분된 헤더 목록입니다. 각 헤더는 다음 형식을 사용합니다.
|
None |
PROXY_URL |
이 환경 변수는 에이전트에서 AWS AppConfig를 포함한 AWS 서비스에 연결하는 데 사용할 프록시 URL을 지정합니다. HTTPS 및 HTTP URL이 지원됩니다. |
None |
|
이 환경 변수는 에이전트가 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 |
|
이 환경 변수는 시작을 완료하기 전에 매니페스트가 처리될 때까지 기다리도록 AWS AppConfig Agent를 구성합니다. |
true |
5단계: (필수) 구성 데이터 검색
HTTP localhost 호출을 사용하여 AWS AppConfig 에이전트에서 구성 데이터를 검색할 수 있습니다. 다음 예제는 HTTP 클라이언트와 curl
을 함께 사용합니다. 애플리케이션 언어에서 지원하는 사용 가능한 모든 HTTP 클라이언트 또는 AWS SDK를 포함한 사용 가능한 라이브러리를 사용하여 에이전트를 호출할 수 있습니다.
배포된 구성의 전체 내용을 검색하려면
$ 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
"
6단계 (선택 사항이지만 권장됨): AWS AppConfig 에이전트 업데이트 자동화
AWS AppConfig 에이전트는 정기적으로 업데이트됩니다. 인스턴스에서 최신 버전의 AWS AppConfig 에이전트를 실행하려면 Amazon EC2 사용자 데이터에 다음 명령을 추가하는 것이 좋습니다. 인스턴스 또는 EC2 Auto Scaling 그룹의 사용자 데이터에 명령을 추가할 수 있습니다. 스크립트는 인스턴스가 시작되거나 재부팅될 때마다 에이전트의 최신 버전을 설치하고 시작합니다.
#!/bin/bash # install the latest version of the agent yum install -y https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/latest/aws-appconfig-agent.rpm # optional: configure the agent mkdir /etc/systemd/system/aws-appconfig-agent.service.d echo "${
MY_AGENT_CONFIG
}" > /etc/systemd/system/aws-appconfig-agent.service.d/overrides.conf systemctl daemon-reload # start the agent systemctl start aws-appconfig-agent