该问题通常是由于缺少IAM权限而引起的。您需要为Lambda角色授予EventBridge规则的访问权限。在Lambda的IAM角色中,需要添加以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": "*",
"Action": [
"events:*"
]
}
]
}
需要注意的是,最好将Resource字段更改为仅包含规则所在的特定AWS帐户和区域。此外,也要确保您的Lambda函数和事件桥规则都在同一AWS帐户中。
除此之外,您还需要将AWS SDK版本升级到最新版本。在您的Lambda函数中,使用以下Node.js代码段添加EventBridge规则:
const AWS = require('aws-sdk');
const eventBridge = new AWS.EventBridge();
exports.handler = async (event) => {
const ruleParams = {
Name: 'MyEventBridgeRule',
Description: 'My EventBridge Rule',
EventPattern: JSON.stringify({
source: ['myapp'],
detailType: ['request']
}),
State: 'ENABLED'
};
try {
const result = await eventBridge.putRule(ruleParams).promise();
console.log(result);
} catch (err) {
console.error(err);
}
};
这个示例代码假定您已经在Lambda中配置了AWS SDK和EventBridge。
以上两种方法都不适用,则可以参考AWS文档进行更深入的问题排查,如控制台查看CloudWatch日志等方法。