You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SAM本地运行含Spacy Layer的Lambda时正则约束验证失败

解决Lambda层ARN验证失败与版本不匹配问题

问题根源

  • 变量语法不兼容:使用的${self:provider.region}是Serverless Framework专属变量格式,AWS SAM无法解析,导致ARN中的占位符未被替换,直接触发AWS API的格式验证错误。
  • Python版本不匹配:Lambda运行时指定为python3.9,但引用的是Klayers-python37-spacy层,Python运行时版本必须与层的编译版本完全一致,否则会导致依赖加载失败。

修复步骤

1. 修正SAM模板中的层ARN

替换不兼容的变量语法,并使用与Python3.9匹配的Klayers层:

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31

Resources:
  GetWordCounts:
    Type: AWS::Serverless::Function
    Properties:
      Handler: word-counts/app.lambda_handler
      Runtime: python3.9
      CodeUri: .
      Timeout: 30
      Layers:
        # 使用SAM原生的!Sub语法替换区域,同时改用Python3.9对应的层
        - !Sub arn:aws:lambda:${AWS::Region}:113088814899:layer:Klayers-python39-spacy:45
      Events:
        ApiGateway:
          Type: Api
          Properties:
            Path: /word-counts
            Method: get

提示:层的版本号可根据Klayers最新版本调整,确保与你的目标AWS区域、Python版本匹配。

2. 本地运行验证

修改完成后重新启动本地API:

sam local start-api --profile my-profile

调用http://localhost:3000/word-counts即可正常返回响应。

3. 额外注意事项

  • 确保你的AWS配置(profile)有权限访问目标区域的Lambda层资源。
  • 若需指定固定区域,可直接将${AWS::Region}替换为具体区域代码(如us-east-1)。

内容的提问来源于stack exchange,提问作者Willian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:43:10