我们正在使用Boto3连接到SQS队列。在测试/生产中,这很好,但对于本地开发,我使用的是fake_sqs版本。
而不是以某种方式伪造真实的AWS端点(如覆盖主机名),我选择使用虚假区域(富有想象力地称为test
)
我们代码的其他部分使用早期的boto库(而不是Boto3)。通过这种方式,可以通过指定名为BOTO_ENDPOINTS
的环境变量来覆盖区域的端点主机名。它包含一个包含区域Boto配置的文件的路径。对于本地测试,它只包含一个
{
"sqs": {
"test": "fake_sqs"
}
}
data/endpoints.json
包中存储的botocore
文件,当连接到我们的假区域时,我们收到错误EndpointConnectionError: Could not connect to the endpoint URL: "https://test.queue.amazonaws.com/"
。
我们继承的代码库已经深入嵌入了队列的配置,因此我们不能简单地告诉连接使用特定的端点(如this thread suggests)。
那么,是否有人知道如何让Boto3使用不同的主机名而不更改我们必须设置SQS连接的代码?
答案 0 :(得分:2)
您可以在~/.aws/models
中放入自定义端点文件,以替换botocore提供的默认端点文件。
此外,如果您在其他位置有数据覆盖,则可以使用AWS_DATA_PATH
环境变量。