使用自定义资源为多个电子邮件终端节点订阅一个SNS主题 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用自定义资源为多个电子邮件终端节点订阅一个SNS主题

由里卡多·莫赖斯创作 () AWS

摘要

注意,2022 年 8 月:AWS CloudFormation 现在支持通过:AWS:SNS: Topic 对象及其订阅属性订阅多个资源。

此模式描述如何订阅多个电子邮件地址以接收来自亚马逊简单通知服务 (AmazonSNS) 主题的通知。它使用 L AWS ambda 函数作为模板中的自定义资源。AWS CloudFormation Lambda 函数与指定主题电子邮件终端节点的输入参数相关联。SNS

目前,您可以使用AWS CloudFormation 模板对象AWS::: Topic 和::SNS: Subscri AWSbuti SNS on 来订阅单个终端节点订阅主题。SNS要订阅多个端点,您必须多次调用该对象。通过将 Lambda 函数用作自定义资源,您可以通过输入参数订阅多个端点。您可以将此 Lambda 函数用作任何AWS CloudFormation 模板中的自定义资源。 

先决条件和限制

先决条件

  • 一个活动的 AWS 账户。

  • 在您的本地环境中使用访问密钥和私有密钥AWS配置的配置文件。

  • 以下内容的权限:

    • AWSIdentity and Access Management (IAM) 角色和策略

    • AWS Lambda 函数

    • 用于上传 Lambda 函数 的 Amazon Simple Storage Service (Amazon S3)

    • Amazon SNS 主题和政策

    • AWS CloudFormation 堆栈

限制

  • 此代码支持 Linux 和 macOS 工作站。

产品版本

  • AWS命令行界面 (AWSCLI) 版本 2 或更高版本。

架构

目标技术堆栈

  • AWS CloudFormation

  • Amazon SNS

  • AWS Lambda

工具

工具

代码

附件包括以下文件:

  • Lambda 函数:lambda_function.py

  • AWS CloudFormation 模板:template.yaml

  • 用于处理多个或单个电子邮件端点订阅的两个参数文件:parameters-multiple-values.json(用作默认值)和 parameters-one-value.json

要部署堆栈,您可使用任一参数文件。要指定多个电子邮件端点,请执行以下操作: 

./deploy.sh -p <YOUR_AWS_PROFILE_NAME> -r <YOUR_AWS_PROFILE_REGION>

要指定单个电子邮件端点,请执行以下操作:

./deploy.sh -p <YOUR_AWS_PROFILE_NAME> -r <YOUR_AWS_PROFILE_REGION> -f parameters-one-value.json

操作说明

任务描述所需技能

为SNS主题订阅配置电子邮件终端节点。

编辑文件 parameters-one-value.json(附件),然后更改 pSNSNotificationsEmail参数的值以反映您要使用的电子邮件地址,例如 someone@example.com

部署创建资源和订阅的AWS CloudFormation 堆栈。

使用您的AWS个人资料名称、AWS地区和parameters-one-value.json文件运行 deploy.sh 命令。

./deploy.sh -p <YOUR_AWS_PROFILE_NAME> -r <YOUR_AWS_PROFILE_REGION> -f parameters-one-value.json
IAM具有适当权限的角色
任务描述所需技能

为SNS主题订阅配置电子邮件终端节点。

编辑文件 parameters-multiple-values.json(附件),然后更改 pSNSNotificationsEmail 参数的值以反映您要使用的电子邮件地址(用逗号分隔),如下所示:someone1@example.com, someone2@example.com

部署创建资源和订阅的AWS CloudFormation 堆栈。

使用您的AWS个人资料名称和AWS地区运行 deploy.sh 命令。您不必指定 parameters-multiple-values.json 文件,因为默认情况下会使用该文件。

./deploy.sh -p <YOUR_AWS_PROFILE_NAME> -r <YOUR_AWS_PROFILE_REGION>
IAM具有适当权限的角色
任务描述所需技能

创建一个 SNS 主题。

通过模板创建SNS主题,无需在AWS CloudFormation AWS::SNS::Topic模板对象中指定订阅端点。您可使用附件中的 template.yaml 作为起点。

IAM具有适当权限的角色

创建SNS主题策略。

在AWS CloudFormation 模板中创建SNS主题策略。

IAM具有适当权限的角色

在电子邮件终端节点列表中订阅该SNS主题。

根据电子邮件终端节点(一个或多个)列表,为终端节点订阅您创建SNS的主题。

IAM具有适当权限的角色

相关资源

参考

必要工具

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip