设置 Amazon EventBridge 日程安排 - EventBridge 调度器

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

设置 Amazon EventBridge 日程安排

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

报名参加 AWS

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

要注册 AWS 账户
  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,将接到一通电话,要求使用电话键盘输入一个验证码。

    当您注册时 AWS 账户,就会创建AWS 账户根用户一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为安全最佳实践,请为用户分配管理访问权限,并且只使用根用户来执行需要根用户访问权限的任务

创建 IAM 用户

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

选择一种方法来管理您的管理员 目的 方式 您也可以
在 IAM Identity Center 中

(建议)

使用短期凭证访问 AWS。

这符合安全最佳实操。有关最佳实践的信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

有关说明,请参阅《AWS IAM Identity Center 用户指南》中的入门 通过在《AWS Command Line Interface 用户指南》 AWS IAM Identity Center中配置 AWS CLI 要使用的来配置编程访问权限。
在 IAM 中

(不推荐使用)

使用长期凭证访问 AWS。 按照《IAM 用户指南》中的创建您的首个 IAM 管理员用户和组的说明操作。 按照《IAM 用户指南》中的管理 IAM 用户的访问密钥,配置编程式访问。

使用托管策略

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

您可以像在上一步中附加 AdministratorAccess 策略一样将这些托管策略附加到您的 IAM 主体。有关使用基于身份的 IAM 策略管理对 EventBridge 调度程序的访问权限的更多信息,请参阅。使用基于身份的策略

设置执行角色

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

在使用控制台创建新计划时,也可以创建新的执行角色。如果您使用控制台,S EventBridge cheduler 会代表您创建一个角色,其权限基于您选择的目标。当 EventBridge Scheduler 为您创建角色时,该角色的信任策略包括限制哪些委托人可以代表您担任角色的条件键。这样可以防范潜在的混淆代理安全问题

以下步骤介绍如何创建新的执行角色以及如何授予 EventBridge 调度器调用目标的访问权限。本主题介绍常用模板化目标的权限。有关为其他目标添加权限的信息,请参阅 使用模板化目标

要创建执行角色,请使用 AWS CLI
  1. 复制以下 JSON 格式的角色代入策略,并作为 Scheduler-Execution-Role.json 保存到本地。此信任策略允许 EventBridge 调度员代表您担任该角色。

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

    要在生产环境中设置执行角色,我们建议实施额外的保护措施,以防止出现混淆代理问题。有关更多信息和示例策略,请参阅 混淆代理问题防范

  2. 在 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"
                    }
                ]
            }
        }
    }
  3. 要创建允许 EventBridge 调度器调用目标的新策略,请选择以下常用目标之一。复制 JSON 权限策略并将其作为 .json 文件保存在本地。

    Amazon SQS – SendMessage

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

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

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

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

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

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "*" } ] }
  4. 运行以下命令,新建权限策略。将 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"
        }
    }
    
  5. 要将该策略附加到您的执行角色,请运行以下命令。将 your-policy-arn 替换为在上一步中创建的策略 ARN。将 SchedulerExecutionRole 替换为您执行角色的名称。

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

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

设置目标

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

创建新的 Amazon SQS 队列
  1. 复制以下 JSON AWS CloudFormation 模板并将其另存为本地SchedulerTargetSQS.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" ] } } } }
  2. 在中 AWS CLI,运行以下命令以根据Scheduler-Target-SQS.json模板创建 AWS 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"
    }
  3. 运行以下命令以查看 AWS 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 调度程序的目标。

接下来做什么?

完成设置步骤后,使用入门指南创建您的第一个 EventBridge 调度器调度程序并调用目标。