无法授予 EventBridge 总线权限

Cannot grant permission to EventBridge bus

我正在通过 CDK 在 AWS EventBridge 中创建自定义总线:

    export class EventbridgeStack extends Stack {
      constructor(scope: Construct, id: string, props?: StackProps) {
        super(scope, id, props);
    
        const targetCoreBus = new events.EventBus(this, 'TargetCoreBus', {
          eventBusName: 'TargetCoreBus',
        });
    
        targetCoreBus.grantPutEventsTo(new iam.AccountPrincipal('1234567890'));
    
      }
    }

总线创建的很好,但我假设了线路

    targetCoreBus.grantPutEventsTo(new iam.AccountPrincipal('1234567890'));

将向总线添加允许指定帐户将事件放入其中的策略。但它似乎什么也没做,堆栈中没有合成任何新东西,总线上没有添加任何策略。是预料之中吗,我是不是做错了什么?

grantPutEventsTo 向 Grantee 添加内联 identity-based 策略。例如,targetCoreBus.grantPutEventsTo(MyLambda) 会将 AWS::IAM::Policy 添加到 Lambda 的执行角色。

您想将帐户主体添加到总线的 resource-based 策略中。 CfnEventBusPolicy 结构将做到这一点:

new events.CfnEventBusPolicy(this, 'CustomBusResoucePolicy', {
  statementId: 'Cross-Account-Bus-20220509',
  action: 'events:PutEvents',
  principal: '123456789012',
  eventBusName: targetCoreBus.eventBusName,
  condition: {...},
});