すべてのユーザーがPythonモジュールを使用できるようにする方法

すべてのユーザーがPythonモジュールを使用できるようにする方法

AWS CLIをAmazon Linux 2にインストールするスクリプトがあります(実際にはさまざまなディストリビューションがありますが、私はAL2を使用しています)。ほとんどすべてのコンポーネントがインストールされているように見えますが、イメージをキャプチャして AWS ワークスペースにデプロイしても、すべてのコンポーネントが保持されるわけではありません。

展開後にすべてのユーザー(ドメインユーザーを含む)がすべてのモジュールを使用できるようにするにはどうすればよいですか?

以下は、このスクリプトが実行する操作のいくつかの図です。

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

以下は、ドメインユーザーを使用してAWS Workspacesにイメージをデプロイするときに発生するエラーです。

ここに画像の説明を入力してください。

答え1

インストールされたPythonモジュールをグローバルにインストールしようとしていますが、スクリプトはこれを実行しません。実際、スクリプトは、pipスクリプトを実行しているユーザーにのみモジュールをインストールするように明示的に指示します。

python3 -m pip install --user boto3

スクリプトを実行したりユーザーとしてroot使用したりすると、sudoこれらのモジュールはそのユーザーにのみインストールされ、rootシステムの他の人にはアクセスできません。

後でスクリプトが実行されます。

python3 -m pipx install aws-sso-util

pipx私が読んだところによると、aws-sso-util孤立した環境にインストールされています。これは最終的なエラーをよりよく説明します。/usr/local/bin/awssso世界中で使用できますが、ユーザー用のモジュールのみをインストールしpipxました。ユーザーなしでスクリプトを実行すると、スクリプトを実行しているユーザーが正しく機能する可能性があります。boto3rootsudorootawssso

グローバルPythonモジュールを取得する1つの方法は、ユーザーを使用してグローバル場所に新しい仮想sudo環境を作成することですroot

sudo python3 -m venv /opt/aws-venv

このユーザーセッションの残りの部分に対して環境を有効にします。

source /opt/aws-venv/bin/activate

仮想環境に必要なパッケージをインストールします。

sudo /opt/aws-venv/bin/pip install lxml defusedxml boto3 botocore boto inquirerpy python-dateutil ensurepath aws-sso-util

この新しい仮想環境は、すべてのユーザーが利用できる必要があり、次の機能で有効にできます。source /opt/aws-venv/bin/activate

関連情報