调用GetSecretValue操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效

问题描述 投票:0回答:4

请检查下面是否有问题的屏幕截图。 AWS 凭证配置正确,当我们在 boto3 中单独使用时,它工作正常,但在 SAM lambda 函数中触发它出现此错误。enter image description here

尝试了所有解决方案,例如检查“aws configure”和取消设置

AWS_SECURITY_TOKEN
以及其他来源中提到的其他解决方案也尝试过但不起作用。

并且在代码中我正在尝试做

session = boto3.session.Session()
secretsmanager = session.client('secretsmanager')

try:
        get_secret_value_response = secretsmanager.get_secret_value(
            SecretId=secret_name
        )
        secret = json.loads(get_secret_value_response['SecretString'])
    except ClientError as e:
        print(e)
        # print(sys.exc_info(),traceback.print_exc(file=sys.stdout))
    except Exception as e:
        print(sys.exc_info(),traceback.print_exc(file=sys.stdout))
        print(e)
python boto3 aws-sam
4个回答
5
投票

通过删除此文件来删除 AWS 凭证

~/.aws/credentials
。然后重新运行
aws configure
并传递有效的安全凭证。这应该可以解决您遇到的问题。

如果您配置了多个配置文件,请编辑

~/.aws/credentials
并删除与此代码一起使用的配置文件。例如,如果您在配置凭据时使用了 user1,则您的文件将包含类似于以下内容的内容:

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

要解决此问题,只需从

~/.aws/credentials
中删除 [user1] 部分,然后重新运行
aws configure
.


2
投票

也许是一个有点不同的问题,但我在本地得到了完全相同的错误,因为我在获取会话之前设置了默认配置文件。

所以,如果我运行脚本:

boto3.setup_default_session(profile_name='myprofile')
session = boto3.session.Session()
secretsmanager = session.client('secretsmanager')

我得到了与问题相同的错误,可能是因为它们一起使用时效果不佳。

要解决这个问题,只需删除会话部分即可:

boto3.setup_default_session(profile_name='myprofile')
secretsmanager = boto3.client('secretsmanager')

1
投票

就我而言,它不起作用,因为我缺少会话令牌。我在 boto3 会话中添加了令牌并且它起作用了:

session = boto3.session.Session(
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
    aws_session_token=AWS_SESSION_TOKEN,
)

0
投票

除了删除凭证文件并再次运行 aws configure 之外,您还可以在终端中运行它

导出 AWS_ACCESS_KEY_ID=您的访问密钥 ID

导出 AWS_SECRET_ACCESS_KEY=您的秘密访问密钥

© www.soinside.com 2019 - 2024. All rights reserved.