【AWS】LocalStack ~ awscli-local ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/12/14/010524
https://dk521123.hatenablog.com/entry/2019/12/16/231149
https://dk521123.hatenablog.com/entry/2019/11/10/205535

の続き。

今回は、ローカル環境にAWS環境を作成する LocalStack を扱ってきたが
その環境で使用する awscli-local ってものがあるので、メモ。

目次

【1】awscli-local とは?
【2】環境設定
 1)前提条件「AWS CLI」
 2)awscli-localインストール
【3】使用例
 1)S3バケットの確認
【4】トラブル
 1)確認時に「awslocal: command not found」となった場合
 2)例外「ModuleNotFoundError: No module named 'awscli'」が発生する場合

【1】awscli-local とは?

https://53ningen.com/dynamodb-localstack/

の説明が分かりやすかったので、抜粋。
~~~~~~
aws --endpoint-url=http://localhost:XXXX と毎回入力するのは面倒なので、
そのあたりをラップしてくれる localstack/awscli-local コマンドがベンリ
~~~~~~

Github
https://github.com/localstack/awscli-local

【2】環境設定

1)前提条件「AWS CLI

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

# unzip install if you don't install
sudo apt install unzip

# AWS CLI download and install
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

2)awscli-localインストール

# awscli-localをインストール
pip3 install awscli-local

# 確認(エラーが発生する場合は、後述「【4】トラブル」を参照)
awslocal --version

【3】使用例

1)S3バケットの確認

awslocal s3 ls

【4】トラブル

1)確認時に「awslocal: command not found」となった場合

https://qiita.com/plum_shiga/items/5214510f9786898c987f

が勉強になった。

[1] pipでインストールされているか確認

pip3 list | grep aws

awscli                 1.18.195
awscli-local           0.9 << ★入っている★

[2] 実行モジュール本体がどこにあるか調査してみる

pip3 show awscli-local
~~~~~~
・・・
Location: /home/<USER NAME>/.local/lib/python3.8/site-packages
・・・
~~~~~~

pip3 show awscli-local -f | grep /bin
~~~~~~
  ../../../bin/awslocal
  ../../../bin/awslocal.bat
~~~~~~

 => 「cd /home/xxxxxxx/.local/bin」に移動し、「awslocal」を発見!

[3] 環境変数 PATH に追加および確認

vi ~/.bash_profile
~~~
export PATH=/home/xxxxxxx/.local/bin:$PATH
~~~

# 適用
source ~/.bash_profile

# 確認
awslocal --version
 => 「aws-cli/1.18.195 Python/3.8.5 Linux/4.19.128-microsoft-standard botocore/1.19.35」が表示!

2)例外「ModuleNotFoundError: No module named 'awscli'」が発生する場合

エラー内容

$ awslocal --version
Traceback (most recent call last):
  File "/home/xxxxxxx/.local/bin/awslocal", line 91, in main
    import awscli.clidriver  # noqa: F401
ModuleNotFoundError: No module named 'awscli'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
・・・略・・・
  File "/usr/lib/python3.10/subprocess.py", line 1845, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'aws'

原因

* AWS CLI がないため
 => 導入には、上述『1)前提条件「AWS CLI」』を参照

参考文献

https://53ningen.com/dynamodb-localstack/

関連記事

LocalStack ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/14/010524
LocalStack ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2019/12/16/231149
LocalStack ~ awscli-local ~
https://dk521123.hatenablog.com/entry/2020/12/16/211127
AWS Glue ~ ローカル環境を作成する ~
https://dk521123.hatenablog.com/entry/2019/11/10/205535
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432