使用自訂資源,將多個電子郵件端點訂閱至 SNS 主題 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用自訂資源,將多個電子郵件端點訂閱至 SNS 主題

由里卡多·莫拉斯(AWS)創建

環境:生產

技術: DevOps

AWS 服務:Amazon SNS;AWS CloudFormation;AWS Lambda

Summary

注意,2022 年 8 月:AWS CloudFormation 現在支援透過AWS::SNS::Topic物件及其訂閱屬性訂閱多個資源。

此模式說明如何訂閱多個電子郵件地址,以接收來自 Amazon Simple Notification Service (Amazon SNS) 主題的通知。它使用 AWS Lambda 函數做為 AWS CloudFormation 範本中的自訂資源。Lambda 函數與輸入參數相關聯,該參數可指定 SNS 主題的電子郵件端點。

目前,您可以使用 AWS CloudFormation 範本物件,AWS::SNS::Topic並訂AWS::SNS::Subscription閱 SNS 主題的單一端點。若要訂閱多個端點,您必須多次呼叫物件。透過使用 Lambda 函數做為自訂資源,您可以透過輸入參數訂閱多個端點。您可以在任何 AWS CloudFormation 範本中使用此 Lambda 函數做為自訂資源。 

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 在您的本機環境中使用存取金鑰和秘密金鑰設定的 AWS 設定檔。您也可以從 AWS Cloud9 執行此程式碼。

  • 下列項目的權限:

    • AWS Identity and Access Management (IAM) 角色和政策

    • AWS Lambda 功能

    • Amazon Simple Storage Service (Amazon S3),用於上傳 Lambda 函數

    • Amazon SNS 主題和政策

    • AWS CloudFormation 堆疊

限制

  • 該代碼支持 Linux 和 macOS 工作站。

產品版本

  • AWS Command Line Interface (AWS CLI) (AWS CLI) 第 2 版或更新版本。

架構

目標技術堆疊

  • AWS CloudFormation

  • Amazon SNS

  • AWS Lambda

工具

工具

Code

附件包含下列檔案:

  • 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 主題。

透過 AWS CloudFormation 範本建立 SNS 主題,而不需在範本物件中指定訂閱端點。AWS::SNS::Topic您可以template.yaml在附件中作為起點使用。

具有適當許可的 IAM 角色

建立 SNS 主題原則。

在 AWS CloudFormation 範本中建立 SNS 主題政策。

具有適當許可的 IAM 角色

訂閱 SNS 主題的電子郵件端點清單。

根據電子郵件端點清單 (一或多個),為端點訂閱您建立的 SNS 主題。

具有適當許可的 IAM 角色

相關資源

參考

所需工具

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip