当前位置: 首页 > 知识库问答 >
问题:

如何创建EventBridge(CloudWatch Events)规则并将其添加到Lambda函数中作为使用CDK的触发器?

云镜
2023-03-14

我正在尝试创建一个EventBridge(CloudWatch Events)规则,并将该规则添加为现有Lambda函数的触发器。

    const notificationFunction = lambda.Function.fromFunctionArn(this,
      'DevopsNotificationLambda',
      _props.notificationLambdaArn
    );
    const rule = new Rule(this, `${stackPrefix}-EventRule`, {
      eventPattern: {
        source: ['aws.codepipeline'],
        detailType: ['CodePipeline Pipeline Execution State Change'],
        detail: {pipeline: [pipeline.pipelineName]}
      },
    });
    notificationFunction.addPermission(`${stackPrefix}-CloudWatchPermission`, {
      principal: new ServicePrincipal('events.amazonaws.com'),
      sourceArn: rule.ruleArn
    });
    rule.addTarget(new LambdaFunction(notificationFunction));

代码使用Lambda目标正确创建EventBridge,但它不会将触发器添加到实际的Lambda中。我必须通过AWS Web控制台手动将EventBridge添加到Lambda。

似乎仅仅将Lambda添加为事件规则的目标是不够的。如何将事件规则作为触发器添加到Lambda?

共有1个答案

范建华
2023-03-14

从在CDK开发人员指南中导入现有外部资源。

虽然可以在任何位置使用导入的资源,但不能修改导入的资源。例如,在导入的s3上调用addToResourcePolicy(Python:add\u to\u resource\u policy)。Bucket什么都不做。

您不能从CDK堆栈向通知函数添加触发器,因为通知函数是外部资源。

 类似资料:
  • 我想创建一个以lambda函数为目标的AWS eventbridge规则。名为“StartInstance”的lambda函数已通过控制台创建。 我创建了一个python脚本,它使用boto3库来创建这个eventbridge规则。我将向该规则传递一个cron表达式,该表达式将在特定日期和时间调用lambda函数。 下面是成功运行的python脚本代码: 如您所见,传递给规则的cron表达式是:,

  • 我有3个独立的堆栈(都在同一个帐户和区域) he AuthStack通过lambda post-confirmation trigger lambda函数进行身份验证,并向EventsBusStack发送一个新的用户事件对象 EventBusStack通过后确认lambda接收newUser对象 然而,使用CDK,我似乎无法找到一种方法来定位位于第三个堆栈中的lambda函数,即RewardsSt

  • 我试图为cloudfront重定向根默认对象创建一个lambda@edge。我遵循了以下指示:https://aws.amazon.com/blogs/compute/implementing-default-directory-indexes-in-amazon-s3-backed-amazon-cloudfront-origins-using-lambdaedge/ 但是CloudFront没

  • 在我的Lambda CDK堆栈中,我想设置一个事件规则,以便每10分钟向我的Lambda发送一个事件。 aws事件规则 这将工作并以lambda为目标部署规则 问题是这只针对没有别名或版本的基本ARN(实际上总是指向$Latest)。AWS控制台中有此选项可用于为目标设置别名或版本(下图),如何在CDK中执行此操作? AWS控制台UI允许别名和版本的目标arn具有别名时配置通过UI

  • 我有一个现有的Lambda函数。 我可以使用控制台创建一个以Lambda为目标的新规则。 当我通过控制台这样做时,它会自动创建一个“EventBridge(CloudWatch Events)”触发器,该触发器在Lambda配置屏幕上可见。 规则执行并成功调用Lambda。 尝试使用C#和SDK(nuget包:AWSSDK. EventBridge)自动执行上述步骤,我采取以下步骤: 我成功调用P

  • 我正在尝试创建一个以Lambda函数为目标的AWS Eventbridge规则。我可以添加规则和目标,但当我尝试通过RoleArn设置lambda权限时,Cloudformation堆栈部署失败,目标arn不支持RoleArn:aws:lambda:us-east-1:1234567890:功能:联系lambda消费新客户。(服务:AmazonCloudWatchEvents;状态代码:400;错