Ist es möglich, eine aws-Konto-ID mit nur aws-Zugriffsschlüssel und geheimem Schlüssel in der Befehlszeile (CLI) abzurufen?

7

Ist es möglich, eine aws-Konto-ID mit nur aws-Zugriffsschlüssel und geheimem Schlüssel in der Befehlszeile (CLI) abzurufen?

Ich habe Zugangsschlüssel und geheimen Schlüssel bei mir. Ist es möglich, die Konto-ID über die Befehlszeile abzurufen?

Vandhana
quelle

Antworten:

8

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
MLu
quelle
Beim Aufrufen der GetCallerIdentity-Operation ist ein Fehler aufgetreten (InvalidClientTokenId): Das in der Anforderung enthaltene Sicherheitstoken ist ungültig. Dieser Fehler wird angezeigt :(
Vandhana
Das liegt daran, dass Sie die $AWS_SECURITY_TOKENUmgebungsvariable aus irgendeinem Grund festgelegt haben. Führen Sie unset AWS_SECURITY_TOKEN AWS_SESSION_TOKENzuerst und dann versuchen Sie es erneut.
MLu
Den gleichen Fehler erhalten: |
Vandhana
Ich habe die Ausgabe erhalten .. aber für den folgenden Befehl AWS_ACCESS_KEY_ID = AXXXXXXGA AWS_SECRET_ACCESS_KEY = NXXXXXXt aws sts get-caller-identity Aber ich sollte die Schlüssel für alle aws-Befehle angeben .. gibt es eine andere Möglichkeit, dies zu tun
Vandhana
@Vandhana Sie können die Anmeldeinformationen in einer Konfigurationsdatei speichern: docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html
MLu
0

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
Andrew Lorien
quelle
Beim Aufrufen der ListUsers-Operation ist ein Fehler aufgetreten (InvalidClientTokenId): Das in der Anforderung enthaltene Sicherheitstoken ist ungültig. Diesen Fehler erhalten
Vandhana
Hmm, Sie müssen keine Erlaubnis haben, IAM zu lesen, auch nicht Ihre eigene. Ich habe eine bessere Antwort, aber es ist eine völlig andere Antwort, also werde ich sie separat veröffentlichen.
Andrew Lorien