데이터 전달을 위한 Amazon ECS Linux 컨테이너 인스턴스 부트스트래핑 - Amazon Elastic Container Service

데이터 전달을 위한 Amazon ECS Linux 컨테이너 인스턴스 부트스트래핑

Amazon EC2 인스턴스를 시작하면 사용자 데이터를 EC2 인스턴스에 전달할 수 있습니다. 이 데이터는 일반적인 구성 태스크를 자동으로 수행하는 데 사용할 수 있고, 인스턴스가 부팅될 때 스크립트를 실행하는 데 사용할 수도 있습니다. Amazon ECS의 경우 사용자 데이터의 가장 일반적인 사용 사례는 구성 정보를 Docker 대몬 및 Amazon ECS 컨테이너 에이전트에 전달하는 것입니다.

클라우드 boothook, 셸 스크립트, cloud-init 명령을 비롯하여 여러 유형의 사용자 데이터를 Amazon EC2에 전달할 수 있습니다. 이러한 유형 및 다른 형식 유형에 대한 자세한 정보는 Cloud-Init 설명서를 참조하세요.

Amazon EC2 시작 마법사를 사용할 때 사용자 데이터를 전달하려면 Amazon ECS Linux 컨테이너 인스턴스 시작 섹션을 참조하세요.

컨테이너 에이전트 구성 또는 Docker 대몬 구성의 데이터를 전달하도록 컨테이너 인스턴스를 구성할 수 있습니다.

Amazon ECS 컨테이너 에이전트

Linux 변형의 Amazon ECS 최적화 AMI는 컨테이너 에이전트가 시작될 때 /etc/ecs/ecs.config 파일에서 에이전트 구성 데이터를 찾습니다. 시작 시 Amazon EC2 사용자 데이터를 사용하여 이 구성 데이터를 지정할 수 있습니다. 사용 가능한 Amazon ECS 컨테이너 에이전트 구성 변수에 대한 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성 섹션을 참조하세요.

클러스터 이름과 같이 단일 에이전트 구성 변수만 설정하려면 echo를 사용하여 구성 파일에 변수를 복사합니다.

#!/bin/bash echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config

/etc/ecs/ecs.config에 작성할 여러 변수가 있는 경우 다음 heredoc 형식을 사용합니다. 이 형식은 cat으로 시작하는 라인과 EOF 사이의 모든 항목을 구성 파일에 작성합니다.

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_ENGINE_AUTH_TYPE=docker ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}} ECS_LOGLEVEL=debug ECS_WARM_POOLS_CHECK=true EOF

사용자 지정 인스턴스 속성을 설정하려면 ECS_INSTANCE_ATTRIBUTES 환경 변수를 설정합니다.

#!/bin/bash cat <<'EOF' >> ecs.config ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"} EOF

Docker 대몬

Amazon EC2 사용자 데이터를 사용하여 Docker 대몬 구성 정보를 지정할 수 있습니다. 이 구성 옵션에 대한 자세한 정보는 Docker 대몬 설명서를 참조하세요.

아래 예에서 사용자 정의 옵션이 Docker 대몬 구성 파일 /etc/docker/daemon.json에 추가되며, 파일은 인스턴스가 시작될 때 사용자 데이터에 지정됩니다.

#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"debug": true} EOF systemctl restart docker --no-block

아래 예에서 사용자 정의 옵션이 Docker 대몬 구성 파일 /etc/docker/daemon.json에 추가되며, 파일은 인스턴스가 시작될 때 사용자 데이터에 지정됩니다. 이 예제에서는 Docker 대몬(daemon) 구성 파일에서 docker-proxy를 비활성화하는 방법을 보여줍니다.

#!/bin/bash cat <<EOF >/etc/docker/daemon.json {"userland-proxy": false} EOF systemctl restart docker --no-block