gpt4 book ai didi

node.js - 使用 AWS SDK 为事件桥规则添加 AWS Lambda 作为目标

转载 作者:行者123 更新时间:2023-12-05 02:45:07 25 4
gpt4 key购买 nike

我正在使用无服务器框架和 AWS Node.js SDK 将基于计划的 cron 表达式的规则添加到默认事件总线。

 eventBridge.putRule(params, function (err, data) {...

之后我将目标添加到此规则。

const params = {
Rule: data.ruleName,
Targets: [
{
Arn: process.env.SCHEDULED_EVENT_LAMBDA_ARN, /* required */
Id: process.env.SCHEDULED_EVENT_LAMBDA_ID, /* required */
Input: JSON.stringify(someData)
},

],

};

eventBridge.putTargets(params, function (err, data) {...

在事件桥上动态创建的计划 cron 规则上添加目标是成功的,但是当我导航到 lambda 仪表板时,它似乎没有更新触发层,最终没有触发 lambda 函数。

事件桥 putTargets 的 AWS SDK 文档提到:

对于 AWS Lambda 和 Amazon SNS 资源,EventBridge 依赖于基于资源的策略

因此,如果资源策略是问题(未确认),是否有任何关于资源策略的配置,我可以在 serverless.yml 文件中为允许事件桥服务添加的特定功能设置部署目标 lambda 函数的层。

最佳答案

对于动态生成,您可以使用 AddPermission添加必要的权限。


function addPermission ({ lambdaArn, restApiId }) {
const { region, namespace } = parseArn(lambdaArn)

const params = {
Action: 'lambda:InvokeFunction',
FunctionName: lambdaArn,
Principal: 'events.amazonaws.com',
StatementId: `scheduleName`,
SourceArn: `RuleARN`
}

return lambda.addPermission(params).promise()
}

如果您使用的是无服务器框架。

functions:
myFunction:
handler: index.handler
events:
- eventBridge:
schedule: rate(10 minutes)
input:
key1: value1

以上定义只是创建规则并将您的 lambda 添加为目标。它将处理必要的权限以及需要的权限。

Setting up event pattern matching

EventBridge Use Cases and Examples

Schedule

关于node.js - 使用 AWS SDK 为事件桥规则添加 AWS Lambda 作为目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66121240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com