Aws lambda CloudFormation:AWS::Lambda::函数代码作为来自另一个区域的bucket的文件

Aws lambda CloudFormation:AWS::Lambda::函数代码作为来自另一个区域的bucket的文件,aws-lambda,amazon-cloudformation,Aws Lambda,Amazon Cloudformation,目前,可以从S3 bucket中指定一个zip文件作为用于CloudFormation配置的Lambda函数的源代码: ... "Resources": { "LambdaFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "lambda_function.lambda_handler", "Runtime": "p

目前,可以从S3 bucket中指定一个zip文件作为用于CloudFormation配置的Lambda函数的源代码:

...
"Resources": {
    "LambdaFunction": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
            "Handler": "lambda_function.lambda_handler",
            "Runtime": "python3.6",
            "Code": {
                "S3Bucket": "some-bucket",
                "S3Key": "someFile.zip"
            },
...
不幸的是,只有当您的bucket与您尝试使用cloudFormation json/yml配置模板创建的堆栈位于同一区域(例如us-east-2)时,它才起作用

但是如果我想为几个区域使用一个配置模板?在这种情况下我能做什么?我认为手动复制zip文件有点不舒服

有没有办法为Lambda源代码指定另一个(非当前)区域的bucket中的文件?

或者可能有人已经解决了相同的问题?


另外,我必须将源代码指定为文件,因为我的zip文件中有一些外部库。不仅是文本脚本。

您还必须找到解决此问题的其他方法。这里的代码引用指定了可以从中加载代码的S3 bucket位置,而Lambda正是这样做的,它直接将代码加载到函数底层的容器中。AWS在多个区域中使用相同模板的标准方法是在替换中使用
AWS::Region
,这样将有多个具有相同前缀的bucket,后缀就是区域。请参阅@JamieStarke,看起来您正在完全限定模板中的bucket名称以解决此问题。对吗?指定完全限定的bucket(如:s3-us-east-2.amazonaws.com/mybucket)是否有效?如:
中所述,创建部署包后,您可以直接将其上载,也可以先将.zip文件上载到要创建Lambda函数的AWS区域内的Amazon s3 bucket中。在我链接的示例中,AWS碰巧在每个区域中创建了bucket,并包含了区域名称,因此它们可以将lambda指向同一区域中的bucket。您必须找到解决此问题的其他方法。这里的代码引用指定了可以从中加载代码的S3 bucket位置,而Lambda正是这样做的,它直接将代码加载到函数底层的容器中。AWS在多个区域中使用相同模板的标准方法是在替换中使用
AWS::Region
,这样将有多个具有相同前缀的bucket,后缀就是区域。请参阅@JamieStarke,看起来您正在完全限定模板中的bucket名称以解决此问题。对吗?指定完全限定的bucket(如:s3-us-east-2.amazonaws.com/mybucket)是否有效?如:
中所述,创建部署包后,您可以直接将其上载,也可以先将.zip文件上载到要创建Lambda函数的AWS区域内的Amazon s3 bucket中。在我链接的示例中,AWS碰巧在每个区域中创建了bucket,并包含了区域名称,这样他们就可以将lambda指向同一区域中的bucket。