amazon-ssm-agent は Alpine Linux をサポートする予定はないとのこと。
こちらの issue には
このように Alpine Linux に amazon-ssm-agent をインストールする方法が紹介されていたが、この方法だと Systems Manager のManaged instances 一覧で Agent version が 2.3.0.0
となってしまう。
これの何が問題かというと 2.3.0.0
の場合、Session Manager に対応していないので、Alpine Linux のインスタンスに Session Manager 経由で接続することができないです。
色々試した結果、下記の方法で対応できたので記載する。
FROM golang:1.12-alpine as builder -ARG VERSION=2.3.930.0 +ARG VERSION=2.3.1205.0 RUN set -ex && apk add --no-cache make git gcc libc-dev curl bash && \ curl -sLO https://github.com/aws/amazon-ssm-agent/archive/${VERSION}.tar.gz && \ mkdir -p /go/src/github.com && \ tar xzf ${VERSION}.tar.gz && \ mv amazon-ssm-agent-${VERSION} /go/src/github.com/amazon-ssm-agent && \ cd /go/src/github.com/amazon-ssm-agent && \ + echo ${VERSION} > /go/src/github.com/amazon-ssm-agent/VERSION && \ gofmt -w agent && make checkstyle || ./Tools/bin/goimports -w agent && \ make build-linux FROM alpine RUN set -ex && apk add --no-cache sudo ca-certificates && \ adduser -D ssm-user && echo "ssm-user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ssm-agent-users && \ mkdir -p /etc/amazon/ssm COPY --from=builder /go/src/github.com/amazon-ssm-agent/bin/linux_amd64/ /usr/bin COPY --from=builder /go/src/github.com/amazon-ssm-agent/bin/amazon-ssm-agent.json.template /etc/amazon/ssm/amazon-ssm-agent.json COPY --from=builder /go/src/github.com/amazon-ssm-agent/bin/seelog_unix.xml /etc/amazon/ssm/seelog.xml CMD ["/usr/bin/amazon-ssm-agent"]
以上、Docker のベストプラクティスには反するけど、ECS on Fargate で管理しているコンテナにはもう全部 amazon-ssm-agent を入れちゃって良いんじゃないかと思う今日この頃でした。