Github: https://github.com/aws/aws-cli
aws-cli
このパッケージは、Amazon Web Servicesへの統一コマンドラインインターフェイスを提供します。
aws-cliパッケージはPythonのバージョンで動作します:
- 2.6.5以上
- 2.7.x以上
- 3.3.x以上
- 3.4.x以上
- 3.5.x以上
- 3.6.x以上
注意!
すべてのお客様がaws-cliに関連する重要なセキュリティ情報をAmazon Web Services Security BulletinsのWebサイトで定期的に監視することをお勧めします。
インストール
aws-cliをインストールする最も簡単な方法は、 pipを使用することです。
$ pip install awscli
または、あなたがvirtualenv
インストールしていない場合:
$ sudo pip install awscli
aws-cliがインストールされていて、最新のバージョンにアップグレードしたい場合は、以下を実行できます:
$ pip install --upgrade awscli
注意
OS Xでは、El Capitanでdistutilsに付属している6つのバージョンに関するエラーが表示--ignore-installed
場合は、– --ignore-installed
オプションを使用して--ignore-installed
:
$ sudo pip install awscli --ignore-installed six
これにより、aws-cliパッケージとすべての依存関係がインストールされます。 また、tarballをダウンロードすることもできます 。 あなたのワークステーションにawscliディレクトリ構造があれば、次のように実行できます:
$ cd <path_to_awscli> $ python setup.py install
CLIのdevelop
ブランチを実行する場合は、以下の「CLI Devバージョン」を参照してください。
CLIリリース
AWS CLIのリリースノートはここにあります 。
コマンド完了
aws-cliパッケージには非常に便利なコマンド補完機能が含まれています。 この機能は自動的にはインストールされないため、手動で設定する必要があります。 bashのタブ補完を有効にするには、組み込みコマンドcomplete
使用するか、
$ complete -C aws_completer aws
または、 bin/aws_bash_completer
ファイルを/etc/bash_completion.d
またはその他のbash_completion.d
下に追加します。
tcshの場合:
$ complete aws 'p/*/`aws_completer`/'
将来のセッションでこの機能を有効にするには、これをスタートアップスクリプトに追加する必要があります。
zshについては、bin / aws_zsh_completer.shを参照してください。 あなたの〜/ .zshrcからそのファイルをソースし、前もってcompinitを実行してください:
$ source bin/aws_zsh_completer.sh
今のところ、bash互換の自動補完(bashcompinit)が使用されています。 詳細については、bin / aws_zsh_completer.shの一番上を参照してください。
入門
aws-cliを使用する前に、AWSクレデンシャルについて教えてください。 あなたはいくつかの方法でこれを行うことができます:
- 環境変数
- 共有資格ファイル
- 設定ファイル
- IAMの役割
aws configure
コマンドを実行するのが最も簡単な方法です:
$ aws configure AWS Access Key ID: foo AWS Secret Access Key: bar Default region name [us-west-2]: us-west-2 Default output format [None]: json
環境変数を使用するには、次のようにします。
$ export AWS_ACCESS_KEY_ID=<access_key> $ export AWS_SECRET_ACCESS_KEY=<secret_key>
共有資格情報ファイルを使用するには、次のようにINI形式のファイルを作成します。
[default] aws_access_key_id=foo aws_secret_access_key=bar [testing] aws_access_key_id=foo aws_secret_access_key=bar
~/.aws/credentials
(またはWindowsの%UserProfile%\.aws/credentials
)に配置します。 上で指定した場所とは別の場所に共有の資格情報ファイルを置く場合は、aws-cliにファイルを見つける場所を指定する必要があります。 適切な環境変数を設定してこれを行います:
$ export AWS_SHARED_CREDENTIALS_FILE=/path/to/shared_credentials_file
設定ファイルを使用するには、次のような設定ファイルを作成します。
[default] aws_access_key_id=<default access key> aws_secret_access_key=<default secret key> # Optional, to define default region for this profile. region=us-west-1 [profile testing] aws_access_key_id=<testing access key> aws_secret_access_key=<testing secret key> region=us-west-2
~/.aws/config
(またはWindowsの%UserProfile%\.aws\config
)に%UserProfile%\.aws\config
ます。 設定ファイルを上で指定した場所とは別の場所に置く場合は、aws-cliにファイルの場所を指定する必要があります。 適切な環境変数を設定してこれを行います:
$ export AWS_CONFIG_FILE=/path/to/config_file
ご覧のとおり、複数のprofiles
共有の資格情報ファイルと構成ファイルの両方に定義することができます。 --profile
オプションを使用すると、使用するプロファイルを指定できます。 プロファイルが指定されていない場合、 default
プロファイルが使用されます。
configファイルでは、デフォルトのプロファイルを除いて、プロファイルグループの各configセクションの前にプロファイルを付ける必要があり profile
。 たとえば、「testing」という名前のプロファイルがある場合、セクションヘッダーは[profile testing]
ます。
EC2インスタンスでaws-cliを使用する場合は、資格情報の最終オプションを強くお勧めします。 IAMロールは、資格情報をインスタンスに自動的にインストールするのに最適です。 IAMロールを使用している場合、aws-cliはそれらを見つけて自動的に使用します。
その他の設定可能な変数
資格情報に加えて、環境変数、構成ファイルのエントリ、またはその両方を使用して、多数の他の変数を構成することができます。 次の表はこれらを示しています。
変数 | オプション | 構成エントリ | 環境変数 | 説明 |
---|---|---|---|---|
プロフィール | – プロフィール | プロフィール | AWS_PROFILE | デフォルトプロファイル名 |
領域 | – 領域 | 領域 | AWS_DEFAULT_REGION | デフォルトのAWSリージョン |
config_file | AWS_CONFIG_FILE | configの別の場所 | ||
credentials_file | AWS_SHARED_CREDENTIALS_FILE | 資格情報の代替場所 | ||
出力 | – 出力 | 出力 | AWS_DEFAULT_OUTPUT | デフォルト出力スタイル |
ca_bundle | –ca-bundle | ca_bundle | AWS_CA_BUNDLE | CA証明書バンドル |
アクセスキー | aws_access_key_id | AWS_ACCESS_KEY_ID | AWSアクセスキー | |
secret_key | aws_secret_access_key | AWS_SECRET_ACCESS_KEY | AWS秘密鍵 | |
トークン | aws_session_token | AWS_SESSION_TOKEN | AWSトークン(一時証明書) | |
cli_timestamp_format | cli_timestamp_format | タイムスタンプの出力形式 | ||
metadata_service_timeout | metadata_service_timeout | AWS_METADATA_SERVICE_TIMEOUT | EC2メタデータのタイムアウト | |
metadata_service_num_attempts | metadata_service_num_attempts | AWS_METADATA_SERVICE_NUM_ATTEMPTS | EC2メタデータの再試行回数 | |
parameter_validation | parameter_validation | ローカルパラメータの検証を切り替えます。 |
例
常にコマンドラインで--region
オプションを指定するのがうんざりする場合は、 region
変数を使用して明示的な--region
オプションが含まれていない場合に使用するデフォルトのリージョンを指定できます。 環境変数を使用してこれを指定するには:
$ export AWS_DEFAULT_REGION=us-west-2
設定ファイルに含めるには:
[default] aws_access_key_id=<default access key> aws_secret_access_key=<default secret key> region=us-west-1
同様に、 profile
変数は、– profile
オプションを使用してコマンドラインで明示的に指定されていない場合に、使用するプロファイルを指定するために使用できます。 これを環境変数で設定するには:
$ export AWS_PROFILE=testing
profile
変数は、プロファイルに関連付けられなければならず、目的を無効にするため、構成ファイルで指定することはできません。
さらに詳しい情報
設定オプションの詳細については、 AWS CLI設定変数のトピックを参照してください。 aws help config-vars
実行すると、CLIからもこのトピックにアクセスできます。
グローバルエンドポイントによるサービスへのアクセス
AWS Identity and Access Management(IAM)などの一部のサービスでは、各地域ごとに異なるエンドポイントではなく、単一のグローバルエンドポイントがあります。
これらのサービスへのアクセスを簡単にするために、リージョン( --region
オプションを使用)またはプロファイル( --profile
オプションを使用)を明示的に指定しない限り、aws-cliは自動的にグローバルエンドポイントを使用します。 したがって、次のようになります。
$ aws iam list-users
プロファイルに指定されたAWS_DEFAULT_REGION
環境変数またはregion
変数の値に関係なく、自動的にIAMサービスのグローバルエンドポイントを使用します。
JSONパラメータ入力
提供される必要のある多くのオプションは、単純な文字列または数値です。 ただし、コマンドラインまたはファイルのいずれかに入力パラメータとしてJSONデータ構造が必要な操作もあります。
たとえば、EC2セキュリティグループへのアクセスを許可するコマンドを考えます。 この場合、すべてのIPアドレスについて、ポート22への入力アクセスを追加します。
$ aws ec2 authorize-security-group-ingress --group-name MySecurityGroup \ --ip-permissions '{"FromPort":22,"ToPort":22,"IpProtocol":"tcp","IpRanges":[{"CidrIp": "0.0.0.0/0"}]}'
ファイルベースのパラメータ入力
パラメータ値の中には大きすぎるものや複雑すぎるものがあるため、パラメータ値をファイルに入れやすく、コマンドラインに直接値を入力するのではなく、そのファイルを参照する方が簡単です。
上記のauthorize-security-group-ingress
コマンドを使用しましょう。 --ip-permissions
パラメーターの値をコマンドで直接指定するのではなく、最初にファイルに値を格納することができます。 ip_perms.jsonというファイルを呼び出してみましょう:
{"FromPort":22, "ToPort":22, "IpProtocol":"tcp", "IpRanges":[{"CidrIp":"0.0.0.0/0"}]}
次に、次のように同じ呼び出しを行うことができます。
$ aws ec2 authorize-security-group-ingress --group-name MySecurityGroup \ --ip-permissions file://ip_perms.json
パラメータ値のfile://
接頭辞は、パラメータ値が実際には実際のパラメータ値を含むファイルへの参照であることを知らせます。 aws-cliはファイルを開き、値を読み取り、その値をパラメータ値として渡します。
これは、パラメータが実際にファイルベースのデータを参照している場合にも便利です。 たとえば、 aws ec2 run-instances
コマンドの--user-data
オプション、またはaws ec2 import-key-pair
コマンドのaws ec2 import-key-pair
--public-key-material
パラメータです。
URIベースのパラメータ入力
上記のファイルベースの入力と同様に、aws-cliには、URIのデータをパラメータの値として使用する方法も含まれています。 このアイデアは、使用するプレフィックスがhttps://
またはhttp://
:
$ aws ec2 authorize-security-group-ingress --group-name MySecurityGroup \ --ip-permissions http://mybucket.s3.amazonaws.com/ip_perms.json
コマンド出力
コマンドのデフォルト出力は現在JSONです。 --query
オプションを使用すると、このJSONドキュメントから出力要素を抽出できます。 --query
引数に使用される式言語の詳細については、 JMESPathチュートリアルを参照してください 。
例
IAMユーザー名のリストを取得する:
$ aws iam list-users --query Users[].UserName
S3バケットのキー名とそのサイズのリストを取得する:
$ aws s3api list-objects --bucket b --query Contents[].[Key,Size]
すべてのEC2インスタンスのリストを取得し、インスタンスID、状態名、および名前(名前がタグ付けされている場合)を含めます。
$ aws ec2 describe-instances --query \ 'Reservations[].Instances[].[InstanceId,State.Name,Tags[?Key==`Name`] | [0].Value]'
他の用途のためにJSON出力を処理するのに便利なjqツールもあります。
利用可能なASCIIテーブル形式もあります。 このスタイルを--output table
オプションで選択するか、上記のように環境変数または設定ファイルのエントリを使ってこのスタイルをデフォルトの出力スタイルにすることができます。 上記のコマンドに--output table
を追加してみてください。
CLI開発者バージョン
AWS CLIの最新リリース版の使用に興味がある場合は、上記の「インストール」を参照してください。 このセクションは、CLIの開発バージョンをインストールするすべての人のためのものです。 次の場合を除き、通常はこれを行う必要はありません。
- CLIの機能を開発しており、プルリクエストの送信を計画しています。
- CLIを公式リリースにする前に、CLIの最新の変更をテストする必要があります。
CLIの最新の変更はgithubのdevelop
ブランチにあります。 これは、gitリポジトリをクローンするときのデフォルトのブランチです。
さらに、CLIと連携して開発される他のパッケージもいくつかあります。 これも:
CLIの最新開発版のスナップショットをインストールしたいだけの場合は、このレポに含まれているrequirements.txt
ファイルを使用できます。 このファイルは、上記のパッケージの開発版を指しています:
cd <path_to_awscli> pip install -r requirements.txt pip install -e .
ただし、最新の状態に保つためには、pipoc pip install -r requirements.txt
ファイルを実行して、botocore、jmespathなどの開発ブランチから最新の変更を引き出すpip install -r requirements.txt
ます。
必要に応じてそれらのリポジトリをそれぞれクローンし、 “pip install -e”を実行することができます。 リポジトリごとに:
git clone <jmespath> && cd jmespath/ pip install -e . && cd .. git clone <botocore> && cd botocore/ pip install -e . && cd .. git clone <awscli> && cd aws-cli/ pip install -e .
ヘルプの利用
バグを追跡するためにGitHubの問題を使用し、問題に対処するための帯域幅が限られています。 助けを得るためにこれらのコミュニティリソースを使用してください:
- AWS-CLI UserVoiceで機能リクエストを探したり作成したりする
- Stack Overflowに関する質問をし、 aws-cliでタグ付けする
- AWS CLIコミュニティに参加する
- AWSサポートでサポートチケットを開く
- バグが見つかった可能性がある場合は、問題を開いてください