

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

# 在创建 IAM 用户时发送通知
<a name="send-a-notification-when-an-iam-user-is-created"></a>

*Mansi Suratwala 和 Sergiy Shevchenko，Amazon Web Services*

## Summary
<a name="send-a-notification-when-an-iam-user-is-created-summary"></a>

在 Amazon Web Services (AWS) 上，您可以使用此模式部署 AWS CloudFormation 模板，以便在创建 AWS 身份和访问管理 (IAM) 用户时自动接收通知。 

使用 IAM，您可以安全地管理 Amazon Web Services 和资源的访问权限。您可以创建和管理亚马逊云科技用户和组，并使用权限来允许和拒绝此类用户和组访问亚马逊云科技资源。

该 CloudFormation 模板创建了一个亚马逊 CloudWatch 事件和一个 AWS Lambda 函数。该事件使用 AWS CloudTrail 来监控在 AWS 账户中创建的任何 IAM 用户。如果创建了用户，则 CloudWatch 事件会启动 Lambda 函数，该函数会向您发送亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 通知，告知您发生了新用户创建事件。

## 先决条件和限制
<a name="send-a-notification-when-an-iam-user-is-created-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account
+ 创建并部署了 AWS CloudTrail 跟踪

**限制**
+ AWS CloudFormation 模板`CreateUser`只能用于部署。 

## 架构
<a name="send-a-notification-when-an-iam-user-is-created-architecture"></a>

**目标技术堆栈**
+ IAM
+ AWS CloudTrail
+ 亚马逊 CloudWatch 活动
+ AWS Lambda
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon SNS

**目标架构**

![\[从用户到 IAM 再到 CloudWatch 事件再 CloudTrail 到 Lambda 和 S3 存储桶的处理，最后以 SNS 电子邮件通知结尾。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/5487fbff-72e7-4da4-a970-a4542e89824d/images/c73532fd-8e95-45a5-843d-1864eb4df227.png)


**自动化和扩展**

您可以针对不同的 AWS 区域和账户多次使用 AWS CloudFormation 模板。您只需在每个区域或账户中运行一次此模板。要自动部署到多个账户，请使用 [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)。该 CloudFormation 模板将能够在每个账户中部署所有必需的资源。

## 工具
<a name="send-a-notification-when-an-iam-user-is-created-tools"></a>

**工具**
+ [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) – AWS Identity and Access Management (IAM) 是一项 Web 服务，可帮助您安全地控制对 AWS 资源的访问。可以使用 IAM 来控制谁通过了身份验证(准许登录)并获得授权(拥有权限)来使用资源。
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation 可帮助您建模和设置 Amazon Web Services 资源，这样您就可以减少管理这些资源的时间，将更多时间集中在在 AWS 中运行的应用程序上。您可以创建一个描述所需所有 AWS 资源的模板，并 CloudFormation 负责为您预置和配置这些资源。
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) — AWS CloudTrail 可帮助您管理 AWS 账户的治理、合规以及运营和风险审计。用户、角色或 AWS 服务采取的操作在中记录为事件 CloudTrail。事件包括在 AWS 管理控制台、AWS 命令行界面和 AWS SDKs 和 APIs。
+ [Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) Events — Amazon CloudWatch Events 提供一系列描述了 AWS 资源变化的系统事件。 near-real-time 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) – AWS Lambda 是一项计算服务，支持无需预置或管理服务器即可运行代码。只有在需要时 Lambda 才运行您的代码，并且能自动扩缩，从每天几个请求扩展到每秒数千个请求。 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) – Amazon Simple Storage Service (Amazon S3) 是一项面向互联网的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) – Amazon Simple Notiﬁcation Service (Amazon SNS)是一项托管服务，可通过 Lambda、HTTP、电子邮件、手机推送通知和手机短信 (SMS) 的形式提供消息。

**代码**

该项目的 .zip 文件作为附件提供。

## 操作说明
<a name="send-a-notification-when-an-iam-user-is-created-epics"></a>

### 为 Lambda 脚本创建 S3 存储桶
<a name="create-the-s3-bucket-for-the-lambda-script"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 定义 S3 存储桶。 | 打开 Amazon S3 控制台并选择或创建 S3 存储桶。此 S3 存储桶将托管 Lambda 代码 .zip 文件。S3 存储桶名称不得包含前导斜杠。 | 云架构师 | 

### 将 Lambda 代码上传至 S3 存储桶
<a name="upload-the-lambda-code-to-the-s3-bucket"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 上传 Lambda 代码。 | 将*附件*部分中提供的 Lambda 代码 .zip 文件上传到您定义的 S3 存储桶。 | 云架构师 | 

### 部署 CloudFormation 模板
<a name="deploy-the-cloudformation-template"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 部署 CloudFormation 模板。 | 在 CloudFormation 控制台上，部署作为该模式附件提供的 CloudFormation `createIAMuser.yaml`模板。在下一个操作说明中，提供模板参数的值。 | 云架构师 | 

### 填写 CloudFormation 模板中的参数
<a name="complete-the-parameters-in-the-cloudformation-template"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 提供 S3 存储桶名称。 | 输入您在第一个操作说明中创建或选择的 S3 存储桶的名称。 | 云架构师 | 
| 提供 S3 密钥。 | 提供 Lambda 代码 .zip 文件在 S3 存储桶中的位置，不带前导斜杠（例如，`<directory>/<file-name>.zip`）。 | 云架构师 | 
| 提供电子邮箱地址。 | 提供有效的电子邮件地址以接收 Amazon SNS 通知。 | 云架构师 | 
| 定义日志记录级别。 | 定义 Lambda 函数的日志记录级别和频率。`Info` 指明有关应用程序进度的详细信息消息。`Error` 指明仍允许应用程序继续运行的错误事件。`Warning` 指明潜在的有害情况。 | 云架构师 | 

### 确认订阅
<a name="confirm-the-subscription"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 确认订阅。 | 成功部署模板后，它将向提供的电子邮件地址发送订阅电子邮件。要接收通知，您必须确认此电子邮件订阅。 | 云架构师 | 

## 相关资源
<a name="send-a-notification-when-an-iam-user-is-created-resources"></a>
+ [创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html?icmpid=docs_console_unmapped)
+ [创建 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)
+ [将文件上传到 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) 
+ [部署 CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)
+ [创建 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)
+ [使用 AWS 创建在 AWS API 调用时触发 CloudWatch 的事件规则 CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html)

## 附件
<a name="attachments-5487fbff-72e7-4da4-a970-a4542e89824d"></a>

要访问与此文档相关联的其他内容，请解压以下文件：[attachment.zip](samples/p-attach/5487fbff-72e7-4da4-a970-a4542e89824d/attachments/attachment.zip)