AWS SSM 에이전트 시작

3110 단어 도커aws-cliAWS

SSM 에이전트를 시작합니다.



자신은 Fargate를 사용하여 Rails 애플리케이션을 배포했습니다.
그래서 Fargate로 서버 내에 터미널로 들어가는 수단에 SSM이라는 것을 발견했기 때문에,
이것을 활용했습니다만, 조금 망설인 점이 있었으므로 공유합니다.

자신의 경우 디렉토리 구성은 이런 느낌입니다.
이번에는 Dockerfile.producion과 entrypoint.sh만 사용할 수 있습니다.
※Dockerfile은 development용으로, Dockerfile.production이 이번 이용하는 것입니다.
staging 환경은 준비되어 있지 않습니다.
/application
L /app
L /bin
  ...
L Dockerfile
L Dockerfile.production
L entrypoint.sh
  ...

1.entrypoint.sh에서 하이브리드 활성화를 만듭니다.



먼저 SSM 에이전트를 시작하려면 하이브리드 활성화라는 것을 만들어야 합니다.
AWS → SystemsManager → 하이브리드 활성화에서 수동으로 만들 수도 있지만, entrypoint.sh에서 하이브리드 활성화를 만들었습니다.

entrypoint.sh

SSM_ACTIVATE_INFO=`aws ssm create-activation --iam-role service-role/AmazonEC2RunCommandRoleForManagedInstances --registration-limit 1 --region ap-northeast-1 --default-instance-name medley-blog-fargate-container`

SSM_ACTIVATE_CODE=`echo $SSM_ACTIVATE_INFO | jq -r '.ActivationCode'`
SSM_ACTIVATE_ID=`echo $SSM_ACTIVATE_INFO | jq -r '.ActivationId'`

2. 관리형 인스턴스를 등록합니다.



그런 다음 방금 만든 하이브리드 활성화를 사용하여 관리형 인스턴스를 등록합니다.

entrypoint.sh
# 一番下に次を追加

amazon-ssm-agent -register -code $SSM_ACTIVATE_CODE -id $SSM_ACTIVATE_ID -region "ap-northeast-1"

※스스로 하이브리드 액티베이션을 작성한 경우는 환경 변수에 ID와 CODE를 보존해 이용해 주세요.

3. SSM 에이전트 시작



entrypoint.sh
# 一番下に次を追加
amazon-ssm-agent &

이제 SSM 에이전트를 시작할 수 있어야 하지만 ECS 작업 정의에서 시작하려고 하면 시작되지 않았습니다.


그래서 Dockerfile에서 entrypint.sh를 시작하면 어떨까 생각하고 Dockerfile에서 시작해 보니 무사히 시작했습니다.

Dockerfile.production
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]

원인은 확실하지 않지만 하이브리드 활성화 등록까지는 ECS의 태스크 정의에서도 할 수 있었기 때문에, "Docker 컨테이너 자체는 ECS 측에 배포되고 있고, 그 컨테이너가 움직이는 명령이 컨테이너 내에 없다"는 느낌입니까?

다만, 다른 기사에서는 ECS 태스크 정의의 엔트리 포인트로부터도 되어 있는 기사가 있었기 때문에 수수께끼입니다.
만약, 아는 사람이 있으면 가르쳐 주세요.

음, Dockerfile에서 ENTRYPOINT로 시작할 수 있었기 때문에 좋았습니다.

참고 기사

좋은 웹페이지 즐겨찾기