python - 调用 GetSecretValue 操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效
问题描述
请检查下面是有问题的屏幕截图。当我们在 boto3 中单独使用但在 SAM lambda 函数中触发它收到此错误时,AWS 凭据配置正确并且工作正常。在此处输入图像描述
尝试了所有解决方案,例如检查“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)
解决方案
通过删除此文件来删除 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
要解决此问题,只需删除 [user1] 部分,~/.aws/credentials
然后重新运行aws configure
。
推荐阅读
- java - java - 如何在java json中转义双引号?
- r - 将来自多个参数的值添加到最终总和
- c - 如何在 Kotlin/Native 中从 C 导入生成的 Kotlin 类?
- python - Pandas 散点图上不显示 X 轴标签和次要刻度标签
- javascript - 以编程方式输入击键 javascript
- java - 如果超过 AWS Neptune Server 的容量,是否限制请求数量(读取、更新、删除)?
- html - 为什么 css 没有应用于具有相同类的元素?
- c# - Blazor:如何检查 OnFieldChanged 中的字段是否有效
- r - 每次在列中出现一个值时,有没有办法增加一个数字?
- google-analytics - Google Analytics - 自定义维度客户 ID 未显示