AWS CLI をの使い方を教える機会があったのでそのときのメモを残しておきます。AWS をコマンドラインで操作することに興味がある方の参考になれば幸いです。
目次
AWS CLI とは
AWS CLI は、AWS をターミナルなどコマンドラインから操作できるツールです。AWS の操作を自動化するときによく使います。マニュアルによると、AWS マネジメントコンソールの操作はすべて AWS CLI から行うことができるようです。
AWS Command Line Interface とは - AWS Command Line Interface
インストール
AWS CLI バージョン 2 のインストール - AWS Command Line Interface を参考に、OS に適した方法でインストールをします。
使い方
AWS CLI コマンドは以下の形式で使います。
aws [options] <command> <subcommand> [parameters]
aws — AWS CLI Command Reference もさらっと眺めておきましょう。
設定
AWS CLI を利用するには IAM ユーザーのアクセスキー ID とシークレットアクセスキーの設定が必要です。アクセスキー ID とシークレットアクセスキーは、AWS CLI を利用するときに必要な認証キーで、IAM ユーザーの分身のようなイメージです。
アクセスキーとシークレットアクセスキーは AWS CLI バージョン 2 を使用するための前提条件 ステップ 3: アクセスキー ID とシークレットアクセスキーを作成します - AWS Command Line Interface を参考に取得します。
次に、aws configre
コマンドで取得した IAM ユーザーのアクセスキー ID とシークレットアクセスキーを設定します。
aws configure
対話形式で入力をします。
AWS Access Key ID [None]: AKIAXXXXXXXXXXXX
AWS Secret Access Key [None]: vlxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: us-west-2
Default output format [None]: json
設定が完了すると ~/.aws/credentials
と ~/.aws/config
に入力した内容が書き込まれます。直接ファイルを編集しても大丈夫です。
環境変数でもキーは設定できる
Environment Variables - AWS Command Line Interface にあるように、環境変数からも AWS のキーは設定できます。状況に応じて使い分けましょう。
動作確認
aws コマンドを実行してみましょう。以下のコマンドは サブネットの一覧を返すコマンドです。エラーが出ずにサブネットの一覧が返ってくれば OK です。
aws ec2 describe-subnets
{
"Subnets": [
{
"AvailabilityZone": "ap-northeast-1c",
"AvailableIpAddressCount": 4091,
"CidrBlock": "172.31.0.0/20",
"DefaultForAz": true,
"MapPublicIpOnLaunch": true,
"State": "available",
"SubnetId": "subnet-30e19d68",
"VpcId": "vpc-49ee852d",
"AssignIpv6AddressOnCreation": false,
"Ipv6CidrBlockAssociationSet": []
},
...
]
}
名前付きプロファイル
AWS を扱うプロジェクトが増えてくると、管理する IAM ユーザーのアクセスキーも増えてきます。プロジェクトに応じて ~/.aws
以下のファイルや環境変数を書き換えるのは大変です。そんな時のために、名前付きプロファイルという機能があります。名前付きプロファイルを使うと、複数のアクセスキーをローカルに保存しておき、それらを簡単に切り替えることができるようになります。
名前付きプロファイルを作成するには、aws configure
コマンドに profile
オプションを指定します。
aws configure --profile project1
すると、こんな感じで ~/.aws/credentials
ファイルと ~/.aws/config
ファイルに情報が書き込まれます。default と project1 という 2 つの鍵が保存されているのがわかります。
[default]
aws_access_key_id = AKIAAAAAAAAAAAAA
aws_secret_access_key = vlaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[project1]
aws_access_key_id = AKIABBBBBBBBBBBB
aws_secret_access_key = vlbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
プロファイルを使い分けるには、aws コマンドのオプションで指定するか、環境変数で設定します。
profile
オプションでプロファイルを指定する場合は以下のように。
aws ec2 describe-instances --profile project1
環境変数で指定する場合は、.bash_profile などに AWS_PROFILE
環境変数を設定します。
export AWS_PROFILE=profile1
詳しくは 名前付きプロファイル - AWS Command Line Interface を参照ください。
対話形式で設定を行いたくない場合は
対話形式での設定したくない場合は aws configure set
コマンドを使います。自動化のときに使うことがあります。
aws configure set aws_access_key_id AKIAAAAAAAAAAAAA
aws configure set aws_secret_access_key vlaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aws configure set default.region us-west-2
aws configure set region us-west-1 --profile testing
aws configure set profile.testing2.region eu-west-1
詳しくは confugure set — AWS CLI Command Reference を参照。
help を使いこなそう
aws-cli は help がとても充実しています。たいていのことは help を見れば書いてあるので、 help コマンドの使い方をマスターしましょう。ヘルプはサブコマンドの階層ごとに参照できます。以下のように使います。
aws help
aws ec2 help
aws ec2 describe-instances help
それぞれのコマンドに対応した help の結果が返されます。ec2 関連のコマンドを探したいときは aws ec2 help
と入力してほしいコマンドを探し、さらにそのコマンドの help を確認してパラメータを確認します。
コマンドの入力補完
aws-cli はたくさんのコマンドを持っています。毎回 help コマンドで確認しているとしんどいので、tab キーでコマンドの入力補完をできるようにしましょう。入力補完用のスクリプトは aws-cli に同梱されています。設定方法は コマンド補完 - AWS Command Line Interface を参照してください。
私の環境は zsh なので、.zshrc に以下のように書いています。
autoload bashcompinit && bashcompinit
complete -C '/usr/local/bin/aws_completer' aws
次回は aws-cli のフィルタの使い方について書きます。
-
AWS CLIのフィルタの使い方
AWS CLI の使い方を 1 から教えるシリーズ 2 回目。前回 は AWS CLI のインストール方法と初期設定につ ...
続きを見る