メニュー
AWS Command Line Interface
ユーザーガイド

AWS Command Line Interface の設定

このセクションでは、お客様のセキュリティ認証情報やデフォルトリージョンなど、AWS Command Line Interface が AWS とやり取りする際に使用する設定を指定する方法を説明します。

注記

AWS CLI がユーザーに代わってリクエストに署名し、署名に日付を含めます。コンピュータの日時が正しく設定されていることを確認します。正しくない場合は、署名の日付がリクエストの日付と一致しないことがあり、その場合は AWS によってリクエストが却下されます。

このガイドにある例を使用する

このガイドの例は、次の規則に従った形式となります。

  • プロンプト – コマンドプロンプトはドル記号 (「$」) として表示されます。コマンドを入力した場合はプロンプトを含めないでください。

  • ディレクトリ – 特定のディレクトリからコマンドを実行する必要がある場合は、プロンプト記号の前にディレクトリ名が表示されます。

  • ユーザー入力 – コマンドラインに入力する必要があるコマンドテキストはユーザー入力の形式となります。

  • 置き換え可能なテキスト – 選択したリソースの名前、またはコマンドに含める必要のある AWS サービスによって生成された ID を含む変更可能なテキストで、置き換え可能なテキストの形式となります。複数行のコマンドまたは特定のキーボード入力が必要なコマンドの場合、キーボードコマンドも置き換え可能なテキストとして表示できます。

  • 出力 – AWS サービスによって返される出力は、特別な形式なしでユーザー入力の下に表示されます。

たとえば、次のコマンドには、ユーザー入力、置き換え可能なテキスト、出力が含まれています。

Copy
$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: ENTER

この例を使用するには、コマンドラインに aws configure と入力し、Enter キーを押します。aws configure はコマンドです。このコマンドはインタラクティブであるため、AWS CLI はテキストの行を出力し、追加情報の入力が求められます。各アクセスキーを順に入力して、Enter キーを押します。その後、表示されている形式でリージョン名を入力して Enter キーを押し、最後に Enter キーをもう一度押して出力形式の設定をスキップします。最後の Enter コマンドは、その行にユーザー入力がないため、置き換え可能なテキストとして表示されます。それ以外の場合は、暗黙的に示されます。

以下の例に示しているのは、JSON 形式でサービスからの出力がある単純な非インタラクティブコマンドです。

Copy
$ aws ec2 create-security-group --group-name my-sg --description "My security group" { "GroupId": "sg-903004f8" }

この例を使用するには、コマンドのフルテキスト (プロンプトの後の強調表示されたテキスト) を入力し、Enter キーを押します。セキュリティグループの名前 my-sg は、置き換え可能です。この場合は、表示されているようにグループ名を使用できますが、より分かりやすい名前を使用する方がよいかもしれません。

注記

必ず置き換える必要のある引数 (AWS アクセスキー ID など) と置き換える必要のある引数 (グループ名など) の両方が置き換え可能なテキストとして表示されます。引数を置き換える必要がある場合は、例を説明するテキストにその旨が記載されています。

JSON ドキュメントは中括弧を含めて出力です。CLI を TEXT または TABLE 形式で出力するように設定した場合、出力は異なる形式になります。JSON がデフォルトの出力形式です。

クイック設定

一般的な使用の場合、aws configure コマンドが、AWS CLI のインストールをセットアップするための最も簡単な方法です。

Copy
$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json

AWS CLI によって、4 種類の情報の入力が求められます。AWS アクセスキー ID と AWS シークレットアクセスキーはアカウントの認証情報です。キーがない場合は、このガイドの前の 準備作業 セクションを参照してください。

デフォルトのリージョンは、デフォルトで呼び出しを実行する対象のリージョンの名前です。これは、通常、お客様の最寄りのリージョンですが、どのリージョンでもかまいません。

注記

AWS CLI を使用するときは AWS リージョンを指定する必要があります。サービスと利用可能なリージョンのリストについては、「リージョンとエンドポイント」を参照してください。

デフォルトの出力形式は json、text、table のいずれかです。出力形式を指定しない場合、json が使用されます。

複数のプロファイルがある場合は、--profile オプションを使用して追加の名前付きプロファイルを設定できます。

Copy
$ aws configure --profile user2 AWS Access Key ID [None]: AKIAI44QH8DHBEXAMPLE AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY Default region name [None]: us-east-1 Default output format [None]: text

いずれかの設定を更新するには、aws configure を再び実行し、必要に応じて新しい値を入力します。次のセクションでは、aws configure で作成するファイル、追加の設定、名前付きプロファイルについて説明します。

構成設定と優先順位

AWS CLI では、プロバイダーチェーンを使用して、システムまたはユーザー環境変数、ローカル AWS 設定ファイルなど、さまざまな場所で AWS の認証情報が検索されます。

