要存储 CloudFormation 模板“s-resource-cf.json”中的 Arn,请将一些项目添加到“输出”部分。
"Outputs": {
"InsertVariableNameForLaterUse": {
"Description": "This is the Arn of My new Kinesis Stream",
"Value": {
"Fn::GetAtt": [
"InsertNameOfCfSectionToFindArnOf",
"Arn"
]
}
}
}
Fn::GetAtt 是 CF 中的一个函数,用于从另一个正在创建的资源中获取引用。
当您使用 serverless resources deploy -s dev -r eu-west-1 部署 CF 模板时,将为该阶段/区域创建 Kinesis Stream,并且 Arn 将保存到区域属性文件 /_meta/resources/variables/s-variables-dev-euwest1.json 中。注意初始大小写更改insertVariableNameForLaterUse。
然后您可以在函数的s-function.json 中使用它作为
${insertVariableNameForLaterUse},如环境部分:
"environment": {
"InsertVariableNameWeWantToUseInLambda": "${insertVariableNameForLaterUse}"
...
}
并在您的 Lambda 中使用以下方式引用此变量:
var myKinesisStreamArn = process.env.InsertVariableNameWeWantToUseInLambda;
CloudFormation 发生在 Lambda 部署之前。尽管您可能应该使用脚本来控制它,而不仅仅是使用仪表板:
serverless resources deploy -s dev -r eu-west-1
serverless function deploy --a -s dev -r eu-west-1
serverless endpoint deploy --a -s dev -r eu-west-1
希望对您有所帮助。