无法授予 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: {...},
});
我正在通过 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: {...},
});