我正在尝试使用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层的方式似乎正是他们在示例中的操作方式,因此我不确定是什么导致了错误。
答案 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