代码之家  ›  专栏  ›  技术社区  ›  noobie-php

AWS lambda字符串插值不工作

  •  0
  • noobie-php  · 技术社区  · 7 年前

    所以我试图超越lambda环境,我使用了字符串插值,但是有一件事我无法理解,所以下面基本上是我的lambda,如果你看到函数名,它有一个环境的占位符。但是当我像这样部署的时候

    aws cloudformation deploy --template-file build/output.yaml --stack-name test-stack --capabilities CAPABILITY_IAM --parameter-overrides Environment=de
    v
    

    占位符不更新以下代码

    Parameters:
      Environment:
        Type: String
    
    Resources:
        HelloWorldFunction:
            Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
            Properties:
                CodeUri: src
                Handler: index.lambda_handler
                Runtime: python3.6
                FunctionName: HelloLambda-${Environment}
                MemorySize: 128
                Timeout: 30
                Policies:
                  - AWSLambdaBasicExecutionRole 
    

    但如果我也这样做的话 参数: 环境: 类型:字符串

    资源:

     HelloWorldFunction:
            Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
            Properties:
                CodeUri: src
                Handler: index.lambda_handler
                Runtime: python3.6
                FunctionName: !Sub HelloLambda-${Environment}
                MemorySize: 128
                Timeout: 30
                Policies:
                  - AWSLambdaBasicExecutionRole
    

    上面的执行工作,有什么区别吗 FunctionName: !Sub HelloLambda-${Environment} FunctionName: HelloLambda-${Environment}

    1 回复  |  直到 7 年前
        1
  •  2
  •   Kannaiyan    7 年前

    通过拥有 !Sub 在前面,您使用云的形成来调用子函数。它接受模板参数,并在需要时应用替换。

    更多文档,请访问,

    https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html

    !附属的 Hellolambda-$环境

    获取环境变量并替换为指定的值,这样就可以根据环境变量获得不同的函数。