🐳
AWS CLI ツールを扱うマルチ CPU アーキテクチャ対応な Docker イメージを作成する
はじめに
マルチ CPU アーキテクチャで AWS CLI ツールを使うためのDockerイメージを作成することになったのでその覚書。
とりあず、以下の CLI を使用できるようにする。
手順
1. Dockerfile の作成
Dockerfile
FROM python:3.11.8-slim-bullseye
# 必要なパッケージのインストール
RUN apt-get update && \
apt-get install -y less vim curl unzip make && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
ARG TARGETPLATFORM
# aws cli v2 のインストール
RUN PLATFORM=$( \
case ${TARGETPLATFORM} in \
linux/amd64 ) echo "x86_64";; \
linux/arm64 ) echo "aarch64";; \
esac \
) && \
curl -L "https://awscli.amazonaws.com/awscli-exe-linux-${PLATFORM}.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
rm awscliv2.zip && \
./aws/install && \
rm -rf aws
# AWS SAM CLI のインストール
RUN PLATFORM=$( \
case ${TARGETPLATFORM} in \
linux/amd64 ) echo "x86_64";; \
linux/arm64 ) echo "arm64";; \
esac \
) && \
curl -L "https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-${PLATFORM}.zip" -o "aws-sam-cli-linux.zip" && \
unzip aws-sam-cli-linux.zip -d sam-installation && \
rm aws-sam-cli-linux.zip && \
./sam-installation/install && \
rm -rf sam-installation
RUN pip install awsebcli --upgrade
WORKDIR /workdir
2. Docker イメージのビルド & プッシュ
GitLab CE のレジストリにプッシュする想定。
IMAGE_NAME="aws-cli"
REGISTRY="gitlab.oppara.tv:5002/oppara/docker"
NOW=$(date "+%Y%m%d")
docker buildx create --use && \
docker buildx build --platform linux/amd64,linux/arm64 \
--no-cache --push \
--provenance=false \
-t ${REGISTRY}/${IMAGE_NAME}:latest \
-t ${REGISTRY}/${IMAGE_NAME}:${NOW} \
-f /path/to/Dockerfile .
--provenance=false
をつけないと、イメージが正しくプッシュされない。
"Invalid tag: missing manifest digest" というエラーが出る。
3. 下準備
compose.yaml の作成する。
compose.yaml
version: "3"
services:
aws-cli:
image: gitlab.oppara.tv:5002/oppara/docker/aws-cli:latest
container_name: aws-cli
volumes:
- .:/workdir
env_file:
- .env
environment:
AWS_DEFAULT_REGION: ap-northeast-1
AWS_DEFAULT_OUTPUT: json
.env
ファイルを作成し、AWS CLI のアクセスキーとシークレットキーを設定する。
AWS_ACCESS_KEY_ID="アクセスキー"
AWS_SECRET_ACCESS_KEY="シークレットキー"
4. 実行
AWS CLI のバージョンを確認する。
$ docker compose run --rm aws-cli aws --version
AWS SAM CLI のバージョンを確認する。
$ docker compose run --rm aws-cli sam --version
EB CLI のバージョンを確認する。
$ docker compose run --rm aws-cli eb --version
S3 のバケット一覧を確認する。
$ docker compose run --rm aws-cli aws s3 ls
5. 後片付け
% docker compose down -v --rmi all
環境
% sw_vers
ProductName: macOS
ProductVersion: 14.2.1
BuildVersion: 23C71
% docker --version
Docker version 24.0.6, build ed223bc
Discussion