【问题标题】:Can AWS Lambda access S3 buckets from other regions?AWS Lambda 可以访问其他地区的 S3 存储桶吗?
【发布时间】:2018-01-19 23:41:06
【问题描述】:

我目前尝试使用 AWS Lambda。 lambda 函数应从 S3 存储桶加载 zip 文件 (> 10 MB)。 S3 存储桶位于 eu-central-1,而 lambda 函数位于 lambda:us-east-1

当我尝试保存 lambda 函数时,我得到:

GetObject 发生错误。 S3 错误代码:AuthorizationHeaderMalformed。 S3 错误信息:授权标头格式错误;区域“us-east-1”是错误的;期待“eu-central-1”

这真的是问题吗?是否可以移动 lambda 函数?

执行 Lambda 函数的 IAM 角色具有 AmazonS3FullAccess 策略。

【问题讨论】:

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


【解决方案1】:

lambda 函数必须与您在“S3 链接 URL*”处指定的 S3 存储桶位于同一区域:

【讨论】:

  • 我找不到任何证明这一点的文档。这是否记录在某处?
  • 我们需要一个功能请求来解决这个问题。这使得将 Lambda 与 CLoudFormation/SAM 一起使用变得毫无用处。
【解决方案2】:

您可以访问与 Lambda 不同的区域中的 S3 存储桶。如果您使用的是 Python boto3 库,以下代码将对您有所帮助:

import boto3

client = boto3.client('s3', region_name='eu-central-1')

事实上,您可以从 AWS Lambda 访问不同区域中的任何资源。

【讨论】:

  • 我认为这不是问题所在。我什至无法保存该功能。当我尝试在 GUI 中保存它时出现此错误。
  • 我只是在所有地方都添加了它。仍然有同样的问题。
  • @KrishnaKumarR 你的答案是正确的——但是对于一个不同的问题。问题中的“lambda function should load the zip file”不是对问题的清晰准确的陈述。 OP 正在尝试在存储桶中加载或存储 Lambda 函数代码,跨区域...而不是“从其他区域访问 S3 存储桶”(来自正在运行的 Lambda 函数)。
  • 原因已经提到。这是一个基础设施问题,而不是 AWS 开发工具包问题。 .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
相关资源
最近更新 更多