Szukając szybkiego sposobu na pobranie numeru konta, początkowo myślałem o użyciu, aws iam get-account-authorization-details --max-items 1
ale jest kilka problemów z zrobieniem tego w ten sposób. Czy istnieje sposób na zrobienie tego, który może nie pochodzić z wielu kont?
100
aws sts get-caller-identity|jq -r ".Account"
aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
--query 'Account'
część.jq
byciu zaangażowanym lub zainstalowanym w systemie. Niektóre serwery zakazują instalacji dodatkowych pakietów ze względu na bezpieczeństwo. Możesz zrobić coś takiego,aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
ale jest to trochę denerwujące i równie dobrze możesz zrobić to--query 'Account' --output text
w tym momencie.Z mojej pokrewnej odpowiedzi dla interfejsu wiersza polecenia AWS PowerShell , Twój identyfikator konta jest częścią ARN zasobów, które tworzysz ... i tych, które są tworzone automatycznie dla Ciebie. Niektóre zasoby będą również wyświetlać Ciebie jako OwnerId.
Domyślna grupa zabezpieczeń jest tworzona automatycznie w domyślnym środowisku VPC każdego regionu jako zarezerwowana grupa zabezpieczeń. Z dokumentacji :
To sprawia, że jest to niezawodny kandydat do pobierania naszego identyfikatora konta, o ile korzystasz z EC2 classic lub masz domyślny VPC (* zobacz przypadki skrajne, jeśli nie masz).
Przykład:
Wykorzystuje to
--query
do odfiltrowania danych wyjściowych do „identyfikatora właściciela” dla pierwszego wyniku z tego żądania, a następnie--output
do wyświetlenia identyfikatora konta w postaci zwykłego tekstu:Przypadki brzegowe:
(Dzięki @kenchew) Pamiętaj, że jeśli usunąłeś domyślny VPC w danym regionie, ta grupa zabezpieczeń już nie istnieje i powinieneś użyć jednego z tych alternatywnych rozwiązań:
Dalsze czytanie:
źródło
Jeśli pracujesz na serwerze, który działa z założoną rolą, nie możesz zadzwonić
aws sts get-caller-identity
. Ponadtodescribe-security-groups
nie zawsze możesz użyć--group-names
filtra (nie działa, jeśli nie masz domyślnego VPC), więc po prostu wybierz pierwszą grupę zabezpieczeń. Okazało się, że jest to najbardziej niezawodne, niezależnie od rodzaju używanego uwierzytelniania lub typu VPC.źródło
Moją ulubioną metodą jest użycie,
aws iam get-user [--profile <profile>]
ponieważ potrzebujesz tylko roli samoobsługi IAM, aby to zadziałało.źródło