概要
ついつい忘れがちなので自分で使ったことあるコマンドを随時追記していきます。
※全てのコマンドをまとめているわけではないので、当記事に書いていないコマンドについては公式ドキュメントをご覧ください。
公式ドキュメント
また、aws-cliのレスポンスは基本的にJsonのため(設定で変更可能らしいが)、 jq というJsonフォーマット用ツールを合わせて使うと幸せになれます。
設定ファイル
cliを利用する上では以下のファイルが必要。
aws-cliをインストール後に特定のコマンドを打つことで生成することが出来る。
cofig
cliを使う上での設定を記載したファイル。
[default]
output = json
region = ap-northeast-1
credentials
AWSに接続するための認証情報
[default]
output = json
region = ap-northeast-1
コマンド
##configure
aws-cliを使う上でのファイルを生成する
###configure
設定ファイルを生成します。
Document
aws configure
###set
cliの設定を追加します。
Document
aws configure set preview.cloudfront true
##iam
IAM関連を操作するコマンド
###create-user
IAMユーザーを新規作成します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
aws iam create-user \
--user-name sample-user
###delete-user
IAMユーザーを削除します。
※ポリシーが設定されている場合はエラーになります。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
aws iam delete-user \
--user-name sample-user
###get-user
IAMユーザーを取得します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
aws iam get-user \
--user-name sample-user
###put-user-policy
IAMユーザーにポリシーを追加します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
policy-name | ポリシー名 |
policy-document | ポリシールールが記載されたJsonファイルのパス |
aws iam put-user-policy \
--user-name sample-user \
--policy-name sample-policy \
--policy-document file://user_policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1501770149214",
"Action": "cloudwatch:*",
"Effect": "Allow",
"Resource": "*"
}
]
}
※Amazonのポリシージェネレーターを使うことで作成可能です。
ポリシージェネレーター
###delete-user-policy
IAMユーザーに設定されているポリシーを削除します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
policy-name | ポリシー名 |
aws iam delete-user-policy \
--user-name sample-user \
--policy-name sample-policy
###create-access-key
IAMユーザーのアクセスキーを新規作成します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
aws iam create-access-key \
--user-name sample-user
###list-users
IAMユーザーの一覧を取得します。
Document
aws iam list-users
###create-role
Roleを新規作成します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
aws iam create-role \
--role-name sample-role \
--assume-role-policy-document file://role.json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
###attach-role-policy
Roleにポリシーを追加します。
Document
引数 | 概要 |
---|---|
user-name | IAMユーザー名 |
policy-arn | リソース名 |
aws iam attach-role-policy \
--role-name sample-role \
--policy-arn "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
##s3
S3関連を操作するコマンド
###mb
バケットを新規作成します。
Document
aws s3 mb s3://sample.bucket
###website
バケットを静的Webサイトホスティング化する
Document
引数 | 概要 |
---|---|
index-document | ディレクトリに対してリクエストが来た際に自動で追加する接尾辞 |
aws s3 website s3://sample.bucket \
--index-document index.html
###cp
バケットにオブジェクトを転送する
Document
aws s3 cp sample.txt s3://sample.bucket
###rm
バケットのオブジェクトを削除する
Document
aws s3 rm s3://sample.bucket/sample.txt
###ls
バケットのオブジェクト一覧を取得する
Document
aws s3 ls s3://sample.bucket
###rb
バケットを削除する
Document
aws s3 rb s3://sample.bucket
##s3api
Amazon S3 API関連を操作するコマンド
###put-bucket-notification-configuration
バケットにオブジェクトがPutされた時の通知設定
Document
引数 | 概要 |
---|---|
bucket | 対象バケット名 |
notification-configuration | 通知設定ファイル |
aws s3api put-bucket-notification-configuration \
--bucket sample.bucket \
--notification-configuration file://config.json
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:xxxx",
"Id": "sample_config",
"Events": [
"s3:ObjectCreated:*"
]
}
]
}
##cloudfront
CloudFront関連を操作するコマンド
###create-distribution
CloudFrontを新規作成します。
Document
引数 | 概要 |
---|---|
cli-input-json | 新規作成用Jsonファイルのパス ※file://${パス}にすること |
aws cloudfront create-distribution \
--cli-input-json file://distribution.json
{
"Id": "",
"IfMatch": "",
"DistributionConfig": {
"Comment": "${コメント}",
"CacheBehaviors": {
"Quantity": 0
},
"IsIPV6Enabled": true,
"Logging": {
"Bucket": "",
"Prefix": "",
"Enabled": false,
"IncludeCookies": false
},
"WebACLId": "",
"Origins": {
"Items": [
{
"S3OriginConfig": {
"OriginAccessIdentity": ""
},
"OriginPath": "",
"CustomHeaders": {
"Quantity": 0
},
"Id": "${ID}",
"DomainName": "${ドメイン名}"
}
],
"Quantity": 1
},
"DefaultRootObject": "index.html",
"PriceClass": "PriceClass_All",
"Enabled": true,
"DefaultCacheBehavior": {
"TrustedSigners": {
"Enabled": false,
"Quantity": 0
},
"LambdaFunctionAssociations": {
"Quantity": 0
},
"TargetOriginId": "${S3のバケット名}",
"ViewerProtocolPolicy": "allow-all",
"ForwardedValues": {
"Headers": {
"Quantity": 0
},
"Cookies": {
"Forward": "all"
},
"QueryStringCacheKeys": {
"Quantity": 0
},
"QueryString": true
},
"MaxTTL": 300,
"SmoothStreaming": false,
"DefaultTTL": 300,
"AllowedMethods": {
"Items": [
"HEAD",
"GET"
],
"CachedMethods": {
"Items": [
"HEAD",
"GET"
],
"Quantity": 2
},
"Quantity": 2
},
"MinTTL": 300,
"Compress": false
},
"CallerReference": "${一意となる文字列}",
"ViewerCertificate": {
"CloudFrontDefaultCertificate": true,
"MinimumProtocolVersion": "SSLv3",
"CertificateSource": "cloudfront"
},
"CustomErrorResponses": {
"Quantity": 0
},
"HttpVersion": "http2",
"Restrictions": {
"GeoRestriction": {
"RestrictionType": "none",
"Quantity": 0
}
},
"Aliases": {
"Items": [
"${エイリアス名}"
],
"Quantity": 1
}
}
}
##ec2
EC2関連を操作するコマンド
###create-security-group
セキュリティグループを新規作成します。
Document
引数 | 概要 |
---|---|
group-name | セキュリティグループ名 |
description | 説明 |
aws ec2 create-security-group \
--group-name sample-sg-group \
--description 'サンプル用のセキュリティグループ'
###authorize-security-group-ingress
セキュリティグループのルールを定義します。
Document
引数 | 概要 |
---|---|
group-name | セキュリティグループ名 |
description | 説明 |
port | 対象のポート番号 |
cidr | 許可するIPアドレス |
aws ec2 authorize-security-group-ingress \
--group-name sample-sg-group \
--protocol tcp \
--port 22 \
--cidr "0.0.0.0/0"
###allocate-address
ElasticIPを新規作成します。
Document
引数 | 概要 |
---|---|
domain | vpsを使う際には「vpc」を指定する |
aws ec2 allocate-address \
--domain vpc
###run-instances
インスタンスを新規作成し起動します。
Document
引数 | 概要 |
---|---|
image-id | インスタンスのベースとなるマシンイメージ |
count | 起動するインスタンスの数 |
instance-type | 作成するインスタンスの種別 |
key-name | 使用するキーペア名 |
security-groups | 紐付けるセキュリティブループ名(複数可) |
aws ec2 run-instances \
--image-id ami-3bd3c45c \
--count 1 \
--instance-type t2.micro \
--key-name sample_key_pair \
--security-groups sample-sg-group
###create-tags
対象のインスタンスにタグを新規追加します。
Document
引数 | 概要 |
---|---|
resources | 対象のインスタンスID |
tags | Key/Valueの形式で追加していく |
instance-type | 作成するインスタンスの種別 |
key-name | 使用するキーペア名 |
security-groups | 紐付けるセキュリティブループ名(複数可) |
aws ec2 create-tags \
--resources i-xxxx \
--tags Key=Name,Value=sample-instance
###associate-address
ElasticIPとインスタンスを紐付けます。
Document
引数 | 概要 |
---|---|
allocation-id | 対象のElasticIP ID |
instance | 対象のインスタンスID |
aws ec2 associate-address \
--allocation-id eipalloc-xxxx \
--instance i-xxxx
###release-address
ElasticIPを解放します。
Document
引数 | 概要 |
---|---|
allocation-id | 対象のElasticIP ID |
aws ec2 release-address \
--allocation-id eipalloc-xxxx
###modify-instance-attribute
インスタンスの属性を更新します。
Document
引数 | 概要 |
---|---|
groups | セキュリティブループID(複数可) |
instance-id | 対象のインスタンスID |
aws ec2 modify-instance-attribute \
--groups sample-sg-group \
--instance-id i-xxxx
###terminate-instances
インスタンスを停止して削除します。
Document
引数 | 概要 |
---|---|
instance-ids | 対象のインスタンスID(複数可) |
aws ec2 terminate-instances \
--instance-ids i-xxxx
###start-instances
作成済みインスタンスを起動します。
Document
引数 | 概要 |
---|---|
instance-ids | 対象のインスタンスID(複数可) |
aws ec2 start-instances \
--instance-ids i-xxxx
###stop-instances
起動中インスタンスを停止します。
Document
引数 | 概要 |
---|---|
instance-ids | 対象のインスタンスID(複数可) |
aws ec2 stop-instances \
--instance-ids i-xxxx
##lambda
Lambda関連を操作するコマンド
###create-function
Lambda関数を新規作成します。
Document
引数 | 概要 |
---|---|
function-name | Lambda関数名 |
zip-file | zipパス |
role | 他のAWSサービスに接続するためのロール |
handler | 実行するためのコード内関数 |
runtime | 実行環境 |
timeout | タイムアウトの定義(秒) |
memory-size | Lambda関数実行時のメモリ割り当て |
(@xieyang0047 さん、ご指摘ありがとうございます!)
aws lambda create-function \
--function-name SampleFunction \
--zip-file fileb://SampleFunction.zip \
--role arn:aws:iam::xxxx:role/sample-role \
--handler SampleFunction.handler \
--runtime python2.7 \
--timeout 10 \
--memory-size 1024
###delete-function
Lambda関数を削除します。
Document
引数 | 概要 |
---|---|
function-name | Lambda関数名 |
aws lambda delete-function \
--function-name SampleFunction
###add-permission
Lambda関数への権限を追加います。
Document
引数 | 概要 |
---|---|
function-name | Lambda関数名 |
statement-id | 一意となるステートメント名 |
action | 許可させるLambdaアクション |
principal | プリンシパルの設定 |
source-arn | 関数呼び出しを許可するAmazonリソース名 |
aws lambda add-permission \
--function-name "sample-function" \
--statement-id "sample-statement" \
--action "lambda:InvokeFunction" \
--principal "s3.amazonaws.com" \
--source-arn "arn:aws:s3:::sample.bucket"
##acm
AWS Certificate Manager関連を操作するコマンド
###request-certificate
SSL証明書を新規作成します。
Document
引数 | 概要 |
---|---|
domain-name | 対象のメインドメイン名 |
subject-alternative-namessubject-alternative-names | 同時に含めたいサブドメイン名 |
domain-validation-options | サブドメインの承認リクエストをメインドメインに変更する場合に指定 |
aws acm request-certificate \
--domain-name sample.jp \
--subject-alternative-names sub.sample.jp \
--domain-validation-options DomainName=sub.sample.jp,ValidationDomain=sample.jp
##ses
SimpleMailService関連を操作するコマンド
※SESを利用する場合、2017/8/18時点で東京リージョンは対応していないので、以下のリージョンを指定する必要がある。
- US East (N. Virginia)
- EU (Ireland)
- US West (Oregon)
###verify-domain-identity
ドメイン認証用のトークンを発行します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
domain | 対象のドメイン |
aws ses verify-domain-identity \
--region=us-west-2 \
--domain "sample.jp"
###create-receipt-rule-set
ルールセットを新規作成します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
rule-set-name | 対象のルールセットの名称 |
aws ses create-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
###create-receipt-rule
ルールを新規作成します。
※ルールセットとは別物
引数 | 概要 |
---|---|
region | リージョンの指定 |
rule-set-name | 対象のルールセットの名称 |
rule | Jsonファイルパス |
aws ses create-receipt-rule \
--region=us-west-2 \
--rule-set-name sample-rule-set \
--rule file://rule.json
{
"Name": "sample-rule",
"Enabled": true,
"TlsPolicy": "Optional",
"Recipients": [
"admin@sample.jp",
"admin@sub.sample.jp"
],
"Actions": [
{
"S3Action": {
"BucketName": "ses.incoming.bucket"
}
}
],
"ScanEnabled": true
}
###delete-receipt-rule-set
ルールセットを削除します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
rule-set-name | 対象のルールセットの名称 |
aws ses delete-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
###delete-receipt-rule
ルールを削除します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
rule-set-name | 対象のルールセットの名称 |
rule-name | 対象のルールの名称 |
aws ses delete-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set \
--rule-name sample-rule
###set-active-receipt-rule-set
ルールセットを有効化します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
rule-set-name | 対象のルールセットの名称 |
aws ses set-active-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
###describe-receipt-rule-set
ルールセットを取得します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
rule-set-name | 対象のルールセットの名称 |
aws ses describe-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
###describe-active-receipt-rule-set
有効化されているルールセットを取得します。
Document
引数 | 概要 |
---|---|
region | リージョンの指定 |
aws ses describe-active-receipt-rule-set \
--region=us-west-2