Amazon Linux 2 で Boto 3 ライブラリを使用して Python 3 仮想環境を作成する方法を教えてください。

最終更新日: 2020 年 2 月 7 日

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 ~]$