Antworten:
Das ist der richtige Weg:
~ $ aws sts get-caller-identity
{
"Account": "123456789012",
"UserId": "AIDABCDEFGHJKL...",
"Arn": "arn:aws:iam::123456789012:user/some.user"
}
Es funktioniert für IAM-Benutzer, kontenübergreifende IAM-Rollen, EC2-IAM-Rollen usw.
Verwenden Sie zusammen mit jq
, um nur die Konto-ID zu erhalten:
~ $ aws sts get-caller-identity | jq -r .Account
123456789012
$AWS_SECURITY_TOKEN
Umgebungsvariable aus irgendeinem Grund festgelegt haben. Führen Sie unset AWS_SECURITY_TOKEN AWS_SESSION_TOKEN
zuerst und dann versuchen Sie es erneut.
Fast jedes AWS-Objekt enthält die Konto-ID. Mein IAM-Benutzer lautet beispielsweise arn: aws: iam :: ACCOUNT_ID: user / Andrew.Lorien, und die ID eines meiner Cloudformation-Stapel lautet arn: aws: cloudformation: us-west-2: ACCOUNT_ID: stack / my- Repository / 12345678-90ab-cdef-1234-567890abcdef. Sie können also alles abfragen, was Sie wissen, und die ID daraus extrahieren. Hier ist ein Bash-Einzeiler, der den ersten IAM-Benutzer (eine Zeichenfolge wie arn: aws: iam :: ACCOUNT_ID: user / USER_NAME) abruft und die Konto-ID extrahiert.
aws iam list-users --query "Users[0].Arn" --output text | cut -d ":" -f 5