从一个客户那里得到资源

2024-05-12 17:14:11 发布

您现在位置:Python中文网/ 问答频道 /正文

AWS的python库(boto)有两种不同类型的接口,一种是低级的client,另一种是更高级的python resource。在

我的代码部分使用一个,而其他部分使用另一个。在

resource获取client可以从文档中找到。在

# Create the resource
sqs_resource = boto3.resource('sqs')

# Get the client from the resource
sqs = sqs_resource.meta.client

我的问题是如果有客户sqs,我如何从中得到boto3.resource?在

(我不能简单地调用boto3.resource('sqs')因为客户机有其他东西,比如已经附加了凭证,出于某种设计原因,资源试图从一堆我不希望它获取的地方获取AWS凭证,我希望它使用在客户机上设置的任何凭证/帐户)


Tags: the代码from文档clientaws类型get
2条回答

我认为您应该分别创建资源和客户端,如下所示:

import boto3
sqs_resource = boto3.resource("sqs")
sqs_client = boto3.client("sqs")

print dir(sqs_resource)
print dir(sqs_client)

输出:

^{pr2}$

从上面的输出中,您将始终从sqs资源中获取客户机_资源.meta.client. 在

但反之亦然。在

相反,创建资源和客户端,并使用您需要的任何东西。 请告诉我这是否有用。在

这是不可能的。如果要同时使用这两者,则应创建一个资源并使用嵌入式客户端。您可以使用与客户机完全相同的配置实例化资源。资源的基础客户机是以完全相同的方式创建的。资源的客户机和使用完全相同的参数创建的客户机之间的唯一区别是,资源客户机向用户代理添加“resource”。在

相关问题 更多 >