

# ソースからの AWS CLI のビルドとインストール
<a name="getting-started-source-install"></a>

このトピックでは、サポートされているオペレーティングシステムに AWS Command Line Interface (AWS CLI) の最新リリースをインストールまたは更新する方法について説明します。

AWS CLI の最新リリースについては、GitHub の「[AWS CLI version 2 Changelog](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst)」を参照してください。

**重要**  
AWS CLI バージョン 1 と 2 では同じ `aws` コマンド名が使用されます。AWS CLI バージョン 1 を以前にインストールしている場合については、「[AWS CLI バージョン 2 の移行ガイド](cliv2-migration.md)」を参照してください。

**Topics**
+ [ソースからビルドする理由](#source-getting-started-install-why)
+ [クイックステップ](#source-getting-started-install-quicksteps)
+ [ステップ 1: すべての要件の設定](#source-getting-started-install-reqs)
+ [ステップ 2: AWS CLI ソースインストールの構成](#source-getting-started-install-config)
+ [ステップ 3: AWS CLI の構築](#source-getting-started-install-build)
+ [ステップ 4: AWS CLI のインストール](#source-getting-started-install-instructions)
+ [ステップ 5: インストールの検証](#source-getting-started-install-verify)
+ [ワークフローの例](#source-getting-started-install-workflows)
+ [AWS CLI のインストールエラーとアンインストールエラーのトラブルシューティング](#source-install-tshoot)
+ [次のステップ](#source-install-next-steps)

## ソースからビルドする理由
<a name="source-getting-started-install-why"></a>

AWS CLI は、Docker イメージだけでなく、ほとんどのプラットフォームと環境用の[ビルド済みインストーラーとしても利用できます](getting-started-install.md)。

通常、これらのインストーラーはほとんどのユースケースに対応しています。ソースからインストールする手順は、インストーラーがカバーしていないユースケースに役立てるためのものです。ユースケースには次のようなものがあります。
+ ビルド済みインストーラーは、使用中の環境をサポートしていません。例えば、ARM 32 ビット版はビルド済みインストーラーではサポートされていません。
+ ビルド済みインストーラーには、使用中の環境にはない依存関係があります。例えば、Alpine Linux では [https://musl.libc.org/](https://musl.libc.org/) を使用していますが、現在のインストーラーでは `glibc` が必要になるため、ビルド済みインストーラーがすぐに動作しません。
+ ビルド済みインストーラーには、使用中の環境によってアクセスが制限されているリソースが必要です。例えば、セキュリティが強化されたシステムでは、共有メモリへのアクセス許可が与えられない場合があります。これはフリーズした `aws` インストーラーに必要です。
+ コードとパッケージのビルドプロセスは完全に制御されることが望ましいため、ビルド済みインストーラーは、パッケージマネージャーのメンテナンス担当者にとって障害となることがよくあります。ソースからビルドすることで、ディストリビューションのメンテナンス担当者は AWS CLI を更新し続けるためのプロセスをより合理化できます。メンテナンス担当者は、`brew`、`yum`、`apt` などのサードパーティーのパッケージマネージャーからインストールする際に、AWS CLI のより最新のバージョンをお客様に提供できるようになります。
+ AWS CLI の機能をパッチするお客様は、ソースから AWS CLI をビルドしてインストールする必要があります。これは、AWS CLI GitHub リポジトリに変更を投稿する前に、ソースに加えた変更をテストすることを望むコミュニティメンバーにとって特に重要です。

## クイックステップ
<a name="source-getting-started-install-quicksteps"></a>

**注記**  
すべてのコード例は、ソースディレクトリのルートから実行されることを前提としています。

ソースから AWS CLI をビルドしてインストールするには、このセクションの手順に従ってください。AWS CLI は、[GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) を利用してソースからインストールします。最も単純なケースでは、AWS CLI GitHub リポジトリのルートからデフォルトのサンプルコマンドを実行することで、AWS CLI をソースからインストールできます。



1. [環境のすべての要件を設定します。](#source-getting-started-install-reqs)これには、[GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) が生成したファイルを実行できること、Python 3.8 以降がインストールされていることが含まれます。

1. ターミナルで、AWS CLI ソースフォルダの最上位レベルに移動し、`./configure` コマンドを実行します。このコマンドは、必要とされるすべての依存関係についてシステムをチェックし、検出され指定された構成に基づいて、AWS CLI をビルドおよびインストールするための `Makefile` を生成します。

------
#### [ Linux and macOS ]

   次の `./configure` コマンド例では、デフォルト設定を使用して AWS CLI 用のビルド構成を設定します。

   ```
   $ ./configure
   ```

------
#### [ Windows PowerShell ]

   MSYS2 を呼び出すコマンドを実行する前に、現在の作業ディレクトリを保存する必要があります。

   ```
   PS C:\> $env:CHERE_INVOKING = 'yes'
   ```

   次に、次の `./configure` コマンド例を使用して、Python 実行ファイルへのローカルパスを使用し、C:\$1Program Files\$1AWSCLI にインストールし、すべての依存関係をダウンロードするための AWS CLI 用のビルド構成を設定します。

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps "
   ```

------

   詳細、使用可能な構成オプション、およびデフォルト設定情報については、「[ステップ 2: AWS CLI ソースインストールの構成](#source-getting-started-install-config)」セクションを参照してください。

1. `make` コマンドを実行します。このコマンドは、ご使用の構成設定に従って AWS CLI をビルドします。

   次の `make` コマンド例は、既存の `./configure` 設定を使用してデフォルトオプションでビルドされます。

------
#### [ Linux and macOS ]

   ```
   $ make
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make" 
   ```

------

   詳細と使用可能なビルドオプションについては、「[ステップ 3: AWS CLI の構築](#source-getting-started-install-build)」セクションを参照してください。

1. `make install` コマンドを実行します。このコマンドは、ビルドされた AWS CLI をご使用のシステム上で構成された場所にインストールします。

   次の `make install` コマンド例では、デフォルトのコマンド設定を使用して、ビルドされた AWS CLI をインストールし、構成された場所にシンボリックリンクを作成します。

------
#### [ Linux and macOS ]

   ```
   $ make install
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make install" 
   ```

   インストール後、以下を使用して AWS CLI にパスを追加します。

   ```
   PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
   ```

------

   詳細と使用可能なインストールオプションについては、「[ステップ 4: AWS CLI のインストール](#source-getting-started-install-instructions)」セクションを参照してください。

1. 次のコマンドを使用して、AWS CLI が正常にインストールされたことを確認します。

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
   ```

   インストールエラーのトラブルシューティングの手順については、「[AWS CLI のインストールエラーとアンインストールエラーのトラブルシューティング](#source-install-tshoot)」セクションを参照してください。

## ステップ 1: すべての要件の設定
<a name="source-getting-started-install-reqs"></a>

ソースから AWS CLI をビルドするには、事前に以下を完了しておく必要があります。

**注記**  
すべてのコード例は、ソースディレクトリのルートから実行されることを前提としています。

1. AWS CLI GitHub リポジトリをフォークするか、ソースの tarball をダウンロードして、AWS CLI ソースをダウンロードします。手順は、以下のいずれかです。
   + GitHub から [AWS CLI リポジトリ](https://github.com/aws/aws-cli)のクローンをフォークして作成します。詳細については、「GitHub Docs」の「[Fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo)」(レポジトリのフォーク) を参照してください。
   + 次のコマンドを使用して、[https://awscli.amazonaws.com/awscli.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz) から最新のソースターボールをダウンロードし、コンテンツを抽出します。

     ```
     $ curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscli.tar.gz"
     $ tar -xzf awscli.tar.gz
     ```
**注記**  
特定のバージョンをダウンロードするには、次のリンク形式を使用してください。[https://awscli.amazonaws.com/awscli-*versionnumber* .tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)   
たとえば、バージョン 2.10.0 の場合、リンクは次のようになります。[https://awscli.amazonaws.com/awscli-*2.10.0* .tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)  
ソースバージョンは、AWS CLI の **2.10.0** のバージョン以降で使用できます。

     **(オプション) 以下の手順を完了してダウンロードした zip ファイルの整合性を確認する**

     1. `GnuPG` ツールを使用してこの署名を検証するには、次のステップを行います。

        AWS CLI インストーラパッケージの `.zip` ファイルは、PGP 署名を使用して暗号化で署名されます。ファイルの破損や変更がある場合、この検証は失敗します。その場合、インストールを続行しないでください。

     1. ご利用のパッケージマネージャーを使用し、`gpg` コマンドをダウンロードしてインストールします。`GnuPG` の詳細については、[GnuPG のウェブサイト](https://www.gnupg.org/)を参照してください。

     1. パブリックキーファイルを作成するには、テキストファイルを作成し、次のテキストに貼り付けます。

        ```
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        
        mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
        ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
        PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
        TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
        gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
        C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
        94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
        lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
        fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
        EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
        XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
        tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
        CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
        aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
        0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
        Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
        uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
        S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
        pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
        CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
        qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
        hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
        DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
        V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
        j+c7Kg92pDx2uQ==
        =OBAt
        -----END PGP PUBLIC KEY BLOCK-----
        ```

        参考までに、パブリックキーの詳細を以下に示します。

        ```
        Key ID:           A6310ACC4672
        Type:             RSA
        Size:             4096/4096
        Created:          2019-09-18
        Expires:          2026-07-07
        User ID:          AWS CLI Team <aws-cli@amazon.com>
        Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```

     1. 次のコマンドで AWS CLI パブリックキーをインポートします。*public-key-file-name* は、作成したパブリックキーのファイル名に置き換えます。

        ```
        $ gpg --import public-key-file-name
        gpg: /home/username/.gnupg/trustdb.gpg: trustdb created
        gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported
        gpg: Total number processed: 1
        gpg:               imported: 1
        ```

     1. ダウンロードしたパッケージの AWS CLI 署名ファイルを [https://awscli.amazonaws.com/awscli.tar.gz.sig](https://awscli.amazonaws.com/awscli.tar.gz.sig) でダウンロードします。これは、対応する tarball ファイルと同じパスと名前を持っていますが、拡張子は `.sig` です。tarball ファイルと同じパスに保存します。または、次のコマンドブロックを使用します。

        ```
        $ curl awscliv2.sig https://awscli.amazonaws.com/ -o awscli.tar.gz.sig
        ```

     1. 署名を検証し、`.sig` ファイル名と `.zip` ファイル名の両方をパラメータとして `gpg` コマンドに渡します。

        ```
        $ gpg --verify awscliv2.sig awscli.tar.gz
        ```

        出力は以下の例のようになります。

        ```
        gpg: Signature made Mon Nov  4 19:00:01 2019 PST
        gpg:                using RSA key FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
        gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown]
        gpg: WARNING: This key is not certified with a trusted signature!
        gpg:          There is no indication that the signature belongs to the owner.
        Primary key fingerprint: FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```
**重要**  
出力内の警告は予想されており、問題を示すものではありません。これは、個人用の PGP キー (持っている場合) と AWS CLI PGP キーの間に信頼チェーンがないために表示されます。詳細については、「[信用の輪 (Web of Trust)](https://wikipedia.org/wiki/Web_of_trust)」を参照してください。

1. `configure` や `Makefile` などの [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) で生成されたファイルを実行できる環境があります。これらのファイルは POSIX プラットフォーム間で幅広く移植可能です。

------
#### [ Linux and macOS ]

   ご使用の環境に Autotools がまだインストールされていない場合、または更新する必要がある場合は、「*GNU ドキュメント*」の「[Autotools を (ユーザーとして) インストールする方法](https://www.gnu.org/software/automake/faq/autotools-faq.html#How-do-I-install-the-Autotools-_0028as-user_0029_003f)」、または「[基本インストール](https://www.gnu.org/savannah-checkouts/gnu/automake/manual/automake.html#Basic-Installation)」に記載されているインストール手順に従ってください。

------
#### [ Windows PowerShell ]

**警告**  
Windows 環境の場合は、ビルド済みインストーラーを使用することをお勧めします。ビルド済みインストーラーのインストール手順については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」を参照してください

   Windows には POSIX に準拠したシェルが付属していないため、ソースから AWS CLI をインストールするには追加のソフトウェアをインストールする必要があります。[MSYS2](https://www.msys2.org/) には、Windows ソフトウェアのビルドとインストールに役立つツールとライブラリのコレクション、特に Autotools が使用する POSIX ベースのスクリプト向けのものが用意されています。

   1. MSYS2 をインストールします。MSYS2 のインストールと使用方法については、「*MSYS2 ドキュメント*」の「[インストールと使用手順](https://www.msys2.org/)」を参照してください。

   1. MSYS2 ターミナルを開き、次のコマンドを使用して Autotools をインストールします。

      ```
      $ pacman -S autotools
      ```

**注記**  
このガイドの Windows 用の構成、ビルド、インストールのコード例を使用する場合、デフォルトの MSYS2 インストールパスは `C:\msys64\usr\bin\bash` であることを前提としています。PowerShell 内で MSYS2 を呼び出すときは、bash コマンドを引用符で囲んだ次の形式を使用します。  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "command example" 
   ```
次のコマンド例では、`./configure` コマンドを呼び出します。  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "./configure" 
   ```

------

1. Python 3.8 以降のインタープリタがインストールされています。必要な Python の最低バージョンは、公式の「[AWS SDK とツール用の Python サポートポリシー](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/)」と同じタイムラインに従います。インタープリタは、サポート終了日から 6 か月間のみサポートされます。

1. **(オプション)** AWS CLI のビルドとランタイム Python ライブラリの依存関係をすべてインストールします。`./configure` コマンドは、不足している依存関係がないかどうか、また、そのインストール方法について通知します。

   これらの依存関係は、構成で自動的にインストールして使用できます。詳細については、「[依存関係のダウンロード](#source-getting-started-install-config-dependencies)」を参照してください。

## ステップ 2: AWS CLI ソースインストールの構成
<a name="source-getting-started-install-config"></a>

AWS CLI をビルドおよびインストールするための構成は、`configure` スクリプトを使用して指定されます。すべての構成オプションを文書化するには、`--help` オプションを使用して `configure` スクリプトを実行します。

------
#### [ Linux and macOS ]

```
$ ./configure --help
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --help" 
```

------

**Topics**
+ [インストール場所](#source-getting-started-install-config-location)
+ [Python インタープリタ](#source-getting-started-install-config-interpreter)
+ [依存関係のダウンロード](#source-getting-started-install-config-dependencies)
+ [インストールタイプ](#source-getting-started-install-config-type)

### インストール場所
<a name="source-getting-started-install-config-location"></a>

AWS CLI のソースインストールでは、次の 2 つの構成可能なディレクトリを使用して AWS CLI をインストールします。
+ `libdir` - AWS CLI をインストールする親ディレクトリ。AWS CLI インストールへのパスは `<libdir-value>/aws-cli` です。Linux と macOS のデフォルト `libdir` 値は `/usr/local/lib` で、デフォルトのインストールディレクトリを `/usr/local/lib/aws-cli` にします 
+ `bindir` - AWS CLI 実行ファイルがインストールされているディレクトリ。デフォルトの場所は `/usr/local/bin` です。

以下の `configure` オプションは使用するディレクトリを制御します。
+ `--prefix` - インストールに使用するディレクトリプレフィックスを設定します。Linux と macOS のデフォルト値は `/usr/local` です。
+ `--libdir` - AWS CLI のインストールに使用する `libdir` を設定します。デフォルト値は `<prefix-value>/lib` です。`--libdir` と `--prefix` が両方とも指定されていない場合、Linux と macOS のデフォルトは `/usr/local/lib/` です。
+ `--bindir` - AWS CLI `aws`、および `aws_completer` 実行ファイルのインストールに使用する `bindir` を設定します。デフォルト値は `<prefix-value>/bin` です。`bindir` と `--prefix` が両方とも指定されていない場合、Linux と macOS のデフォルトは `/usr/local/bin/` です。

------
#### [ Linux and macOS ]

次のコマンド例では、`--prefix` オプションを使用して AWS CLI をローカルユーザーにインストールします。このコマンドは、AWS CLI を `$HOME/.local/lib/aws-cli` にインストールし、実行ファイルを `$HOME/.local/bin` にインストールします。

```
$ ./configure --prefix=$HOME/.local
```

次のコマンド例では、`--libdir` オプションを使用して、AWS CLI をアドオンアプリケーションとして `/opt` ディレクトリにインストールします。このコマンドは、AWS CLI を `/opt/aws-cli` にインストールし、実行ファイルを `/usr/local/bin` のデフォルトの場所にインストールします。

```
$ ./configure --libdir=/opt
```

------
#### [ Windows PowerShell ]

次のコマンド例では、`--prefix` オプションを使用して AWS CLI をローカルユーザーにインストールします。このコマンドは、AWS CLI を `$HOME/.local/lib/aws-cli` にインストールし、実行ファイルを `$HOME/.local/bin` にインストールします。

```
$ C:\msys64\usr\bin\bash -lc "./configure --prefix='C:\Program Files\AWSCLI'" 
```

次のコマンド例では、`--libdir` オプションを使用して、AWS CLI をアドオンアプリケーションとして `/opt` ディレクトリにインストールします。このコマンドは AWS CLI を `C:\Program Files\AWSCLI\opt\aws-cli` にインストールします。

------

### Python インタープリタ
<a name="source-getting-started-install-config-interpreter"></a>

**注記**  
Windows にインストールする場合は、Python インタープリタを指定することを強くお勧めします。

`./configure` スクリプトは、インストールされている Python 3.8 以降のインタープリタを自動的に選択し、[https://www.gnu.org/software/automake/manual/html_node/Python.html](https://www.gnu.org/software/automake/manual/html_node/Python.html) Autoconf マクロを使用して AWS CLI のビルドと実行に使用します。

使用する Python インタープリタは、`configure` スクリプトの実行時に `PYTHON` 環境変数を使用して明示的に設定できます。

------
#### [ Linux and macOS ]

```
$ PYTHON=/path/to/python ./configure
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "PYTHON='C:\path\to\python' ./configure"
```

------

### 依存関係のダウンロード
<a name="source-getting-started-install-config-dependencies"></a>

デフォルトでは、AWS CLI のすべてのビルドとランタイムの依存関係がシステムに既にインストールされている必要があります。これには Python ライブラリの依存関係も含まれます。`configure` スクリプトの実行時にすべての依存関係がチェックされ、システムに Python の依存関係がない場合、`configure` スクリプトはエラーになります。

次のコード例は、システムに依存関係がない場合にエラーになります。

------
#### [ Linux and macOS ]

```
$ ./configure 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure" 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------

必要な Python 依存関係を自動的にインストールするには、`--with-download-deps` オプションを使用してください。このフラグを使用すると、ビルドプロセスは次の処理を行います。
+ Python ライブラリの依存関係チェックをスキップします。
+ 必要な Python の依存関係をすべてダウンロードし、ダウンロードした依存関係**だけ**を使用して、`make` ビルド中に AWS CLI をビルドするように構成します。

以下の configure コマンドの例では、`--with-download-deps` オプションを使用して Python の依存関係をダウンロードおよび使用しています。

------
#### [ Linux and macOS ]

```
$ ./configure --with-download-deps
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-download-deps"
```

------

### インストールタイプ
<a name="source-getting-started-install-config-type"></a>

ソースインストールのプロセスでは、次のインストールタイプがサポートされます。
+ `system-sandbox` - **(デフォルト)** 隔離された Python 仮想環境を作成し、AWS CLI を仮想環境にインストールし、仮想環境内の `aws` および `aws_completer` 実行ファイルへのシンボリックリンクを作成します。この AWS CLI のインストールは、ランタイム用に選択した Python インタープリタに直接依存します。

  これは、AWS CLI をシステムにインストールするための軽量なインストールメカニズムで、Python のベストプラクティスに従い、仮想環境でインストールをサンドボックス化します。このインストールは、Python のインストールと連動して、可能な限りスムーズな方法でソースから AWS CLI をインストールすることを希望するお客様を対象としています。
+ `portable-exe` - AWS CLI をフリーズして、同様のアーキテクチャの環境に配布できるスタンドアロンの実行ファイルにします。これは、AWS CLI の公式ビルド済み実行ファイルを生成するのと同じプロセスです。`portable-exe` は、AWS CLI のランタイムに使用する `configure` ステップで選択した Python インタープリタのコピーをフリーズします。これにより、Python インタープリタがない他のマシンに移動させることができます。

  このタイプのビルドは、AWS CLI インストールと、環境にインストールされた Python バージョンが連動していないことを確認でき、Python がまだインストールされていない他のシステムにビルドを配布できるので便利です。これにより、使用する AWS CLI 実行ファイルの依存関係とセキュリティを制御できます。

インストールタイプを構成するには、`--with-install-type` オプションを使用して `portable-exe` または `system-sandbox` の値を指定します。

次の `./configure` コマンド例は、`portable-exe` の値を指定します。

------
#### [ Linux and macOS ]

```
$ ./configure --with-install-type=portable-exe
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-install-type=portable-exe"
```

------

## ステップ 3: AWS CLI の構築
<a name="source-getting-started-install-build"></a>

`make` コマンドを使用して、ご使用の構成設定を使用して AWS CLI をビルドします。

------
#### [ Linux and macOS ]

```
$ make
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "make"
```

------

**注記**  
仮想環境は、Python [https://docs.python.org/3/library/venv.html](https://docs.python.org/3/library/venv.html) モジュールを使用してビルドディレクトリに作成されます。仮想環境は、[Python 標準ライブラリにベンダリングされているバージョンの pip](https://docs.python.org/3/library/ensurepip.html) でブートストラップされます。
Python ライブラリの依存関係をコピーします。`configure` コマンドで `--with-download-deps` フラグが指定されているかどうかに応じて、このステップは次のいずれかを実行します。  
`--with-download-deps` は指定**されます**。Python の依存関係は pip でインストールされます。これには、`wheel`、`setuptools`、およびすべての AWS CLI ランタイム依存関係が含まれます。`portable-exe` をビルドしている場合は、`pyinstaller` がインストールされます。これらの要件はすべて、[https://github.com/jazzband/pip-tools](https://github.com/jazzband/pip-tools) から生成されるロックファイルで指定されています。
`--with-download-deps` は指定**されません**。Python インタープリタのサイトパッケージの Python ライブラリとスクリプト (例: `pyinstaller`) は、ビルドに使用されている仮想環境にコピーされます。
AWS CLI コードベース上で `pip install` を直接実行して、オフラインでツリー内ビルドを行い、ビルド仮想環境に AWS CLI をインストールします。このインストールでは、pip フラグ [--no-build-isolation](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-build-isolation)、[--use-feature=in-tree-build](https://pip.pypa.io/en/stable/cli/pip_install/#local-project-installs)、[--no-cache-dir](https://pip.pypa.io/en/stable/cli/pip_install/#caching)、および [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index) を使用します。
**(オプション)** `configure` コマンドで `--install-type` が `portable-exe` に設定されている場合、[https://www.pyinstaller.org/](https://www.pyinstaller.org/) を使用してスタンドアロン実行ファイルをビルドします。

## ステップ 4: AWS CLI のインストール
<a name="source-getting-started-install-instructions"></a>

`make install` コマンドは、ビルドされた AWS CLI をシステム上で構成された場所にインストールします。

------
#### [ Linux and macOS ]

以下のコマンド例では、構成とビルド設定を使用して AWS CLI をインストールします。

```
$ make install
```

------
#### [ Windows PowerShell ]

以下のコマンド例では、構成とビルド設定を使用して AWS CLI をインストールし、AWS CLI のパスを含む環境変数を追加します。

```
PS C:\> C:\msys64\usr\bin\bash -lc " make install "
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
```

------

`make install` ルールは [https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR](https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR) 変数をサポートします。この変数を指定すると、AWS CLI をインストールするときに、既に構成されているインストールパスの前に、指定されたパスが追加されます。デフォルトでは、この変数には値が設定されていません。

------
#### [ Linux and macOS ]

次のコード例では、`--prefix=/usr/local` フラグを使用してインストール場所を構成し、`DESTDIR=/tmp/stage` を `make install` コマンドに使用してその宛先を変更します。これらのコマンドを実行すると、AWS CLI が `/tmp/stage/usr/local/lib/aws-cli` にインストールされ、その実行ファイルが `/tmp/stage/usr/local/bin` に配置されます。

```
$ ./configure --prefix=/usr/local
$ make
$ make DESTDIR=/tmp/stage install
```

------
#### [ Windows PowerShell ]

次のコード例では、`--prefix=\awscli` フラグを使用してインストール場所を構成し、`DESTDIR=C:\Program Files` を `make install` コマンドに使用してその宛先を変更します。これらのコマンドを実行すると、AWS CLI が `C:\Program Files\awscli` にインストールされます。

```
$ ./configure --prefix=\awscli
$ make
$ make DESTDIR='C:\Program Files' install
```

------

**注記**  
次のいずれかを構成済みのインストールディレクトリに移動します。  
インストールタイプが `system-sandbox` の場合、ビルドした仮想環境を移動します。
インストールタイプが `portable-exe` の場合、ビルドしたスタンドアロン実行ファイルを移動します。
構成した bin ディレクトリで、`aws` および `aws_completer` 実行ファイルの両方にシンボリックリンクを作成します。

## ステップ 5: インストールの検証
<a name="source-getting-started-install-verify"></a>

次のコマンドを使用して、AWS CLI が正常にインストールされたことを確認します。

```
$ aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
```

`aws` コマンドが認識されない場合は、新しいシンボリックリンクを更新するために、ターミナルの再起動が必要になる場合があります。AWS CLI のインストールまたはアンインストール後に、さらに問題が発生した場合の一般的なトラブルシューティングの手順については、「[AWS CLI のエラーのトラブルシューティング](cli-chap-troubleshooting.md)」を参照してください

## ワークフローの例
<a name="source-getting-started-install-workflows"></a>

このセクションでは、ソースからインストールするための基本的なワークフローの例をいくつか紹介します。

### Linux および macOS の基本的なインストール
<a name="source-getting-started-install-workflows-basic"></a>

次の例は、AWS CLI を `/usr/local/lib/aws-cli` のデフォルトの場所にインストールする基本的なインストールワークフローです。

```
$ cd path/to/cli/respository/
$ ./configure
$ make
$ make install
```

### Windows 自動インストール
<a name="source-getting-started-install-workflows-win"></a>

**注記**  
このワークフローを使用するには、管理者として PowerShell を実行している必要があります。

MSYS2 は、CI 環境で自動化された方法で使用できます。「*MSYS2 ドキュメント*」の「[CI での MSYS2 の使用](https://www.msys2.org/docs/ci/)」を参照してください。

------
#### [ Downloaded Tarball ]

`awscli.tar.gz` ファイルをダウンロードし、解凍して、AWS CLI をインストールします。次のコマンドを使用する場合は、次のパスを置き換えます。
+ `C:\msys64\usr\bin\bash` をご使用の MSYS2 パスの場所にします。
+ `.\awscli-2.x.x\` を解凍した `awscli.tar.gz` フォルダ名にします。
+ `PYTHON='C:\path\to\python.exe'` をローカルの Python パスにします。

次のコード例では、MSYS2 を使用して PowerShell からの AWS CLI のビルドとインストールを自動化し、使用する Python のローカルインストールを指定します。

```
PS C:\> curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscliv2.zip"  #  Download the awscli.tar.gz file in the current working directory
PS C:\> tar -xvzf .\awscli.tar.gz #  Extract awscli.tar.gz file
PS C:\> cd .\awscli-2.x.x\ #  Navigate to the root of the extracted files
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 source-sandbox/AMD64
```

------
#### [ GitHub Repository ]

`awscli.tar.gz` ファイルをダウンロードし、解凍して、AWS CLI をインストールします。次のコマンドを使用する場合は、次のパスを置き換えます。
+ `C:\msys64\usr\bin\bash` をご使用の MSYS2 パスの場所にします。
+ `C:path\to\cli\repository\` を *GitHub* からクローンした [AWS CLI リポジトリ](https://github.com/aws/aws-cli)へのパスにします。詳細については、「*GitHub Docs*」の「[レポジトリのフォーク](https://docs.github.com/en/get-started/quickstart/fork-a-repo)」を参照してください。
+ `PYTHON='C:\path\to\python.exe'` をローカルの Python パスにします。

次のコード例では、MSYS2 を使用して PowerShell からの AWS CLI のビルドとインストールを自動化し、使用する Python のローカルインストールを指定します。

```
PS C:\> cd C:path\to\cli\repository\
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
```

------

### Alpine Linux コンテナ
<a name="source-getting-started-install-workflows-alpine"></a>

以下は、[Alpine 用のビルド済みバイナリの代わり](https://github.com/aws/aws-cli/issues/4685)として、Alpine Linux コンテナに AWS CLI を正常にインストールするために使用できる Dockerfile の例です。この例を使用する場合は、*AWSCLI\$1VERSION* を目的の AWS CLI バージョン番号に置き換えてください。

```
 1. FROM python:3.8-alpine AS builder
 2. 
 3. ENV AWSCLI_VERSION=2.10.1
 4. 
 5. RUN apk add --no-cache \
 6.     curl \
 7.     make \
 8.     cmake \
 9.     gcc \
10.     g++ \
11.     libc-dev \
12.     libffi-dev \
13.     openssl-dev \
14.     && curl https://awscli.amazonaws.com/awscli-${AWSCLI_VERSION}.tar.gz | tar -xz \
15.     && cd awscli-${AWSCLI_VERSION} \
16.     && ./configure --prefix=/opt/aws-cli/ --with-download-deps \
17.     && make \
18.     && make install
19. 
20. FROM python:3.8-alpine
21. 
22. RUN apk --no-cache add groff
23. 
24. COPY --from=builder /opt/aws-cli/ /opt/aws-cli/
25. 
26. ENTRYPOINT ["/opt/aws-cli/bin/aws"]
```

このイメージは、Amazon Linux 2 でビルドされたものと同様のコンテナからビルドされ、AWS CLI で呼び出されます。

```
$ docker build --tag awscli-alpine .
$ docker run --rm -it awscli-alpine --version
aws-cli/2.2.1 Python/3.8.11 Linux/5.10.25-linuxkit source-sandbox/x86_64.alpine.3 prompt/off
```

このイメージの最終的なサイズは、公式の AWS CLI Docker イメージ以下のサイズです。公式の Docker イメージについては、「[AWS CLI に対して公式の Amazon ECR Public イメージまたは Docker イメージを実行する](getting-started-docker.md)」を参照してください。

## AWS CLI のインストールエラーとアンインストールエラーのトラブルシューティング
<a name="source-install-tshoot"></a>

インストールエラーのトラブルシューティング手順については、一般的なトラブルシューティング手順を「[AWS CLI のエラーのトラブルシューティング](cli-chap-troubleshooting.md)」で参照してください。最も関連性の高いトラブルシューティングステップについては、「[コマンドが見つからないエラー](cli-chap-troubleshooting.md#tshoot-install-not-found)」、「[「`aws --version`」コマンドが、インストールしたのとは異なるバージョンを返す](cli-chap-troubleshooting.md#tshoot-install-wrong-version)」、および「[AWS CLI のアンインストール後に、「`aws --version`」コマンドがバージョンを返す](cli-chap-troubleshooting.md#tshoot-uninstall-1)」を参照してください。

トラブルシューティングガイドに記載されていない問題については、*GitHub* の [AWS CLI リポジトリ](https://github.com/aws/aws-cli/labels/source-distribution)で `source-distribution` ラベルの付いた問題を検索してください。既存の問題にエラーが取り上げられていない場合は、[新しい問題を作成](https://github.com/aws/aws-cli/issues/new?assignees=&labels=source-distribution%2Cneeds-triage&template=source-distribution.yml&title=%28short+issue+description%29)して、AWS CLI メンテナンス担当者からサポートを受けてください。

## 次のステップ
<a name="source-install-next-steps"></a>

AWS CLI のインストール後に、[のセットアップAWS CLI](getting-started-quickstart.md) を実行してください。