问题描述
我在账户 A 中有 AWS Pinpoint,在账户 B 中有一个 Kinesis Data Firehose,它将数据存储在账户 B 的 S3 中。 pinpoint 中有一个选项可以将事件直接流式传输到 Kinesis Streams(我使用 Firehose 供我使用)案件。 )。但是使用 AWS 控制台,账户 B 中存在的 Firehose 流未列在账户 A 中以生成连接。
所以我尝试使用 IAM Assume Role 进行跨账户访问。我在帐户 B (Firehose) 中的帐户 A (Pinpoint) RoleB 中创建了 RoleA
角色B - 身份政策
{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Action": [
"firehose:PutRecordBatch","firehose:DescribedeliveryStream"
],"Resource": [
"arn:aws:firehose:*region*:*AccountB_id*:deliverystream/*FirehoseStreamName*"
]
}
]
}
角色B - 信任政策
{
"Version": "2012-10-17","Statement": [
{
"Effect": "Allow","Principal": {
"AWS": [
"arn:aws:iam::*AccountA_id*:role/*RoleA*"
]
},"Action": "sts:AssumeRole"
}
]
}
RoleA- 身份政策
{
"Version": "2012-10-17","Statement": {
"Effect": "Allow","Action": "sts:AssumeRole","Resource": "arn:aws:iam::*AccountB_id*/*RoleB*"
}
}
由于无法使用控制台连接 firehose 和 pinpoint,我使用了 AWS CLI 并收到错误
aws-cli 命令
aws pinpoint put-event-stream --application-id *accA-pinpoint-project-id* --write-event-stream '{"DestinationStreamArn": "*accB-firehose-arn*","RoleArn": "*accA-role-arn*"}' --profile *accA-profile*
An error occurred (BadRequestException) when calling the PutEventStream operation: Destination stream validation Failed. Check Destination and Role ARN values and make sure the IAM Role is configured correctly.
所以如果有人做过这两个服务之间的跨账户连接,请帮助我。
解决方法
嘿,似乎无法在两个不同帐户中的 pinpoint 和 firehose 之间创建跨帐户连接。