AWS/CLI
From Christoph's Personal Wiki
This article will contain a (random) collection of Amazon Web Services - Command Line Interface (AWS CLI) tips-and-tricks. It will also have examples using boto
and other miscellaneous tips-and-tricks.
- Find all AWS resources that do not have a tag with a key of "
project
" assigned to them:
$ aws resourcegroupstaggingapi get-resources --tags-per-page 100 --output json |\ jq '.ResourceTagMappingList[] | select(contains({Tags: [{Key: "project"} ]}) | not)' { "ResourceARN": "arn:aws:ec2:us-west-2:0000000:security-group/sg-1aaaaaaa", "Tags": [ { "Value": "xtof-aws-dev-sg", "Key": "Name" } ] }
- If you have AWS Config setup, you can do advanced SQL-like queries:
SELECT resourceId, resourceType, configuration.instanceType, configuration.placement.tenancy, configuration.imageId, tags, availabilityZone WHERE resourceType = 'AWS::EC2::Instance' AND tags.key NOT LIKE 'owner'
- Tagging:
$ aws ec2 run-instances \ --image-id ami-abc12345 \ --count 1 \ --instance-type t2.micro \ --key-name my-ssh-key \ --subnet-id subnet-aaaaaaaa \ --tag-specifications 'ResourceType=instance,Tags=[{Key=webserver,Value=production}]' 'ResourceType=volume,Tags=[{Key=cost-center,Value=cc123}]'
- CloudFormation:
$ export MY_STACK_NAME=<your_stack_name> $ aws cloudformation create-stack \ --template-body file://path/to/your/template.json \ --stack-name=${MY_STACK_NAME} # Creating a stack with tags $ aws cloudformation create-stack \ --template-body file://path/to/your/template.json \ --stack-name=${MY_STACK_NAME} \ --tags="Key=env,Value=dev" # Updating a stack with tags $ aws cloudformation update-stack \ --template-body file://path/to/your/template.json \ --stack-name=${MY_STACK_NAME} \ --tags="Key=env,Value=dev"
See: update-stack for details.