0
0

LocalStack で AWS CLI コマンドを使う

Last updated at Posted at 2024-07-20

このエントリについて

  • こちらのエントリ と同じく、以前残したメモを供養する目的で書きました
  • LocalStack はv3がリリース済みですが、ここに書いたのはv2の使用時に確認した設定やコマンドです。v3のコンテナで動くことを確認したうえで書いていますが、v3に最適化した訳でない点はご承知おきください

コンテナの LocalStack に対しAWS CLIコマンドを発行する方法

  1. コンテナの外から aws コマンドを使う
  2. awslocal コマンドを使う

(事前準備) LocalStack 用のプロファイルを定義

  • aws コマンドの --profile に与える LocalStack 用のプロファイルを用意しておく
  • 中身は適当でよいが、存在するAWS環境に有効なプロファイルを使うと LocalStack の方でエラーにしてしまうはず

(例) ~/.aws/config

[profile localstack]
region = ap-northeast-1  # この値は AWS_DEFAULT_REGION 環境変数と合わせるのが無難
output = json

(例) ~/.aws/credentials

[localstack]
aws_access_key_id = Dummy
aws_secret_access_key = Dummy

コンテナの外から aws コマンドを使う

  • --endpoint-url--profile を与えて aws コマンドを発行する
  • --profile には、予め用意しておいた LocalStack 用のプロファイルを指定する

(例) s3 コマンドを発行

下記は s3 コマンドだが lambda や dynamodb なども同じやり方

  • localstack/localstack イメージを使用
  • "localstack" というプロファイルを使用し、ポート番号には 4566 を指定
% aws s3 --endpoint-url http://localhost:4566 --profile localstack mb s3://localstack-sample-bucket
make_bucket: localstack-sample-bucket
% aws s3 --endpoint-url http://localhost:4566 --profile localstack ls
2023-06-08 05:01:55 localstack-sample-bucket

awslocal コマンドを使う

  • awslocal は --endpoint-url や --profile を指定することなく、ローカルの LocalStack に対して aws コマンドを発行するもの
  • Docker で localstack/localstack イメージから起動した場合、コンテナに入れば awslocalが使える状態になっている(コンテナ内でのインストールは不要)
  • --endpoint-url や --profile の以外は aws が awslocal になるだけで、コマンドの体系は同じ
    • aws s3 ls は、そのまま awslocal s3 ls になる
  • Docker にセットアップした LocalStack がデフォルトの設定なら、コンテナの外からでも awslocal によるコマンドが可能
    • デフォルトの 4566 ポート以外でセットアップするなどした場合は AWS_ENDPOINT_URL 環境変数を設定して対応

(例) s3 コマンドを実行

% docker container exec -it localstack-container /bin/bash
# awslocal s3 mb s3://localstack-sample-bucket
make_bucket: localstack-sample-bucket
# awslocal s3 ls
2023-06-08 05:47:43 localstack-sample-bucket

(補足) awslocal のインストール

  • Mac なら pip で awscli-local パッケージ でインストールする
  • Docker での起動も含めローカルに LocalStack をセットアップするなら、 awslocal もローカルにインストールしておいた方が便利
    • LocalStack コンテナに対してローカルから awslocal を発行する方法もあると思いますが、 aws コマンドで足りるので調査しておらず、ここでは割愛します
pip install awscli-local
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0