aws-cliaws-cliを使い始める


備考

説明

AWSコマンドラインインターフェイス(CLI)は、AWSサービスを管理するための統一ツールです。 1つのツールをダウンロードして設定するだけで、コマンドラインから複数のAWSサービスを制御し、スクリプトを使用して自動化することができます。

AWS CLIには、Amazon S3との効率的なファイル転送のための新しい簡単なファイルコマンドセットが導入されています。

サポートされるサービス

AWSコマンドラインインターフェイスで使用できるサービスの一覧については、「AWS CLIコマンドリファレンス」の「 利用可能なサービス」を参照してください。

GitHub上のAWSコマンドラインインターフェイス

https://github.com/aws/aws-cliプロジェクトのGitHubで、AWS CLIのソースコードを表示およびフォークすることができます。

バージョン

バージョン発売日
1.10.38 2016年06-14-14
1.10.35 2016年06月03日
1.10.33 2016-05-25
1.10.30 2016年5月18日

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"

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
 

新しいプロファイルを作成する

新しい証明書プロファイルを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 の形式のコマンドのデフォルト領域になります。

デフォルトの出力形式は、 texttable または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をインストールする方法はいくつかあります。

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+
  1. wgetまたはcurlを使用してAWS CLIバンドルインストーラをダウンロードします。

  2. パッケージを解凍します。

  3. インストール実行ファイルを実行します。

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
 

リストS3バケット

aws s3 ls
 

名前付きプロファイルを使用する

aws --profile myprofile s3 ls
 

人間が判読可能な形式のサイズと最後のバケットプロパティのサマリーを含むフォルダ内のオブジェクトを含む、バケット内のすべてのオブジェクトを一覧表示する -

aws s3 ls --recursive --summarize --human-readable s3://<bucket_name>/
 

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