AWS CLI では、以下の順序で認証情報と構成設定が検索されます。

  1. コマンドラインオプション – デフォルト設定より優先されるようにコマンドオプションでリージョン、出力形式、プロファイルを指定できます。

  2. 環境変数AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY など。

  3. AWS 認証情報ファイル – Linux, macOS, or Unix の ~/.aws/credentials、または Windows の C:\Users\USERNAME \.aws\credentials にあります。このファイルには、デフォルトのプロファイルに加えて、複数の名前付きプロファイルを含めることができます。

  4. CLI 設定ファイル – 一般的に、Linux, macOS, or Unix では ~/.aws/config に、Windows では C:\Users\USERNAME \.aws\config にあります。このファイルには、デフォルトのプロファイル、名前付きプロファイル、 CLI 固有の設定パラメータを含めることができます。

  5. インスタンスプロファイルの認証情報 - これらの認証情報は、インスタンスロールが割り当てられた EC2 インスタンスで使用でき、Amazon EC2 メタデータサービスを介して提供されます。

設定ファイルと認証情報ファイル

CLI は aws configure で指定された認証情報を、ホームディレクトリの .aws という名前のフォルダにある credentials という名前のローカルファイルに保存します。ホームディレクトリの場所は異なりますが、Windows では %UserProfile%、また Unix 系のシステムでは $HOME または ~ (チルダ) といった環境変数を使用して参照できます。

たとえば、次のコマンドは .aws フォルダの内容を一覧表示します。

Linux, macOS, or Unix

Copy
$ ls ~/.aws

Windows

Copy
> dir %UserProfile%\.aws

認証情報を機密性の低いオプションから分離するために、リージョンおよび出力形式は同じフォルダの config という名前の別個のファイルに保存されます。

AWS_CONFIG_FILE 環境変数を別のローカルパスに設定することで、config ファイルのデフォルトの設定ファイルの場所より優先させることができます。詳細については、「Environment Variables」を参照してください。

認証情報を Config に保存する

また、AWS CLI は config ファイルから認証情報を読み取ります。すべてのプロファイル設定を 1 つのファイルに保管することもできます。両方の場所にプロファイルの認証情報がある場合 (たとえば、プロファイルのキーを更新するために aws configure を使用した場合など)、認証情報ファイルのキーが優先されます。

AWS CLI に加えていずれかの SDK を使用するとき、認証情報が独自のファイルに保存されていない場合は追加の警告があります。

前のセクションで設定されたプロファイルのために CLI で生成されたファイルは次のようになります。

~/.aws/credentials

Copy
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

~/.aws/config

Copy
[default] region=us-west-2 output=json

以下の設定がサポートされています。

aws_access_key_id – AWS アクセスキー。

aws_secret_access_key – AWS シークレットキー。

aws_session_token – AWS セッショントークン。セッショントークンは、一時的なセキュリティ認証情報を使用している場合にのみ必要です。

region – AWS リージョン。

output – 出力形式 (json、text、table)

名前付きプロファイル

AWS CLI は config と認証情報ファイルに保存された 名前付きプロファイルをサポートしています。追加のプロファイルを設定するには、--profile オプションで aws configure を使用するか、または、config と認証情報ファイルへエントリを追加します。

2 つのプロファイルのある認証情報ファイルの例を以下に示します。

~/.aws/credentials

Copy
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [user2] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

各プロファイルは異なる認証情報 (2 人の異なる IAM ユーザーのもの) を使用します。別のリージョンおよび出力形式を使用することもできます。

~/.aws/config

Copy
[default] region=us-west-2 output=json [profile user2] region=us-east-1 output=text

重要

AWS 認証情報ファイルは、CLI ファイルの名前付きプロファイルとは別の命名形式を使用します。AWS 認証情報ファイルで名前付きプロファイルを設定するときは、「profile」プレフィックスは含めないでください。

AWS CLI でのプロファイルの使用

名前付きプロファイルを使用するには、コマンドに --profile オプションを追加します。次の例では、前のセクションの user2 プロファイルを使用して実行中のインスタンスを一覧表示します。

Copy
$ aws ec2 describe-instances --profile user2

複数のコマンドで名前付きプロファイルを使用する場合、コマンドラインに AWS_DEFAULT_PROFILE 環境変数を設定することで、すべてのコマンドでプロファイルを指定せずにすみます。

Linux, macOS, or Unix

Copy
$ export AWS_DEFAULT_PROFILE=user2

Windows

Copy
> set AWS_DEFAULT_PROFILE=user2

環境変数を設定すると、シェルセッションの終了時まで、または変数に別の値を設定するまで、デフォルトのプロファイルが変更されます。変数の詳細は次のセクションを参照してください。

Environment Variables

環境変数は設定と認証情報ファイルより優先されます。このため、スクリプト処理や、名前付きプロファイルを一時的にデフォルトとして設定する場合に便利です。

次の変数は、AWS CLI でサポートされています。

AWS_ACCESS_KEY_ID – AWS アクセスキー。

