![見出し画像](https://assets.st-note.com/production/uploads/images/47589803/rectangle_large_type_2_bd1d750f59723a319394c9ef4e70da58.png?width=1200)
【CLI】AWS コマンドラインインターフェース
#AWS アカウント ID 取得
$ aws sts get-caller-identity --query Account --output text
#IAM
ユーザー一覧
$ aws iam list-users
ユーザー作成
$ aws iam create-user --user-name ${user}
ユーザーのアクセスキー作成
$ aws iam create-access-key --user-name ${user} | jq -r '.AccessKey | .AccessKeyId, .SecretAccessKey'
ユーザーのアクセスキー削除
$ aws iam delete-access-key --user-name ${user} --access-key-id $(aws iam list-access-keys --user-name ${user} | jq -r '.AccessKeyMetadata[].AccessKeyId')
ユーザーのインスタンスプロファイル表示
aws iam get-login-profile --user-name ${user}
ユーザーのインスタンスプロファイル削除
aws iam delete-login-profile --user-name ${user}
ユーザー削除
$ aws iam delete-user --user-name ${user}
ポリシー一覧
$ aws iam list-policies | jq -r '.Policies[] | select(.PolicyName=="ALBIngressControllerIAMPolicy")'
ポリシー削除
arn=$(aws iam list-policies | jq -r '.Policies[] | select(.PolicyName=="ALBIngressControllerIAMPolicy") | .Arn')
aws iam delete-policy --policy-arn ${arn}
ロールにアタッチされているポリシー一覧
$ aws iam list-attached-role-policies --role-name AmazonEKSFargatePodExecutionRole
ロールにアタッチされているポリシーをデタッチ
aws iam detach-role-policy --role-name $ROLE_NAME --policy-arn $POLICY_ARN
ロール削除
$ aws iam delete-role --role-name ${role_name}
#ACM
証明書一覧
$ aws acm list-certificates
#KMS
エイリアス削除
$ aws kms delete-alias --alias-name alias/xxxx
#VPC
VPC一覧
$ aws ec2 describe-vpcs | jq -r '.Vpcs[] | .VpcId, .Tags'
サブネット一覧
$ aws ec2 describe-subnets | jq -r '.Subnets[] | select(.Tags != null) | select(.Tags[]|select(.Key=="Name")|select(.Value=="xxxx-dev-private-subnet-1a")) | .SubnetId'
#Route53
ホストゾーン一覧
$ aws route53 list-hosted-zones
ホストゾーン詳細
$ aws route53 get-hosted-zone --id $(aws route53 list-hosted-zones | jq -r '.HostedZones[] | select(.Name=="hoge.com.") | .Id')
レコードセット一覧
$ aws route53 list-resource-record-sets --hosted-zone-id $(aws route53 list-hosted-zones | jq -r '.HostedZones[] | select(.Name=="hoge.com.") | .Id' | perl -pe 's/^\/hostedzone\/(.+)$/${1}/')
#ELB /ALB
ロードバランサー一覧
aws elbv2 describe-load-balancers | jq -r '.LoadBalancers[] | select(.VpcId=="vpc-XXXXXXXXXXXXXXXXX") | .LoadBalancerName'
#EC2
AMI 検索
$ aws ec2 describe-images --owners amazon --region ap-northeast-1 --filters "Name=name,Values=amzn2-ami-hvm-2.0.????????-x86_64-gp2" "Name=state,Values=available" --query 'reverse(sort_by(Images[].{Name:Name, ID:ImageId, State:State},&Name))' --out table
---------------------------------------------------------------------------------
| DescribeImages |
+------------------------+-----------------------------------------+------------+
| ID | Name | State |
+------------------------+-----------------------------------------+------------+
| ami-0c3fd0f5d33134a76 | amzn2-ami-hvm-2.0.20190618-x86_64-gp2 | available |
| ami-084040f99a74ce8c3 | amzn2-ami-hvm-2.0.20190612-x86_64-gp2 | available |
| ami-00d101850e971728d | amzn2-ami-hvm-2.0.20190508-x86_64-gp2 | available |
+------------------------+-----------------------------------------+------------+
インスタンス一覧
$ aws ec2 describe-instances --filters "Name=tag:Name,Values=xxxx-dev-web" "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | .InstanceId, .State.Name, .Placement.AvailabilityZone'
インスタンス起動
$ aws ec2 start-instances --instance-ids i-xxxxxxxxxxxxxxxxx
インスタンス停止
$ aws ec2 stop-instances --instance-ids i-xxxxxxxxxxxxxxxxx
セキュリティグループ一覧
$ aws ec2 describe-security-groups | jq -r '.SecurityGroups[] | select(.Tags != null) | select(.Tags[]|select(.Key=="Name")|select(.Value=="xxxx-dev-alb")) | .GroupId'
キーペア一覧
$ aws ec2 describe-key-pairs
#ECR
リポジトリ一覧
$ aws ecr describe-repositories --region ap-northeast-1 | jq -r '.repositories[] | .repositoryArn, .repositoryName, .repositoryUri'
イメージ一覧
$ aws ecr describe-images --region ap-northeast-1 --repository-name nginx | jq -r '.imageDetails[]'
イメージの削除
$ aws ecr batch-delete-image --region ap-northeast-1 --repository-name nginx --image-ids imageTag=1.0.0
#EKS
クラスタ一一覧表示
$ aws eks list-clusters
クラスター詳細
$ aws eks describe-cluster --name xxxx-dev-cluster
クラスターの Fargate プロファイル一覧
$ aws eks list-fargate-profiles --cluster-name ${cluster_name}
Fargate プロファイル削除
$ aws eks delete-fargate-profile --cluster-name ${cluster_name} --fargate-profile-name ${fargate_profile_name}
#ECS
クラスタ一ARN一覧表示
$ aws ecs list-clusters
コンテナインスタンスARN一覧
aws ecs list-container-instances --cluster arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:cluster/xxxx-dev-cluster
aws ecs list-container-instances --cluster xxxx-dev-cluster
コンテナインスタンス一覧
aws ecs describe-container-instances --cluster arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:cluster/xxxx-dev-cluster --container-instance arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:container-instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
aws ecs describe-container-instances --cluster xxxx-dev-cluster --container-instance xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
サービスARN一覧表示
$ aws ecs list-services --cluster arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:cluster/xxxx-dev-cluster
$ aws ecs list-services --cluster xxxx-dev-cluster
サービス一覧表示
aws ecs describe-services --cluster xxxx-dev-cluster --services xxxx-dev-service | jq -r '.services[] | .serviceName, .desiredCount, .runningCount, .pendingCount'
サービス更新(タスク数変更)
aws ecs update-service --cluster xxxx-dev-cluster --service xxxx-dev-service --desired-count 999
サービス更新(タスク定義変更)
aws ecs update-service --cluster xxxx-dev-cluster --service xxxx-dev-service --task-definition xxxx-dev:999
タスク一覧(xxxx-dev-cluster)
aws ecs list-tasks --cluster xxxx-dev-cluster
タスク削除(xxxx-dev-cluster)
aws ecs stop-task --cluster xxxx-dev-cluster --task xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
aws ecs stop-task --cluster xxxx-dev-cluster --task arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
#Auto Scaling
Auto Scaling グループ一覧
aws autoscaling describe-auto-scaling-groups | jq -r '.AutoScalingGroups[] | select(.AutoScalingGroupName | startswith("xxxx-dev-web")) | .LaunchConfigurationName, .DesiredCapacity, .MinSize, .MaxSize'
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names xxxx-dev-web | jq -r '.AutoScalingGroups[] | .LaunchConfigurationName, .DesiredCapacity, .MinSize, .MaxSize'
Auto Scaling グループ更新
aws autoscaling update-auto-scaling-group --auto-scaling-group-name xxxx-dev-web --min-size 1 --max-size 1 --desired-capacity 1
#Application Auto Scaling
ターゲット一覧(ECS)
aws application-autoscaling describe-scalable-targets --service-namespace ecs | jq -r '.ScalableTargets[] | select(.ResourceId | test("^.+dev-cluster.+dev-web-service$")) | .MinCapacity, .MaxCapacity'
ターゲットの追跡スケーリングポリシーの作成(ECS)
aws application-autoscaling register-scalable-target --service-namespace ecs --resource-id service/xxxx-dev-cluster/xxxx-dev-web-service --scalable-dimension ecs:service:DesiredCount --min-capacity 1 --max-capacity 2
#S3
バケットの作成
$ aws s3 mb s3://hoge.bucket
バケットの一覧表示
$ aws s3 ls
hoge.bucket
バケットの削除
$ aws s3 rb s3://hoge.bucket
ファイルのコピー(ローカル → S3)
$ aws s3 cp text.txt s3://hoge.bucket/
ファイルの削除
$ aws s3 rm s3://hoge.bucket/test.txt
ディレクトリの削除
$ aws s3 rm s3://hoge.bucket/test_dir --recursive
バケットポリシーの更新
$ aws s3api put-bucket-policy --bucket hoge-tfstate --policy \
'{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS":"arn:aws:iam::999999999999:user/terraformer"},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::hoge-tfstate"
},
{
"Effect": "Allow",
"Principal": {"AWS":"arn:aws:iam::999999999999:user/terraformer"},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::hoge-tfstate/terraform.tfstate"
}
]
}'
#CloudFormation
スタックの情報とリストの取得
$ aws cloudformation list-stacks
スタックの削除
$ aws cloudformation delete-stack --stack-name my-stack
テンプレートの検証
$ aws cloudformation validate-template --template-url https://s3-ap-northeast-1.amazonaws.com/template.bucket/lambda_myfunc.json
#RDS
DBクラスター一覧
$ aws rds describe-db-clusters
インスタンス一覧
$ aws rds describe-db-instances \ | jq -r '.DBInstances[] | select(.DBInstanceIdentifier | startswith("xxxx-dev")) | .DBInstanceIdentifier, .DBInstanceClass, .DBInstanceStatus'
DBエンジンのバージョンの確認
$ aws rds describe-db-instances \ | jq -r '.DBInstances[] | select(.DBInstanceIdentifier | startswith("xxxx-dev")) | .EngineVersion'
DBパラメータグループ一覧
$ aws rds describe-db-parameters
DBパラメータグループのパラメータ値表示
$ aws rds describe-db-parameters --db-parameter-group-name xxxxxxxx
Aurora DB クラスターのスナップショット一覧
$ aws rds describe-db-cluster-snapshots \ | jq -r '.DBClusterSnapshots[] | select(.DBClusterIdentifier | startswith("xxx-dev")) | .DBClusterSnapshotIdentifier'
DBクラスター&インスタンス作成(Aurora MySQL)
$ aws rds create-db-cluster \
--database-name xxxx_dev_master \
--db-cluster-identifier xxxx-dev-db-master-cluster \
--engine aurora-mysql \
--engine-version 5.7.12 \
--port 3306 \
--master-username xxxxxxxx \
--master-user-password xxxxxxxxxxxxxxxx \
--db-subnet-group-name xxxx-dev-vpc-xxxxxxxx \
--vpc-security-group-ids ["sg-xxxxxxxx"] \
--enable-cloudwatch-logs-exports ["error","general","audit","slowquery"]
$ aws rds create-db-instance \
--db-instance-identifier xxxx-dev-db-master-0 \
--db-instance-class db.r4.8xlarge \
--engine aurora-mysql \
--engine-version 5.7.12 \
--auto-minor-version-upgrade \
--db-cluster-identifier xxxx-dev-db-master-cluster \
--db-parameter-group-name default.aurora-mysql5.7 \
--no-publicly-accessible
レプリカ作成(Aurora MySQL)
$ aws rds create-db-instance \
--db-instance-identifier xxxx-dev-db-master-1 \
--db-instance-class db.r4.8xlarge \
--engine aurora-mysql \
--engine-version 5.7.12 \
--auto-minor-version-upgrade \
--db-cluster-identifier xxxx-dev-db-master-cluster \
--db-parameter-group-name default.aurora-mysql5.7 \
--no-publicly-accessible
インスタンス削除
$ aws rds delete-db-instance --db-instance-identifier xxxx-dev-db-master-1
スナップショットからリストア(Aurora MySQL)
$ aws rds restore-db-cluster-from-snapshot \
--db-cluster-identifier xxxx-dev-db-master-cluster \
--snapshot-identifier xxxx-dev-db-master-final-snapshot \
--engine aurora-mysql \
--engine-version 5.7.12 \
--port 3306 \
--db-subnet-group-name xxxx-dev-vpc-xxxxxxxx \
--vpc-security-group-ids ["sg-xxxxxxxx"] \
--enable-cloudwatch-logs-exports ["error","general","audit","slowquery"]
$ aws rds create-db-instance \
--db-instance-identifier xxxx-dev-db-master-0 \
--db-instance-class db.r4.8xlarge \
--engine aurora-mysql \
--engine-version 5.7.12 \
--auto-minor-version-upgrade \
--db-cluster-identifier xxxx-dev-db-master-cluster \
--db-parameter-group-name default.aurora-mysql5.7 \
--no-publicly-accessible
インスタンスタイプ変更(即時反映)
$ aws rds modify-db-instance --db-instance-identifier xxxx-dev-db-master-0 --db-instance-class db.r4.8xlarge --apply-immediately
イベントサブスクリプション一覧
$ aws rds describe-event-subscriptions
Aurora DB クラスターのスナップショットの削除
$ db_cluster_snapshot_identifiers=($(aws rds describe-db-cluster-snapshots | jq -r '.DBClusterSnapshots[] | select(.DBClusterIdentifier | startswith("xxxx-dev")) | .DBClusterSnapshotIdentifier'))
$ for db_cluster_snapshot_identifier in "${db_cluster_snapshot_identifiers[@]}"; do aws rds delete-db-cluster-snapshot --db-cluster-snapshot-identifier ${db_cluster_snapshot_identifier}; done
クラスターの削除保護の無効化
$ db_cluster_identifiers=($(aws rds describe-db-clusters | jq -r ".DBClusters[] | select(.DBClusterIdentifier | startswith(\"${project}-${env}-\")) | .DBClusterIdentifier"))
$ for db_cluster_identifier in ${db_cluster_identifiers[@]}; do
echo ${db_cluster_identifier}
echo 'before:'
aws rds describe-db-clusters | jq -r ".DBClusters[] | select(.DBClusterIdentifier == \"${db_cluster_identifier}\") | .DeletionProtection"
echo 'after:'
aws rds modify-db-cluster --db-cluster-identifier ${db_cluster_identifier} --no-deletion-protection | jq -r '.DBCluster.DeletionProtection'
done
#Elasticache
クラスター作成(memcached)
$ aws elasticache create-cache-cluster --cache-cluster-id xxxx-dev-cache --cache-node-type cache.r4.8xlarge --engine memcached --engine-version 1.4.34 --cache-parameter-group default.memcached1.4 --num-cache-nodes 2 --port 11211 --cache-subnet-group-name xxxx-dev-pri --security-group-ids sg-xxxxxxxx
レプリケーショングループ作成(Redis)(※シャード数:1、各シャードのレプリカの数:1)
$ aws elasticache create-replication-group --replication-group-id xxxx-dev-cache --replication-group-description xxxx-dev-cache --cache-node-type cache.r4.large --engine redis --engine-version 4.0.10 --cache-parameter-group default.redis4.0 --num-node-groups 1 --replicas-per-node-group 1 --port 6379 --cache-subnet-group-name xxxx-dev-pri --security-group-ids sg-xxxxxxxx
クラスター削除(memcached)(※スナップショット取得無し)
$ aws elasticache delete-cache-cluster --cache-cluster-id xxxx-dev-cache
レプリケーショングループ削除(Redis)(※スナップショット取得無し)
$ aws elasticache delete-replication-group --replication-group-id xxxx-dev-cache
クラスター一覧
$ aws elasticache describe-cache-clusters
$ aws elasticache describe-cache-clusters \
| jq -r '.CacheClusters[] | select(.Engine == "memcached" and (.CacheClusterId | startswith("xxxx-dev"))) | .CacheClusterId, .CacheNodeType, .CacheClusterStatus'
$ aws elasticache describe-cache-clusters \
| jq -r '.CacheClusters[] | select(.Engine == "redis" and (.CacheClusterId | startswith("xxxx-dev"))) | .CacheClusterId, .CacheNodeType, .CacheClusterStatus'
ノード情報の取得
$ aws elasticache describe-cache-clusters --show-cache-node-info
$ aws elasticache describe-cache-clusters --cache-cluster-id xxxxxxxx --show-cache-node-info
レプリケーショングループ一覧
aws elasticache describe-replication-groups | jq -r '.ReplicationGroups[] | select(.ReplicationGroupId | startswith("xxxx-dev")) | .ReplicationGroupId, .CacheNodeType, .Status'
レプリケーショングループのノード一覧
aws elasticache describe-replication-groups --replication-group-id xxxx-dev-cache | jq -r '.ReplicationGroups[].NodeGroups[].NodeGroupMembers[] | .CacheClusterId, .ReadEndpoint.Address'
aws elasticache describe-replication-groups | jq -r '.ReplicationGroups[] | select(.ReplicationGroupId == "xxxx-dev-cache") | .NodeGroups[].NodeGroupMembers[] | .CacheClusterId, .ReadEndpoint.Address'
#DynamoDB
テーブル作成
aws dynamodb create-table \
--table-name \
persons \
--attribute-definitions \
AttributeName=id,AttributeType=N \
--key-schema \
AttributeName=id,KeyType=HASH \
--provisioned-throughput \
ReadCapacityUnits=5,WriteCapacityUnits=5
テーブル作成(JSONファイル読み込み)
スケルトンをベースにしてJSONを作成
aws dynamodb create-table --generate-cli-skeleton > dynamodb_create_table_persons.json
vi dynamodb_create_table_persons.json
dynamodb_create_table_persons.json
{
"TableName": "persons",
"AttributeDefinitions": [
{
"AttributeName": "id",
"AttributeType": "N"
}
],
"KeySchema": [
{
"AttributeName": "id",
"KeyType": "HASH"
}
],
"ProvisionedThroughput": {
"WriteCapacityUnits": 5,
"ReadCapacityUnits": 5
}
}
aws dynamodb create-table --cli-input-json file://dynamodb_create_table_persons.json
データ追加
aws dynamodb put-item --table-name persons --item '{ "id": { "N": "1" }, "name": { "S": "hoge" } }'
データ追加(バッチ)
スケルトンをベースにしてJSONを作成
aws dynamodb batch-write-item --generate-cli-skeleton > batch_write_item_put_persons.json
vi batch_write_item_put_persons.json
batch_write_item_put_persons.json
{
"persons": [
{
"PutRequest": {
"Item": {
"id": {
"N": "2"
},
"name": {
"S": "suzuki"
}
}
}
},
{
"PutRequest": {
"Item": {
"id": {
"N": "3"
},
"name": {
"S": "yamada"
}
}
}
}
]
}
aws dynamodb batch-write-item --request-items file://batch_write_item_put_persons.json
データ削除
aws dynamodb delete-item --table-name persons --key '{"id": {"N": "1"}}'
データ削除(バッチ)
スケルトンをベースにしてJSONを作成
$ aws dynamodb batch-write-item --generate-cli-skeleton > batch_write_item_delete_persons.json
vi batch_write_item_delete_persons.json
batch_write_item_delete_persons.json
{
"persons": [
{
"DeleteRequest": {
"Key": {
"id": {
"N": "2"
}
}
}
},
{
"DeleteRequest": {
"Key": {
"id": {
"N": "3"
}
}
}
}
]
}
$ aws dynamodb batch-write-item --request-items file://batch_write_item_delete_persons.json
テーブル一覧
aws dynamodb list-tables
テーブル削除
aws dynamodb delete-table --table-name persons
#Kinesis
ストリーム一覧
$ aws kinesis list-streams
ストリーム情報の取得
$ aws kinesis describe-stream --stream-name xxxxxxxx
レコードの取得
$ aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name xxxxxxxx
{
"ShardIterator": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
$ aws kinesis get-records --shard-iterator xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#Auto Scaling
Auto Scaling グループ一覧
$ aws autoscaling describe-auto-scaling-groups
#CloudWatch Logs
ロググループ一覧
完全一致
$ aws logs describe-log-groups | jq -r '.logGroups[] | select(.logGroupName=="/aws/lambda/api-dev") | .logGroupName'
前方一致
$ aws logs describe-log-groups | jq -r '.logGroups[] | select(.logGroupName | startswith("/aws/lambda")) | .logGroupName'
LIKE
$ aws logs describe-log-groups | jq -r '.logGroups[] | select(.logGroupName | contains("dev")) | .logGroupName'
ログストリーム一覧
最新の1件を取得
$ aws logs describe-log-streams --log-group-name /aws/lambda/api-dev --query 'logStreams[?lastEventTimestamp!=`null`]' --order-by LastEventTime --descending --max-items 1 | jq -r '.[].logStreamName'
ログ取得
最新のログストリームのログを取得
$ LOG_GROUP_NAME=$(aws logs describe-log-groups | jq -r '.logGroups[] | select(.logGroupName=="/aws/lambda/api-dev") | .logGroupName') && \
LOG_STREAM_NAME=$(aws logs describe-log-streams --log-group-name ${LOG_GROUP_NAME} --query 'logStreams[?lastEventTimestamp!=`null`]' --order-by LastEventTime --descending --max-items 1 | jq -r '.[].logStreamName') && \
aws logs get-log-events --log-group-name ${LOG_GROUP_NAME} --log-stream-name ${LOG_STREAM_NAM
いいなと思ったら応援しよう!
![レイ│出願中特許:1件](https://assets.st-note.com/production/uploads/images/48089971/profile_bcd0a6347832547a8147fccdd9596907.png?width=600&crop=1:1,smart)