如何在 serverless.yml 默认值运算符中使用 `!GetAtt`?
How can I use `!GetAtt` in serverless.yml default value operator?
我有 serverless.yml 用于部署 dynamodb 和 lambda 函数。 lambda 函数需要引用 dynamodb table stream arn.
functions:
onStreamHandler:
handler: ...
name: ...
events:
- stream:
type: dynamodb
arn: ${opt:dbStreamArn, !GetAtt EntityTable.StreamArn}
在 arn:
字段中,我想指定如果未从命令行参数指定 dbStreamArn
,则从 EntityTable.StreamArn
获取值。但是我得到了这个错误:
Serverless Error ---------------------------------------
Missing "arn" property for stream event in function "onStreamHandler" The correct syntax is: stream: <StreamArn> OR an object with an "arn" property. Please check the docs for more info.
引用 arn 值的正确方法是什么?
可能是因为云形成试图在您的 dynamodb 之前创建您的 lambda table。
要解决此问题,请将 dependsOn
添加到您的 lambda 函数中,例如:
functions:
onStreamHandler:
handler: ...
name: ...
events:
- stream:
type: dynamodb
arn: ${opt:dbStreamArn, !GetAtt EntityTable.StreamArn}
dependsOn:
- EntityTable
这将在部署 EntityTable
后部署函数。 !GetAtt EntityTable.StreamArn
然后应该正确解析。
我有 serverless.yml 用于部署 dynamodb 和 lambda 函数。 lambda 函数需要引用 dynamodb table stream arn.
functions:
onStreamHandler:
handler: ...
name: ...
events:
- stream:
type: dynamodb
arn: ${opt:dbStreamArn, !GetAtt EntityTable.StreamArn}
在 arn:
字段中,我想指定如果未从命令行参数指定 dbStreamArn
,则从 EntityTable.StreamArn
获取值。但是我得到了这个错误:
Serverless Error ---------------------------------------
Missing "arn" property for stream event in function "onStreamHandler" The correct syntax is: stream: <StreamArn> OR an object with an "arn" property. Please check the docs for more info.
引用 arn 值的正确方法是什么?
可能是因为云形成试图在您的 dynamodb 之前创建您的 lambda table。
要解决此问题,请将 dependsOn
添加到您的 lambda 函数中,例如:
functions:
onStreamHandler:
handler: ...
name: ...
events:
- stream:
type: dynamodb
arn: ${opt:dbStreamArn, !GetAtt EntityTable.StreamArn}
dependsOn:
- EntityTable
这将在部署 EntityTable
后部署函数。 !GetAtt EntityTable.StreamArn
然后应该正确解析。