Jak skonfigurować AWS CLI?


Jak skonfigurować AWS CLI?
Serverless Framework w celu połączenia się z chmurą AWS i stworzenia zasobów potrzebuje konta o odpowiednich uprawnieniach. Zgodnie z dobrymi praktykami bezpieczeństwa warto stworzyć osobne konto użytkownika nawet jeśli tylko my sami zamierzamy korzystać z całego konta w AWS. Używanie tzw. root account jest uważane za mało bezpieczne. O tym jak stworzyć konto AWS i użytkownika możesz przeczytać tutaj

Serverless Framework (tak samo jak każde inne narzędzie) będzie potrzebowało Access Key oraz Secret Access Key (czyli takie login i hasło). Framework jest na tyle wszechstronny, że możemy owe parametry podać mu na wiele sposobów. Praktyką którą osobiście stosuje oraz zalecam ze względów wygody i bezpieczeństwa jest używanie już raz zdefiniowanych danych uwierzytelniania na potrzeby AWS CLI.

Ten artykuł jest częścią większego cyklu: Kurs Serverless

Na cały cykl składają się następujące artykuły. Jeśli jesteś tutaj pierwszy raz, to dobrze będzie zacząć od początku 😄
  1. Jak zainstalować Serverless Framework?
  2. Jak skonfigurować AWS CLI?
  3. Pierwsza funkcja Lambda
  4. Jak stworzyć usługę sieciową (webserwis) za pomocą AWS Lambda?
  5. "Śledź Paczkę" - wideokurs serverless

AWS CLI (Command Line Interface)

Samo AWS CLI nie jest nam potrzebne do pracy z Serverless Framework, natomiast pewnie prędzej czy później może nam się przydać (np. do uploadu plików do S3). Dlatego radzę je zainstalować już teraz.

Instalacja

Dla każdego z systemów operacyjnych przebiega podobnie:

  • Windows: choco install awscli (zakładając, że masz już zainstalowane Chocolately, jeśli nie to kliknij tutaj)
  • Ubuntu 18.04: sudo snap install aws-cli --classic
  • MacOS: brew install awscli

Konfiguracja

AWS CLI korzysta z dwóch plików konfiguracyjnych znajdujących się w katalogu użytkownika w podkatalogu .aws. Są to odpowiednio:

  • .aws/credentials przechowujący dane logowania, czyli Access Key oraz Secret Access Key
    oraz odpowiadający mu
  • .aws/config zawierajacy informacje o domyślnym regionie i formacie zwracanych informacji prze AWS CLI.

Przykładowa konfiguracja

.aws/credentials

1
2
3
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

.aws/config

1
2
3
[default]
region=eu-central-1
output=json

W obydwu plikach w nawiasach kwadratowych mamy podana nazwę profilu identyfikującą konfigurację dla danego użytkownika. Oczywiście profil [default] jest domyślny i nie musimy go jawnie podawać przy wywołaniu komend aws. Przykładowo obie poniższe komendy są równoważne:

1
2
aws s3 ls
aws s3 ls --profile default

Wiele profili

W ramach potrzeb prędzej czy później będziemy mieli dostęp do kilku kont użytkowników, często przypisanych do różnych kont AWS. Może się tak zdarzyć gdyż nasza organizacja będzie miała kilka kont AWS na każdy etap rozwoju oprogramowania DEV, TEST, PROD . Innym przykładem będą konta dające nam dostęp do chmur różnych klientów. W obu przypadkach możemy zdefiniować profile w ww. plikach. Ja osobiście posiadam dwa konta AWS. Pierwsze traktuje jako moje główne, a drugie jako testowe. Dlatego moje pliki konfiguracyjne wyglądają w następujący sposób:

.aws/credentials

1
2
3
4
5
6
7
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[testAccount]
aws_access_key_id=AKIAIOS13NN7EXAMPLE2
aws_secret_access_key=wJalrlitnFEMI/K7MDENG/bPxRfiCEXAMPLEKEY2

.aws/config

1
2
3
4
5
6
7
[default]
region=eu-central-1
output=json

[testAccount]
region=eu-central-1
output=json

Biorąc pod uwagę powyższą konfigurację, poniższe komendy wykonają się na dwóch różnych kontach AWS:

1
2
aws s3 ls
aws s3 ls --profile testAccount

Dziękuję i zapraszam do następnej lekcji.
Miłego dnia!