aws-cli　コマンド一覧(随時追記)

# 概要

ついつい忘れがちなので自分で使ったことあるコマンドを随時追記していきます。

※全てのコマンドをまとめているわけではないので、当記事に書いていないコマンドについては公式ドキュメントをご覧ください。
[ **公式ドキュメント** ](https://aws.amazon.com/jp/cli/)

また、aws-cliのレスポンスは基本的にJsonのため(設定で変更可能らしいが)、[ **jq** ](https://stedolan.github.io/jq/)というJsonフォーマット用ツールを合わせて使うと幸せになれます。



# 設定ファイル

cliを利用する上では以下のファイルが必要。
aws-cliをインストール後に特定のコマンドを打つことで生成することが出来る。

## cofig

cliを使う上での設定を記載したファイル。

```ini:~/.aws/config
[default]
output = json
region = ap-northeast-1
```

## credentials

AWSに接続するための認証情報

```ini:~/.aws/config
[default]
output = json
region = ap-northeast-1
```

# コマンド

##configure

aws-cliを使う上でのファイルを生成する

###configure

設定ファイルを生成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/configure/index.html)


```bash:command
aws configure
```

###set

cliの設定を追加します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/configure/set.html)


```bash:command
aws configure set preview.cloudfront true
```

##iam

IAM関連を操作するコマンド

###create-user

IAMユーザーを新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|

```bash:command
aws iam create-user \
--user-name sample-user
```

###delete-user

IAMユーザーを削除します。
**※ポリシーが設定されている場合はエラーになります。**
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|

```bash:command
aws iam delete-user \
--user-name sample-user
```

###get-user

IAMユーザーを取得します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|

```bash:command
aws iam get-user \
--user-name sample-user
```

###put-user-policy

IAMユーザーにポリシーを追加します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|
|policy-name|ポリシー名|
|policy-document|ポリシールールが記載されたJsonファイルのパス|

```bash:command
aws iam put-user-policy \
--user-name sample-user \
--policy-name sample-policy \
--policy-document  file://user_policy.json
```

```json:user_policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1501770149214",
      "Action": "cloudwatch:*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```
※Amazonのポリシージェネレーターを使うことで作成可能です。
[ **ポリシージェネレーター** ](http://awspolicygen.s3.amazonaws.com/policygen.html)

###delete-user-policy

IAMユーザーに設定されているポリシーを削除します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|
|policy-name|ポリシー名|

```bash:command
aws iam delete-user-policy \
--user-name sample-user \
--policy-name sample-policy 
```

###create-access-key

IAMユーザーのアクセスキーを新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|

```bash:command
aws iam create-access-key \
--user-name sample-user 
```

###list-users

IAMユーザーの一覧を取得します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)

```bash:command
aws iam list-users
```

###create-role

Roleを新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|

```bash:command
aws iam create-role \
--role-name sample-role \
--assume-role-policy-document file://role.json
```

```json:role.json
{
  "Version": "2012-10-17",
  "Statement": [
     {
       "Action": "sts:AssumeRole",
       "Principal": {
         "Service": "lambda.amazonaws.com"
        },
        "Effect": "Allow",
        "Sid": ""
     }
  ]
}
```

###attach-role-policy

Roleにポリシーを追加します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

|引数|概要|
|:---|:---|
|user-name|IAMユーザー名|
|policy-arn|リソース名|

```bash:command
aws iam attach-role-policy \
--role-name sample-role \
--policy-arn "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
```

##s3

S3関連を操作するコマンド

###mb

バケットを新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3/mb.html)


```bash:command
aws s3 mb s3://sample.bucket
```

###website

バケットを静的Webサイトホスティング化する
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3/website.html)

|引数|概要|
|:---|:---|
|index-document|ディレクトリに対してリクエストが来た際に自動で追加する接尾辞|

```bash:command
aws s3 website s3://sample.bucket \
--index-document index.html
```

###cp

バケットにオブジェクトを転送する
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3/cp.html)

```bash:command
aws s3 cp sample.txt s3://sample.bucket
```

###rm

バケットのオブジェクトを削除する
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3/rm.html)

```bash:command
aws s3 rm s3://sample.bucket/sample.txt
```

###ls

バケットのオブジェクト一覧を取得する
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)

```bash:command
aws s3 ls s3://sample.bucket
```

###rb

バケットを削除する
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3/rb.html)

```bash:command
aws s3 rb s3://sample.bucket
```

##s3api

Amazon S3 API関連を操作するコマンド

###put-bucket-notification-configuration

バケットにオブジェクトがPutされた時の通知設定
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-notification-configuration.html)

|引数|概要|
|:---|:---|
|bucket|対象バケット名|
|notification-configuration|通知設定ファイル|

```bash:command
aws s3api put-bucket-notification-configuration \
--bucket sample.bucket \
--notification-configuration file://config.json
```

```json:config.json
{
    "LambdaFunctionConfigurations": [
        {
            "LambdaFunctionArn": "arn:aws:lambda:xxxx",
            "Id": "sample_config",
            "Events": [
                "s3:ObjectCreated:*"
            ]
        }
    ]
}
```
##cloudfront

CloudFront関連を操作するコマンド

###create-distribution

CloudFrontを新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/cloudfront/create-distribution.html)

|引数|概要|
|:---|:---|
|cli-input-json|新規作成用Jsonファイルのパス　※file://${パス}にすること|

```bash:command
aws cloudfront create-distribution \
--cli-input-json file://distribution.json
```

```json: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** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)

|引数|概要|
|:---|:---|
|group-name|セキュリティグループ名|
|description|説明|

```bash:command
aws ec2 create-security-group \
--group-name sample-sg-group \
--description 'サンプル用のセキュリティグループ'
```

###authorize-security-group-ingress

セキュリティグループのルールを定義します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)

|引数|概要|
|:---|:---|
|group-name|セキュリティグループ名|
|description|説明|
|port|対象のポート番号|
|cidr|許可するIPアドレス|

```bash:command
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** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-address.html)

|引数|概要|
|:---|:---|
|domain|vpsを使う際には「vpc」を指定する|

```bash:command
aws ec2 allocate-address \
--domain vpc
```

###run-instances

インスタンスを新規作成し起動します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)

|引数|概要|
|:---|:---|
|image-id|インスタンスのベースとなるマシンイメージ|
|count|起動するインスタンスの数|
|instance-type|作成するインスタンスの種別|
|key-name|使用するキーペア名|
|security-groups|紐付けるセキュリティブループ名(複数可)|

```bash:command
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** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)

|引数|概要|
|:---|:---|
|resources|対象のインスタンスID|
|tags|Key/Valueの形式で追加していく|
|instance-type|作成するインスタンスの種別|
|key-name|使用するキーペア名|
|security-groups|紐付けるセキュリティブループ名(複数可)|

```bash:command
aws ec2 create-tags \
--resources i-xxxx \
--tags Key=Name,Value=sample-instance
```

###associate-address

ElasticIPとインスタンスを紐付けます。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/associate-address.html)

|引数|概要|
|:---|:---|
|allocation-id|対象のElasticIP ID|
|instance|対象のインスタンスID|

```bash:command
aws ec2 associate-address \
--allocation-id eipalloc-xxxx \
--instance i-xxxx
```

###release-address

ElasticIPを解放します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/release-address.html)

|引数|概要|
|:---|:---|
|allocation-id|対象のElasticIP ID|

```bash:command
aws ec2 release-address \
--allocation-id eipalloc-xxxx
```

###modify-instance-attribute

インスタンスの属性を更新します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html)

|引数|概要|
|:---|:---|
|groups|セキュリティブループID(複数可)|
|instance-id|対象のインスタンスID|

```bash:command
aws ec2 modify-instance-attribute  \
--groups sample-sg-group  \
--instance-id i-xxxx
```

###terminate-instances

インスタンスを停止して削除します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)

|引数|概要|
|:---|:---|
|instance-ids|対象のインスタンスID(複数可)|

```bash:command
aws ec2 terminate-instances \
--instance-ids i-xxxx
```

###start-instances

作成済みインスタンスを起動します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html)

|引数|概要|
|:---|:---|
|instance-ids|対象のインスタンスID(複数可)|

```bash:command
aws ec2 start-instances  \
--instance-ids i-xxxx
```

###stop-instances

起動中インスタンスを停止します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html)

|引数|概要|
|:---|:---|
|instance-ids|対象のインスタンスID(複数可)|

```bash:command
aws ec2 stop-instances  \
--instance-ids i-xxxx
```

##lambda

Lambda関連を操作するコマンド

###create-function

Lambda関数を新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html)

|引数|概要|
|:---|:---|
|function-name|Lambda関数名|
|zip-file|zipパス|
|role|他のAWSサービスに接続するためのロール|
|handler|実行するためのコード内関数|
|runtime|実行環境|
|timeout|タイムアウトの定義(秒)|
|memory-size|Lambda関数実行時のメモリ割り当て|

(@xieyang0047 さん、ご指摘ありがとうございます！)

```bash:command
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** ](http://docs.aws.amazon.com/cli/latest/reference/lambda/delete-function.html)

|引数|概要|
|:---|:---|
|function-name|Lambda関数名|

```bash:command
aws lambda delete-function \
--function-name SampleFunction 
```

###add-permission

Lambda関数への権限を追加います。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html)

