AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

Amazon Linux 2 コンテナに AWS CLI をインストール

AWS で使うディストリビューションなら、やっぱ Amazon Linux 2だよね。

LTS (長期サポート) で 2023年までサポートされてるし、 今後主流の systemd 対応 (CentOS 7 などから採用されてる、各種サービスの起動方式)だから。

でも、EC2で作ると課金対象になったりするから、手元で簡単にコンテナでつくっちゃおう。

ぐらいの、「のり」で設定してみました。

目標として設定したのは、「AWS CLI と jq が正常動作」です。

AWS CLI をインストール

Amazon Linux 2 コンテナを起動

docker for Mac / Windows をインストールした後に、次のコマンドを叩けばOK。



※ローカル開発環境って多彩なので、この部分の詳細は、他サイト様を参照くださいまし。

$ docker pull amazonlinux
$ docker run -it amazonlinux

docker さんを使うと、ローカル環境と分離できるので、お気楽ですね。

なお最小構成で作られているので yum update などは適時実施しましょう。

AWS CLI を導入

amazonlinux の シェルにて、この2つのコマンド打てば、導入完了です。

docker で shell入ると root権限なので、 sudo なしでやっちゃいます。

# yum install awscli
# yum install less groff jq which


less と groff がないと、help表示などでエラーになるので入れておきます。

jq は aws-cli と連携してJSON扱うので導入。whichは、入ってないのに気づいたのでオマケです。

AWS CLI を導入確認


こんな感じで aws-cli のバージョンを確認しておきましょう。なおコマンド名は aws となります。

bash-4.2# aws --version
aws-cli/1.16.300 Python/2.7.16 Linux/4.19.76-linuxkit botocore/1.13.36

Amazon Linux 2 デフォルトの、Python2.7で動作してることがわかります。


あと、次のように入力して、help形式で情報が表示されれば、関連パッケージも確認完了です。

bash-4.2# aws help

忘れちゃいけない環境変数

このおまじないをかけておきましょう。デフォルトだと、LANG環境変数がセットされていないので、Pythonで作られた aws-cli の出力がasciiとなり、日本語などが含まれたJSONがレスポンスされたときに落ちます。。。

# export LANG=en_US.UTF-8

この環境変数設定により、UTF-8でのJSON出力がなされますので、安心です。


(4/20 追記)

上記のコマンドだけでは、次回ログイン時(次にコンテナあげたとき)に、再設定が必要でした。

立ち上げるたびに、同じコマンド打たなくても良いように、次の設定をいれるのが良いですね。

# echo 'export LANG=en_US.UTF-8' >> /root/.bashrc


以上で、インストールが終わりコマンドが動作するようになりました。

そのあと必要なこと

別エントリーにまとめました!

認証系の情報を追加してやれば、めでたく動作します。

その他

今回の手順ですと、 Python2.7 + aws-cli by yum となります。yumでの管理になるので、どちらかといえば安定路線?といえるのだろうか(Python2.7サポート切れ後は、バックポートとかされるの??)。

現在の主流(と期待する) Python3系 + aws-cli の構成を作る場合には、pipで導入することで実現できます。Python3 を yum で導入した後に pip3 (Python3 の pip) をつかって pip install awscli することで完了です。


次回は、aws-cli を実際に使う時に必要な、認証まわりをかこうと思います。