dk80
dk80

Reputation: 556

Aws-Sam Local Invoke: Layer endpoint not found

I'm trying to set up a local dev environment for my Lambda functions using SAM. I had everything working until I added a reference to a layer in my configuration.

I followed the instructions here: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-layers.html. I added my ARN for my layer version in my template.ymal as follows:

# 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

However when running a "sam local invoke" I get the following error:

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"

The way I've added the layer ARN in the configuration seems to be exactly how they do it in the example so I'm not sure what is causing the error.

Upvotes: 1

Views: 985

Answers (1)

David Conde
David Conde

Reputation: 4637

I know it's not exactly a solution but can you not have your layer as part of your SAM file?

If you have a look on this article on the AWS site they use both the layer and the lambda function on the same yaml file so you'd end up with something like this:

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

Upvotes: 1

Related Questions