Amazon EventBridge スケジューラのセットアップ - EventBridge スケジューラ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EventBridge スケジューラのセットアップ

EventBridge スケジューラを使用するには、事前に以下のステップを完了する必要があります。

AWS へのサインアップ

AWS アカウントをお持ちでない場合は、以下の手順を実行してアカウントを作成してください。

AWS アカウント にサインアップするには
  1. https://portal.aws.amazon.com/billing/signup を開きます。

  2. オンラインの手順に従います。

    サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて検証コードを入力するように求められます。

    AWS アカウント にサインアップすると、AWS アカウントのルートユーザー が作成されます。ルートユーザーには、アカウントのすべての AWS のサービス とリソースへのアクセス権があります。セキュリティのベストプラクティスとして、管理ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。

IAM ユーザーを作成する

管理者ユーザーを作成するには、以下のいずれかのオプションを選択します。

管理者を管理する方法を 1 つ選択します To By 以下の操作も可能
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 ユーザーのアクセスキーの管理」に従って、プログラムによるアクセスを設定します。

マネージドポリシーを使用する

前のステップでは、AWS リソースにアクセスするための認証情報を使用して IAM ユーザーを設定しました。ほとんどの場合、EventBridge スケジューラを安全に使用するために、EventBridge スケジューラを使用するために必要な権限のみを持つユーザー、グループ、またはロールを個別に作成することをお勧めします。EventBridge スケジューラは、一般的なユースケースに対して以下のマネージドポリシーをサポートしています。

これらのマネージドポリシーは、前のステップで AdministratorAccess ポリシーをアタッチしたのと同じ方法で IAM プリンシパルにアタッチできます。アイデンティティベースの IAM ポリシーを使用した EventBridge スケジューラへのアクセス管理の詳細については、「アイデンティティベースのポリシーを使用する」を参照してください。

実行ロールを設定する

実行ロールとは、ユーザーに代わって他の AWS のサービス とやり取りするために EventBridge スケジューラが引き受ける IAM ロールです。このロールにアクセス権限ポリシーをアタッチして、EventBridge スケジューラにターゲットを呼び出すアクセス権を付与します。

コンソールを使用して新しいスケジュールを作成するときに、新しい実行ロールを作成することもできます。コンソールを使用する場合、EventBridge スケジューラは、選択したターゲットに基づく権限を持つロールをユーザーに代わって作成します。EventBridge スケジューラがロールを作成すると、ロールの信頼ポリシーには、ユーザーに代わってロールを引き受けることができるプリンシパルを制限する条件キーが含まれます。これにより、混乱した代理のセキュリティ問題を防ぐことができます。

次のステップでは、新しい実行ロールを作成する方法と、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 スケジューラのスケジュールを作成する前に、スケジュールが呼び出すターゲットを少なくとも 1 つ用意する必要があります。既存の AWS リソースを使用するか、新しいターゲットを作成できます。次のステップは、AWS CloudFormation を使用して新しい標準 Amazon SQS キューを作成する方法を示しています。

新しい 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 スケジューラのスケジュールを作成し、ターゲットを呼び出します。