aws-cliIniziare con aws-cli


Osservazioni

Descrizione

L'interfaccia a riga di comando (CLI) di AWS è uno strumento unificato per gestire i tuoi servizi AWS. Con un solo strumento da scaricare e configurare, puoi controllare più servizi AWS dalla riga di comando e automatizzarli tramite script.

La CLI di AWS introduce un nuovo set di semplici comandi file per trasferimenti di file efficienti da e verso Amazon S3.

Servizi supportati

Per un elenco dei servizi disponibili che è possibile utilizzare con l'interfaccia della riga di comando di AWS, vedere Servizi disponibili nella Guida ai comandi CLI di AWS.

Interfaccia della riga di comando AWS su GitHub

Puoi visualizzare e inserire il codice sorgente per la CLI di AWS su GitHub nel progetto https://github.com/aws/aws-cli .

Versioni

Versione Data di rilascio
1.10.38 2016/06/14
1.10.35 2016/06/03
1.10.33 2016/05/25
1.10.30 2016/05/18

AWS CLI Cheat sheet - Elenco di tutti i comandi CLI

Impostare

Installa CLI AWS

AWS CLI è uno strumento CLI comune per la gestione delle risorse AWS. Con questo singolo strumento possiamo gestire tutte le risorse di aws

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure

Bash one-liner

cat <file> # output a file
tee # split output into a file
cut -f 2 # print the 2nd column, per line
sed -n '5{p;q}' # print the 5th line in a file
sed 1d # print all lines, except the first
tail -n +2 # print all lines, starting on the 2nd
head -n 5 # print the first 5 lines
tail -n 5 # print the last 5 lines

expand # convert tabs to 4 spaces
unexpand -a # convert 4 spaces to tabs
wc # word count
tr ' ' \\t # translate / convert characters to other characters

sort # sort data
uniq # show only unique entries
paste # combine rows of text, by line
join # combine rows of text, by initial column value




Cloudtrail - Registrazione e controllo

http://docs.aws.amazon.com/cli/latest/reference/cloudtrail/ 5 tracce totali, con supporto per le autorizzazioni a livello di risorsa

# list all trails
aws cloudtrail describe-trails

# list all S3 buckets
aws s3 ls

# create a new trail
aws cloudtrail create-subscription \
    --name awslog \
    --s3-new-bucket awslog2016

# list the names of all trails
aws cloudtrail describe-trails --output text | cut -f 8

# get the status of a trail
aws cloudtrail get-trail-status \
    --name awslog

# delete a trail
aws cloudtrail delete-trail \
    --name awslog

# delete the S3 bucket of a trail
aws s3 rb s3://awslog2016 --force

# add tags to a trail, up to 10 tags
aws cloudtrail add-tags \
    --resource-id awslog \
    --tags-list "Key=log-type,Value=all"

# list the tags of a trail
aws cloudtrail list-tags \
    --resource-id-list 

# remove a tag from a trail
aws cloudtrail remove-tags \
    --resource-id awslog \
    --tags-list "Key=log-type,Value=all"




SONO

utenti

https://blogs.aws.amazon.com/security/post/Tx15CIT22V4J8RP/How-to-rotate-access-keys-for-IAM-users http://docs.aws.amazon.com/IAM/latest/UserGuide /reference_iam-limits.html Limits = 5000 utenti, 100 gruppi, 250 ruoli, 2 chiavi di accesso / utente

http://docs.aws.amazon.com/cli/latest/reference/iam/index.html

# list all user's info
aws iam list-users

# list all user's usernames
aws iam list-users --output text | cut -f 6

# list current user's info
aws iam get-user

# list current user's access keys
aws iam list-access-keys

# crate new user
aws iam create-user \
    --user-name aws-admin2

# create multiple new users, from a file
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
    aws iam create-user \
        --user-name $userName
done

# list all users
aws iam list-users --no-paginate

# get a specific user's info
aws iam get-user \
    --user-name aws-admin2

# delete one user
aws iam delete-user \
    --user-name aws-admin2

# delete all users
# allUsers=$(aws iam list-users --output text | cut -f 6);
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
    aws iam delete-user \
        --user-name $userName
done

Politica password

http://docs.aws.amazon.com/cli/latest/reference/iam/

# list policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html
aws iam get-account-password-policy

# set policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html
aws iam update-account-password-policy \
    --minimum-password-length 12 \
    --require-symbols \
    --require-numbers \
    --require-uppercase-characters \
    --require-lowercase-characters \
    --allow-users-to-change-password

# delete policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html
aws iam delete-account-password-policy

Chiavi di accesso

http://docs.aws.amazon.com/cli/latest/reference/iam/

# list all access keys
aws iam list-access-keys

# list access keys of a specific user
aws iam list-access-keys \
    --user-name aws-admin2

# create a new access key
aws iam create-access-key \
    --user-name aws-admin2 \
    --output text | tee aws-admin2.txt

# list last access time of an access key
aws iam get-access-key-last-used \
    --access-key-id AKIAINA6AJZY4EXAMPLE

