[アップデート]EventBridge SchedulerがPrivateLinkをサポートしました
お疲れさまです。とーちです。
Amazon EventBridge Schedulerに新しいアップデートが入り、AWS PrivateLinkをサポートするようになりました。これにより、インターネットゲートウェイやNATゲートウェイなどを使ったインターネット接続なしでも、VPC内からEventBridge Schedulerにアクセスできるようになります。実際に試してみました。
なお、EventBridge Scheduler自体の概要については下記の記事をご参照ください。
AWS PrivateLinkがサポートされたことで、cron形式や一回限りの実行といったスケジュールを作成したり、変更するといった操作がインターネット接続なしでできるようになった ということになります。
それでは早速、EventBridge SchedulerのVPCエンドポイントを設定して試してみましょう。
VPCエンドポイントの設定
検証環境の準備
まずは検証用に適当なVPCとサブネットを用意します。今回の検証環境は以下のような構成です。
- パブリックサブネット用にインターネットゲートウェイ(IGW)があるのみ
- NATゲートウェイはないため、プライベートサブネットからはインターネットにアクセスできない構成
また、VPCエンドポイントに付与するセキュリティグループも作成しておきます。VPCのCIDRからの443ポートでのインバウンド接続のみを許可する設定です。
さらに、EventBridge Schedulerから起動するLambda関数やスケジューラに付与するIAMロールも、このタイミングで作成しておきます。これらはスケジューラをVPCエンドポイント経由で登録する際に必要となります。Lambda関数には最低限のEventBridge Scheduler実行権限が、IAMロールにはLambda関数を呼び出す権限が必要です。
VPCエンドポイントの作成
AWS マネジメントコンソールからVPCの画面に行き、PrivateLink and Lattice
の項目にあるエンドポイント
を選択します。続いてエンドポイントを作成
ボタンを押しましょう。
VPCエンドポイントの作成画面が表示されます。以下の設定で進めていきます。
- 名前タグは適当につける
- タイプは
AWSのサービス
を選択 - サービス設定で
com.amazonaws.<リージョン>.scheduler
を選択(これがEventBridge SchedulerのService nameです。<リージョン>
の部分は使用するリージョンに応じて変更してください。例:ap-northeast-1)
ネットワーク設定では、先程作成した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から実行してスケジューラを登録してみます。
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対応により、以下のようなケースでの使用が考えられるかと思ったので挙げておきます。
-
セキュアな環境でのバッチ処理:インターネット接続が制限されたEC2等からでも、定期的なバッチ処理をスケジュールできます。
-
コンプライアンス要件の厳しい環境:金融機関や医療機関など、厳格なネットワークポリシーを持つ環境でもスケジュールタスクを管理できます。
-
ハイブリッドクラウド環境:AWS Direct Connect経由で接続されたオンプレミス環境からもEventBridge Schedulerを利用できます。
まとめ
今回はEventBridge SchedulerがAWS PrivateLinkをサポートしたというアップデートについて紹介しました。AWS PrivateLink経由で登録できるようになったことで、インターネット接続できないEC2などのコンピューティングリソースからのスケジューラ登録がやりやすくなりましたね。EC2インスタンス上のOSレベルのat
コマンドではなく、あえてEventBridge Schedulerで一回限りの実行スケジュールを設定することで、EC2インスタンスが停止していても確実にタスクを実行させるなんて使い方も良いのではないでしょうか。
以上、とーちでした。