web-dev-qa-db-de.com

Schnelle Möglichkeit, die AWS-Kontonummer aus den AWS CLI-Tools abzurufen?

Auf der Suche nach einem schnellen Weg, um meine Kontonummer abzurufen, hatte ich ursprünglich überlegt, aws iam get-account-authorization-details --max-items 1 Zu verwenden, aber es gibt mehrere Probleme, wenn ich das so mache. Gibt es eine Möglichkeit, dies zu tun, ohne die Herkunft des Kontos zu überschreiten?

80
ehime

Sie können die Kontonummer vom Unterbefehl Secure Token Serviceget-caller-identity mit den folgenden:

aws sts get-caller-identity --output text --query 'Account'

178
Taras Alenin

Nach meiner verwandte Antwort für die AWS PowerShell-CLI ist Ihre Konto-ID Teil der Anzahl der Ressourcen, die Sie erstellen ... und der Ressourcen, die automatisch für Sie erstellt werden. Einige Ressourcen listen Sie auch als OwnerId auf.

Die Standardsicherheitsgruppe wird automatisch für Sie in der Standard-VPC jeder Region als reservierte Sicherheitsgruppe erstellt. Aus der Dokumentation :

Sie können keine Standardsicherheitsgruppe löschen. Wenn Sie versuchen, die EC2-Classic-Standardsicherheitsgruppe zu löschen, wird die folgende Fehlermeldung angezeigt: Client.InvalidGroup.Reserved: Die Sicherheitsgruppe 'default' ist reserviert. Wenn Sie versuchen, eine VPC-Standardsicherheitsgruppe zu löschen, wird die folgende Fehlermeldung angezeigt: Client.CannotDelete: Die angegebene Gruppe: "sg-51530134" name: "default" kann von einem Benutzer nicht gelöscht werden.

Dies macht es zu einem zuverlässigen Kandidaten für das Abrufen unserer Konto-ID, sofern Sie sich in EC2 classic befinden oder über eine Standard-VPC verfügen (* siehe Edge-Fälle, falls Sie dies nicht tun).

Beispiel:

aws ec2 describe-security-groups \
    --group-names 'Default' \
    --query 'SecurityGroups[0].OwnerId' \
    --output text

Dies verwendet --query, um die Ausgabe bis zur "Eigentümer-ID" für das erste Ergebnis dieser Anforderung zu filtern, und verwendet dann --output um deine Account ID als Klartext auszugeben:

123456781234

Randfälle:

(Danke @kenchew) Beachten Sie, dass, wenn Sie Ihre Standard-VPC in einer bestimmten Region gelöscht haben, diese Sicherheitsgruppe nicht mehr existiert und Sie eine der folgenden alternativen Lösungen verwenden sollten:

Weiterführende Literatur:

31
Anthony Neace

Wenn Sie auf einem Server mit einer angenommenen Rolle ausgeführt werden, können Sie aws sts get-caller-identity Nicht aufrufen. Außerdem können Sie mit describe-security-groups Nicht immer den Filter --group-names Verwenden (dies funktioniert nicht, wenn Sie keine Standard-VPC verwenden). Wählen Sie daher einfach die erste Sicherheitsgruppe aus. Ich habe festgestellt, dass dies die zuverlässigste ist, unabhängig davon, welche Art von Authentifizierung Sie verwenden oder welche Art von VPC Sie haben.

aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
9
Philip Kirkland

Meine Lieblingsmethode ist aws iam get-user [--profile <profile>] da Sie nur die IAM-Self-Service-Rolle benötigen, damit dies funktioniert.

1
user2976775