使用 CDK 创建 EventBridge 规则时避免向 Lambda 添加资源策略

问题描述 投票:0回答:1

问题陈述:

我想创建

n
数量的 EventBridge 规则,其中目标资源是使用 CDK 的 Lambda。创建规则时,EventBridge 会自动为 lambda 创建资源策略,如下所示:

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "EventBridge-Rule-1",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-1:XXXXXXXXXXXXX:function:SUBMIT-JOB-LAMBDA",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:events:us-east-1:XXXXXXXXXXXXX:rule/src-project-file.py"
        }
      }
    },
    {
      "Sid": "EventBridge-Rule-2",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:us-east-1:XXXXXXXXXXXXX:function:SUBMIT-JOB-LAMBDA",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:events:us-east-1:XXXXXXXXXXXXX:rule/src-project-file_2.py"
        }
      }
    }
  ]
}

目前该政策包含有关两条规则的信息。将来,该策略可能有超过 100 条语句,这将破坏资源策略的大小(20KB)。

就我而言,

SourceArn
始终以
arn:aws:events:us-east-1:XXXXXXXXXXXXX:rule/src
开头。因此,我可以在
*
中使用
SourceArn
通配符,并将此资源策略减少为单个语句,无论规则数量如何。


可能的解决方案?:

  1. 在通过 CDK 创建规则时,如何避免向 Lambda 添加另一个资源策略?
  2. 仅通过CDK而不是通过SDK添加规则后是否可以删除资源策略?
  3. 还有其他解决办法吗?
amazon-web-services aws-lambda aws-event-bridge
1个回答
0
投票

最后我使用 L1 规则构造解决了这个问题:

// Creating input for target
const input = JSON.stringify({
  job_name: jobAndRuleName,
  file_path: schedule.file_path,
  cpu: this.get_cpu(schedule?.cpu),
  ram: this.get_ram(this.get_cpu(schedule?.cpu)),
  job_queue: 'JOB-QUEUE',
  job_definition: 'JOB-DEFINITION',
});

// Creating rule
new events.CfnRule(this, jobAndRuleName, {
  name: jobAndRuleName,
  description: `This rule is created via CDK for file: ${schedule.file_path}`,
  scheduleExpression: `cron(${schedule.cron})`,
  state: schedule?.disable ? 'DISABLED' : 'ENABLED',
  targets: [
    {
      arn: this.lambda.functionArn,
      id: 'Target-SUBMIT-JOB-LAMBDA',
      input: input,
    },
  ],
});
© www.soinside.com 2019 - 2024. All rights reserved.