【问题标题】:Using boto3 through SAM local to interact with Localstack S3通过SAM local使用boto3与Localstack S3交互
【发布时间】:2018-07-19 07:56:08
【问题描述】:

我在尝试让AWS SAM local 中的boto3 连接到localstack S3 时遇到了一个奇怪的问题。我知道这特别奇怪,因为SQS 工作正常。 localstackAWS SAM local 都被调用以在我创建的名为 test 的 Docker 网络中运行。

我的(非工作 S3)Python 代码是:

  ACCESS_KEY='123'
  SECRET_KEY='abc'
  s3 = boto3.client('s3',
                      endpoint_url="http://docker.for.mac.localhost:4572",
                      use_ssl=False,
                      aws_access_key_id=ACCESS_KEY,
                      aws_secret_access_key=SECRET_KEY)
  print s3.list_buckets()

上面的代码给了我错误:An error occurred (NoSuchBucket) when calling the ListBuckets operation: The specified bucket does not exist: NoSuchBucket

但是,如果我将代码更改为使用localstack SQS,如下所示:

  ACCESS_KEY='123'
  SECRET_KEY='abc'
  sqs = boto3.client('sqs',
                      endpoint_url="http://docker.for.mac.localhost:4576",
                      use_ssl=False,
                      aws_access_key_id=ACCESS_KEY,
                      aws_secret_access_key=SECRET_KEY)
  print sqs.list_queues()

一切正常,它列出了我在localstack SQS 创建的队列。

【问题讨论】:

  • 您不应在应用程序中明确定义 AWS 密钥。只需在您的工作环境中使用 aws configure --profile localstackexport AWS_PROFILE=localstack 创建 AWS 配置文件。

标签: python amazon-web-services amazon-s3 aws-lambda localstack


【解决方案1】:

默认情况下,所有 API 调用的主要入口点是(EDGE_PORT)4566。我正在通过同一端口与 localstack/localstack:latest 容器内的 S3 进行交互。

为了让它工作,我还必须更改 AWS 开发工具包配置以使用 s3ForcePathStyle: true

以上对你有用吗?

【讨论】:

    猜你喜欢
    • 2022-12-08
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2016-02-04
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多