User Tools

Site Tools


cloud:aws_cli_cheatsheet

[CHEATSHEET] aws cli

Very initial commands

Configure sso

Use a config file, you had been warning.

aws configure sso

login sso

aws sso login --profile ${PROFILE_NAME}

Credentials

Export credentials:

eval $(aws configure export-credentials --profile ${PROFILE_NAME} --format env)

That will export:

export AWS_ACCESS_KEY_ID=ASIA5***********PU
export AWS_SECRET_ACCESS_KEY=5e1F****************************YJ
export AWS_SESSION_TOKEN=IQoJb3J***********************************************************McuBR3R6E7Y=
export AWS_CREDENTIAL_EXPIRATION=2024-08-19T21:32:31+00:00

S3

Get object

aws s3api get-object \
    --bucket BUCKET_NAME \
    --key int/dodger_test.jpg \
    dodger_test.jpg

Get object Version

aws s3api get-object \
    --bucket BUCKET_NAME \
    --key int/dodger_test.jpg \
    --version-id "32zEKPVEBUcVbd2VFHgtJx.07hmCIjmd" \
    dodger_test.jpg

put object

aws s3api put-object --bucket BUCKET_NAME --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2

List object versions

Full:

aws s3api list-object-versions --bucket BUCKET_NAME --prefix object_name

Just VersionId and LastModified timestamp:

aws s3api list-object-versions --bucket BUCKET_NAME --prefix object_name | jq '.Versions[] | "\(.LastModified) \(.VersionId)"'

Restore object from older version

aws s3api restore-object \
    --bucket BUCKET_NAME \
    --key dodger_test.jpg \
    --version-id "32zEKPVEBUcVbd2VFHgtJx.07hmCIjmd"

If you get:

An error occurred (InvalidObjectState) when calling the RestoreObject operation: Restore is not allowed for the object's current storage class

You have to overwrite it…

RDS

Information

List RDS instances

aws rds describe-db-instances \
  --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'

List instance logs

aws rds describe-db-log-files --db-instance-identifier ${DB_IDENTIFIER}

Sort version:

aws rds describe-db-log-files --db-instance-identifier ${DB_IDENTIFIER} --query 'DescribeDBLogFiles[].LogFileName'

Download instance logs

LOGFILE="error/mysql-error.log"
aws rds download-db-log-file-portion \
    --db-instance-identifier ${DB_IDENTIFIER} \
    --starting-token 0 --output text \
    --log-file-name "${LOGFILE}" > "$(basename ${LOGFILE})"

Parameters and parameters groups

Change Verbosity

  • ParameterValue= 1,2,3 as: terse, default, verbose
PARAMETER_GROUP="parameter-group-name"
# Modify log_error_verbosity on a DB parameter group
aws rds modify-db-parameter-group \
  --db-parameter-group-name ${PARAMETER_GROUP} \
  --parameters "ParameterName=log_error_verbosity,ParameterValue=3,ApplyMethod=immediate"
# Modify log_error_verbosity on a DB cluster parameter group
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name ${PARAMETER_GROUP} \
  --parameters "ParameterName=log_error_verbosity,ParameterValue=<new_value>,ApplyMethod=immediate"

Assign/change parameter group for DB

aws rds modify-db-instance \
    --db-instance-identifier ${DB_IDENTIFIER} \
    --db-parameter-group-name ${PARAMETER_GROUP} \
    --apply-immediately

CPU

Setting the number of CPU cores for a DB instance

aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--processor-features "Name=coreCount,Value=4" \
--apply-immediately

Setting the number of CPU cores and disabling multiple threads for a DB instance

aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--processor-features "Name=coreCount,Value=4" "Name=threadsPerCore,Value=1" \
--apply-immediately

Viewing the valid processor values for a DB instance class

aws rds describe-orderable-db-instance-options --engine oracle-ee --db-instance-class db.r3.large

Returning to default processor settings for a DB instance

aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--use-default-processor-features \
--apply-immediately

Returning to the default number of CPU cores for a DB instance

aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--processor-features "Name=coreCount,Value=DEFAULT" \
--apply-immediately

Returning to the default number of threads per core for a DB instance

aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--processor-features "Name=threadsPerCore,Value=DEFAULT" \
--apply-immediately

COSTS

Reserved db instance offers

aws rds describe-reserved-db-instances-offerings

Purchase a db instance offer

aws rds purchase-reserved-db-instances-offering \
    --reserved-db-instances-offering-id 649fd0c8-cf6d-47a0-bfa6-060f8e75e95f \
    --reserved-db-instance-id MyReservation

List account reserved db instances

aws rds describe-reserved-db-instances

EC2

Create keypair

snippet.bash
aws ec2 create-key-pair --key-name bofher_keypair --query 'KeyMaterial' --output text > AWS_bofher_keypair.pem
chmod 400 AWS_bofher_keypair.pem

Then show info:

snippet.bash
aws ec2 describe-vpcs

Result is a json, so you can filter it like:

snippet.bash
aws ec2 describe-vpcs | jq  ".Vpcs[].VpcId"

Create VPC

snippet.bash
aws ec2 create-vpc --cidr-block 10.0.0.0/24 --query Vpc.VpcId --output text

Then show info:

snippet.bash
aws ec2 describe-key-pairs --key-name bofher_keypair

security group

for firewall rules

Create security group

snippet.bash
aws ec2 create-security-group --group-name test_sg --description "test_security_group" --vpc-id vpc-04738d91cd27e3a68

To easy your live, export the security group id:

snippet.bash
export SG_ID="sg-07332f264769ee59c"

Check:

snippet.bash
aws ec2 describe-security-groups --group-ids  ${SG_ID}

Grant accesss to your public ip only

snippet.bash
aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol tcp --port 22 --cidr $(curl ifconfig.me)/32

You will see something like:

snippet.json
{
    "Return": true,
    "SecurityGroupRules": [
        {
            "SecurityGroupRuleId": "sgr-0a20e51c280054d45",
            "GroupId": "sg-07332f264769ee59c",
            "GroupOwnerId": "183631327649",
            "IsEgress": false,
            "IpProtocol": "tcp",
            "FromPort": 22,
            "ToPort": 22,
            "CidrIpv4": "149.102.236.197/32"
        }
    ]
}

Route 53 (r53/DNS)

List Zones

List zone names

snippet.bash
aws route53 list-hosted-zones --query "HostedZones[].Name"

List zone names+id

snippet.bash
aws route53 list-hosted-zones --query "*[].{Id:Id,Name:Name}"

List zones with all the info

Everything:

snippet.bash
aws route53 list-hosted-zones

Zone Info

snippet.bash
export ZONE_ID="/hostedzone/Z3QKBJBC4L942X"
aws route53 get-hosted-zone --id "${ZONE_ID}"

Zone DNS records

List DNS records for 1 zone

snippet.bash
aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_ID} --query '*[].Name'

List ALL dns records from ALL zones

snippet.bash
aws route53 list-hosted-zones --query "*[].Id" | grep "hosted" | awk -F \" '{print $2}' | while read HOSTEDZONE ; do echo "#### ${HOSTEDZONE}" ; aws route53 list-resource-record-sets --hosted-zone-id "${HOSTEDZONE}" --query '*[].Name' ; done

List destination of the dns records

snippet.bash
aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_ID} --query '*[].ResourceRecords[].Value'

Other Related commands

Get information about AWS region

aws ec2 describe-availability-zones --region ${REGION_NAME}
 
 
 
 
 
 
cloud/aws_cli_cheatsheet.txt · Last modified: 2024/10/23 16:16 by dodger