# deactivate an acccss key
aws iam update-access-key \
    --access-key-id AKIAI44QH8DHBEXAMPLE \
    --status Inactive \
    --user-name aws-admin2

# delete an access key
aws iam delete-access-key \
    --access-key-id AKIAI44QH8DHBEXAMPLE \
    --user-name aws-admin2

Gruppi, politiche, politiche gestite

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html http://docs.aws.amazon.com/cli/latest/reference/iam/

# list all groups
aws iam list-groups

# create a group
aws iam create-group --group-name FullAdmins

# delete a group
aws iam delete-group \
    --group-name FullAdmins

# list all policies
aws iam list-policies

# get a specific policy
aws iam get-policy \
    --policy-arn <value>

# list all users, groups, and roles, for a given policy
aws iam list-entities-for-policy \
    --policy-arn <value>

# list policies, for a given group
aws iam list-attached-group-policies \
    --group-name FullAdmins

# add a policy to a group
aws iam attach-group-policy \
    --group-name FullAdmins \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# add a user to a group
aws iam add-user-to-group \
    --group-name FullAdmins \
    --user-name aws-admin2

# list users, for a given group
aws iam get-group \
    --group-name FullAdmins

# list groups, for a given user
aws iam list-groups-for-user \
    --user-name aws-admin2

# remove a user from a group
aws iam remove-user-from-group \
    --group-name FullAdmins \
    --user-name aws-admin2

# remove a policy from a group
aws iam detach-group-policy \
    --group-name FullAdmins \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# delete a group
aws iam delete-group \
    --group-name FullAdmins




EC2

coppie di chiavi

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

# list all keypairs
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html
aws ec2 describe-key-pairs

# create a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html
aws ec2 create-key-pair \
    --key-name <value>

# create a new private / public keypair, using RSA 2048-bit
ssh-keygen -t rsa -b 2048

# import an existing keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html
aws ec2 import-key-pair \
    --key-name keyname_test \
    --public-key-material file:///home/apollo/id_rsa.pub

# delete a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html
aws ec2 delete-key-pair \
    --key-name <value>

Gruppi di sicurezza

http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html

# list all security groups
aws ec2 describe-security-groups

# create a security group
aws ec2 create-security-group \
    --vpc-id vpc-1a2b3c4d \
    --group-name web-access \
    --description "web access"

# list details about a securty group
aws ec2 describe-security-groups \
    --group-id sg-0000000

# open port 80, for everyone
aws ec2 authorize-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/24

# get my public ip
my_ip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo $my_ip

# open port 22, just for my ip
aws ec2 authorize-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr $my_ip/24

# remove a firewall rule from a group
aws ec2 revoke-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/24

# delete a security group
aws ec2 delete-security-group \
    --group-id sg-00000000

istanze

http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html

# list all instances (running, and not running)
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html
aws ec2 describe-instances

# create a new instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html
aws ec2 run-instances \
    --image-id ami-f0e7d19a \    
    --instance-type t2.micro \
    --security-group-ids sg-00000000 \
    --dry-run

# stop an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html
aws ec2 terminate-instances \
    --instance-ids <instance_id>

# list status of all instances
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html
aws ec2 describe-instance-status

# list status of a specific instance
aws ec2 describe-instance-status \
    --instance-ids <instance_id>

tag

# list the tags of an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html
aws ec2 describe-tags

# add a tag to an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html
aws ec2 create-tags \
    --resources "ami-1a2b3c4d" \
    --tags Key=name,Value=debian

# delete a tag on an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-tags.html
aws ec2 delete-tags \
    --resources "ami-1a2b3c4d" \
    --tags Key=Name,Value=




CloudWatch

Registra gruppi

http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html http://docs.aws.amazon.com/cli/latest/reference/logs/index.html#cli-aws-logs

crea un gruppo

http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html

aws logs create-log-group \
    --log-group-name "DefaultGroup"
elenca tutti i gruppi di log

http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-groups.html

aws logs describe-log-groups

aws logs describe-log-groups \
    --log-group-name-prefix "Default"
cancella un gruppo

http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html

aws logs delete-log-group \
    --log-group-name "DefaultGroup"

Log Stream

# Log group names can be between 1 and 512 characters long. Allowed
# characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen),
# '/' (forward slash), and '.' (period).

# create a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-stream.html
aws logs create-log-stream \
    --log-group-name "DefaultGroup" \
    --log-stream-name "syslog"

# list details on a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-streams.html
aws logs describe-log-streams \
    --log-group-name "syslog"

aws logs describe-log-streams \
    --log-stream-name-prefix "syslog"

# delete a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-stream.html
aws logs delete-log-stream \
    --log-group-name "DefaultGroup" \
    --log-stream-name "Default Stream"

Completamento AWS per Ubuntu con Bash

La seguente utility può essere utilizzata per il completamento automatico dei comandi:

$ which aws_completer
/usr/bin/aws_completer

