![](/img/trans.png)
[英]An error occurred (UnrecognizedClientException) when calling the GetSecretValue operation: The security token included in the request is invalid
[英]An error occurred (InvalidClientTokenId) when calling the AssumeRole operation: The security token included in the request is invalid
我不断收到此错误:
An error occurred (InvalidClientTokenId) when calling the AssumeRole operation: The security token included in the request is invalid.
当我运行这个 Assume Role 命令时:
aws sts assume-role --role-arn <arn role i want to assume> --role-session-name dev --serial-number <my arn> --token-code <keyed in token code>
这以前是有效的,所以我不确定会发生什么变化。 并且不知道如何调试它。
有什么建议么?
我有同样的问题。 在运行 sts 命令之前,您可能需要取消设置 AWS 环境变量:
unset AWS_SECRET_ACCESS_KEY
unset AWS_SECRET_KEY
unset AWS_SESSION_TOKEN
然后你的命令:
aws sts assume-role --role-arn <arn role i want to assume> --role-session-name dev --serial-number <my arn> --token-code <keyed in token code>
在这里,您将获得新凭据。 然后再次运行导出:
export AWS_ACCESS_KEY_ID=<access key>
export AWS_SECRET_ACCESS_KEY=<secret access key>
export AWS_SESSION_TOKEN=<session token>
我希望它有帮助!
旧帖子,但可能仍然有用。
您可以尝试在 env 中设置以下内容并重试:
export AWS_ACCESS_KEY_ID='your access key id here';
export AWS_SECRET_KEY='your secret key here'
在这里,您需要重置您的 aws 密钥和 ID,例如 -
export AWS_ACCESS_KEY_ID='ACCESS_KEYID';
export AWS_SECRET_KEY='SECRET_KEY'
在我的情况下,我在终端中使用命令aws configure
进行cli
,它要求提供访问密钥 ID、密钥、区域和输出格式。
如果是第一次运行,则需要在运行 STS 命令的环境中执行aws configure
并设置 AWS 访问密钥和秘密密钥。 STS 命令使用该数据验证身份并检查您是否有权执行 STS 代入角色。
如果您已经配置了现有的访问密钥和秘密密钥,则它们也可能已过期。 因此,您可能需要在 IAM 中为用户生成新密钥并在您运行的环境中配置它。
我注意到当我不得不更改我的 AWS IAM 密码时,我的访问密钥也被删除了。
我必须生成一个新的访问密钥并替换存储在~/.aws/credentials
(在 mac 上)文件中的aws_access_key_id
和aws_secret_access_key
。
这清除了错误
通过在您的用户的 iam 用户凭据部分重新激活我的访问密钥来解决此问题。 当我遇到这个问题时,它处于非活动状态。
检查~/.aws/credentials
文件中的aws_access_key_id
和aws_secret_access_key
是否正确。
如果是,则~/.aws/credentials
文件包含aws_session_token
仅删除文件中的aws_session_token
行,保存更改并重新运行命令。
为我工作。
TLDR; IAM 用户的密钥/秘密密钥是一组凭证。 会话令牌 + 会话的密钥/秘密密钥是一组不同的凭证,具有不同的值。
——
我不知道aws sts
命令创建了一个会话令牌,以及一个新的 AWS 密钥/秘密密钥。 这些键是不一样的IAM用户密钥和秘密密钥。
我生成了一个新的密钥、秘密密钥和令牌。 我更新了我的凭据文件以使用新值。 当我的令牌在第二天到期时,我重新运行了aws sts
命令。 但是,凭证文件中的密钥和秘密密钥现在是错误的。 我在我的凭证文件中替换了我的 IAM 用户密钥的密钥和秘密密钥值。 我还删除了凭据文件中的会话令牌。
然后aws sts
命令起作用了。
我尝试使用多配置文件动态创建 ~/.aws/config 文件,以提供我的代码构建多帐户访问权限。 当我第一次使用空的默认配置文件创建文件 ~/.aws/config 然后尝试担任该角色时,我犯了一个错误。
当您将文件 ~/.aws/config 放在具有默认配置文件的位置时,确定身份的是配置文件,而不是 CodeBuild 附带的配置文件。
确保目标 AWS 区域已启用。 以下是启用区域的方法。
让我们不要忘记最简单的事情。 当我没有设置默认区域时,我收到了同样的错误消息。 您可以通过运行 aws configure 来设置它。 或者,您可以像这样在 sts 命令上传递区域。
aws sts 假设角色 --role-arn "your_role_arn" --role-session-name MySessionName --region us-gov-west-1
当我尝试连接到我的 localstack 实例时出现此错误。
原因是aws
cli 缺少--endpoint-url http://localhost:4566
参数。
同样的错误,但有一个非常具体的情况和解决方案。 在我的例子中,我有一个配置文件在我的.aws/credentials
中扮演如下角色:
[name]
role_arn = arn:aws:iam::ACCOUNT:role/ROLE_NAME
source_profile = default
我正在处理这个角色,同时删除并重新创建了它。 AWS CLI 在使用此配置文件方法时缓存令牌。 缓存的令牌用于旧角色,而不是重新创建的角色。 这可以通过将--debug
添加到 CLI 命令来查看:
2023-01-27 16:22:03,055 - MainThread - botocore.credentials - DEBUG - Credentials for role retrieved from cache.
2023-01-27 16:22:03,055 - MainThread - botocore.credentials - DEBUG - Retrieved credentials will expire at: 2023-01-27 21:46:59+00:00
可以通过删除~/.aws/cli/cache
目录或在该目录中找到的此 session 的特定 JSON 文件来擦除缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.