aws-cli チュートリアル
aws-cliを使い始める
サーチ…
備考
説明
AWSコマンドラインインターフェイス(CLI)は、AWSサービスを管理するための統一ツールです。 1つのツールをダウンロードして設定するだけで、コマンドラインから複数のAWSサービスを制御し、スクリプトを使用して自動化することができます。
AWS CLIには、Amazon S3との効率的なファイル転送のための新しい簡単なファイルコマンドセットが導入されています。
サポートされるサービス
AWSコマンドラインインターフェイスで使用できるサービスの一覧については、「AWS CLIコマンドリファレンス」の「 利用可能なサービス」を参照してください。
GitHub上のAWSコマンドラインインターフェイス
https://github.com/aws/aws-cliプロジェクトのGitHubで、AWS CLIのソースコードを表示およびフォークすることができます。
バージョン
インストールとセットアップ
使用しているオペレーティングシステムと環境に応じて、マシンにAWS CLIをインストールする方法はいくつかあります。
Microsoft Windowsの場合 - MSIインストーラを使用します。 Linux、OS X、またはUnixではpip(Pythonソフトウェアのパッケージマネージャ)を使用するか、付属のインストーラを使用して手動でインストールしてください。
pipを使ってインストールする:
Pythonをインストールする必要があります(バージョン2、2.6.5 +、3または3.3+)。確認する
python --version
pip --help
これらの両方がインストールされている場合は、次のコマンドを使用してaws cliをインストールします。
sudo pip install awscli
Windowsへのインストール AWS CLIは、Microsoft Windows XP以降でサポートされています。 Windowsユーザーの場合、MSIインストールパッケージは、他の前提条件をインストールせずにAWS CLIをインストールするための使い慣れた便利な方法を提供します。 Windowsユーザーは、既にパッケージ管理のためにpipを使用していない限り、MSIインストーラを使用する必要があります。
ダウンロードしたMSIインストーラを実行します。表示される指示に従います。
付属のインストーラを使用してAWS CLIをインストールするには
前提条件:
- Linux、OS X、またはUnix
- Python 2バージョン2.6.5+またはPython 3バージョン3.3+
wgetまたはcurlを使用してAWS CLIバンドルインストーラをダウンロードします。
パッケージを解凍します。
インストール実行ファイルを実行します。
LinuxおよびOS Xでは、各ステップに対応する3つのコマンドがあります。
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
OS XでHomeBrewを使用してインストールする:
OS Xの別のオプション
brew install awscli
AWS CLIのインストールをテストする
ヘルプファイルを表示して、CLIが正しくインストールされていることを確認します。ターミナル、シェル、またはコマンドプロンプトを開き、aws helpと入力してEnterキーを押します。
$ aws help
AWS CLIの設定
インストールが完了したら、それを設定する必要があります。アカウントを作成するときにアクセスキーと秘密鍵が必要になります。デフォルトのリージョン名とデフォルトの出力タイプ(text | table | json)を指定することもできます。
$ 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
CLIツールの更新
Amazonは定期的に新しいバージョンのAWS Toolをリリースしています。ツールがPython Pipツールを使用してインストールされていた場合、次のコマンドはリモートリポジトリに更新をチェックし、それをローカルシステムに適用します。
$ pip install awscli --upgrade
新しいプロファイルを作成する
新しい証明書プロファイルをmyprofileという名前で設定するには:
$ aws configure --profile myprofile AWS Access Key ID [None]: ACCESSKEY AWS Secret Access Key [None]: SECRETKEY Default region name [None]: REGIONNAME Default output format [None]: text | table | json
AWSアクセスキーIDとシークレットについては、AWSコンソールでIAMユーザーを作成し、そのキーを生成します。
リージョンは、 eu-west-1またはus-east-1の形式のコマンドのデフォルト領域になります。
デフォルトの出力形式は、 text 、 tableまたはjsonいずれかです。
--profileオプションを使用して、他のコマンドでプロファイル名を使用できるようになりました。
$ aws ec2 describe-instances --profile myprofile
他の言語のAWSライブラリ(Rubyの場合はaws-sdk 、Pythonの場合はboto3など)には、このメソッドで作成したプロファイルを使用するオプションもあります。たとえば、 boto3新しいセッションを作成するboto3は、 boto3.Session(profile_name:'myprofile')ように実行し、プロファイル用に作成した認証情報を使用します。
あなたのaws-cli設定の詳細は~/.aws/configと~/.aws/credentials (linuxとmac-os上)にあります。これらの詳細は、そこから手動で編集できます。
aws cliコマンドの使用
aws cliを使用するための構文は次のとおりです。
aws [options] <command> <subcommand> [parameters]
'ec2'コマンドと 'describe-instances'サブコマンドを使用したいくつかの例:
aws ec2 describe-instances
aws ec2 describe-instances --instance-ids <your-id>
偽のIDを持つ例:
aws ec2 describe-instances --instance-ids i-c71r246a
リストS3バケット
aws s3 ls
名前付きプロファイルを使用する
aws --profile myprofile s3 ls
人間が判読可能な形式のサイズと最後のバケットプロパティのサマリーを含むフォルダ内のオブジェクトを含む、バケット内のすべてのオブジェクトを一覧表示する -
aws s3 ls --recursive --summarize --human-readable s3://<bucket_name>/
BashとUbuntuのAWSコンプリータ
コマンドの自動補完には、次のユーティリティを使用できます。
$ which aws_completer
/usr/bin/aws_completer
$ complete -C '/usr/bin/aws_completer' aws
将来のシェルセッションでは、〜/ .bashrcにこれを追加することを検討してください
$ echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
確認するには、
$ aws ec
[TAB]キーを押すと自動的に2が追加されます:
$ aws ec2
AWS CLIチートシート - すべてのCLIコマンドのリスト
セットアップ
AWS CLIをインストールする
AWS CLIは、AWSリソースを管理するための一般的なCLIツールです。この単一のツールを使用して、すべてのawsリソース
sudo apt-get install -y python-dev python-pip sudo pip install awscli aws --version aws configure
バッシュワンライナー
cat <file> # output a file
tee # split output into a file
cut -f 2 # print the 2nd column, per line
sed -n '5{p;q}' # print the 5th line in a file
sed 1d # print all lines, except the first
tail -n +2 # print all lines, starting on the 2nd
head -n 5 # print the first 5 lines
tail -n 5 # print the last 5 lines
expand # convert tabs to 4 spaces
unexpand -a # convert 4 spaces to tabs
wc # word count
tr ' ' \\t # translate / convert characters to other characters
sort # sort data
uniq # show only unique entries
paste # combine rows of text, by line
join # combine rows of text, by initial column value
Cloudtrail - ロギングと監査
http://docs.aws.amazon.com/cli/latest/reference/cloudtrail/ 5つのトレイル、リソースレベルのアクセス許可のサポート
# list all trails
aws cloudtrail describe-trails
# list all S3 buckets
aws s3 ls
# create a new trail
aws cloudtrail create-subscription \
--name awslog \
--s3-new-bucket awslog2016
# list the names of all trails
aws cloudtrail describe-trails --output text | cut -f 8
# get the status of a trail
aws cloudtrail get-trail-status \
--name awslog
# delete a trail
aws cloudtrail delete-trail \
--name awslog
# delete the S3 bucket of a trail
aws s3 rb s3://awslog2016 --force
# add tags to a trail, up to 10 tags
aws cloudtrail add-tags \
--resource-id awslog \
--tags-list "Key=log-type,Value=all"
# list the tags of a trail
aws cloudtrail list-tags \
--resource-id-list
# remove a tag from a trail
aws cloudtrail remove-tags \
--resource-id awslog \
--tags-list "Key=log-type,Value=all"
わたし
ユーザー
https://blogs.aws.amazon.com/security/post/Tx15CIT22V4J8RP/How-to-rotate-access-keys-for-IAM-users http://docs.aws.amazon.com/IAM/latest/UserGuide /reference_iam-limits.html制限= 5000ユーザー、100グループ、250の役割、2アクセスキー/ユーザー
http://docs.aws.amazon.com/cli/latest/reference/iam/index.html
# list all user's info
aws iam list-users
# list all user's usernames
aws iam list-users --output text | cut -f 6
# list current user's info
aws iam get-user
# list current user's access keys
aws iam list-access-keys
# crate new user
aws iam create-user \
--user-name aws-admin2
# create multiple new users, from a file
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
aws iam create-user \
--user-name $userName
done
# list all users
aws iam list-users --no-paginate
# get a specific user's info
aws iam get-user \
--user-name aws-admin2
# delete one user
aws iam delete-user \
--user-name aws-admin2
# delete all users
# allUsers=$(aws iam list-users --output text | cut -f 6);
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
aws iam delete-user \
--user-name $userName
done
パスワードポリシー
http://docs.aws.amazon.com/cli/latest/reference/iam/
# list policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html
aws iam get-account-password-policy
# set policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html
aws iam update-account-password-policy \
--minimum-password-length 12 \
--require-symbols \
--require-numbers \
--require-uppercase-characters \
--require-lowercase-characters \
--allow-users-to-change-password
# delete policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html
aws iam delete-account-password-policy
アクセスキー
http://docs.aws.amazon.com/cli/latest/reference/iam/
# list all access keys
aws iam list-access-keys
# list access keys of a specific user
aws iam list-access-keys \
--user-name aws-admin2
# create a new access key
aws iam create-access-key \
--user-name aws-admin2 \
--output text | tee aws-admin2.txt
# list last access time of an access key
aws iam get-access-key-last-used \
--access-key-id AKIAINA6AJZY4EXAMPLE
# deactivate an acccss key
aws iam update-access-key \
--access-key-id AKIAI44QH8DHBEXAMPLE \
--status Inactive \
--user-name aws-admin2
# delete an access key
aws iam delete-access-key \
--access-key-id AKIAI44QH8DHBEXAMPLE \
--user-name aws-admin2
グループ、ポリシー、管理されたポリシー
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html http://docs.aws.amazon.com/cli/latest/reference/iam/
# list all groups
aws iam list-groups
# create a group
aws iam create-group --group-name FullAdmins
# delete a group
aws iam delete-group \
--group-name FullAdmins
# list all policies
aws iam list-policies
# get a specific policy
aws iam get-policy \
--policy-arn <value>
# list all users, groups, and roles, for a given policy
aws iam list-entities-for-policy \
--policy-arn <value>
# list policies, for a given group
aws iam list-attached-group-policies \
--group-name FullAdmins
# add a policy to a group
aws iam attach-group-policy \
--group-name FullAdmins \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccess
# add a user to a group
aws iam add-user-to-group \
--group-name FullAdmins \
--user-name aws-admin2
# list users, for a given group
aws iam get-group \
--group-name FullAdmins
# list groups, for a given user
aws iam list-groups-for-user \
--user-name aws-admin2
# remove a user from a group
aws iam remove-user-from-group \
--group-name FullAdmins \
--user-name aws-admin2
# remove a policy from a group
aws iam detach-group-policy \
--group-name FullAdmins \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccess
# delete a group
aws iam delete-group \
--group-name FullAdmins
EC2
キーペア
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
# list all keypairs
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html
aws ec2 describe-key-pairs
# create a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html
aws ec2 create-key-pair \
--key-name <value>
# create a new private / public keypair, using RSA 2048-bit
ssh-keygen -t rsa -b 2048
# import an existing keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html
aws ec2 import-key-pair \
--key-name keyname_test \
--public-key-material file:///home/apollo/id_rsa.pub
# delete a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html
aws ec2 delete-key-pair \
--key-name <value>
セキュリティグループ
http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html
# list all security groups
aws ec2 describe-security-groups
# create a security group
aws ec2 create-security-group \
--vpc-id vpc-1a2b3c4d \
--group-name web-access \
--description "web access"
# list details about a securty group
aws ec2 describe-security-groups \
--group-id sg-0000000
# open port 80, for everyone
aws ec2 authorize-security-group-ingress \
--group-id sg-0000000 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/24
# get my public ip
my_ip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo $my_ip
# open port 22, just for my ip
aws ec2 authorize-security-group-ingress \
--group-id sg-0000000 \
--protocol tcp \
--port 80 \
--cidr $my_ip/24
# remove a firewall rule from a group
aws ec2 revoke-security-group-ingress \
--group-id sg-0000000 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/24
# delete a security group
aws ec2 delete-security-group \
--group-id sg-00000000
インスタンス
http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html
# list all instances (running, and not running)
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html
aws ec2 describe-instances
# create a new instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html
aws ec2 run-instances \
--image-id ami-f0e7d19a \
--instance-type t2.micro \
--security-group-ids sg-00000000 \
--dry-run
# stop an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html
aws ec2 terminate-instances \
--instance-ids <instance_id>
# list status of all instances
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html
aws ec2 describe-instance-status
# list status of a specific instance
aws ec2 describe-instance-status \
--instance-ids <instance_id>
タグ
# list the tags of an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html
aws ec2 describe-tags
# add a tag to an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html
aws ec2 create-tags \
--resources "ami-1a2b3c4d" \
--tags Key=name,Value=debian
# delete a tag on an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-tags.html
aws ec2 delete-tags \
--resources "ami-1a2b3c4d" \
--tags Key=Name,Value=
クラウドウォッチ
ロググループ
http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html http://docs.aws.amazon.com/cli/latest/reference/logs/index.html#cli-aws-logs
グループを作成するhttp://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html
aws logs create-log-group \
--log-group-name "DefaultGroup"
すべてのロググループを一覧表示するhttp://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-groups.html
aws logs describe-log-groups
aws logs describe-log-groups \
--log-group-name-prefix "Default"
グループを削除するhttp://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html
aws logs delete-log-group \
--log-group-name "DefaultGroup"
ログ・ストリーム
# Log group names can be between 1 and 512 characters long. Allowed
# characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen),
# '/' (forward slash), and '.' (period).
# create a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-stream.html
aws logs create-log-stream \
--log-group-name "DefaultGroup" \
--log-stream-name "syslog"
# list details on a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-streams.html
aws logs describe-log-streams \
--log-group-name "syslog"
aws logs describe-log-streams \
--log-stream-name-prefix "syslog"
# delete a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-stream.html
aws logs delete-log-stream \
--log-group-name "DefaultGroup" \
--log-stream-name "Default Stream"