

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

# Elastic Beanstalk 환경을 위한 플랫폼 스크립트 도구
<a name="custom-platforms-scripts"></a>

이 주제에서는가 Amazon Linux 플랫폼을 사용하는 환경에 AWS Elastic Beanstalk 제공하는 도구에 대해 설명합니다. 이 도구는 Elastic Beanstalk 환경의 Amazon EC2 인스턴스에 있습니다.

## get-config
<a name="custom-platforms-scripts.get-config"></a>

`get-config` 도구를 사용하면 일반 텍스트 환경 변수 값과 기타 플랫폼 및 인스턴스 정보를 검색할 수 있습니다. 이 도구는 `/opt/elasticbeanstalk/bin/get-config`에 있습니다.

### get-config 명령
<a name="custom-platforms-scripts.get-config.commands"></a>

각 `get-config` 도구 명령은 특정 유형의 정보를 반환합니다. 다음 구문을 사용하여 도구의 명령을 실행합니다.

```
$ /opt/elasticbeanstalk/bin/get-config {{command}} [ {{options}} ]
```

다음 예제에서는 `environment` 명령을 실행합니다.

```
$ /opt/elasticbeanstalk/bin/get-config environment -k PORT
```

선택한 명령 및 옵션에 따라 도구에서 키-값 페어나 단일 값이 있는 객체(JSON 또는 YAML)가 반환됩니다.

SSH를 사용해 Elastic Beanstalk 환경의 EC2 인스턴스에 연결하여 `get-config`를 테스트할 수 있습니다.

**참고**  
테스트용으로 `get-config`를 실행할 때 일부 명령의 경우 기본 정보에 액세스하기 위해 루트 사용자 권한이 필요할 수 있습니다. 액세스 권한 오류가 발생하면 `sudo`로 명령을 다시 실행합니다.  
환경에 배포하는 스크립트에서 이 도구를 사용할 때는 `sudo`를 추가할 필요가 없습니다. Elastic Beanstalk가 모든 스크립트를 루트 사용자로 실행합니다.

다음 단원에서는 도구의 명령에 대해 설명합니다.

#### optionsettings - 구성 옵션
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

`get-config optionsettings` 명령은 환경에 설정되고 환경 인스턴스의 플랫폼에서 사용되는 구성 옵션을 나열하는 객체를 반환합니다. 구성 옵션들은 네임스페이스별로 구성됩니다.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}
```

특정 구성 옵션 값을 반환하려면 `--namespace`(`-n`) 옵션을 사용하여 네임스페이스를 지정하고 `--option-name`(`-o`) 옵션을 사용하여 옵션 이름을 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings -n {{aws:elasticbeanstalk:container:php:phpini}} -o {{memory_limit}}
256M
```

#### environment - 환경 속성
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

`get-config environment` 명령은 사용자 구성 속성과 Elastic Beanstalk에서 제공한 속성을 포함한 환경 속성 목록이 포함된 객체를 반환합니다. 사용자가 구성한 속성은 [콘솔](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console)에서 *일반 텍스트* 또는 구성 옵션 네임스페이스 [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)와 함께 정의됩니다.

```
$ /opt/elasticbeanstalk/bin/get-config environment
{"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}
```

예를 들어 Elastic Beanstalk는 통합 Amazon RDS DB 인스턴스에 연결하기 위한 환경 속성(예: `RDS_HOSTNAME`)을 제공합니다. 이러한 RDS 연결 속성은 `get-config environment`의 출력에 나타납니다. 그러나 해당 속성은 `get-config optionsettings`의 출력에 표시되지 않습니다. 이는 해당 속성들이 구성 옵션에서 설정되지 않았기 때문입니다.