AWS_SECRET_ACCESS_KEY – AWS シークレットキー。アクセスキーおよびシークレットキーの変数は認証情報ファイルおよび config ファイルに保存されている認証情報よりも優先されます。

AWS_SESSION_TOKEN – セッショントークン。セッショントークンは、一時的なセキュリティ認証情報を使用している場合にのみ必要です。

AWS_DEFAULT_REGION – AWS リージョン。この変数が設定してあると、使用中のプロファイルのデフォルトリージョンよりも優先されます。

AWS_DEFAULT_PROFILE – 使用する CLI プロファイルの名前。これは、認証情報ファイルまたは config ファイルに保存されているプロファイルの名前、または、デフォルトプロファイルを使用する場合は default となります。

AWS_CONFIG_FILE – CLI config ファイルへのパス。

config ファイルの変数が設定してある場合、aws configure はリージョンと出力設定を指定のファイルに書き込み、CLI はデフォルトファイル (~/.aws/config) の代わりにそこからプロファイルの設定を読み込もうとします。認証情報はデフォルトの認証情報ファイル (~/.aws/credentials) から読み込まれ、書き込まれます。

次の例では、このガイドで前述したデフォルトのユーザーの環境変数を設定する方法を示します。

Linux, macOS, or Unix

Copy
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_DEFAULT_REGION=us-west-2

Windows

Copy
> set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE > set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY > set AWS_DEFAULT_REGION=us-west-2

コマンドラインオプション

AWS CLI は、GNU 形式の長いコマンドラインオプション (前に 2 つのハイフンあり) を使用します。コマンドラインのオプションは、1 つのオペレーションでデフォルトの設定に優先して使用できますが、認証情報を指定するために使用することはできません。

コマンドラインで次の設定を指定できます。

--profile – 使用するプロファイルの名前、またはデフォルトのプロファイルを使用する場合は「default」となります。

--region – 呼び出す AWS リージョンです。

--output – 出力形式です。

--endpoint-url – 呼び出しをする対象のエンドポイントです。エンドポイントは、使用中の AWS リージョンのプロキシのアドレス、または エンドポイントの URL です。AWS CLI が使用中のリージョンに基づいて呼び出すエンドポイントを決定するため、通常の使用でエンドポイントの指定は必須ではありません。

上記のオプションは、1 回のオペレーションで対応するプロファイル設定に優先されます。それぞれ文字列引数にスペースまたは等号 (「=」) が付いていて、オプション名から引数を分離しています。引数文字列にスペースが含まれる場合を除き、引数を引用符で囲む必要はありません。

ヒント

--profile オプションを aws configure で使用すると、追加のプロファイルを設定できます。

Copy
$ aws configure --profile profilename

コマンドラインオプションの一般的な使用方法には、複数のリージョンでのリソースの確認、および、スクリプティングでの読みやすさや使いやすさのための出力形式の変更が含まれます。たとえば、インスタンスが実行されているリージョンが分からない場合は、分かるまで各リージョンに対して describe-instances コマンドを実行できます。

Copy
$ aws ec2 describe-instances --output table --region us-east-1 ------------------- |DescribeInstances| +-----------------+ $ aws ec2 describe-instances --output table --region us-west-1 ------------------- |DescribeInstances| +-----------------+ $ aws ec2 describe-instances --output table --region us-west-2 ------------------------------------------------------------------------------ | DescribeInstances | +----------------------------------------------------------------------------+ || Reservations || |+-------------------------------------+------------------------------------+| || OwnerId | 012345678901 || || ReservationId | r-abcdefgh || |+-------------------------------------+------------------------------------+| ||| Instances ||| ||+------------------------+-----------------------------------------------+|| ||| AmiLaunchIndex | 0 ||| ||| Architecture | x86_64 ||| ...

コマンドラインのオプションのパラメータ型 (文字列、ブール列など) は、このガイドの後の方にある AWS Command Line Interface のパラメータ値の指定 セクションで詳しく説明します。

インスタンスメタデータ

EC2 インスタンスから CLI を使用するには、必要なリソースへのアクセス権限を持つロールを作成し、そのロールをインスタンスにその起動時に割り当てます。インスタンスを起動し、AWS CLI がすでにインストールされているかどうかを確認します (Amazon Linux ではプリインストールされています)。

必要に応じて AWS CLI をインストールし、すべてのコマンドで指定しなくてもいいようにデフォルトのリージョンを指定します。最初の 2 つのプロンプトを Enter キーを 2 回押してスキップすることで、認証情報を入力せずに aws configure を使用してリージョンを設定できます。

Copy
$ aws configure AWS Access Key ID [None]: ENTER AWS Secret Access Key [None]: ENTER Default region name [None]: us-west-2 Default output format [None]: json

AWS CLI はインスタンスのメタデータから認証情報を読み取ります。詳細については、『IAM ユーザーガイド』の「Amazon EC2 インスタンスで実行されるアプリケーションに、AWS リソースへのアクセスを付与する」を参照してください。