Dans le cas d'AWS Fargate, il est gênant que je ne puisse pas enquêter car ce n'est pas dans le conteneur qui s'exécute lorsqu'il y a un problème, j'ai donc étudié comment entrer dans le conteneur.
Si vous utilisez ssm-agent, vous n'avez pas besoin d'ouvrir le port SSH et de gérer la clé publique vers SSH, j'ai donc utilisé ssm-agent.
Puisqu'il utilise un gestionnaire de session, il présente les avantages suivants.
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/activations.html
L'accès aux instances Amazon EC2 est disponible sans frais supplémentaires.
https://github.com/f96q/fargate-ssm-sample
Inclut Terraform pour créer un environnement qui s'exécute sur Dockerfile et AWS Fargate
Dockerfile
Lors de l'utilisation avec Alpine, il n'y a pas de package ssm-agent, vous devez donc le récupérer depuis la source, le construire et l'installer.
Pour les autres distorsions Linux, nous pouvons fournir un package ssm-agent que vous pouvez installer, auquel cas il vous suffit d'installer ce package. https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-manual-agent-install.html
ARG GOLANG_TAG=1.14.4-alpine3.12
ARG ALPINE_TAG=3.12
# ssm agenet builder
FROM golang:$GOLANG_TAG as ssm-agent-builder
ARG SSM_AGENT_VERSION=2.3.1205.0
RUN apk add --no-cache \
'make~=4.3-r0' \
'git~=2.26.2-r0' \
'gcc~=9.3.0-r2' \
'libc-dev~=0.7.2-r3' \
'bash~=5.0.17-r0'
RUN wget -q https://github.com/aws/amazon-ssm-agent/archive/${SSM_AGENT_VERSION}.tar.gz && \
mkdir -p /go/src/github.com && \
tar xzf ${SSM_AGENT_VERSION}.tar.gz && \
mv amazon-ssm-agent-${SSM_AGENT_VERSION} /go/src/github.com/amazon-ssm-agent && \
echo ${SSM_AGENT_VERSION} > /go/src/github.com/amazon-ssm-agent/VERSION
WORKDIR /go/src/github.com/amazon-ssm-agent
RUN gofmt -w agent && make checkstyle || ./Tools/bin/goimports -w agent && \
make build-linux
# merge image
FROM alpine:$ALPINE_TAG
RUN apk add --no-cache \
'jq~=1' \
'aws-cli~=1.18.55-r0' \
'sudo~=1.9.0-r0'
RUN adduser -D ssm-user && \
echo "Set disable_coredump false" >> /etc/sudo.conf && \
echo "ssm-user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ssm-agent-users && \
mkdir -p /etc/amazon/ssm
COPY --from=ssm-agent-builder /go/src/github.com/amazon-ssm-agent/bin/linux_amd64/ /usr/bin
COPY --from=ssm-agent-builder /go/src/github.com/amazon-ssm-agent/bin/amazon-ssm-agent.json.template /etc/amazon/ssm/amazon-ssm-agent.json
COPY --from=ssm-agent-builder /go/src/github.com/amazon-ssm-agent/bin/seelog_unix.xml /etc/amazon/ssm/seelog.xml
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["amazon-ssm-agent"]
docker-entrypoint.sh
#!/bin/sh
set -e
AWS_REGION=${AWS_REGION:-}
SSM_ACTIVATION=$(aws ssm create-activation --default-instance-name "fargate-ssm" --iam-role "service-role/AmazonEC2RunCommandRoleForManagedInstances" --registration-limit 1 --region $AWS_REGION)
export SSM_ACTIVATION_CODE=$(echo $SSM_ACTIVATION | jq -r .ActivationCode)
export SSM_ACTIVATION_ID=$(echo $SSM_ACTIVATION | jq -r .ActivationId)
amazon-ssm-agent -register -code $SSM_ACTIVATION_CODE -id $SSM_ACTIVATION_ID -region $AWS_REGION
exec "$@"
https://aws.amazon.com/jp/systems-manager/pricing/#On-Premises_Instance_Management
Procédez comme suit car vous serez facturé pour le temps que vous exécutez.
Recommended Posts