$ complete -C '/usr/bin/aws_completer' aws
 

Per le future sessioni di shell, aggiungi questo al tuo ~ / .bashrc

$ echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
 

Per verificare, digitare:

$ aws ec
 

Premi il tasto [TAB], dovrebbe aggiungere 2 automaticamente:

$ aws ec2
 

Creare un nuovo profilo

Per impostare un nuovo profilo credenziale con il nome myprofile :

$ aws configure --profile myprofile
AWS Access Key ID [None]: ACCESSKEY
AWS Secret Access Key [None]: SECRETKEY
Default region name [None]: REGIONNAME
Default output format [None]: text | table | json

Per l'ID della chiave di accesso AWS e il segreto, crea un utente IAM nella console AWS e genera le chiavi per esso.

Region sarà la regione predefinita per i comandi nel formato eu-west-1 o us-east-1 .

Il formato di output predefinito può essere text , table o json .

Ora puoi usare il nome del profilo in altri comandi usando l'opzione --profile , ad esempio:

$ aws ec2 describe-instances --profile myprofile

Le librerie AWS per altre lingue (ad es. aws-sdk per Ruby o boto3 per Python) hanno opzioni per usare il profilo che crei anche con questo metodo. Ad esempio, la creazione di una nuova sessione in boto3 può essere fatta in questo modo, boto3.Session(profile_name:'myprofile') e utilizzerà le credenziali create per il profilo.

I dettagli della tua configurazione di aws-cli possono essere trovati in ~/.aws/config e ~/.aws/credentials (su linux e mac-os). Questi dettagli possono essere modificati manualmente da lì.

Installazione e configurazione

Esistono diversi modi per installare la CLI AWS sulla tua macchina, a seconda del sistema operativo e dell'ambiente in uso:

Su Microsoft Windows: utilizzare il programma di installazione MSI. Su Linux, OS X o Unix - usa pip (un gestore di pacchetti per il software Python) o installa manualmente con il programma di installazione in bundle.

Installa utilizzando pip:

Avrai bisogno di python per essere installato (versione 2, 2.6.5 +, 3 o 3.3+). Controllare con

python --version

pip --help
 

Dato che entrambi sono installati, utilizzare il seguente comando per installare aws cli.

sudo pip install awscli
 

Installa su Windows La CLI AWS è supportata su Microsoft Windows XP o versioni successive. Per gli utenti Windows, il pacchetto di installazione MSI offre un modo pratico e familiare per installare la CLI di AWS senza installare altri prerequisiti. Gli utenti Windows dovrebbero utilizzare il programma di installazione MSI a meno che non stiano già utilizzando pip per la gestione dei pacchetti.

Eseguire il programma di installazione MSI scaricato. Segui le istruzioni che appaiono.

Per installare la CLI di AWS utilizzando il programma di installazione in bundle

Prerequisiti:

  • Linux, OS X o Unix
  • Python 2 versione 2.6.5+ o Python 3 versione 3.3+
  1. Scarica il programma di installazione in bundle CLA AWS usando wget o curl.

  2. Decomprimere il pacchetto.

  3. Esegui l'eseguibile di installazione.

Su Linux e OS X, ecco i tre comandi che corrispondono a ciascun passo:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
 

Installa utilizzando HomeBrew su OS X:

Un'altra opzione per OS X

brew install awscli
 

Testare l'installazione della CLI di AWS

Verificare che la CLI sia installata correttamente visualizzando il file della guida. Aprire un terminale, shell o prompt dei comandi, immettere aws help e premere Invio:

$ aws help
 

Configurazione della CLI AWS

Una volta completata l'installazione, è necessario configurarla. Avrai bisogno della chiave di accesso e della chiave segreta che ottieni quando crei il tuo account su aws. È inoltre possibile specificare un nome regione predefinito e un tipo di output predefinito (text | table | json).

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
 

Aggiornamento dello strumento CLI

Amazon rilascia periodicamente nuove versioni di AWS Tool. Se lo strumento è stato installato utilizzando lo strumento Python Pip, il seguente comando controllerà il repository remoto per gli aggiornamenti e lo applicherà al sistema locale.

$ pip install awscli --upgrade
 

Elenca i bucket S3

aws s3 ls
 

Usa un profilo con nome

aws --profile myprofile s3 ls
 

Elenca tutti gli oggetti in un bucket, inclusi gli oggetti nelle cartelle, con le dimensioni in formato leggibile dall'utente e un riepilogo delle proprietà dei bucket alla fine -

aws s3 ls --recursive --summarize --human-readable s3://<bucket_name>/
 

Usando i comandi cli di aws

La sintassi per l'utilizzo di aws cli è la seguente:

aws [options] <command> <subcommand> [parameters]
 

Alcuni esempi che utilizzano il comando 'ec2' e il sottocomando 'describe-instances':

aws ec2 describe-instances

aws ec2 describe-instances --instance-ids <your-id>
 

Esempio con un falso id:

aws ec2 describe-instances --instance-ids i-c71r246a