Почему, когда я запускаю команду...
aws --profile default sts get-caller-identity
это работает, и я получаю ожидаемый результат. Но когда я пытаюсь бежать...
aws sts get-caller-identity
Выдает ошибку «Произошла ошибка (ExpiredToken) при вызове операции GetCallerIdentity: срок действия токена безопасности, включенного в запрос, истек»
Я правильно настроил aws sso и успешно предоставил разрешение своей машине. Я убедился, что в моих пользовательских или системных переменных среды не установлены переменные среды AWS (никакая переменная среды не имеет префикса «AWS_»).
О, похоже, где-то в переменных моей среды есть учетные данные 2024-03-28 13:00:11,472 - MainThread - botocore.credentials - DEBUG - Поиск учетных данных через: env 2024-03-28 13:00:11,472 - MainThread - botocore.credentials — ИНФОРМАЦИЯ — обнаружены учетные данные в переменных среды.
Спасибо, jarmod сумел решить проблему с помощью вашего полезного совета по отладке.
Хорошо, благодаря комментарию @jarmod к моему вопросу я смог изолировать проблему, используя журналы, созданные с помощью команды:
aws sts get-caller-identity --debug 2>&1 | Select-String "botocore.credentials"
который вывел:
2024-03-28 13:00:11,472 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2024-03-28 13:00:11,472 - MainThread - botocore.credentials - INFO - Found credentials in environment variables.
Итак, я выполнил команды:
Remove-Item -Path Env:\AWS_ACCESS_KEY_ID
Remove-Item -Path Env:\AWS_SECRET_ACCESS_KEY
и перезапустил приведенную выше команду, которая дала мне вывод:
2024-03-28 13:04:14,393 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env
2024-03-28 13:04:14,393 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2024-03-28 13:04:14,393 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2024-03-28 13:04:14,393 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso
2024-03-28 13:04:14,541 - MainThread - botocore.credentials - DEBUG - Credentials for role retrieved from cache.
2024-03-28 13:04:14,541 - MainThread - botocore.credentials - DEBUG - Retrieved credentials will expire at: 2024-03-28 20:56:29+00:00
Теперь, когда я запускаю команду:
aws sts get-caller-identity
он работает так, как ожидалось.
Используйте опцию
--debug
с awscli, чтобы увидеть, что происходит. Сравните учетные данные, загруженные в два вызова. Они будут помеченыbotocore.credentials
. К сожалению, awscli отправляет журналы в stderr, поэтому вы можете выполнить grep следующим образом:aws sts get-caller-identity --debug 2>&1 | grep botocore.credentials
.