きっかけ
- EC2インスタンスにDocker/Podmanを動作させ、その上のコンテナに対してAWSの権限がちゃんと付与できたか確認したいと思うこと、ないでしょうか?
- え、ないです??私はありました。
- ただ、よく使われる軽量コンテナイメージには、当然ながらaws cliがデフォルトインストールされていないため、インストールする手順 & aws cliをコンテナ上で動作させる手順を記します
前提
確認した環境は以下
- Docker(25.0.3)
- インストールしたaws cli(2.17.28)
- Dockerfile内で記載していますが、バージョンは指定せず、latestです
- 必要に応じて、バージョンを指定してください
手順
1.Dockerfileを作成
# AmazonLinux 2023をベースイメージとして使用
FROM amazonlinux:2023
# 必要なパッケージをインストール
RUN yum install -y sudo unzip
# AWS CLIのインストール
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
sudo ./aws/install && \
rm -rf aws awscliv2.zip
# デフォルトのコマンドを設定(オプション)
CMD ["/bin/bash"]
2.コンテナイメージをビルド
$ docker build -t amazonlinux2023-awscli .
3.コンテナをrun
$ docker run -it amazonlinux2023-awscli
4.【コンテナ内】aws cliがインストールされていることを確認する
# aws --version
- 実行例
# aws --version
aws-cli/2.17.28 Python/3.11.9 Linux/6.6.16-linuxkit exe/aarch64.amzn.2023
5.【コンテナ内】(オプション)AWS認証設定のコマンド
- 本番ではアクセスキー/シークレットキーは使用せず、インスタンスプロファイルを使用することが強く推奨されています
# aws configure
- 実行例
# aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
#
6.【コンテナ内】AWS認証設定の確認コマンド例
# 認証情報の確認
# aws sts get-caller-identity
- 実行例
# 認証情報の確認
# aws sts get-caller-identity
{
"UserId": "XXXXXXXXXXXXXXXXXXXXX",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/example-user"
}
7.【コンテナ内】コンテナから抜ける
# exit
終わりに
- そんなに難しいことをしているわけでは無いですが、咄嗟に出てこなかったこともあり、まとめてみました
- もしどなたかに刺さる内容であれば幸いです