|引数|概要|
|:---|:---|
|function-name|Lambda関数名|
|statement-id|一意となるステートメント名|
|action|許可させるLambdaアクション|
|principal|プリンシパルの設定|
|source-arn|関数呼び出しを許可するAmazonリソース名|

```bash:command
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** ](http://docs.aws.amazon.com/cli/latest/reference/acm/request-certificate.html)

|引数|概要|
|:---|:---|
|domain-name|対象のメインドメイン名|
|subject-alternative-namessubject-alternative-names|同時に含めたいサブドメイン名|
|domain-validation-options|サブドメインの承認リクエストをメインドメインに変更する場合に指定|

```bash:command
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時点で<font color="red">東京リージョンは対応していない</font>ので、以下のリージョンを指定する必要がある。**

- US East (N. Virginia)
- EU (Ireland)
- US West (Oregon)

###verify-domain-identity

ドメイン認証用のトークンを発行します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ses/verify-domain-identity.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|domain|対象のドメイン|

```bash:command
aws ses verify-domain-identity  \
--region=us-west-2 \
--domain "sample.jp"
```

###create-receipt-rule-set

ルールセットを新規作成します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ses/create-receipt-rule-set.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|rule-set-name|対象のルールセットの名称|

```bash:command
aws ses create-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
```

###create-receipt-rule

ルールを新規作成します。 
<font color="red">※ルールセットとは別物</font>

[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ses/create-receipt-rule.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|rule-set-name|対象のルールセットの名称|
|rule|Jsonファイルパス|

```bash:command
aws ses create-receipt-rule \
--region=us-west-2 \
--rule-set-name sample-rule-set \
--rule file://rule.json
```

```json: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** ](http://docs.aws.amazon.com/cli/latest/reference/ses/delete-receipt-rule-set.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|rule-set-name|対象のルールセットの名称|

```bash:command
aws ses delete-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
```

###delete-receipt-rule

ルールを削除します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ses/delete-receipt-rule.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|rule-set-name|対象のルールセットの名称|
|rule-name|対象のルールの名称|

```bash:command
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** ](http://docs.aws.amazon.com/cli/latest/reference/ses/set-active-receipt-rule-set.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|rule-set-name|対象のルールセットの名称|

```bash:command
aws ses set-active-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
```

###describe-receipt-rule-set

ルールセットを取得します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ses/describe-receipt-rule-set.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|
|rule-set-name|対象のルールセットの名称|

```bash:command
aws ses describe-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set
```


###describe-active-receipt-rule-set

有効化されているルールセットを取得します。
[ **Document** ](http://docs.aws.amazon.com/cli/latest/reference/ses/describe-active-receipt-rule-set.html)

|引数|概要|
|:---|:---|
|region|リージョンの指定|

```bash:command
aws ses describe-active-receipt-rule-set \
--region=us-west-2 
```