AWS
aws-cli
備忘録

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

概要

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

※全てのコマンドをまとめているわけではないので、当記事に書いていないコマンドについては公式ドキュメントをご覧ください。
公式ドキュメント

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

設定ファイル

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

cofig

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

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

credentials

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

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

コマンド

configure

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

configure

設定ファイルを生成します。
Document

command
aws configure

set

cliの設定を追加します。
Document

command
aws configure set preview.cloudfront true

iam

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

create-user

IAMユーザーを新規作成します。
Document

引数 概要
user-name IAMユーザー名
command
aws iam create-user \
--user-name sample-user

delete-user

IAMユーザーを削除します。
※ポリシーが設定されている場合はエラーになります。
Document

引数 概要
user-name IAMユーザー名
command
aws iam delete-user \
--user-name sample-user

get-user

IAMユーザーを取得します。
Document

引数 概要
user-name IAMユーザー名
command
aws iam get-user \
--user-name sample-user

put-user-policy

IAMユーザーにポリシーを追加します。
Document

引数 概要
user-name IAMユーザー名
policy-name ポリシー名
policy-document ポリシールールが記載されたJsonファイルのパス
command
aws iam put-user-policy \
--user-name sample-user \
--policy-name sample-policy \
--policy-document  file://user_policy.json
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 ポリシー名
command
aws iam delete-user-policy \
--user-name sample-user \
--policy-name sample-policy 

create-access-key

IAMユーザーのアクセスキーを新規作成します。
Document

引数 概要
user-name IAMユーザー名
command
aws iam create-access-key \
--user-name sample-user 

list-users

IAMユーザーの一覧を取得します。
Document

command
aws iam list-users

create-role

Roleを新規作成します。
Document

引数 概要
user-name IAMユーザー名
command
aws iam create-role \
--role-name sample-role \
--assume-role-policy-document file://role.json
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 リソース名
command
aws iam attach-role-policy \
--role-name sample-role \
--policy-arn "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"

s3

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

mb

バケットを新規作成します。
Document

command
aws s3 mb s3://sample.bucket

website

バケットを静的Webサイトホスティング化する
Document

引数 概要
index-document ディレクトリに対してリクエストが来た際に自動で追加する接尾辞
command
aws s3 website s3://sample.bucket \
--index-document index.html

cp

バケットにオブジェクトを転送する
Document

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

rm

バケットのオブジェクトを削除する
Document

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

ls

バケットのオブジェクト一覧を取得する
Document

command
aws s3 ls s3://sample.bucket

rb

バケットを削除する
Document

command
aws s3 rb s3://sample.bucket

s3api

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

put-bucket-notification-configuration

バケットにオブジェクトがPutされた時の通知設定
Document

引数 概要
bucket 対象バケット名
notification-configuration 通知設定ファイル
command
aws s3api put-bucket-notification-configuration \
--bucket sample.bucket \
--notification-configuration file://config.json
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://${パス}にすること
command
aws cloudfront create-distribution \
--cli-input-json file://distribution.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

引数 概要
group-name セキュリティグループ名
description 説明
command
aws ec2 create-security-group \
--group-name sample-sg-group \
--description 'サンプル用のセキュリティグループ'

authorize-security-group-ingress

セキュリティグループのルールを定義します。
Document

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

引数 概要
domain vpsを使う際には「vpc」を指定する
command
aws ec2 allocate-address \
--domain vpc

run-instances

インスタンスを新規作成し起動します。
Document

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

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

associate-address

ElasticIPとインスタンスを紐付けます。
Document

引数 概要
allocation-id 対象のElasticIP ID
instance 対象のインスタンスID
command
aws ec2 associate-address \
--allocation-id eipalloc-xxxx \
--instance i-xxxx

release-address

ElasticIPを解放します。
Document

引数 概要
allocation-id 対象のElasticIP ID
command
aws ec2 release-address \
--allocation-id eipalloc-xxxx

modify-instance-attribute

インスタンスの属性を更新します。
Document

引数 概要
groups セキュリティブループID(複数可)
instance-id 対象のインスタンスID
command
aws ec2 modify-instance-attribute  \
--groups sample-sg-group  \
--instance-id i-xxxx

terminate-instances

インスタンスを停止して削除します。
Document

引数 概要
instance-ids 対象のインスタンスID(複数可)
command
aws ec2 terminate-instances \
--instance-ids i-xxxx

start-instances

作成済みインスタンスを起動します。
Document

引数 概要
instance-ids 対象のインスタンスID(複数可)
command
aws ec2 start-instances  \
--instance-ids i-xxxx

stop-instances

起動中インスタンスを停止します。
Document

引数 概要
instance-ids 対象のインスタンスID(複数可)
command
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 さん、ご指摘ありがとうございます!)

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

引数 概要
function-name Lambda関数名
command
aws lambda delete-function \
--function-name SampleFunction 

add-permission

Lambda関数への権限を追加います。
Document

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

引数 概要
domain-name 対象のメインドメイン名
subject-alternative-namessubject-alternative-names 同時に含めたいサブドメイン名
domain-validation-options サブドメインの承認リクエストをメインドメインに変更する場合に指定
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時点で東京リージョンは対応していないので、以下のリージョンを指定する必要がある。

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

verify-domain-identity

ドメイン認証用のトークンを発行します。
Document

引数 概要
region リージョンの指定
domain 対象のドメイン
command
aws ses verify-domain-identity  \
--region=us-west-2 \
--domain "sample.jp"

create-receipt-rule-set

ルールセットを新規作成します。
Document

引数 概要
region リージョンの指定
rule-set-name 対象のルールセットの名称
command
aws ses create-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set

create-receipt-rule

ルールを新規作成します。
※ルールセットとは別物

Document

引数 概要
region リージョンの指定
rule-set-name 対象のルールセットの名称
rule Jsonファイルパス
command
aws ses create-receipt-rule \
--region=us-west-2 \
--rule-set-name sample-rule-set \
--rule file://rule.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

引数 概要
region リージョンの指定
rule-set-name 対象のルールセットの名称
command
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 対象のルールの名称
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

引数 概要
region リージョンの指定
rule-set-name 対象のルールセットの名称
command
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 対象のルールセットの名称
command
aws ses describe-receipt-rule-set \
--region=us-west-2 \
--rule-set-name sample-rule-set

describe-active-receipt-rule-set

有効化されているルールセットを取得します。
Document

引数 概要
region リージョンの指定
command
aws ses describe-active-receipt-rule-set \
--region=us-west-2