Amazon Linux 2 を実行している Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたは オンプレミスソリューションで、Boto 3 ライブラリを使用して分離された Python 3 仮想環境を作成する方法を教えてください。
簡単な説明
Amazon Linux 2 用に分離された Python 環境を作成するには、次の手順を実行する必要があります。
1. Amazon Linux 2 に Python 3 をインストールする。
2. ec2-user ホームディレクトリの下に仮想環境をインストールします。
3. 環境をアクティブにしてから、Boto 3 をインストールします。
解決方法
Amazon Linux 2 に Python 3 をインストールする
1. SSH を使用して EC2 Linux インスタンスに接続します。詳細については、SSH を使用した Linux インスタンスへの接続をご参照ください。
2. yum check-update を実行して、パッケージインデックスを更新します。check-update は、利用可能な更新も探します。Python 3 環境を作成するために他のパッケージを更新する必要はありません。
3. list installed を実行して、Python 3 がホストにすでにインストールされているかどうかを確認します。
[ec2-user ~]$ yum list installed | grep -i python3
Python 3 がインストールされていない出力例:
[ec2-user ~]$ yum list installed | grep -i python3
[ec2-user ~]$
[ec2-user ~]$ python3
-bash: python3: command not found
Python 3 がすでにインストールされている出力例:
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-libs.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-pip.noarch 9.0.3-1.amzn2.0.1 @amzn2-core
python3-setuptools.noarch 38.4.0-3.amzn2.0.6 @amzn2-core
[ec2-user ~]$ whereis python3
python3: //usr/bin/python3 /usr/bin/python3.7 /usr/bin/python3.7m /usr/lib/python3.7 /usr/lib64/python3.7 /usr/include/python3.7m /usr/share/man/man1/python3.1.gz
4. Python 3 がまだインストールされていない場合は、yum パッケージマネージャーを使用してパッケージをインストールします。
[ec2-user ~]$ sudo yum install python3 -y
ec2-user ホームディレクトリの下に仮想環境を作成する
次のコマンドは、内部に仮想環境を持つ app ディレクトリを作成します。my_app を別の名前に変更できます。my_app を変更する場合は、残りの解決手順で新しい名前を参照していることを確認します。
[ec2-user ~]$ python3 -m venv my_app/env
仮想環境をアクティブにして、Boto 3 をインストールする
1. Boto 3 が AWS API とやり取りできるよう、適切なアクセス許可ポリシーとともに AWS Identity and Access Management (IAM) ロールを EC2 インスタンスにアタッチします。その他の認証法については、Boto 3 のドキュメントを参照してください。
2. プロジェクトディレクトリ下の bin ディレクトリにある activate ファイルを使用して環境をアクティブにします。
[ec2-user ~]$ source ~/my_app/env/bin/activate
(env) [ec2-user ~]$
3. 環境内に最新の pip モジュールがインストールされていることを確認します。
(env) [ec2-user ~]$ pip install pip --upgrade
4. pip コマンドを使用して、仮想環境内に Boto 3 ライブラリをインストールします。
(env) [ec2-user ~]$ pip install boto3
5. python 実行可能ファイルを使って Python を実行します。
(env) [ec2-user ~]$ python
Python 3.7.4 (default, Dec 13 2019, 01:02:18)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
6. Boto 3 ライブラリをインポートし、動作することを確認します。このステップでは、ステップ 1 で設定したアクセス許可ポリシーが必要です。次の出力例では、アカウント内のすべての Amazon Simple Storage Service (Amazon S3) バケットを一覧表示します。
>>> import boto3 # no error
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
print(bucket.name)
>>> exit()
7. deactivate コマンドを使用して、仮想環境を終了します。
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
8. ログイン時に仮想環境を自動的にアクティブ化するには、~/.bashrc ファイルに追加します。
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
9. ホームディレクトリの ~/.bashrc ファイルをソースして、環境の bash 環境をリロードします。リロードすると、仮想環境が自動的にアクティブになります。プロンプトに変更が反映されます (env)。この変更は、将来の SSH セッションにも適用されます。
[ec2-user ~]$ source ~/.bashrc
(env) [ec2-user ~]$
関連情報
インスタンスソフトウェアの更新
インスタンス起動ウィザードを使用してインスタンスを起動する
Virtualenv のご紹介