设置 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 CLI 以使用 AWS IAM Identity Center,配置编程式访问。
在 IAM 中

(不推荐使用)

使用长期凭证访问 AWS。 按照《IAM 用户指南》中的创建用于紧急访问的 IAM 用户中的说明进行操作。 按照《IAM 用户指南》中的管理 IAM 用户的访问密钥,配置编程式访问。

使用托管策略

在上一步中,您设置了一个 IAM 用户,该用户拥有访问您的 AWS 资源的凭证。在大多数情况下,为了安全地使用 EventBridge 调度器,建议您创建单独的用户、组或角色,这些用户、组或角色仅具有使用 EventBridge 调度器所需的权限。EventBridge 调度器支持适用于常见使用案例的以下托管策略。

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

  • AmazonEventBridgeSchedulerReadOnlyAccess:授予对 EventBridge 调度器的只读访问权限。

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

设置执行角色

执行角色是 EventBridge 调度器代入的 IAM 角色,用于代表您与其他 AWS 服务 进行交互。您可以为该角色附加权限策略,以授予 EventBridge 调度器调用目标的访问权限。

在使用控制台创建新计划时,也可以创建新的执行角色。如果您使用控制台,EventBridge 调度器会根据您选择的目标代表您创建一个具有权限的角色。当 EventBridge 调度器为您创建角色时,该角色的信任策略包括限制哪些主体可以代表您代入该角色的条件键。这样可以防范潜在的混淆代理安全问题

以下步骤介绍如何创建新的执行角色以及如何授予 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 资源或创建一个新的资源。以下步骤显示如何使用 CloudFormation 创建新的标准 Amazon SQS 队列。

创建新的 Amazon SQS 队列
  1. 复制以下 JSON 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 模板创建 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 调度器计划并调用目标。