View a markdown version of this page

设置亚马逊 EventBridge 排程器 - EventBridge 调度器

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

设置亚马逊 EventBridge 排程器

在使用 EventBridge Scheduler 之前,必须完成以下步骤。

注册参加 AWS

注册参加 AWS 账户

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

使用托管策略

设置 AWS 账户和管理用户后,我们建议您创建单独的用户、群组或角色,仅具有使用 EventBridge Scheduler 所需的权限。 EventBridge 对于常见用例,调度器支持以下托管策略。

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

  • AmazonEventBridgeSchedulerReadOnlyAccess — 授予对 EventBridge Scheduler 的只读访问权限。

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

设置执行角色

执行角色是 EventBridge Scheduler 为代表您与其他 AWS 服务 人进行交互而承担的 IAM 角色。您可以将权限策略附加到此角色以授予 EventBridge 调度程序调用目标的权限。

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

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

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

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

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

  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 Scheduler 调用目标的新策略,请选择以下常用目标之一。复制 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 Scheduler 的目标。

接下来做什么?

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