如何在AWS SAM模板中使用!ImportValue获取Lambda层ARN?
解答
首先,你写的Layers: !ImportValue layerName.arn不正确,原因和正确用法如下:
1. 先修正基础模板的输出配置
当前基础模板的Outputs仅定义了输出值,但缺少Export字段——只有配置了导出的输出才能被其他模板通过!ImportValue引用。你需要先修改基础模板的Outputs部分:
Outputs: layerName: Value: !Ref Psycopg2LayerLambdaLayer Export: Name: layerName # 这个名称是后续导入时的唯一标识
注意:!Ref Psycopg2LayerLambdaLayer返回的本身就是该Lambda层的ARN,所以输出值直接是ARN,不需要额外拼接.arn后缀。
2. 新模板中的正确引用写法
Lambda函数的Layers属性是数组类型,因此需要用方括号包裹导入的值,正确写法示例:
Resources: YourTargetLambda: Type: AWS::Serverless::Function Properties: # 其他函数配置(如Runtime、Handler等) Layers: - !ImportValue layerName
内容的提问来源于stack exchange,提问作者ista120
相关产品推荐
相关产品推荐

