[アップデート]EventBridge SchedulerがPrivateLinkをサポートしました

[アップデート]EventBridge SchedulerがPrivateLinkをサポートしました

EventBridge SchedulerがPrivateLinkをサポートしました
Clock Icon2025.03.26

お疲れさまです。とーちです。

Amazon EventBridge Schedulerに新しいアップデートが入り、AWS PrivateLinkをサポートするようになりました。これにより、インターネットゲートウェイやNATゲートウェイなどを使ったインターネット接続なしでも、VPC内からEventBridge Schedulerにアクセスできるようになります。実際に試してみました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/03/amazon-eventbridge-scheduler-privatelink/

なお、EventBridge Scheduler自体の概要については下記の記事をご参照ください。

https://dev.classmethod.jp/articles/amazon-eventbridge-scheduler-new-way-to-launch-tasks/

AWS PrivateLinkがサポートされたことで、cron形式や一回限りの実行といったスケジュールを作成したり、変更するといった操作がインターネット接続なしでできるようになった ということになります。

それでは早速、EventBridge SchedulerのVPCエンドポイントを設定して試してみましょう。

VPCエンドポイントの設定

検証環境の準備

まずは検証用に適当なVPCとサブネットを用意します。今回の検証環境は以下のような構成です。

  • パブリックサブネット用にインターネットゲートウェイ(IGW)があるのみ
  • NATゲートウェイはないため、プライベートサブネットからはインターネットにアクセスできない構成

VPC構成図

また、VPCエンドポイントに付与するセキュリティグループも作成しておきます。VPCのCIDRからの443ポートでのインバウンド接続のみを許可する設定です。

セキュリティグループ設定

さらに、EventBridge Schedulerから起動するLambda関数やスケジューラに付与するIAMロールも、このタイミングで作成しておきます。これらはスケジューラをVPCエンドポイント経由で登録する際に必要となります。Lambda関数には最低限のEventBridge Scheduler実行権限が、IAMロールにはLambda関数を呼び出す権限が必要です。

VPCエンドポイントの作成

AWS マネジメントコンソールからVPCの画面に行き、PrivateLink and Lattice の項目にあるエンドポイント を選択します。続いてエンドポイントを作成 ボタンを押しましょう。

VPCエンドポイントの作成画面が表示されます。以下の設定で進めていきます。

  1. 名前タグは適当につける
  2. タイプは AWSのサービス を選択
  3. サービス設定で com.amazonaws.<リージョン>.scheduler を選択(これがEventBridge SchedulerのService nameです。<リージョン>の部分は使用するリージョンに応じて変更してください。例:ap-northeast-1)

VPCエンドポイント設定画面

ネットワーク設定では、先程作成したVPCを選択し、VPCエンドポイント用のENI(Elastic Network Interface)を作成するサブネットは各AZのプライベートサブネットを指定します。

ネットワーク設定画面

セキュリティグループは先程作成したものを適用します。

セキュリティグループ適用画面

VPCエンドポイント経由でEventBridge Schedulerを使ってみる

AWS PrivateLinkが作成できたら、CloudShellでVPC environmentを作成して、今回作成したVPCのプライベートサブネットから実際にEventBridge Schedulerを設定できるか試してみます。CloudShellでVPC environmentを作成するには、CloudShellコンソール上部の「Actions」メニューから「Create VPC environment」を選択し、作成したVPCとプライベートサブネットを指定します。

CloudShellでVPC environment作成画面

念のため、インターネットに接続できないことを確認しておきましょう。

インターネット接続確認画面

接続できないことが確認できたので、以下のコマンドをCloudShellから実行してスケジューラを登録してみます。

aws scheduler create-schedule --schedule-expression 'rate(1 minutes)' --name test-schedule \
> --target '{"RoleArn": "arn:aws:iam::<アカウントID>:role/test-mgmt-scheduler-taskexec", "Arn": "arn:aws:lambda:ap-northeast-1:<アカウントID>:function:hello-world", "Input": "{}" }' \
> --flexible-time-window '{ "Mode": "OFF"}'

スケジューラ登録実行画面

以下の通り、VPCエンドポイント経由でちゃんと登録されていることが確認できます。

スケジューラ登録確認画面

ユースケース

EventBridge SchedulerのAWS PrivateLink対応により、以下のようなケースでの使用が考えられるかと思ったので挙げておきます。

  1. セキュアな環境でのバッチ処理:インターネット接続が制限されたEC2等からでも、定期的なバッチ処理をスケジュールできます。

  2. コンプライアンス要件の厳しい環境:金融機関や医療機関など、厳格なネットワークポリシーを持つ環境でもスケジュールタスクを管理できます。

  3. ハイブリッドクラウド環境:AWS Direct Connect経由で接続されたオンプレミス環境からもEventBridge Schedulerを利用できます。

まとめ

今回はEventBridge SchedulerがAWS PrivateLinkをサポートしたというアップデートについて紹介しました。AWS PrivateLink経由で登録できるようになったことで、インターネット接続できないEC2などのコンピューティングリソースからのスケジューラ登録がやりやすくなりましたね。EC2インスタンス上のOSレベルのatコマンドではなく、あえてEventBridge Schedulerで一回限りの実行スケジュールを設定することで、EC2インスタンスが停止していても確実にタスクを実行させるなんて使い方も良いのではないでしょうか。

以上、とーちでした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.