AWS コマンドラインツールの基本的な使い方
[履歴] [最終更新] (2017/12/05 19:26:50)
ここは
趣味のプログラミングを楽しむための情報共有サービス。記事の一部は有料設定にして公開できます。 詳しくはこちらをクリック📝
最近の投稿
注目の記事

概要

amazon.com のアカウントで利用できる Amazon Web Services (AWS) に関する操作を Web 画面からだけでなくコマンドラインツールからも行うために必要な知識をまとめます。AWS 全般を対象とした汎用的なコマンドラインツールの解説です。似たものに EC2 に特化した Java ベースのコマンドラインツールツールが存在しています。混乱しないように注意してください。

IAM ユーザの作成

Identity and Access Management (IAM) は限定的な権限をもったユーザを作成および管理するための仕組みです。コマンドラインツールから AWS を操作するときには IAM ユーザを事前に作成し、そのユーザの権限で処理を実行します。こちら の手順で IAM ユーザを作成して認証情報 (Access Key ID, Secret Access Key) を用意しましょう。

インストール手順

UNIX 系 OS にシステムインストールする手順を抜粋して記載します。その他のインストールパターンについてはこちらをご覧ください。Python 2.6.3 以降が必要です。

python --version

ダウンロードおよび解凍

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip

/usr/local/aws にインストールして実行ファイルへのシンボリックリンクは /usr/local/bin/aws として作成

sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

ヘルプは以下のようにして閲覧できます。

./awscli-bundle/install -h

問題なくインストールできたら以下のコマンドが有効になります。

aws help

初期設定

基本的な用途であれば以下のコマンドにしたがって設定するだけです。

aws configure
  • IAM ユーザの Access Key ID
  • IAM ユーザの Secret Access Key
  • 東京リージョン ap-northeast-1
  • 出力形式 json

設定内容は以下のファイルに格納されます。

  • ~/.aws/config
  • ~/.aws/credentials

簡易的には、以下のように環境変数に設定することもできます。

export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

正しく設定されていれば以下のコマンドが有効になります。

aws ec2 describe-regions

IAM ユーザが EC2 操作権限のあるグループに所属していなければ

A client error (UnauthorizedOperation) occurred when calling the DescribeRegions operation: You are not authorized to perform this operation.

などと表示されます。グループを作成して IAM ユーザを所属させましょう。また、プロキシ設定のためには環境変数を追加します。

リファレンス

EC2 コマンド例

セキュリティグループの作成

create-security-group

aws ec2 create-security-group --group-name MySecurityGroup --description "My security group"

delete-security-group

aws ec2 delete-security-group --group-name MySecurityGroup

セキュリティグループのファイアウォール設定

TCP 22 番ポートをすべてのホストに対して開放する例 (authorize-security-group-ingress)

aws ec2 authorize-security-group-ingress --group-name MySecurityGroup --protocol tcp --port 22 --cidr 0.0.0.0/0

revoke-security-group-ingress

aws ec2 revoke-security-group-ingress --group-name MySecurityGroup --protocol tcp --port 22 --cidr 0.0.0.0/0

公開鍵および秘密鍵の生成

create-key-pair

aws ec2 create-key-pair --key-name my-key-pair

何らかの手段で my-key-pair.pem を作成します。

chmod 400 my-key-pair.pem

delete-key-pair

aws ec2 delete-key-pair --key-name my-key-pair

インスタンスの起動

run-instances

aws ec2 run-instances --image-id ami-cbf90ecb \
--count 1 --instance-type t2.micro --key-name my-key-pair \
--security-groups MySecurityGroup

インスタンス ID 一覧の取得例 (describe-instances)

aws ec2 describe-instances --filters "Name=instance.group-name,Values=MySecurityGroup" \
--output text | grep ^INSTANCES | cut -f8
i-30f3b9c3
i-d4f4be27

名前タグを付与します (create-tags)

aws ec2 create-tags --tags Key=Name,Value=myInstance --resources \
`aws ec2 describe-instances --filters "Name=instance.group-name,Values=MySecurityGroup" \
--output text | grep ^INSTANCES | cut -f8 | tr '\n' ' '`

接続してみましょう。

ssh -i my-key-pair.pem ec2-user@xxx.xxx.xxx.xxx

インスタンスの削除

即時削除されます。実行時には注意しましょう (terminate-instances)

aws ec2 terminate-instances --instance-ids \
`aws ec2 describe-instances --filters "Name=instance.group-name,Values=MySecurityGroup" \
--output text | grep ^INSTANCES | cut -f8 | tr '\n' ' '`

インスタンス情報の取得

jq チートシートをご参照ください。

S3 コマンド例

バケットのコピー

sync

us-west-2 リージョンにある my-us-west-2-bucket バケット内のオブジェクトを us-east-1 リージョンにある my-us-east-1-bucket バケット内にコピーします。更に --delete によってコピー先バケットにあるオブジェクトのうちコピー元バケットにないオブジェクトは、コピー先バケットから削除します。

aws s3 sync s3://my-us-west-2-bucket s3://my-us-east-1-bucket --source-region us-west-2 --region us-east-1 --delete

並列処理の設定を変更することで高速化できます。特に、マルチパートアップロードは断片が残存する危険性があるためなるべく使用しないようにする場合の例です。

aws configure set default.s3.max_concurrent_requests 256
aws configure set default.s3.max_queue_size 100000
aws configure set default.s3.multipart_threshold 5GB
aws configure set default.s3.multipart_chunksize 5GB
関連ページ
    概要 AWS Lambda はイベントドリブンな「関数」を登録できるサービスです。例えば S3 に画像がアップロードされたときにサムネイル用のサイズに加工する処理が記述された関数を登録できます。基本的な使い方をまとめます。 事前準備 関数の登録はブラウザで AWS コンソールにログインして行うこともできますが、本ページでは
    概要 jq の基本的な使い方をまとめます。 公式ドキュメント Tutorial jq Manual コマンド例 (公式チュートリアルより) 人間が読めるように整形および色付けして出力。JSON としての文法ミスがないかどうかの確認。 curl -s 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq .