

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

# 为 Amazon S3 来源创建 EventBridge 规则（控制台）
<a name="create-cloudtrail-S3-source-console"></a>

在中设置规则之前 EventBridge，必须创建 AWS CloudTrail 跟踪。有关更多信息，请参阅[在控制台中创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html)。

**重要**  
如果您使用控制台创建或编辑管道，则会为您创建 EventBridge 规则和 AWS CloudTrail 跟踪。

**创建跟踪**

1. 打开控制 AWS CloudTrail 台。

1. 在导航窗格中，选择**跟踪**。

1. 选择**创建跟踪**。对于**跟踪名称**，输入跟踪的名称。

1. 在**存储位置**下，创建或指定要用于存储日志文件的存储桶。默认情况下，Amazon S3 存储桶和对象都是私有的。只有资源所有者（创建存储桶的 AWS 账户）才能访问存储桶及其对象。存储桶必须具有允许访问存储桶中对象的 AWS CloudTrail 权限的资源策略。

1. 在**跟踪日志桶和文件夹**下，指定 Amazon S3 桶和对象前缀（文件夹名称）以记录文件夹中所有对象的数据事件。对于每个跟踪，您可以添加最多 250 个 Amazon S3 对象。填写所需的加密密钥信息，然后选择**下一步**。

1. 对于**事件类型**，选择**管理事件**。

1. 对于**管理事件**，选择**编辑**。跟踪将记录指定桶和前缀上的 Amazon S3 对象级 API 活动（例如，`GetObject` 和 `PutObject`）。

1. 选择**写入**。

1. 如果您对跟踪满意，请选择**创建跟踪**。

**使用 Amazon S3 源创建针对您的管道的 EventBridge 规则**

1. 打开 Amazon EventBridge 控制台，网址为[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)。

1. 在导航窗格中，选择**规则**。保留选中的默认总线或选择一个事件总线。选择 **Create rule**（创建规则）。

1. 在**名称**中，输入规则的名称。

1. 对于**规则类型**，选择**具有事件模式的规则**。选择**下一步**。

1. 在 “**事件来源**” 下，选择**AWS 事件或 EventBridge 合作伙伴事件**。

1. 在**示例事件类型**下，选择 **AWS 事件**。

1. 在**示例事件**中，键入 S3 作为要筛选的关键字。选择 **AWS API 调用方式 CloudTrail**。

1. 在**创建方法**下，选择**自定义模式（JSON 编辑器）**。

   粘贴下面提供的事件模式。确保添加桶名称和 S3 对象键（或键名称），它们作为 `requestParameters` 唯一标识桶中的对象。在本例中，针对名为 `amzn-s3-demo-source-bucket` 的桶和对象键 `my-files.zip` 创建了一条规则。在使用**编辑**窗口指定资源时，您的规则将更新为使用自定义事件模式。

   下面是一个可供复制并粘贴的示例事件模式：

   ```
   {
       "source": [
           "aws.s3"
       ],
       "detail-type": [
           "AWS API Call via CloudTrail"
       ],
       "detail": {
           "eventSource": [
               "s3.amazonaws.com"
           ],
           "eventName": [
               "CopyObject",
               "CompleteMultipartUpload",
               "PutObject"
           ],
           "requestParameters": {
               "bucketName": [
                   "amzn-s3-demo-source-bucket"
               ],
               "key": [
                   "my-files.zip"
               ]
           }
       }
   }
   ```

1. 选择**下一步**。

1. 在**目标类型**中，选择 **AWS 服务**。

1. 在**选择目标中**，选择**CodePipeline**。在**管道 ARN** 中，输入该规则启动的管道的管道 ARN。
**注意**  
要获取管道 ARN，请运行 **get-pipeline** 命令。管道 ARN 将显示在输出中。它是使用以下格式构造的：  
arn: aws: codepiline::: *region* *account* *pipeline-name*  
示例管道 ARN：  
arn: aws: codepipeline: us-east-2:80398 示例：MyFirstPipeline 

1. 要创建或指定一个 IAM 服务角色以授予调用与您的 EventBridge 规则关联的目标的 EventBridge 权限（在本例中，目标是 CodePipeline），请执行以下操作：
   + 选择 “**为此特定资源创建新角色**” 以创建服务角色，该角色 EventBridge授予您启动管道执行的权限。
   + 选择 “**使用现有角色**” 输入一个服务角色，该角色 EventBridge 授予您启动管道执行的权限。

1. （可选）要使用特定映像 ID 指定源覆盖，请使用输入转换器将数据作为 JSON 参数传递。您也可以使用输入转换器来传递管道变量。
   + 展开**其他设置**。

     对于**配置目标输入**，选择**配置输入转换器**。

     在对话框窗口中，选择**输入我自己的**。在**输入路径**框中，键入以下键值对。

     ```
     {"revisionValue": "$.detail.object.version-id"}
     ```
   + 在**模板**框中，键入以下键值对。

     ```
                                     
                                     {
         "sourceRevisions": [
             {
                 "actionName": "Source",
                 "revisionType": "S3_OBJECT_VERSION_ID",
                 "revisionValue": "<revisionValue>"
             }
         ],
          "variables": [
             {
                 "name": "Variable_Name",
                 "value": "Variable_Value"
             }
         ]
     }
     ```
   + 选择**确认**。

1. 选择**下一步**。

1. 在**标签**页面上，选择**下一步**。

1. 在**查看和创建**页面上，检查规则配置。如果您对规则满意，请选择 **Create rule**。