View a markdown version of this page

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

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

设置 Amazon EventBridge 日程安排

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

报名参加 AWS

注册获取 AWS 账户

要开始使用 AWS,你需要一个 AWS 账户。有关创建的信息 AWS 账户,请参阅《AWS 账户管理 参考指南》 AWS 账户中的入门指南

使用托管策略

设置 AWS 账户和管理用户后,我们建议您创建单独的用户、群组或角色,这些用户、群组或角色仅具有使用 EventBridge 日程安排程序所需的权限。 EventBridge 对于常见用例,计划程序支持以下托管策略。

  • AmazonEventBridgeSchedulerFullAccess — 使用控制台和 API 授予对 EventBridge 调度程序的完全访问权限。

  • AmazonEventBridgeSchedulerReadOnlyAccess — 授予对 EventBridge 日程安排器的只读访问权限。

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

设置执行角色

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

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

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

要创建执行角色,请使用 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 调度器中的副手预防混乱

  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操作。

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

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

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

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

    JSON
    JSON
    { "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 队列。 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" ] } } } }
  2. 在中 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"
    }
  3. 运行以下命令以查看 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 调度器调度程序并调用目标。