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?
Sie können die Kontonummer vom Unterbefehl Secure Token Serviceget-caller-identity
mit den folgenden:
aws sts get-caller-identity --output text --query 'Account'
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:
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
Meine Lieblingsmethode ist aws iam get-user [--profile <profile>]
da Sie nur die IAM-Self-Service-Rolle benötigen, damit dies funktioniert.