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"