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

Tod*_*odd 5 amazon-web-services aws-lambda terraform

我之前在该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
Run Code Online (Sandbox Code Playgroud)

我认为无法在Terraform的aws_lambda_function资源中指定S3存储桶的区域.

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

yda*_*coR 8

为源指定S3存储桶的Lambda函数必须与S3存储桶位于同一区域.这是因为在幕后他们正在按需从S3中提取代码,因为Lambda需要部署.跨越区域会增加大量延迟,现在也会创建跨区域依赖关系.

您需要将Lambda软件包移动到您可能在S3存储桶上进行跨区域复制的新区域,或者只需将Lambda函数软件包手动上载到其他区域的S3存储桶中.