我有一个使用 CDK 管理的 SNS 主题。其他 AWS 账户中的客户希望将其 SQS 队列订阅到该主题。
我知道可以像这样手动执行此操作:
这是一个选项,但它不可扩展。可能有大量客户端(数百+)想要接收 SNS 事件的权限。
有ways 通过代码添加 SNS 订阅,因此我们可以启动一个轻量级前端,客户端可以 (1) 在他们的端授予 SNS 权限,以及 (2) 使用前端并输入他们的 SQS arn然后通过代码添加 SNS 权限。但是,我不确定这是否可行,因为我们将 CDK 用于 SNS。
有人有什么想法吗?有什么办法解决这个问题吗?
您可以将用户电子邮件放在一个文件中,然后更新您的堆栈。如果您不想手动执行此操作,您可以制作一个应用程序,当点击时将他们的主题添加到堆栈并更新它。代码将是这样的。
from aws_cdk import (
Stack,
aws_sns as sns,
aws_sns_subscriptions as sns_sub
)
from constructs import Construct
import os
new_email = [email protected]
class CdkTopicStack(Stack):
def __init__(self, scope: Construct, construct_id: str, email: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
topic = sns.Topic(self, "Topic",
display_name="Sync S3 Topic"
)
topic.add_subscription(sns_sub.EmailSubscription(email_address=email))
app = cdk.App()
env = cdk.Environment(account=os.getenv("AWS_ACCOUNT"),
region=os.getenv("AWS_DEFAULT_REGION"))
CdkTopicStack(app,
"Stack",
env=env,
email=new_email)