使用 Terraform 在不同区域使用来自 S3 的代码创建 Lambda 函数

Using Terraform to create Lambda function using code from S3 in different regions

我之前在 us-east-1 区域创建了一个存储桶,其中包含我想在其他区域部署的 Lambda 代码。当我尝试在 us-west-2 区域中部署相同代码的 Terraform 时,出现以下错误:

Error creating Lambda function: InvalidParameterValueException: Error occurred while GetObject. S3 Error Code: PermanentRedirect. S3 Error Message: The bucket is in this region: us-east-1. Please use this region to retry the request

我看不到在 Terraform 的 aws_lambda_function 资源中指定 S3 存储桶区域的方法。

是否可以使用 Terraform 在一个区域中使用 S3 存储桶提供可部署到其他区域的 Lambda 代码?

为源指定 S3 存储桶的 Lambda 函数必须与 S3 存储桶位于同一区域。这是因为在 Lambda 需要部署时,他们在幕后按需从 S3 中提取代码。跨区域拉动会增加大量延迟,现在还会产生跨区域依赖性。

您需要将 Lambda 程序包移动到新区域,您可以在 S3 存储桶上进行跨区域复制,或者只需手动将 Lambda 函数包上传到其他区域的 S3 存储桶。