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
ました。ユーザーなしでスクリプトを実行すると、スクリプトを実行しているユーザーが正しく機能する可能性があります。boto3
root
sudo
root
awssso
グローバル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