AWS CLI

From SWKLS WIKI
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Multiple Profiles

Source: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration-multi-profiles

Default Profile

Example of configuring AWS CLI before use:

aws configure 
 AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
 AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
 Default region name [None]: us-east-1
 Default output format [None]: json

Creating Multiple Profiles

If you use the command shown in the previous section, the result is a single profile named default. You can create additional configurations that you can refer to with a name by specifying the --profile option and assigning a name. The following example creates a profile named produser. You can specify credentials from a completely different account and region than the other profiles.

aws configure --profile produser
 AWS Access Key ID [None]: AKIAI44QH8DHBEXAMPLE
 AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
 Default region name [None]: us-east-1
 Default output format [None]: text

Then, when you run a command, you can omit the --profile option and use the credentials and settings stored in the <default> profile.

$ aws s3 ls

Or you can specify a --profile <profilename> and use the credentials and settings stored under that name.

$ aws s3 ls --profile produser

To update any of your settings, simply run aws configure again (with or without the --profile parameter, depending on which profile you want to update) and enter new values as appropriate.

AWS LightSail

Instance Snapshot Examples

aws lightsail get-instance-snapshots --query 'instanceSnapshots[?fromInstanceName==`Amazon_Linux-4GB-Virginia-1-swkls3`].name' --output table
aws lightsail get-instance-snapshots --query 'instanceSnapshots[?fromInstanceName==`Amazon_Linux-4GB-Virginia-1-swkls3`]' --output table
aws lightsail get-instance-snapshots --query 'instanceSnapshots[?fromInstanceName==`Amazon_Linux-4GB-Virginia-1-swkls3`].arn' --output table
aws lightsail get-instance-snapshots --query 'instanceSnapshots[].[name]'
aws lightsail get-instance-snapshots --query 'instanceSnapshots[]'
aws lightsail get-instance-snapshots --query 'instanceSnapshots[].[fromInstanceName,name]'
aws lightsail get-instance-snapshots --query 'instanceSnapshots[].[fromInstanceName,name]' --output table
aws lightsail get-instance-snapshots --query 'instanceSnapshots[?].[fromInstanceName,name]' --output table
aws lightsail get-instance-snapshots --query "sort_by(instanceSnapshots, &createdAt)[*].[fromInstanceName,name]" --output table
aws lightsail get-instance-snapshots --query 'instanceSnapshots[?fromInstanceName==`${option.Instance}`].name' --output table

Instance State Examples

aws lightsail get-instance --instance-name "Amazon_Linux-4GB-Virginia-1-swkls4" --query 'instance.state' --output text
aws lightsail get-instance --instance-name "Amazon_Linux-4GB-Virginia-1-swkls4" --query 'instance.state.name' --output text

Instance IP Address Examples

aws lightsail get-instance --instance-name "Amazon_Linux-4GB-Virginia-1-swkls4" --query 'instance.publicIpAddress' --output text
aws lightsail get-static-ip --static-ip-name "StaticIp-Virginia-1-swkls4" --query 'staticIp.ipAddress' --output text

AWS and RunDeck User Profile Examples

Create Instance

aws lightsail create-instances --profile "rundeck" --instance-names "swkls-sandbox-nano" --blueprint-id  "amazon_linux_2018_03_0_1" --availability-zone "us-east-1a" --bundle-id "nano_2_0"

Static IP Examples

aws lightsail allocate-static-ip --profile "rundeck" --static-ip-name "swkls-sandbox-ip"
aws lightsail attach-static-ip --profile "rundeck" --static-ip-name "swkls-sandbox-ip" --instance-name "swkls-sandbox-nano"

Instance Reboot

aws lightsail reboot-instance --profile "rundeck" --instance-name "swkls-sandbox-nano"

Get Static IP

(after reboot)

aws lightsail get-static-ip --profile "rundeck" --static-ip-name "swkls-sandbox-ip"

Open port 443

aws lightsail open-instance-public-ports --profile "rundeck" --instance-name "swkls-sandbox-nano" --port-info fromPort=443,protocol=TCP,toPort=443

BASH Script State Test

BASH example for testing state and waiting til running:

while STATE=$(aws lightsail get-instance --instance-name "Amazon_Linux-4GB-Virginia-1-swkls4" --query 'instance.state.name' --output text); test "$STATE" != "running"; do
    sleep 30;
done;

Create Alarm Example

This will create an alarm for instance "CentOS-sandbox" that sends an email alert when when burst capacity falls below 25 percent remaining.

aws lightsail put-alarm --alarm-name "burstcap" --metric-name "BurstCapacityPercentage" --monitored-resource-name "CentOS-sandbox" --comparison-operator "LessThanOrEqualToThreshold" --threshold 25.0 --evaluation-periods 2 --datapoints-to-alarm 2 --treat-missing-data "notBreaching" --contact-protocols "Email" --notification-triggers "ALARM"

AWS S3 API

List Objects and Keys

This will output a list of objects in a given bucket & folder and their keys (partial URL, add https://s3.amazonaws.com/bucket_name/)

aws s3api list-objects-v2 --bucket swkls.videos --profile default --prefix zoom.videos/zoom_archives/2020/ --output text > ./z2020.txt