AWS CLI
AWS 命令列工具使用筆記。
Command
aws
檢查 CLI 版本:
aws --versioncdk
設定帳號:
cdk bootstrap aws://ACCOUNT-NUMBER/REGIONconfigure
取得 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-profilesevent
取得特定 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 defaultsts
測試 AWS profile keys 連線:
aws sts get-caller-identitysam
版本檢查:
# PowerShell
sam --version
# Git Bash
sam.cmd --version引導式部署:
sam deploy --guidedService 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 -sConfiguration 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-1EC2
列出所有 EC2:
aws ec2 describe-instancesaws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --output text列出 keypairs:
aws ec2 describe-key-pairsIAM
列出使用者:
aws iam list-usersKinesis 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-outLambda
檢查 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.txtMediaLive
顯示 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 --recursiveUse Cases
DynamoDB Local Service
Connect
PowerShell:
java -D"java.library.path=./DynamoDBLocal_lib" -jar DynamoDBLocal.jar -port 8888Linux:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDbTable 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:8000Change Profile User
Windows
CMD:
set AWS_PROFILE=profile_namePowerShell:
setx AWS_PROFILE profile_nameGit Bash:
export AWS_PROFILE=defaultLinux
export AWS_PROFILE=profile_nameRetrieve Instance Type
curl http://169.254.169.254/latest/meta-data/instance-type