===== awscli cookbook =====
== CloudFormation ==
# validate json
aws cloudformation validate-template --template-body file://./cfn.json
# create stack
aws cloudformation create-stack --stack-name myteststack \
--template-body file://./cfn.json \
--parameters ParameterKey=Product,ParameterValue=dcai-cfn-product \
ParameterKey=Application,ParameterValue=dcai-awesome-app
== DynamoDB ==
# Create dynamodb instance
aws dynamodb create-table --table-name dcai-dynamodb-instance \
--attribute-definitions AttributeName=buildID,AttributeType=S \
AttributeName=planID,AttributeType=S \
--key-schema AttributeName=planID,KeyType=HASH \
AttributeName=buildID,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
# Delete dynamodb instance
aws dynamodb delete-table --table-name dcai-dynamodb-instance
== Kinesis ==
# create kinesis stream
aws --region ap-southeast-2 kinesis create-stream --stream-name dcai-kinesis-instance --shard-count 1
== S3 ==
# list buckets
aws ls
# list files in bucket
aws s3 ls --recursive --summarize --human-readable s3://bucket-name
# make a bucket
aws s3 mb s3://dcai
# remove file
aws s3 rm s3://bucketname/pathtofile.txt
# cp file
aws s3 cp ./localfile.txt s3://bucketname/pathtofile.txt
# bulk copy
aws s3 cp ./local/dir/ s3://picsbucket/ --recursive --include '*.jpg' --include '*.png' \
--exclude '.git/*' --exclude 'node_modules/*'
== EC2 ==
# find terminated instances
aws ec2 describe-instances --filter 'Name=instance-state-name,Values=terminated'
aws ec2 describe-instances | jq '.Reservations[] | {O: .OwnerId, State: .Instances[0].State}'
# search amazon linux image id
aws ec2 describe-images --filters "Name=description, Values=Amazon Linux AMI 2016.03.*"\
--query "Images[*].ImageId" --output text
# find all micro instances
aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro"
# get all public names
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].PublicDnsName" \
--output text