Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

AWS CLI

aws help
Pomoc najwyższego poziomu
aws ec2 help
Wymienia polecenia dla wskazanej usługi
aws ec2 describe-instances help
Opis parametrów dla wskazanego polecenia i usługi

EC2

aws ec2 describe-regions
Wymienia dostępne regiony
aws ec2 describe-availability-zones --region us-east-1
Wymienia strefy dostępności wskazanego regionu i ich status (czy dostępny)

Grupy reguł firewalla

aws ec2 create-security-group --group-name NazwaGrupy --description OpisGrupy
Tworzy nową grupę reguł firewalla, zwraca identyfikator grupy
aws ec2 authorize-security-group-ingress --group-name NazwaGrupy --protocol tcp --port 22 --cidr 0.0.0.0/0
Dodaje regułę do grupy reguł firewalla
aws ec2 describe-security-groups
Wyświetla informacje o grupach reguł firewalla. Opcja --group-names pozwala ograniczyć wynik do wskazanych grup
aws ec2 delete-security-group --group-name NazwaGrupy
Usuwa wskazaną grupę reguł firewalla. Zamiast nazwy grupy można użyć parametru --group-id i podać identyfikator grupy.

Klucze SSH

aws ec2 create-key-pair --key-name NazwaKlucza
Tworzy nowy klucz SSH, zwraca JSON którego atrybut KeyMaterial należy zachować w pliku *.pem
aws ec2 describe-key-pairs
Wyświetla listę wszystkich kluczy SSH i ich skrótów (ang. fingerprings). Można pobrać informację o jednym kluczu dodając parametr --key-name.
aws ec2 delete-key-pair --key-name NazwaKlucza
Usuwa klucz SSH
aws ec2 import-key-pair --key-name NazwaKlucza --public-key-material file://MyKey.pub
Pozwala załadować utworzony przez siebie klucz publiczny SSH do chmury Amazonu.

Instancje EC2

aws ec2 describe-images --image-ids ami-8fd760f6
Wyświetla informacje o wskazanym obrazie AMI
aws ec2 run-instances --image-id ami-8fd760f6 --instance-type t2.micro --count 1 --key-name NazwaKlucza --security-groups NazwaGrupy
Uruchamia instancję, zwraca m.in. InstanceId
aws ec2 describe-instance-status --instance-id id
Zwraca status wskazanej instancji (pending/running/shutting down/terminated/stopping/stopped)
aws ec2 create-tags --resources InstanceId --tags Key=Chapter,Value=2 Key=Environment,Value=Production
Przyczepia tagi do instancji
aws ec2 describe-tags --filters „Name=resource-id,Values=i-0f6ed7e30cf57f488”
Wyświetla tagi skojarzone z danym zasobem (np. instancją EC2). Bez parametru filters wyświetla tagi wszystkich zasobów w regionie.
aws ec2 delete-tags --resources i-0f6ed7e30cf57f488 --tags Key=Chapter,Value=
Usuwa wskazany tag ze wskazanego zasobu
aws ec2 describe-instances
Opis działających instancji
aws ec2 start-instances --instance-ids i-3dd4f812
aws ec2 stop-instances --instance-ids i-3dd4f812
aws ec2 terminate-instances --instance-ids i-3dd4f812
Zatrzymuje lub terminuje wskazaną instancję EC2
aws ec2 create-snapshot --volume-id vol-fd3c0aba
Tworzy snapshot wskazanego wolumenu EBS. W wyniku dostajesz JSONa z identyfikatorem snapshota (klucz SnapshotId)
aws ec2 describe-snapshots --snapshot-ids vol-fd3c0aba
Opis wskazanego snapshota, w szczególności stan (czy już się utworzył)
aws ec2 delete-snapshot --snapshot-id vol-fd3c0aba
Usuwa wskazany snapshot
aws ec2 create-image --instance-id i-5e4f687f --name jenkins-multiaz
Tworzy nowy obraz AMI na podstawie wskazanej działającej instancji
aws ec2 describe-images --image-id ami-0dba4266
Dla wskazanego obrazu AMI wyświetla m.in. jego status (czy jest już gotowy) i identyfikator odpowiadającego temu obrazowi
aws ec2 deregister-image --image-id ami-0dba4266
Wyrejestrowuje wskazany obraz AMI; zapewne jeszcze będziesz chciał usunąć odpowiadający mu snapshot
aws autoscaling put-scheduled-update-group-action --scheduled-action-name ScaleTo4 --auto-scaling-group-name webapp --start-time „2016-01-01T12:00:00Z” --desired-capacity 4
Definiuje regułę grupy autoskalowania. O wskazanej dacie liczba serwerów w grupie ma zostać ustawiona na 4. Można zdefiniować regułę cykliczną, wtedy zamiast start-time należy podać parametr recurrence z wartością taką samą jak w UNIXowym cronie, np. 0 20 * * * oznacza „codziennie o godz. 20”.

RDS

aws rds describe-db-instances
Szczegóły działających instancji RDS, w szczególności parametry z jakimi zostały uruchomione
aws rds create-db-snapshot --db-snapshot-identifier wordpress-manual-snapshot --db-instance-identifier awsinaction-db
Tworzy ręczny backup (snapshot) wskazanej instancji RDS
aws rds describe-db-snapshots --db-snapshot-identifier wordpress-manual-snapshot
Sprawdza bieżący stan ręcznie wykonanego snapshota z poprzedniego polecenia
aws rds describe-db-snapshots --snapshot-type automated --db-instance-identifier awsinaction-db
Informacje o automatycznie wykonanych backupach wskazanej instancji RDS
aws rds copy-db-snapshot --source-db-snapshot-identifier rds:awsinaction-db-2017-12-14-01-44 --target-db-snapshot-identifier wordpress-copy-snapshot
Kopiuje wskazany automatyczny backup; kopia nie zostanie później automatycznie usunięta
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier awsinaction-db-restore --db-snapshot-identifier wordpress-manual-snapshot --db-subnet-group-name subnet-e15a94b3
Tworzy nową instancję RDS ze wskazanego backupu
aws rds restore-db-instance-to-point-in-time --target-db-instance-identifier awsinaction-db-restore-time --source-db-instance-identifier awsinaction-db --restore-time 2015-05-23T12:55:00Z --db-subnet-group-name subnet-e15a94b3
Tworzy nową instancję RDS z danymi wskazanej instancji RDS z określonego punktu w czasie (od momentu pierwszego dostępnego backupu do ok. 5 minut temu)
aws rds copy-db-snapshot --source-db-snapshot-identifier arn:aws:rds:us-east-1:$AccountId:snapshot:wordpress-manual-snapshot --target-db-snapshot-identifier wordpress-manual-snapshot --region eu-west-1
Kopiuje wskazany snapshot ze wskazanego konta AWS w regionie us-east-1 do regionu eu-west-1
aws rds delete-db-instance --db-instance-identifier awsinaction-db-restore --skip-final-snapshot
Usuwa instancję RDS, unikając tworzenia finalnego snapshota
aws rds delete-db-snapshot --db-snapshot-identifier wordpress-manual-snapshot
Usuwa wskazany snapshot instancji RDS
aws rds create-db-instance-read-replica --db-instance-identifier awsinaction-db-read --source-db-instance-identifier awsinaction-db
Tworzy nową instancję RDS będącą asynchroniczną repliką do odczytu wskazanej innej instancji RDS (tylko MySQL i PostgreSQL)
aws rds promote-read-replica --db-instance-identifier awsinaction-db-read
Promuje replikę do odczytu czyniąc ją instancją główną. Możemy tak zrobić aby np. założyć indeksy na dotychczasowej instancji głównej i na ten czas przekierować ruch na inną instancję

CloudFormation

aws cloudformation create-stack --stack-name MojaNazwa --template-url https://… --parameters ParameterKey=ParamName,ParameterValue=132343 ParameterKey=ParamName2,ParameterValue=cokolwiek
Tworzy nowe środowisko (stos) powiązanych zasobów, opisane w pliku JSON pod podanym URLem
aws cloudformation describe-stacks --stack-name MojaNazwa
Zwraca opis działającego stosu
aws cloudformation delete-stack --stack-name MojaNazwa
Usuwa wskazane środowisko (stos) i zwalnia jego zasoby

IAM

aws iam get-user
Informacje o sobie (m.in. data utworzenia użytkownika i ostatniego logowania)
aws iam create-group --group-name „admin”
Tworzy grupę użytkowników „admin”
aws iam attach-group-policy --group-name „admin” --policy-arn „arn:aws:iam::aws:policy/AdministratorAccess”
Nadaje podanej grupie wskazaną politykę
aws iam create-user --user-name „myuser”
Tworzy nowego użytkownika IAM
aws iam add-user-to-group --group-name „admin” --user-name „myuser”
Dodaje użytkownika do grupy
aws iam create-login-profile --user-name „myuser” --password „Haselko”
Nadaje użytkownikowi hasło logowania
aws iam upload-server-certificate --server-certificate-name my-ssl-cert --certificate-body file://my-certificate.pem --private-key file://my-private-key.pem --certificate-chain file://my-certificate-chain.pem
Ładuje do IAM certyfikat SSL. Od tej pory można się do niego odwoływać za pomocą nazwy my-ssl-cert.

S3

aws s3 mb s3://awsinaction-Puchatek
Tworzy nowy kubeł S3 (system plików). Nazwa musi być globalnie unikalna
aws s3 sync . s3://awsinaction-Puchatek/backup
Kopiuje zawartość bieżącego lokalnego foldera do folderu backup wskazanego kubła S3 (tylko pliki których jeszcze nie ma w miejscu docelowym)
aws s3 cp --recursive s3://awsinaction-Puchatek/backup .
Kopiuje zawartość katalogu we wskazanym kuble S3 do bieżącego lokalnego katalogu
aws s3 website s3://mybucketname --index-document index.thml --error-document error.html
Konfiguruje kubeł jako web hosting
aws s3api put-bucket-versioning --bucket awsinaction-Puchatek --versioning-configuration Status=Enabled
Włącza wersjonowanie dla kubła - po nadpisaniu dowolnego obiektu będziesz miał dostęp do jego wcześniejszych wersji
aws s3api put-bucket-policy --bucket awsinaction-Puchatek --policy file:///mypolicy.json
Nadaje politykę zapisaną w lokalnym pliku wskazanemu kubłowi
aws s3 rb --force s3://awsinaction-Puchatek
Usuwa wskazany kubeł z jego zawartością

CloudTrail

aws cloudtrail lookup-events --max-results 30 --start-time 01-27-2015,01:16PM
Zwraca 30 zdarzeń z historii począwszy od wskazanej daty, domyślna wartość parametru --max-results to 10, maksymalna 50; domyślna wartość --start-time to data najwcześniejszego zdarzenia z ostatnich 7 dni
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances
Zwraca przefiltrowane zdarzenia z historii. AttributeKey może przyjmować wartości EventId, EventName, EventSource, ResourceName, ResourceType i Username.
aws cloudtrail lookup-events <same parameters as previous command> --next-token=token
Wyciąga kolejne wyniki poprzedniego polecenia lookup-events. Parametr --next-token powinien pobierać wartość z wyników poprzedniego polecenia (klucz NextToken w JSONie).
aws cloudtrail describe-trails
Zwraca informacje o zdefiniowanych trailach.
aws cloudtrail stop-logging --name NazwaTraila
Wstrzymuje logowanie we wskazanym trailu
aws cloudtrail start-logging --name NazwaTraila
Wznawia logowanie we wskazanym trailu
aws cloudtrail delete-trail --name NazwaTraila
Usuwa wskazanego traila
aws cloudtrail validate-logs --trail-arn trailARN --start-time 2015-08-27T00:00:00Z
Waliduje poprawność logów z zadanego przedziału czasu (można opcjonalnie dodać --end-time). Wartość --trail-arn trzeba wziąć z wyniku polecenia describe-trails.

SQS

aws sqs create-queue --queue-name url2png --attributes FifoQueue=true,DelaySeconds=0
Tworzy nową kolejkę komunikatów, zwraca jej URL; wartością opcjonalnego parametru attributes może być URL pliku JSON z atrybutami kolejki; domyślnie tworzona jest kolejka typu standard, nie da się jej później zmienić na FIFO
aws sqs get-queue-url --queue-name url2png
Zwraca URL kolejki; jeśli kolejka była utworzona przez inne konto AWS, należy podać id konta w parametrze --queue-owner-aws-account-id
aws sqs set-queue-attributes --queue-url URLKolejki --attributes DelaySeconds=1,MessageRetentionPeriod=1209600
Zmiana atrybutów wskazanej kolejki
aws sqs get-queue-attributes --queue-url URLKolejki --attribute-names All
Zwraca wszystkie atrybuty wskazanej kolejki, w tym np. uprawnienia i liczba komunikatów w kolejce
aws sqs list-queues
Zwraca listę kolejek
aws sqs send-message --queue-url URLKolejki --message-body „Treść komunikatu”
Wysyła komunikat do kolejki; opcjonalnie można dodać parametr --message-attributes z URLem pliku JSON zawierającego atrybuty komunikatu, np.:

{
  "Chapter": { "DataType": "String", "StringValue": "2" },
  "Environment": { "DataType": "Binary", "BinaryValue": "Production" }
}
aws sqs send-message-batch --queue-url URLKolejki --entries Id=Message-1,MessageBody=”Hello AWS SQS 1!!!”,DelaySeconds=10 Id=Message-2,MessageBody=”Hello AWS SQS 2!!!”,DelaySeconds=10,MessageAttributes={Chapter={StringValue=2,DataType=String},Environment={StringValue=”Production!”,DataType=String}
Wysyła naraz kilka komunikatów (max 10); wartością parametru --entries może być URL pliku z komunikatami:

[{ "Id": "Message-1", "MessageBody": "Hello", "DelaySeconds": 10 },
{"Id": "Message-2", "MessageBody": "Hello2", "MessageAttributes": { ... } }]
aws sqs receive-message --queue-url URLKolejki --max-number-of-messages 10 --visibility-timeout 20 --wait-time-seconds 10
Wyciąga z kolejki max. 10 komunikatów (więcej nie można), chowając je przed innymi procesami na 20 sekund; jeśli kolejka jest pusta, to czekamy 10 sekund aż się coś pojawi. Zwraca JSON, w którym pole „ReceiptHandle” zawiera łańcuch jaki należy przekazać aby ostatecznie usunąć komunikat z kolejki - patrz polecenie delete-message
aws sqs delete-message --queue-url URLKolejki --receipt-handle ReceiptHandle
Usuwa z kolejki komunikat, opis wartości parametru receipt-handle patrz polecenie receive-message
aws sqs change-message-visibility --queue-url URLKolejki --receipt-handle ReceiptHandle --visibility-timeout 12000
Zmienia czas przez jaki komunikat będzie niewidoczny dla pozostałych procesów wyciągających z kolejki (maksymalna wartość to 43200 sekund, czyli 12 godzin); opis wartości parametru receipt-handle patrz polecenie receive-message
aws sqs add-permission --queue-url URLKolejki --label SendMessagesFromMyQueue --aws-account-ids 12345EXAMPLE --actions SendMessage
Nadaje wskazanemu kontu AWS uprawnienia SendMessage do wskazanej kolejki; uprawnienie „*” oznacza wszystkie możliwe uprawnienia
aws sqs remove-permission --queue-url URLKolejki --label SendMessagesFromMyQueue
Usuwa wskazane uprawnienie
aws sqs purge-queue --queue-url URLKolejki
Usuwa wszystkie komunikaty z kolejki; operacja może trwać do 60 sekund
aws sqs delete-queue --queue-url URLkolejki
Usuwa wskazaną kolejkę; operacja może trwać do 60 sekund
aws sqs list-dead-letter-source-queues --queue-url URLKolejkiDeadLetter
Które kolejki mają ustawioną kolejkę dead letter na wskazaną?

DynamoDB

aws dynamodb create-table --table-name todo-user --attribute-definitions AttributeName=uid,AttributeType=S --key-schema AttributeName=uid,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
Tworzy nową tabelę DynamoDB. Uwagi:

  • warto aby nazwa tabeli miała prefiks w postaci nazwy aplikacji, aby nie kłóciła się z innymi tabelami dla konta AWS,
  • attribute-definitions definiuje nazwy i typy atrybutów wykorzystywanych jako klucz główny tabeli; dopuszczalne typy to S(tring), N(umber) i B(inary)
  • key-schema określa atrybuty wchodzące w skład klucza głównego i typ klucza
  • provisioned-throughput określa parametry wydajnościowe operacji wykonywanych na tabeli
aws dynamodb create-table --table-name todo-task --attribute-definitions AttributeName=uid,AttributeType=S AttributeName=tid,AttributeType=N --key-schema AttributeName=uid,KeyType=HASH AttributeName=tid,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
j.w., ale klucz jest dwukolumnowy. Zadania danego użytkownika są posortowane po czasie wstawienia.
aws dynamodb describe-table --table-name todo-user
Informacje o tabeli, w tym status (ACTIVE oznacza że tabela została utworzona)
aws dynamodb get-item --table-name todo-user --key ‚{„uid”: {„S”: „michael”}}’ --consistent-read
Zapytanie o rekord dla wskazanego klucza; opcjonalny parametr consistent-read gwarantuje brak błędów wynikających z ostatecznej spójności, choć zapytanie może się wykonywać ok. 2 razy dłużej

Literatura

Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop