aws-cli Samouczek
Rozpoczęcie pracy z aws-cli
Szukaj…
Uwagi
Opis
Interfejs wiersza polecenia AWS (CLI) to ujednolicone narzędzie do zarządzania usługami AWS. Za pomocą tylko jednego narzędzia do pobierania i konfiguracji możesz kontrolować wiele usług AWS z wiersza poleceń i automatyzować je za pomocą skryptów.
Interfejs AWS CLI wprowadza nowy zestaw prostych poleceń plików w celu wydajnego przesyłania plików do iz Amazon S3.
Obsługiwane usługi
Aby uzyskać listę dostępnych usług, których można używać z interfejsem wiersza polecenia AWS, zobacz Dostępne usługi w podręczniku poleceń AWS CLI.
Interfejs wiersza polecenia AWS na GitHub
Możesz wyświetlić - i rozwidlić - kod źródłowy interfejsu AWS CLI na GitHub w https://github.com/aws/aws-cli projekcie.
Wersje
Instalacja i konfiguracja
Istnieje wiele różnych sposobów instalowania interfejsu AWS CLI na komputerze, w zależności od używanego systemu operacyjnego i środowiska:
W systemie Microsoft Windows - użyj instalatora MSI. W systemie Linux, OS X lub Unix - użyj narzędzia pip (menedżera pakietów dla oprogramowania Python) lub zainstaluj ręcznie za pomocą dołączonego instalatora.
Zainstaluj za pomocą pip:
Musisz zainstalować Pythona (wersja 2, 2.6.5 +, 3 lub 3.3+). Sprawdź z
python --version
pip --help
Biorąc pod uwagę, że oba są zainstalowane, użyj następującego polecenia, aby zainstalować aws cli.
sudo pip install awscli
Zainstaluj w systemie Windows Interfejs AWS CLI jest obsługiwany w systemie Microsoft Windows XP lub nowszym. Dla użytkowników systemu Windows pakiet instalacyjny MSI oferuje znany i wygodny sposób instalacji interfejsu AWS CLI bez instalowania innych wymagań wstępnych. Użytkownicy systemu Windows powinni korzystać z instalatora MSI, chyba że już używają pip do zarządzania pakietami.
Uruchom pobrany instalator MSI. Postępuj zgodnie z wyświetlanymi instrukcjami.
Aby zainstalować interfejs AWS CLI za pomocą dołączonego instalatora
Wymagania wstępne:
- Linux, OS X lub Unix
- Python 2 wersja 2.6.5+ lub Python 3 wersja 3.3+
Pobierz pakiet instalacyjny AWS CLI za pomocą wget lub curl.
Rozpakuj paczkę.
Uruchom plik wykonywalny instalacji.
W systemach Linux i OS X są trzy polecenia odpowiadające każdemu krokowi:
$ 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
Zainstaluj za pomocą HomeBrew na OS X:
Kolejna opcja dla OS X
brew install awscli
Przetestuj instalację AWS CLI
Potwierdź poprawność instalacji interfejsu CLI, przeglądając plik pomocy. Otwórz terminal, powłokę lub wiersz poleceń, wpisz aws help i naciśnij Enter:
$ aws help
Konfigurowanie interfejsu AWS CLI
Po zakończeniu instalacji musisz ją skonfigurować. Będziesz potrzebował swojego klucza dostępu i tajnego klucza, który otrzymasz, gdy tworzysz konto w aws. Możesz także określić domyślną nazwę regionu i domyślny typ wyniku (tekst | tabela | 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
Aktualizacja narzędzia CLI
Amazon okresowo wydaje nowe wersje Narzędzia AWS. Jeśli narzędzie zostało zainstalowane za pomocą narzędzia Python Pip, następujące polecenie sprawdzi, czy w zdalnym repozytorium nie ma aktualizacji, i zastosuje je w systemie lokalnym.
$ pip install awscli --upgrade
Tworzenie nowego profilu
Aby skonfigurować nowy profil danych logowania o nazwie 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
Dla identyfikatora i hasła klucza dostępu AWS utwórz użytkownika IAM w konsoli AWS i wygeneruj dla niego klucze.
Region będzie domyślnym regionem dla poleceń w formacie eu-west-1 lub us-east-1 .
Domyślnym formatem wyjściowym może być text , table lub json .
Możesz teraz używać nazwy profilu w innych poleceniach, używając opcji --profile , np .:
$ aws ec2 describe-instances --profile myprofile
Biblioteki AWS dla innych języków (np. aws-sdk dla Ruby lub boto3 dla Python) mają opcje korzystania z profilu utworzonego za pomocą tej metody. Np. boto3 nowej sesji w boto3 można zrobić w następujący sposób: boto3.Session(profile_name:'myprofile') i użyje poświadczeń utworzonych dla profilu.
Szczegóły konfiguracji aws-cli można znaleźć w ~/.aws/config i ~/.aws/credentials (na Linux i Mac-os). Dane te można edytować ręcznie stamtąd.
Korzystanie z poleceń aws cli
Składnia użycia aws cli jest następująca:
aws [options] <command> <subcommand> [parameters]
Kilka przykładów użycia polecenia „ec2” i podkomendy „opisz-instancje”:
aws ec2 describe-instances
aws ec2 describe-instances --instance-ids <your-id>
Przykład z fałszywym identyfikatorem:
aws ec2 describe-instances --instance-ids i-c71r246a
Wyświetl wiadra S3
aws s3 ls
Użyj nazwanego profilu
aws --profile myprofile s3 ls
Wyświetl wszystkie obiekty w segmencie, w tym obiekty w folderach, z rozmiarem w formacie czytelnym dla człowieka, a na końcu podsumowanie właściwości segmentów -
aws s3 ls --recursive --summarize --human-readable s3://<bucket_name>/
Narzędzie do tworzenia AWS dla Ubuntu z Bash
Do automatycznego uzupełniania poleceń można użyć następującego narzędzia:
$ which aws_completer
/usr/bin/aws_completer
$ complete -C '/usr/bin/aws_completer' aws
W przypadku przyszłych sesji powłoki rozważ dodanie tego do ~ / .bashrc
$ echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
Aby sprawdzić, wpisz:
$ aws ec
Naciśnij klawisz [TAB], należy dodać 2 automatycznie:
$ aws ec2
Ściągawka AWS CLI - Lista wszystkich poleceń CLI
Ustawiać
Zainstaluj AWS CLI
AWS CLI to wspólne narzędzie CLI do zarządzania zasobami AWS. Za pomocą tego jednego narzędzia możemy zarządzać wszystkimi zasobami aws
sudo apt-get install -y python-dev python-pip sudo pip install awscli aws --version aws configure
Bash one-liners
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 - rejestrowanie i audyt
http://docs.aws.amazon.com/cli/latest/reference/cloudtrail/ 5 Łącznie tras, z obsługą uprawnień na poziomie zasobów
# 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"
JESTEM
Użytkownicy
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 Limity = 5000 użytkowników, 100 grup, 250 ról, 2 klucze dostępu / użytkownik
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
Polityka haseł
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
Klucze dostępu
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
Grupy, polityki, zarządzane polityki
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
pary kluczy
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>
Grupy bezpieczeństwa
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
Instancje
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>
Tagi
# 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
Zaloguj grupy
http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html http://docs.aws.amazon.com/cli/latest/reference/logs/index.html#cli-aws-logs
tworzyć grupęhttp://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html
aws logs create-log-group \
--log-group-name "DefaultGroup"
wyświetl wszystkie grupy dzienników 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"
usuń grupę http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html
aws logs delete-log-group \
--log-group-name "DefaultGroup"
Loguj strumienie
# 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"