Im Fall von AWS Fargate ist es unpraktisch, dass ich nicht nachforschen kann, da es nicht im Container läuft, wenn ein Problem auftritt. Daher habe ich untersucht, wie der Container betreten wird.
Wenn Sie ssm-agent verwenden, müssen Sie den SSH-Port nicht öffnen und den öffentlichen Schlüssel für SSH verwalten, also habe ich ssm-agent verwendet.
Da ein Sitzungsmanager verwendet wird, hat er die folgenden Vorteile.
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/activations.html
Der Zugriff auf Amazon EC2-Instanzen ist ohne zusätzliche Kosten möglich.
https://github.com/f96q/fargate-ssm-sample
Enthält Terraform zum Erstellen einer Umgebung, die unter Dockerfile und AWS Fargate ausgeführt wird
Dockerfile
Bei Verwendung mit Alpine gibt es kein ssm-agent-Paket. Sie müssen es daher aus der Quelle holen, erstellen und installieren.
Für andere Linux-Verzerrungen stellen wir möglicherweise ein ssm-agent-Paket zur Verfügung, das Sie installieren können. In diesem Fall müssen Sie nur dieses Paket installieren. 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
Gehen Sie wie folgt vor, da Ihnen die Zeit, die Sie ausführen, in Rechnung gestellt wird.
Recommended Posts