gpt4 book ai didi

amazon-web-services - 如何使用 CloudFormation 或 CDK 将另一个 AWS 账户的事件总线指定为 EventBridge 规则的目标?

转载 作者:行者123 更新时间:2023-12-03 23:43:58 25 4
gpt4 key购买 nike

如何使用 CloudFormation 或 CDK 将另一个 AWS 账户的事件总线指定为 CloudWatch 规则的目标?

以下是使用 CDK 的示例规则,我尝试将 CodeDeploy 事件发送到另一个帐户:

Rule codedeployCreateDeploymentEventRule = Rule.Builder.create(this, "CodedeployCreateDeploymentEventRule")
.description("CloudWatch event rule covering CodeDeploy CreateDeployment notifications.")
.ruleName("MyRule")
.enabled(true)
.targets(List.of(...something here...))
.eventPattern(EventPattern.builder()
.source(List.of("aws.codedeploy"))
.detail(Map.of("eventName", List.of("CreateDeployment")))
.build())
.build();

如何指定另一个帐户的 EventBus 作为目标?语法是什么 - 是 ARN 还是什么?

最佳答案

要在 CloudFormation 中将 CW 事件从 Acc1 中继到 Acc2,需要三件事:

1。 Acc2 - EventBusPolicy

AWS::Events::EventBusPolicy它允许 Acc1 提交事件。例如:

  MyEventBusPolicy:
Type: AWS::Events::EventBusPolicy
Properties:
Action: events:PutEvents
EventBusName: default
Principal: 2234322123 # Account1 Id
StatementId: AcceptEventsFromAcc1

2。 Acc1 - CW 的 Iam 角色

允许 Acc1 中的 CW Events 向 Acc 2 发布事件的 IAM 角色。示例:

  MyCWEventsRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: [events.amazonaws.com]
Action: ["sts:AssumeRole"]
Description: Role for CW event to be able to publish events to acc2
Policies:
- PolicyName: MyEventPolicy
PolicyDocument: !Sub |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"events:PutEvents"
],
"Resource": [
"arn:aws:events:${RegionId}:${AccountId}:event-bus/default"
]
}
]
}

其中 AccountIdRegionId 是 Acc2 值,而不是 Acc1。

3。 Acc1 - CW 事件规则将事件依赖于 Acc2 的总线

它将使用步骤 2 中的 IAM 角色。例如,依赖 CodeCommits 事件(我之前设置过它,所以我知道它有效):

  MyRule:
Type: AWS::Events::Rule
Properties:
Description: Monitor master branch of our repo and rely to Acc2
EventPattern: !Sub |
{
"source": [
"aws.codecommit"
],
"detail-type": [
"CodeCommit Repository State Change"
],
"resources": [
"${GitRepoArn}"
],
"detail": {
"event": [
"referenceCreated",
"referenceUpdated"
],
"referenceType": [
"branch"
],
"referenceName": [
"master"
]
}
}
State: ENABLED
Targets:
- Arn: !Sub "arn:aws:events:${RegionId}:${AccountId}:event-bus/default"
Id: MyEventToAcc2
RoleArn: !GetAtt MyCWEventsRole.Arn

其中 AccountIdRegionId 是 Acc2 值,而不是 Acc1。

关于amazon-web-services - 如何使用 CloudFormation 或 CDK 将另一个 AWS 账户的事件总线指定为 EventBridge 规则的目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64069765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com