本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用自訂資源,將多個電子郵件端點訂閱至 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 主題訂閱的電子郵件端點。 | 編輯檔案 | |
部署建立資源和訂閱的 AWS CloudFormation 堆疊。 | 使用您的 AWS 設定檔名稱、AWS 區域和
| 具有適當許可的 IAM 角色 |
任務 | 描述 | 所需技能 |
---|---|---|
設定 SNS 主題訂閱的電子郵件端點。 | 編輯檔案 | |
部署建立資源和訂閱的 AWS CloudFormation 堆疊。 | 使用您的 AWS 設定檔名稱和 AWS 區域執行 deploy.sh 命令。您不必指定
| 具有適當許可的 IAM 角色 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 SNS 主題。 | 透過 AWS CloudFormation 範本建立 SNS 主題,而不需在範本物件中指定訂閱端點。 | 具有適當許可的 IAM 角色 |
建立 SNS 主題原則。 | 在 AWS CloudFormation 範本中建立 SNS 主題政策。 | 具有適當許可的 IAM 角色 |
訂閱 SNS 主題的電子郵件端點清單。 | 根據電子郵件端點清單 (一或多個),為端點訂閱您建立的 SNS 主題。 | 具有適當許可的 IAM 角色 |
相關資源
參考
所需工具
附件
若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip