GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

aws

aws-cli – Amazon Webサービス用の汎用コマンドラインインターフェイス

投稿日:

Amazon Webサービス用の汎用コマンドラインインターフェイス

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
-, , ,

執筆者: