Jeśli korzystamy z więcej niż jednego konta AWS to absolutnie niezbędną sprawą jest konfiguracja profili dla AWS CLI.
Konfiguracji dokonujemy w plikach .aws/credentials a także .aws/config. Pierwszy ze wspomnianych plików zawiera klucze do połączenia z AWS – nigdy go nie wersjonujemy! Drugi natomiast zawiera dodatkową konfigurację, jego wersjonować jak najbardziej polecam.
Osobne poświadczenia do każdego z kont
Standardowy przypadek to sytuacja dwu kont, każde z osobnymi poświadczeniami (.aws/credentials):
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [user2] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Oraz odpowiadający mu .aws/config:
[default] region=eu-west-2 output=json [profile user2] region=eu-west-1 output=text
W powyższej konfiguracji konta działają zupełnie niezależnie od siebie, dodatkowo określamy domyślny region a także format wyjścia dla komend AWS CLI.
Konto default, jak sama nazwa wskazuje, jest kontem domyślnym, które używane jest jeśli nie określimy jawnie innego profilu.
Konfiguracja dla Assume Role
Ciekawszym przypadkiem do konfiguracji jest sytuacja w której w ramach jednego konta dokonujemy Assume Role do roli w tym samym lub też zupełnie innym koncie – np. w ramach używania AWS Organzations.
W tym przypadku w pliku .aws/credentials dokonujemy konfiguracji poświadczeń dla głównego konta (w przykładzie dla default), np:
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Natomiast w .aws/config ustawiamy domyślne ustawienia dla konta głównego a następnie definiujemy profile i role do których AWS CLI ma wykonywać automatycznie assume role:
[default] region = eu-west-1 output = json [profile dev] role_arn = arn:aws:iam::123456789012:role/OrganizationAccountAccessRole region = eu-central-1 source_profile = default [profile prod] role_arn = arn:aws:iam::987654321098:role/OrganizationAccountAccessRole region = eu-central-1 source_profile = default
Warto zwrócić uwagę na source_profile, dzięki któremu możemy mieć zdefiniowanych kilka „hierarchii” kont.
Używanie profili
Profili można używać na dwa główne sposoby – pierwszy z nich to jawne podanie nazwy profilu w wywołaniu AWS CLI:
aws --profile prod sts get-caller-identity
Powyższy sposób ma zastosowanie głównie w skryptach, w których operujemy na wielu profilach jednocześnie. Do codziennych zastosowań znacznie wygodniej jest ustawić zmienną środowiskową AWS_PROFILE:
export AWS_PROFILE=prod aws sts get-caller-identity
Podsumowanie
Używanie profili bardzo ułatwia i przyspiesza pracę. Zaprezentowana konfiguracja jest zupełnie wystarczająca na początek, jednak można jeszcze ją ulepszyć – np. dołożyć MFA – ale to temat na kolejny wpis :)
Zachęcam do śledzenia bloga – czy to przez RSS, czy też na Facebooku – aby nie przegapić następnych porad dotyczących pracy z AWS :)
Dodaj komentarz