Aws-Sam Local调用:找不到层端点

时间:2019-09-26 14:10:25

标签: amazon-web-services aws-lambda aws-cli aws-sam

我正在尝试使用SAM为我的Lambda函数设置本地开发环境。在我添加了对配置中的图层的引用之前,一切工作正常。

我按照此处的说明进行操作:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-layers.html。我将我的图层版本的ARN添加到template.ymal中,如下所示:

# template.ymal
TestLayerFunction:
  Type: AWS::Serverless::Function
  Properties:
    FunctionName: TestLayer
    Role: arn:aws:iam::111111111111:role/ReadStreamingTable
    CodeUri: src/streaming/test-layer/
    Handler: app.handler
    Runtime: nodejs8.10
    Layers:
      - arn:aws:lambda:eu-west-1:111111111111:layer:Global:7

但是,当运行“ sam local invoke”时,出现以下错误:

botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL:
 "https://lambda.eu-west-1a.amazonaws.com/2018-10-31/layers/arn%3Aaws%3Alambda%3Aeu-west-1%3A111111111111%3Alayer%3AGlobal/versions/7"

我在配置中添加ARN层的方式似乎正是他们在示例中的操作方式,因此我不确定是什么导致了错误。

1 个答案:

答案 0 :(得分:0)

我知道这不是完全解决方案,但是您是否可以将图层作为SAM文件的一部分?

如果您浏览this article on the AWS site,它们会在同一yaml文件中同时使用layer和lambda函数,因此您最终会得到如下结果:

Resources:
    TempConversionFunction:
        Type: AWS::Serverless::Function 
        Properties:
            CodeUri: hello-world/
            Handler: app.lambdaHandler
            Layers:
              - !Ref TempConversionDepLayer
            Events:
                HelloWorld:
                    Type: Api
                    Properties:
                        Path: /{conversion}/{value}
                        Method: get

    TempConversionDepLayer:
        Type: AWS::Serverless::LayerVersion
        Properties:
            LayerName: sam-app-dependencies
            Description: Dependencies for sam app [temp-units-conv]
            ContentUri: dependencies/
            CompatibleRuntimes:
              - nodejs6.10
              - nodejs8.10
            LicenseInfo: 'MIT'
            RetentionPolicy: Retain