Shu*_*thi 5 serverless-framework serverless
有没有一种方法可以在部署后使用无服务器框架立即调用lambda函数。此功能仅创建SNS应用程序,仅在安装过程中需要执行一次。我可以使用,serverless deploy stage && serverless invoke --function functionName但是如果功能失败,那不会破坏安装程序。
我希望将其作为安装程序的一部分进行部署。
谢谢
小智 6
不确定这是否完全符合您的需求,但我已经成功使用 CloudWatch 事件配置 Lambda 函数,该事件将在 CloudFormation API 调用时触发。
您需要启用 CloudTrail 才能执行此操作。
您可以将函数的执行限制为特定堆栈(可能使用CloudTrail 事件resources中的属性)
...
functions:
stack-deployment-function:
handler: stack-deployment-function.handler
description: Lambda function triggered by Stack changes/deployments
timeout: 300
environment:
FOO: bar
events:
- cloudwatchEvent:
name: ${self:service}-${opt:stage, self:provider.stage}-stack-deployment-function
description: 'Updates XYZ after CloudFormation update'
event:
source:
- "aws.cloudformation"
detail-type:
- "AWS API Call via CloudTrail"
detail:
eventName:
# Need to call DescribeStacks in Lambda to confirm successful deployment before making any changes
- "UpdateStack"
- "CreateStack"
Run Code Online (Sandbox Code Playgroud)
可以将挂钩添加到无服务器框架的生命周期事件中。
我使用serverless-plugin-scripts插件(https://www.npmjs.com/package/serverless-plugin-scripts)在部署和删除堆栈后调用自定义作业。
这是一个例子-
custom:
scripts:
hooks:
'deploy:finalize': sls invoke -f functionName &&
'remove:remove': npm run scriptName && sls invoke -f anotherFunctionName
Run Code Online (Sandbox Code Playgroud)
现在,通过成功部署后serverless deploy,sls invoke -f functionName将触发。
同样,使用删除时serverless remove,npm run scriptName && sls invoke -f anotherFunctionName执行。
无服务器架构的生命周期事件/命令的完整列表在这里- https://gist.github.com/HyperBrain/50d38027a8f57778d5b0f135d80ea406
| 归档时间: |
|
| 查看次数: |
1495 次 |
| 最近记录: |