

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

# 设置 Amazon EventBridge 日程安排
<a name="setting-up"></a>

在使用 EventBridge 日程安排器之前，必须完成以下步骤。

**Topics**
+ [报名参加 AWS](#setting-up-aws-sign-up)
+ [创建 IAM 用户](#setting-up-create-iam-user)
+ [使用托管策略](#setting-up-managed-policies)
+ [设置执行角色](#setting-up-execution-role)
+ [设置目标](#setting-up-target)
+ [接下来做什么？](#setting-up-whats-next)

## 报名参加 AWS
<a name="setting-up-aws-sign-up"></a>

如果您没有 AWS 账户，请完成以下步骤来创建一个。

**报名参加 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时 AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

## 创建 IAM 用户
<a name="setting-up-create-iam-user"></a>

要创建管理员用户，请选择以下选项之一。


****  

| 选择一种方法来管理您的管理员 | 目标 | 方式 | 您也可以 | 
| --- | --- | --- | --- | 
| 在 IAM Identity Center 中 （推荐） | 使用短期凭证访问 AWS。这符合安全最佳实操。有关最佳实践的信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。 | 有关说明，请参阅《AWS IAM Identity Center 用户指南》中的[入门](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html)。 | 通过在《AWS Command Line Interface 用户指南[》 AWS IAM Identity Center中配置 AWS CLI 要使用的来](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html)配置编程访问权限。 | 
| 在 IAM 中 （不推荐使用） | 使用长期凭证访问 AWS。 | 按照《IAM 用户指南》中的[创建用于紧急访问的 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html)中的说明进行操作。 | 按照《IAM 用户指南》中的[管理 IAM 用户的访问密钥](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html)，配置编程式访问。 | 

## 使用托管策略
<a name="setting-up-managed-policies"></a>

在上一步中，您设置了一个 IAM 用户，该用户拥有访问您的 AWS 资源的证书。在大多数情况下，为了安全地使用 EventBridge 日程安排，我们建议您创建单独的用户、群组或角色，这些用户、群组或角色仅具有使用 EventBridge 日程安排程序所需的权限。 EventBridge 对于常见用例，计划程序支持以下托管策略。
+  AmazonEventBridgeSchedulerFullAccess — 使用控制台和 API 授予对 EventBridge 调度程序的完全访问权限。
+  AmazonEventBridgeSchedulerReadOnlyAccess — 授予对 EventBridge 日程安排器的只读访问权限。

您可以像在上一步中附加 `AdministratorAccess` 策略一样将这些托管策略附加到您的 IAM 主体。有关使用基于身份的 IAM 策略管理对 EventBridge 调度程序的访问权限的更多信息，请参阅。[在调度程序中使用基于身份的策略 EventBridge](security_iam_id-based-policy-examples.md)

## 设置执行角色
<a name="setting-up-execution-role"></a>

*执行角色*是一个 IAM 角色，由 EventBridge 计划程序代替您与其他 AWS 服务 角色进行交互。您可以将权限策略附加到此角色以授予 EventBridge 调度程序调用目标的访问权限。

 在使用控制台[创建新计划](getting-started.md#getting-started-console)时，也可以创建新的执行角色。如果您使用控制台，S EventBridge cheduler 会代表您创建一个角色，其权限基于您选择的目标。当 EventBridge Scheduler 为您创建角色时，该角色的信任策略包括限制哪些委托人可以代表您担任该角色的[条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。这样可以防范潜在的[混淆代理安全问题](cross-service-confused-deputy-prevention.md)。

 以下步骤介绍如何创建新的执行角色以及如何授予 EventBridge 调度器调用目标的访问权限。本主题介绍常用模板化目标的权限。有关为其他目标添加权限的信息，请参阅 [在调度器中 EventBridge 使用模板化目标](managing-targets-templated.md)。

**要创建执行角色，请使用 AWS CLI**

1. 复制以下 JSON 格式的角色代入策略，并作为 `Scheduler-Execution-Role.json` 保存到本地。此信任策略允许 EventBridge 调度员代表您担任该角色。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "scheduler.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------
**重要**  
 要在生产环境中设置执行角色，我们建议实施额外的保护措施，以防止出现混淆代理问题。有关更多信息和示例策略，请参阅 [EventBridge 调度器中的副手预防混乱](cross-service-confused-deputy-prevention.md)。

1. 在 AWS Command Line Interface (AWS CLI) 中，输入以下命令以创建新角色。将 `SchedulerExecutionRole` 替换为您想授予此角色的名称。

   ```
   $ aws iam create-role --role-name SchedulerExecutionRole --assume-role-policy-document file://Scheduler-Execution-Role.json
   ```

   成功替换后，您将看到以下输出内容：

   ```
   {
       "Role": {
           "Path": "/",
           "RoleName": "Scheduler-Execution-Role",
           "RoleId": "BR1L2DZK3K4CTL5ZF9EIL",
           "Arn": "arn:aws:iam::123456789012:role/SchedulerExecutionRole",
           "CreateDate": "2022-03-10T18:45:01+00:00",
           "AssumeRolePolicyDocument": {
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "scheduler.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           }
       }
   }
   ```

1. 要创建允许 EventBridge 调度器调用目标的新策略，请选择以下常用目标之一。复制 JSON 权限策略并将其作为 `.json` 文件保存在本地。

------
#### [ Amazon SQS – SendMessage ]

    以下内容允许 EventBridge 日程安排器对您账户中的所有 Amazon SQS 队列进行`sqs:SendMessage`操作。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "sqs:SendMessage"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```

------

------
#### [ Amazon SNS – Publish ]

    以下内容允许 EventBridge 日程安排器对您账户中的所有 Amazon SNS 主题进行`sns:Publish`操作。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "sns:Publish"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```

------

------
#### [ Lambda – Invoke ]

    以下内容允许 EventBridge 调度器对您账户中的所有 Lambda 函数调用`lambda:InvokeFunction`操作。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```

------

------

1. 运行以下命令，新建权限策略。将 `PolicyName` 替换为您想授予此策略的名称。

   ```
   $ aws iam create-policy --policy-name PolicyName --policy-document file://PermissionPolicy.json
   ```

   如果成功，您将会看到以下输出。记下策略 ARN。您将在下一步中使用此 ARN 来将策略关联到我们的执行角色。

   ```
   {
       "Policy": {
           "PolicyName": "PolicyName",
           "CreateDate": "2022-03-015T19:31:18.620Z",
           "AttachmentCount": 0,
           "IsAttachable": true,
           "PolicyId": "ZXR6A36LTYANPAI7NJ5UV",
           "DefaultVersionId": "v1",
           "Path": "/",
           "Arn": "arn:aws:iam::123456789012:policy/PolicyName",
           "UpdateDate": "2022-03-015T19:31:18.620Z"
       }
   }
   ```

1. 要将该策略附加到您的执行角色，请运行以下命令。将 `your-policy-arn` 替换为在上一步中创建的策略 ARN。将 `SchedulerExecutionRole` 替换为您执行角色的名称。

   ```
   $ aws iam attach-role-policy --policy-arn your-policy-arn --role-name SchedulerExecutionRole
   ```

   该 `attach-role-policy` 操作不会在命令行上返回响应。

## 设置目标
<a name="setting-up-target"></a>

在创建 EventBridge 调度程序计划之前，至少需要一个目标供调度调用。您可以使用现有 AWS 资源，也可以创建新资源。以下步骤说明如何使用创建新的标准 Amazon SQS 队列。 CloudFormation

**创建新的 Amazon SQS 队列**

1. 复制以下 JSON CloudFormation 模板并将其另存为本地`Scheduler-Target-SQS.json`。

   ```
   {
      "AWSTemplateFormatVersion": "2010-09-09",
      "Resources": {
         "MyQueue": {
            "Type": "AWS::SQS::Queue",
            "Properties": {
               "QueueName": "MyQueue"
                }
            }
         },
      "Outputs": {
         "QueueName": {
            "Description": "The name of the queue",
            "Value": {
               "Fn::GetAtt": [
                  "MyQueue",
                  "QueueName"
               ]
            }
         },
         "QueueURL": {
            "Description": "The URL of the queue",
            "Value": {
               "Ref": "MyQueue"
            }
         },
         "QueueARN": {
            "Description": "The ARN of the queue",
            "Value": {
               "Fn::GetAtt": [
                  "MyQueue",
                  "Arn"
               ]
            }
         }
      }
   }
   ```

1. 在中 AWS CLI，运行以下命令以根据`Scheduler-Target-SQS.json`模板创建 CloudFormation 堆栈。

   ```
   $ aws cloudformation create-stack --stack-name Scheduler-Target-SQS --template-body file://Scheduler-Target-SQS.json
   ```

   成功替换后，您将看到以下输出内容：

   ```
   {
       "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/Scheduler-Target-SQS/1d2af345-a121-12eb-abc1-012e34567890"
   }
   ```

1. 运行以下命令以查看 CloudFormation 堆栈的摘要信息。此信息包括堆栈的状态和模板中指定的输出。

   ```
   $ aws cloudformation describe-stacks --stack-name Scheduler-Target-SQS
   ```

   如果成功，该命令会创建 Amazon SQS 队列并返回以下输出：

   ```
   {
       "Stacks": [
           {
               "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/Scheduler-Target-SQS/1d2af345-a121-12eb-abc1-012e34567890",
               "StackName": "Scheduler-Target-SQS",
               "CreationTime": "2022-03-17T16:21:29.442000+00:00",
               "RollbackConfiguration": {},
               "StackStatus": "CREATE_COMPLETE",
               "DisableRollback": false,
               "NotificationARNs": [],
               "Outputs": [
                   {
                       "OutputKey": "QueueName",
                       "OutputValue": "MyQueue",
                       "Description": "The name of the queue"
                   },
                   {
                       "OutputKey": "QueueARN",
                       "OutputValue": "arn:aws:sqs:us-west-2:123456789012:MyQueue",
                       "Description": "The ARN of the queue"
                   },
                   {
                       "OutputKey": "QueueURL",
                       "OutputValue": "https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue",
                       "Description": "The URL of the queue"
                   }
               ],
               "Tags": [],
               "EnableTerminationProtection": false,
               "DriftInformation": {
                   "StackDriftStatus": "NOT_CHECKED"
               }
           }
       ]
   }
   ```

   在本指南的后面部分，您将使用值`QueueARN`将队列设置为 EventBridge 调度程序的目标。

## 接下来做什么？
<a name="setting-up-whats-next"></a>

完成设置步骤后，使用[入门](getting-started.md)指南创建您的第一个 EventBridge 调度器调度程序并调用目标。