Ausgabe
Ich verwende aws sso login, aber ich kann nicht herausfinden, wie ich feststellen kann, ob ich bereits angemeldet bin oder mich erneut anmelden muss. Die einzige Möglichkeit, dies zu tun, besteht darin, einen Befehl auszuführen, von dem ich weiß, dass ich ihn habe Berechtigung und prüfen Sie, ob keine Fehler auftreten.
aws sso logout
aws sqs list-queues # error
aws sso login # brower accept
aws sqs list-queues # success
Mein Ziel dabei ist es, einige Skripte zu automatisieren und nur bei Bedarf nach einer Anmeldung zu fragen.
Lösung
Sie können nach dem sts-Anruferidentitätsanruf suchen
Gibt Details über den IAM-Benutzer oder die IAM-Rolle zurück, deren Anmeldeinformationen zum Aufrufen der Operation verwendet werden.
https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html
#!/bin/bash
SSO_ACCOUNT=$(aws sts get-caller-identity --query "Account" --profile sso)
#you can add a better check, but this is just an idea for quick check
if [ ${#SSO_ACCOUNT} -eq 14 ]; then
echo "session still valid" ;
else
echo "Seems like session expired"
# performed login here
fi
Wenn die Sitzung noch gültig ist, wird sie zurückgegeben
{
"UserId": "AIDASAMPLEUSERID",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/DevAdmin"
}
Wenn die Sitzung nicht gültig ist, wird sie zurückgegeben
The SSO session associated with this profile has expired or is otherwise invalid. To refresh this SSO session run aws sso login with the corresponding profile.
Oder Sie können dieses Dienstprogramm verwenden, das für diesen Zweck entwickelt wurde
https://github.com/benkehoe/aws-sso-util
Beantwortet von – Adiii
Antwort geprüft von – Cary Denson (FixError Admin)