gpt4 book ai didi

amazon-web-services - 设置 MFA 后,使用 boto3 访问 aws dynamodb。获取客户端错误

转载 作者:行者123 更新时间:2023-12-04 14:13:25 54 4
gpt4 key购买 nike

以前,当我没有设置 MFA 以登录到 AWS 控制台时,我通过以下方式连接到 dynamodb

dynamo = boto3.resource('dynamodb',
region_name='ap-northeast-2',
endpoint_url='http://dynamodb.ap-northeast-2.amazonaws.com')
table = dynamo.Table('tablename')

查询该表非常好。

response = table.query(
KeyConditionExpression =Key("user_id").eq(123123)
)

在我为登录 AWS 控制台设置额外安全性的 MFA 之后,现在当我执行上面的代码时,我得到:

ClientError: An error occurred (UnrecognizedClientException) when calling the Query operation: The security token included in the request is invalid.

我为 RDB 使用隧道,是否有类似的东西可以用于连接到 dynamodb,或者我是否需要权限才能访问 dynamodb?

最佳答案

当您启用 MFA 时,SDK 不会自动知道如何使用它。您的普通 IAM 用户的 API 和 SECRET key 已经不够用了。相反,您需要使用仅为 MFA session 创建的临时凭证。

要使 MFA 与 boto3 一起工作,您必须显式调用 get_session_token :

MFA-enabled IAM users would need to call GetSessionToken and submit an MFA code that is associated with their MFA device. Using the temporary security credentials that are returned from the call, IAM users can then make programmatic calls to API operations that require MFA authentication.

使用 get_session_token 您可以调用 sts 服务,该服务将根据您的 MFA 详细信息为您提供临时凭证:

sts = boto3.client('sts')

mfa_response = sts.get_session_token(
DurationSeconds=123,
SerialNumber='string',
TokenCode='string'
)

该调用将在 mfa_response 中返回凭据,您可以使用它来创建新的 boto3 session 。例如:

mfa_session = boto3.session.Session(
aws_access_key_id=mfa_session['Credentials']['AccessKeyId'],
aws_secret_access_key=mfa_session['Credentials']['SecretAccessKey'],
aws_session_token=mfa_session['Credentials']['SessionToken'])

dynamo = mfa_session.resource('dynamodb', ...)

# and the rest of the code

关于amazon-web-services - 设置 MFA 后,使用 boto3 访问 aws dynamodb。获取客户端错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62525930/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com