특정 환경 속성을 반환하려면 `--key`(`-k`) 옵션을 사용하여 속성 키를 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config environment -k {{TESTPROPERTY}}
testvalue
```

**참고**  
`get-config` 도구는 [보안 암호를 저장하는 환경 변수](AWSHowTo.secrets.env-vars.md)를 조회할 수 없습니다. 보안 암호 또는 파라미터 스토어에서 값을 프로그래밍 방식으로 조회하는 방법에 대한 자세한 내용은 [ Secrets Manager 사용](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager) 또는[Systems Manager 파라미터 스토어 사용](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store) 섹션을 참조하세요.

#### container - 온인스턴스 구성 값
<a name="custom-platforms-scripts.get-config.commands.container"></a>

`get-config container` 명령은 환경 인스턴스에 대한 플랫폼 및 환경 구성 값을 나열하는 객체를 반환합니다.

다음 예는 Amazon Linux 2 Tomcat 환경에서 이 명령에 대한 출력을 보여줍니다.

```
$ /opt/elasticbeanstalk/bin/get-config container
{"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}
```

특정 키의 값을 반환하려면 `--key`(`-k`) 옵션을 사용하여 키를 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config container -k {{environment_name}}
myenv-1da84946
```

#### addons - 추가 기능 구성 값
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

`get-config addons` 명령은 환경 추가 기능의 구성 정보가 포함된 객체를 반환합니다. 이 명령을 사용하여 환경에 연결된 Amazon RDS 데이터베이스의 구성을 검색합니다.

```
$ /opt/elasticbeanstalk/bin/get-config addons
{"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}
```

두 가지 방법으로 결과를 제한할 수 있습니다. 특정 추가 기능에 대한 값을 검색하려면 `--add-on`(`-a`) 옵션을 사용하여 추가 기능 이름을 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a {{rds}}
{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}
```

추가 기능 내의 특정 키 값을 반환하려면 `--key`(`-k`) 옵션을 추가하여 키를 지정합니다.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a {{rds}} -k {{RDS_DB_NAME}}
ebdb
```

#### platformconfig - 동일 구성 값
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

`get-config platformconfig` 명령은 플랫폼 버전별로 동일한 플랫폼 구성 정보가 포함된 객체를 반환합니다. 출력은 동일한 플랫폼 버전을 실행하는 모든 환경에서 동일합니다. 이 명령에 대한 출력 객체에는 다음과 같은 두 임베디드 객체가 있습니다.
+ `GeneralConfig` - 모든 Amazon Linux 2 및 Amazon Linux 2023 플랫폼 브랜치의 최신 버전에서 동일한 정보를 포함합니다.
+ `PlatformSpecificConfig` - 특정 플랫폼 버전에 해당하는 동일한 정보를 포함합니다.

다음 예에서는 *Corretto 11을 실행하는 Tomcat 8.5* 플랫폼 브랜치를 사용하는 환경의 명령에 대한 출력을 보여줍니다.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig
{"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}
```

특정 키의 값을 반환하려면 `--key`(`-k`) 옵션을 사용하여 키를 지정합니다. 이러한 키는 두 임베디드 객체에서 고유합니다. 키가 포함된 객체는 지정할 필요가 없습니다.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k {{AppStagingDir}}
/var/app/staging/
```

### get-config output 옵션
<a name="custom-platforms-scripts.get-config.global"></a>

`--output` 옵션을 사용하여 출력 객체 형식을 지정합니다. 유효한 값은 `JSON`(기본값) 및 `YAML`입니다. 이는 전역 옵션입니다. 명령 이름 앞에 지정해야 합니다.

다음 예에서는 YAML 형식의 구성 옵션 값을 반환합니다.

```
$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings
aws:elasticbeanstalk:application:environment:
  JDBC_CONNECTION_STRING: ""
aws:elasticbeanstalk:container:tomcat:jvmoptions:
  JVM Options: ""
  Xms: 256m
  Xmx: 256m
aws:elasticbeanstalk:environment:proxy:
  ProxyServer: nginx
  StaticFiles:
        - ""
aws:elasticbeanstalk:healthreporting:system:
  SystemType: enhanced
aws:elasticbeanstalk:hostmanager:
  LogPublicationControl: "false"
```

## pkg-repo
<a name="custom-platforms-scripts.pkg-repo"></a>

**참고**  
이`pkg-repo` 도구는 Amazon 리눅스 2023 플랫폼 기반 환경에서는 사용할 수 없습니다. 하지만 패키지 및 운영 체제 업데이트를 AL2023 인스턴스에 수동으로 적용할 수 있습니다. 자세한 내용은 *Amazon Linux 2023 사용 설명서의* [패키지 및 운영 체제 업데이트 관리를](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) 참조하십시오

몇몇 긴급한 상황에서는 필수 Elastic Beanstalk 플랫폼 버전과 함께 아직 릴리스되지 않은 Amazon Linux 2 보안 패치를 사용하여 Amazon EC2 인스턴스를 업데이트해야 할 수 있습니다. 기본적으로 Elastic Beanstalk 환경에서 수동 업데이트를 수행할 수 없습니다. 이는 플랫폼 버전이 Amazon Linux 2 리포지토리의 특정 버전으로 잠겨 있기 때문입니다. 이 잠금은 인스턴스가 지원 대상에 해당하고 일관된 소프트웨어 버전을 실행하도록 합니다. 긴급한 경우 `pkg-repo` 도구를 사용하면 yum 패키지를 새로운 Elastic Beanstalk 플랫폼 버전에 릴리스되기 전에 환경에 설치해야 하는 경우 Amazon Linux 2에서 yum 패키지를 수동으로 업데이트할 수 있는 해결책을 활용할 수 있습니다.

Amazon Linux 2 플랫폼의 `pkg-repo` 도구는 `yum` 패키지 리포지토리를 잠금 해제하는 기능을 제공합니다. 그런 다음 보안 패치에 대한 **yum update**를 수동으로 수행할 수 있습니다. 반대로 추가 업데이트를 방지하기 위해 도구를 사용하여 yum 패키지 리포지토리를 잠가 업데이트를 따를 수 있습니다. 이 `pkg-repo` 도구는 Elastic Beanstalk 환경에 있는 모든 EC2 인스턴스의 `/opt/elasticbeanstalk/bin/pkg-repo` 디렉터리에서 사용할 수 있습니다.

`pkg-repo` 도구를 사용한 변경은 도구가 사용되는 EC2 인스턴스에서만 이루어집니다. 해당 변경은 다른 인스턴스에 영향을 주거나 환경에 대한 향후 업데이트를 방지하지 않습니다. 이 주제의 뒷부분에서 제공되는 예제에서는 스크립트 및 구성 파일에서 `pkg-repo` 명령을 호출하여 변경 사항을 모든 인스턴스에 적용하는 방법을 설명합니다.

**주의**  
대부분의 사용자에게는 이 도구를 권장하지 않습니다. 잠금 해제된 플랫폼 버전에 적용된 수동 변경은 모두 대역 외로 간주됩니다. 이 옵션은 다음과 같은 위험을 감수할 수 있는 긴급한 상황에 있는 사용자만 이용할 수 있습니다.  
패키지 버전은 환경의 모든 인스턴스에서 일관성을 보장할 수 없습니다.
`pkg-repo` 도구를 사용하여 수정된 환경은 정상적인 작동이 보장되지 않습니다. 해당 환경은 Elastic Beanstalk가 지원하는 플랫폼에서 테스트 및 확인되지 않았습니다.
테스트 및 취소 계획을 포함하는 모범 사례를 적용하는 것을 권장합니다. 모범 사례가 원활히 적용될 수 있도록, Elastic Beanstalk 콘솔 및 EB CLI를 사용하여 환경을 복제하고 환경 URL을 바꿀 수 있습니다. 이러한 작업 사용에 대한 자세한 내용은, 이 가이드에 포함된 *환경 관리* 장의 [블루/그린 배포](using-features.CNAMESwap.md)를 참조하세요.

yum 리포지토리 구성 파일을 수동으로 편집하려는 경우 우선 `pkg-repo` 도구를 실행하십시오. `pkg-repo` 도구는 yum 리포지토리 구성 파일을 수동으로 편집한 Amazon Linux 2 환경에서 의도한 대로 작동하지 않을 수 있습니다. 이는 해당 도구가 구성 변경을 인식하지 못할 수 있기 때문입니다.

Amazon Linux 패키지 리포지토리에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [패키지 리포지토리](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository) 주제를 참조하세요.

### pkg-repo 명령
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

다음 구문을 사용하여 `pkg-repo` 도구 명령을 실행합니다.

```
$ /opt/elasticbeanstalk/bin/pkg-repo {{command}} [{{options}}]
```

다음은 `pkg-repo` 명령입니다.
+ **lock** – `yum` 패키지 리포지토리를 특정 버전으로 잠급니다.
+ **unlock** – `yum` 패키지 리포지토리를 특정 버전에서 잠금 해제합니다.
+ **status** – `yum` 패키지 리포지토리 및 현재 잠금 상태를 모두 나열합니다.
+ **help** – 일반적인 도움말 또는 하나의 명령에 대한 도움말을 표시합니다.

옵션은 다음과 같이 명령에 적용됩니다.
+ `lock`, `unlock` 및 `status ` – 옵션: `-h`, `--help` 또는 없음(기본값)
+ `help` – 옵션: `lock`, `unlock`, `status`, 또는 없음(기본값)



다음 예제에서는 **unlock** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock
Amazon Linux 2 core package repo successfully unlocked
Amazon Linux 2 extras package repo successfully unlocked
```

다음 예제에서는 **lock** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock
Amazon Linux 2 core package repo successfully locked
Amazon Linux 2 extras package repo successfully locked
```

다음 예제에서는 **status** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo status
Amazon Linux 2 core package repo is currently UNLOCKED
Amazon Linux 2 extras package repo is currently UNLOCKED
```

다음 예제에서는 **lock** 명령에 대한 **help** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock
```

다음 예제에서는 `pkg-repo` 도구에 대한 **help** 명령을 실행합니다.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help
```

SSH를 사용해 Elastic Beanstalk 환경의 인스턴스에 연결하여 `pkg-repo`를 테스트할 수 있습니다. SSH 옵션 중 하나는 EB CLI [**eb ssh**](eb3-ssh.md) 명령입니다.

**참고**  
이 `pkg-repo` 도구를 실행하려면 루트 사용자 권한이 필요합니다. 액세스 권한 오류가 발생하면 `sudo`로 명령을 다시 실행합니다.  
환경에 배포하는 스크립트 또는 구성 파일에서 이 도구를 사용할 때는 `sudo`를 추가할 필요가 없습니다. Elastic Beanstalk가 모든 스크립트를 루트 사용자로 실행합니다.

### pkg-repo 예제
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

이전 섹션은 Elastic Beanstalk 환경의 개별 EC2 인스턴스에서 테스트하기 위한 명령줄 예제를 제공합니다. 이러한 접근 방식은 테스트에 도움이 될 수 있습니다. 그러나 이 방식은 한 번에 하나의 인스턴스만 업데이트하므로 환경의 모든 인스턴스에 변경 사항을 적용하는 경우에는 실용적이지 않습니다.

보다 실용적인 접근 방식은 [플랫폼 후크](platforms-linux-extend.hooks.md) 스크립트 또는 [`.ebextensions`](ebextensions.md) 구성 파일을 사용하여 모든 인스턴스에 일관된 방식으로 변경 사항을 적용하는 것입니다.

다음 예제는 [`.ebextensions`](ebextensions.md) 폴더의 구성 파일에서 `pkg-repo`를 호출합니다. Elastic Beanstalk는 애플리케이션 소스 번들을 배포할 때 `update_package.config` 파일의 명령을 실행합니다.

```
.ebextensions
└── update_package.config
```

최신 버전의 *도커* 패키지를 수신하기 위해 이 구성은 **yum update** 명령에 *도커* 패키지를 지정합니다.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update docker -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

이 구성은 **yum update** 명령에 어떤 패키지도 지정하지 않습니다. 사용 가능한 모든 업데이트가 결과로 적용됩니다.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

다음 예제는 bash 스크립트에서 [플랫폼 후크](platforms-linux-extend.hooks.md)로 `pkg-repo`를 호출합니다. Elastic Beanstalk는 `prebuild` 하위 디렉터리에 있는 `update_package.sh` 스크립트 파일을 실행합니다.

```
.platform
└── hooks
    └── prebuild
        └── update_package.sh
```

최신 버전의 *도커* 패키지를 수신하기 위해 이 스크립트는 **yum update** 명령에 *도커* 패키지를 지정합니다. 패키지 이름을 생략하면 사용 가능한 업데이트가 모두 적용됩니다. 이전 구성 파일 예제는 이에 대해 설명합니다.

```
### update_package.sh ###

#!/bin/bash

/opt/elasticbeanstalk/bin/pkg-repo unlock
yum update docker -y
/opt/elasticbeanstalk/bin/pkg-repo lock
yum clean all -y
rm -rf /var/cache/yum
```

## download-source-bundle(Amazon Linux AMI에만 해당)
<a name="custom-platforms-scripts.download"></a>

Amazon Linux AMI 플랫폼 브랜치(이전 Amazon Linux 2)에서 Elastic Beanstalk는 추가 도구인 `download-source-bundle`을 제공합니다. 이 도구를 사용하여 플랫폼 배포 시 애플리케이션 소스 코드를 다운로드합니다. 이 도구는 `/opt/elasticbeanstalk/bin/download-source-bundle`에 있습니다.

환경 인스턴스의 `appdeploy/pre` 폴더에 예제 스크립트 `00-unzip.sh`가 있습니다. 이는 배포 시 `download-source-bundle`을 사용하여 애플리케이션 소스 코드를 `/opt/elasticbeanstalk/deploy/appsource` 폴더에 다운로드하는 방법을 보여줍니다.