AWS CLI

AWS コマンドラインツールの使用(しよう) ノート。

Command

aws

CLI バージョン確認(かくにん)

aws --version

cdk

アカウント設定(せってい)

cdk bootstrap aws://ACCOUNT-NUMBER/REGION

configure

Region 取得(しゅとく)

aws configure get region

設定(せってい) 一覧(いちらん)

aws configure list

認証(にんしょう) 設定(せってい)

aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-southeast-1
Default output format [None]: JSON

profiles 一覧(いちらん)複数(ふくすう) の AWS アカウント設定(せってい) ):

  • ~/.aws/config
  • ~/.aws/credentials
aws configure list-profiles

event

特定(とくてい) の ARN を取得(しゅとく)

aws events list-rules | jq -r '.Rules[] | select(.Name == "minuteRule") | .Arn'

log

Lambda ログを表示(ひょうじ)

aws logs tail /aws/lambda/ArplanetAPI_Platform_Linux2_Test --follow --profile default

sts

AWS profile keys 接続(せつぞく) テスト:

aws sts get-caller-identity

sam

バージョン確認(かくにん)

# PowerShell
sam --version

# Git Bash
sam.cmd --version

ガイド() きデプロイ:

sam deploy --guided

Service Command

Athena

SQL Query 関連(かんれん) コマンドは Athena ページを参照(さんしょう)

CloudWatch

Agent

Agent 状態(じょうたい) 確認(かくにん)

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status

設定(せってい) ファイルを()() んで agent を再起動(さいきどう)

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/env-config.json -s

Configuration File

主要(しゅよう)設定(せってい) ブロック:

  • agent: metrics_collection_interval, region, credentials, debug, logfile, run_as_user
  • metrics: namespace, append_dimensions, aggregation_dimensions, metrics_collected
  • logs: logs_collected, force_flush_interval

設定(せってい) (れい)

{
  "agent": {
    "metrics_collection_interval": 60,
    "run_as_user": "root"
  },
  "metrics": {
    "aggregation_dimensions": [["InstanceId"]],
    "append_dimensions": {
      "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
      "ImageId": "${aws:ImageId}",
      "InstanceId": "${aws:InstanceId}",
      "InstanceType": "${aws:InstanceType}"
    },
    "metrics_collected": {
      "cpu": {
        "measurement": ["cpu_usage_idle", "cpu_usage_iowait", "cpu_usage_user", "cpu_usage_system"],
        "metrics_collection_interval": 60,
        "resources": ["*"],
        "totalcpu": false
      },
      "disk": {
        "measurement": ["used_percent", "inodes_free"],
        "metrics_collection_interval": 60,
        "resources": ["*"]
      },
      "mem": {
        "measurement": ["mem_used_percent"],
        "metrics_collection_interval": 60
      }
    }
  },
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/home/ec2-user/log/app/json/**.log",
            "log_group_name": "app-json",
            "log_stream_name": "json-stream",
            "retention_in_days": 1
          }
        ]
      }
    },
    "force_flush_interval": 30
  }
}
E! Error parsing /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml, open /usr/share/collectd/types.db: no such file or directory というエラーが発生(はっせい) した場合(ばあい)collectd がインストールされていません。sudo apt install collectd でインストール()再起動(さいきどう) してください。

DynamoDB

テーブル一覧(いちらん)

aws dynamodb list-tables --region ap-southeast-1

EC2

(すべ) ての EC2 を一覧(いちらん)

aws ec2 describe-instances
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --output text

keypairs 一覧(いちらん)

aws ec2 describe-key-pairs

IAM

ユーザー一覧(いちらん)

aws iam list-users

Kinesis Data Stream

レコードを挿入(そうにゅう)

aws kinesis put-record --stream events --partition-key "1" --data 'test1' --cli-binary-format raw-in-base64-out

JSON ファイルからレコードを挿入(そうにゅう)

aws kinesis put-records --stream-name kds-test --records file://data-example.json --cli-binary-format raw-in-base64-out

Lambda

Lambda 関数(かんすう) (すう)確認(かくにん)

aws lambda list-functions | jq '.Functions | length'

Lambda を作成(さくせい)

aws lambda create-function --function-name my-function \
  --runtime python3.9 \
  --role arn:aws:iam::123456789012:role/lambda_execution_role \
  --handler lambda-function.lambda_handler \
  --zip-file fileb:///root/my-function.zip \
  --region us-east-1

Lambda を()() す:

aws lambda invoke --function-name my-function --payload '{ "name": "your name" }' output.txt

MediaLive

Channel 状態(じょうたい)表示(ひょうじ)

aws medialive describe-channel --channel-id 9057200 | jq -r '{ State }'

S3

(すべ) ての S3 を一覧(いちらん)

aws s3 ls

S3 にファイルをアップロード:

aws s3 cp D:/path/to/file.zip s3://bucket-name/folder/ --acl public-read --cache-control max-age="0" --profile default

S3 からファイルをダウンロード:

aws s3 cp s3://bucket/folder /local/folder --recursive

Use Cases

DynamoDB Local Service

Connect

PowerShell:

java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar -port 8888

Linux:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

Table Operations

テーブル一覧(いちらん) (デフォルト port: 8000):

aws dynamodb list-tables --endpoint-url http://localhost:8888

テーブル作成(さくせい)

aws dynamodb create-table \
  --table-name Music \
  --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
  --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
  --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \
  --table-class STANDARD \
  --endpoint-url http://localhost:8000

JSON ファイルで作成(さくせい)

aws dynamodb create-table --cli-input-json file://create-table-user.json --endpoint-url http://localhost:8000

テーブル詳細(しょうさい)

aws dynamodb describe-table --table-name Music --endpoint-url http://localhost:8000

データ挿入(そうにゅう)

aws dynamodb put-item \
  --table-name Music \
  --item '{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Call Me Today"}, "AlbumTitle": {"S": "Somewhat Famous"}}' \
  --return-consumed-capacity TOTAL

データスキャン:

aws dynamodb scan --table-name Music --endpoint-url http://localhost:8000

データクエリ:

aws dynamodb query \
  --table-name Music \
  --key-condition-expression "Artist = :v1 AND SongTitle = :v2" \
  --expression-attribute-values file://expression-attributes.json \
  --endpoint-url http://localhost:8888

テーブル削除(さくじょ)

aws dynamodb delete-table --table-name user --endpoint-url http://localhost:8000

Change Profile User

Windows

CMD:

set AWS_PROFILE=profile_name

PowerShell:

setx AWS_PROFILE profile_name

Git Bash:

export AWS_PROFILE=default

Linux

export AWS_PROFILE=profile_name

Retrieve Instance Type

curl http://169.254.169.254/latest/meta-data/instance-type