[英]SNS cross account subscription with additional layer
我們擁有一個 AWS 賬戶,賬戶 A。我們依靠外部團隊將消息發布到他們的賬戶 B 中的 SNS 主題。我們使用賬戶 A 中的 SQS 隊列訂閱賬戶 B 中的 SNS 主題。賬戶 A已被賬號 B 的所有者列入訂閱 SNS 主題的白名單。
現在,我們想為多個(新)賬戶訂閱賬戶 B 中的 SNS 主題。 但是,擁有賬戶 B 的團隊無法手動將我們將創建的許多賬戶列入白名單。
我們有沒有辦法通過在賬戶 A 中創建的 IAM 角色之類的東西,將賬戶 A 的權限委托或代理到我們正在創建的所有新賬戶?
問題是帳戶 B 正試圖向帳戶 A 的特定用戶授予權限。就像您提到的,如果您需要設置多個帳戶,這可能是一個問題。
您可以通過多種方式解決此問題。
請注意,如果您使用解決方案 #1,賬戶 A 中的任何 IAM 用戶都將能夠訪問 SNS 資源。 如果多個應用程序在帳戶 A 中運行,這可能是一個問題。
你現在的情況是:
Account-A
中的 Amazon SQS 隊列 ( Queue-A
)Account-B
中的 Amazon SNS 主題 ( Topic-B
)Topic-B
添加權限,允許Account-A
訂閱該主題以上效果很好。
新要求:
Account-C
和Account-D
訂閱Topic-B
Account-B
的所有者不希望修改Topic-B
的權限以允許這些訂閱請求解決方案
不是Account-C
和Account-D
發送Subscribe()
請求,而是要求Topic-B
的所有者直接訂閱新隊列。
你說“擁有賬戶 B 的團隊沒有能力手動將我們將創建的許多賬戶列入白名單。”
這是基於Account-C
和Account-D
應該自己將訂閱請求發送到Topic-B
的想法。 相反,我建議您將Queue-C
和Queue-D
的 ARN 提供給擁有Topic-B
的團隊,並要求他們將這些隊列添加為訂閱者。 這不需要對Topic-B
的權限策略進行任何更改。
但是,有幾點需要注意:
Queue-C
和Queue-D
需要確認訂閱。 最簡單的方法是查看訂閱主題后發送到隊列的初始消息,復制消息中顯示的訂閱 URL,然后將其粘貼到 web 瀏覽器中。 這是一個一次性的過程。Queue-C
和Queue-D
將需要添加權限以允許Topic-B
向其隊列發送消息。 您可能已經為Queue-A
做好了准備。 該政策如下所示:{
"Version": "2012-10-17",
"Id": "arn:aws:sqs:ap-southeast-2:ccc:my-queue/SQSDefaultPolicy",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:ap-southeast-2:ccc:my-queue",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:sns:ap-southeast-2:bbb:their-topic"
}
}
}
]
}
也可以看看:
如果您不能依靠Account-B
的所有者為您做任何事情,那么您唯一的選擇是:
Topic-A
) 中創建您自己的 SNS 主題,您可以在其中管理訂閱Topic-A
Queue-A
,以便發送到Queue-A
任何消息都將重新發送到Topic-A
Topic-A
一樣使用 Topic- Topic-B
這樣,您可以使用現有的 SQS 隊列 ( Queue-A
) 作為您控制下的新 SNS 主題 ( Topic-A
) 的“中繼”。 您還需要將當前從Queue-A
使用的應用程序更改為從訂閱Topic-A
的新隊列中使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.