[英]Cross account SNS SQS subscription set up (CDK)
我正在尝试在 SQS 队列(帐户 11111111111)和 SNS 主题(帐户 22222222222)之间设置跨帐户订阅。 但是,我一直无法通过 CDK 完成此操作。 任何帮助,将不胜感激。
以下是在 SQS 队列中设置订阅的 CDK 代码(SQS 队列设置为标准,此处省略),
// SNS topic in another account
const snsTopic = sns.Topic.fromTopicArn(
this,
'id',
'arn:aws:sns:us-west-2:22222222222:id',
);
snsTopic.addSubscription(new SqsSubscription(sqsQueue));
然后我按照这篇AWS文章给出了SNS主题访问策略要由账户11111111111订阅。以下是主题的访问策略,
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:Publish",
"SNS:RemovePermission",
"SNS:SetTopicAttributes",
"SNS:DeleteTopic",
"SNS:ListSubscriptionsByTopic",
"SNS:GetTopicAttributes",
"SNS:AddPermission",
"SNS:Subscribe"
],
"Resource": "arn:aws:sns:us-west-2:22222222222:id",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "22222222222"
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sns:Subscribe",
"Resource": "arn:aws:sns:us-west-2:22222222222:id",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "11111111111"
}
}
}
]
}
正如您在此处看到的,此策略为帐户所有者 (22222222222) 提供完全访问权限,并为另一个帐户 (11111111111) 提供订阅权限。
但是,当我部署我的 CDK 更改时,cloudformation 不断抛出以下错误,表明帐户 11111111111 没有授权订阅 22222222222 中的主题。
User: arn:aws:sts::11111111111:assumed-role/PipelinesChangeSetExec-19a3877f4882528dec93b2760e3771af2ccd62c
6/AWSCloudFormation is not authorized to perform: SNS:Subscribe on resource: arn:aws:sns:us-west-2:2222222
2222:id because no resource-based policy allows the SNS:Subscribe action (Service: AmazonSNS; Status Code:
403; Error Code: AuthorizationError; Request ID: 45ea9a58-13ce-50b9-8b07-c16de46f3a53; Proxy: null)
我想我正在遵循 AWS 的设置指南。 谁能指出我可能错的地方? 谢谢
所以我想通了。 这是一个有用的视频,它解释了如何在 SNS 和 SQS 之间设置跨账户订阅。 我在澄清 SNS 主题中的访问策略时犯了一个错误。 但是,通过观看视频,我能够部署 SQS 队列并让它订阅另一个帐户中的 SNS 主题。
注意:由于我是 SNS 话题的所有者,所以不需要在 SQS 端确认订阅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.