Amazon Linux 2 (AL2) または Amazon Linux 2023 (AL2023) 上で実行される Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用しています。このインスタンスにおいて、AWS SDK for Python (Boto3) を使用する分離された Python 3 仮想環境を作成したいです。
解決策
Python 3 をインストールする
次の手順を実行します。
-
SSH を使用して EC2 Linux インスタンスに接続します。
-
パッケージインデックスを更新するには、次のコマンドを実行します。
yum check-update
注: 上記のコマンドでは、利用可能な更新プログラムも検索します。Python 3 環境を作成するために、他のパッケージを更新する必要はありません。
-
ホストに Python 3 がインストール済みかどうかを確認するには、次のコマンドを実行します。
[ec2-user ~]$ yum list installed | grep -i python3
Python 3 がインストールされていない場合は、次の出力が表示されます。
[ec2-user ~]$ yum list installed | grep -i python3
[ec2-user ~]$ python3
-bash: python3: command not found
Python 3 がインストールされている場合は、ディストリビューションに応じて、次の出力が表示されます。
AL2:
[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
AL2023:
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.9.21-1.amzn2023.0.3 @System
python3-pip-wheel.noarch 21.3.1-2.amzn2023.0.11 @System
python3-libs.x86_64 3.9.21-1.amzn2023.0.3 @System
python3-setuptools.noarch 59.6.0-2.amzn2023.0.5 @System
[ec2-user ~]$ whereis python3
python3: /usr/bin/python3 /usr/share/man/man1/python3.1.gz
-
Python 3 がインストールされていない場合は、次のコマンドを実行し、yum パッケージマネージャーでパッケージをインストールしてください。
[ec2-user ~]$ sudo yum install python3 -y
ec2-user のホームディレクトリ内に仮想環境を作成する
仮想環境を含むアプリディレクトリを作成するには、次のコマンドを実行します。
[ec2-user ~]$ python3 -m venv my_app/env
注: my_app をアプリケーションディレクトリ名に置き換えてください。
仮想環境を有効化し、Boto3 ライブラリをインストールする
次の手順を実行します。
-
AWS Identity and Access Management (IAM) ロールをインスタンスにアタッチします。このロールには、構成で必要なアクションの実行を SDK for Python (Boto3) に許可する権限ポリシーが必要です。その他の認証方法については、Boto3 のウェブサイトで「設定」を参照してください。
-
環境を有効にするには、次のコマンドを実行します。
[ec2-user ~]$ source ~/my_app/env/bin/activate
(env) [ec2-user ~]$
注: my_app をアプリケーションディレクトリ名に置き換えてください。
-
環境にインストールされた pip モジュールを最新に保つには、次のコマンドを実行します。
(env) [ec2-user ~]$ pip install pip --upgrade
-
Boto3 ライブラリを仮想環境内にインストールするには、次のコマンドを実行します。
(env) [ec2-user ~]$ pip install boto3
-
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.
>>>>
-
Boto3 ライブラリをインポートし、動作することを確認するには、次のコマンドを実行します。
>>> import boto3 # no error
次の出力例では、AWS アカウント内のすべての Amazon Simple Storage Service (Amazon S3) バケットが一覧表示されます。
>>> import boto3 # no error
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
... print(bucket.name)
... # Press Enter twice to execute the loop
>>> exit() # Then type exit() to quit Python shell
-
仮想環境から退出するには、以下のコマンドを実行します。
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
-
ログイン時に仮想環境を自動的に有効化するには、次のコマンドを実行して ~/.bashrc ファイルを更新してください。
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
注: my_app をアプリケーションディレクトリ名に置き換えてください。上記のコマンドは、仮想環境を自動的にアクティブ化します。
-
環境の bash 環境をリロードするには、次のコマンドを実行します。
[ec2-user ~]$ source ~/.bashrc
出力例:
(env) [ec2-user ~]$
注: (env) は、仮想環境が正常に有効化されたことを示します。今後すべての SSH セッションを起動した際および、source ~/bashrc コマンドを実行した際に、Python 環境をデフォルトで使用可能になります。
関連情報
AL2 インスタンスのインスタンスソフトウェアを更新する
コンソールでインスタンス起動ウィザードを使用して EC2 インスタンスを起動する
Virtualenv (Python Packaging Authority (PyPA) のウェブサイト)