EventBridgeエンドポイントの提供開始!EC2からセキュアなスケジュールジョブ管理が可能!

クラウドサービスの普及に伴い、多くの企業が効率的で安全なジョブ管理を求めています。

その中で注目されるのが、Amazon EventBridgeの新機能です。

今回のアップデートにより、AWS PrivateLinkを活用したセキュアな接続が可能となり、従来の運用に新たな選択肢を提供しています。

本記事では、PrivateLink対応によるEventBridgeの利用メリットと、セキュアで柔軟なスケジュールジョブ管理を実現する方法について解説します。

初めて触れる方にも分かりやすいように、具体的な検証内容やユースケースもご紹介します。

ぜひ、最新技術を活用した効率的な運用のヒントを見つけてください。

構成

VPC内のPrivateSubnetにあるEC2よりVPCエンドポイントを経由して、EventBridgeのスケジューラーを操作する構成です。

今回はセキュアな通信により、スケジューラー操作が可能かがポイントのため、VPCエンドポイントを使用しないインターネット経路は使用しません。

なので、VPCにはNATもインターネットゲートウェイも設置しない構成とします。



EventBridgeの実行を確認するためにLambdaを用意していますが、実行確認だけなので中身は単純な「HelloWorld」を出力するレベルにします。

作業前提

  • EventBridgeから実行されるLambdaは事前作成済みとします。
    今回特に解説しません。
  • 実行元のEC2も作成済みとして、AWS CLIをインストールしておきます。
  • EC2にはEventBridgeのルール作成が可能なIAMロールをアタッチします。
  • EventBridgeのルールからLambdaを実行するためのIAMロールを事前に作成しておきます。
  • EventBridgeは新規作成とスケジュールの変更の両方を試します。

機能検証

EventBridgeエンドポイント作成

①エンドポイントの作成画面で名前は適用に設定します。


②サービス名が「com.amazonaws.<リージョン名>.events」のエンドポイントを選択し、VPCやセキュリティグループを設定し「エンドポイントを作成」を押下します。


③作成が開始するとステータスが「保留中」になります。


④作成が完了するとステータスが「使用可能」になりますので、これでエンドポイントの準備は完了です。


EventBridgeへのスケジュール作成

①EC2からAWS CLIを使用して、EventBridgeへスケジュールを追加してみます。
aws events put-rule --name "rate1minuteLambdaFunction" --schedule-expression "cron(*/1 * * * ? *)"
aws events put-targets --rule rate1minuteLambdaFunction --targets "Id"="1","Arn"="arn:aws:lambda:<リージョン名>:<アカウント番号>:<関数名>","RoleArn"="arn:aws:iam::<アカウント番号>:role/<ロール名>"


②無事にEventBridgeに作成ができました。


③実行も正常に1分おきに行われていますね。


EventBridgeのスケジュール更新

①定期実行を止めてみます。
aws events disable-rule --name "rate1minuteLambdaFunction"


②ちゃんとイベントのステータスが「無効」になりました。


③定期実行もちゃんと止まっていますね。


④次は再開させます。
aws events enable-rule --name "rate1minuteLambdaFunction"


⑤ちゃんとイベントのステータスが「有効」になりました。


⑥1分起きの実行も再開されましたね。


⑦定期実行の頻度も2分起きに変えてみます。
aws events put-rule --name "rate1minuteLambdaFunction" --schedule-expression "cron(*/2 * * * ? *)"


⑧正常に2分起き実行になりましたね。


まとめ

閉域通信でEventBridgeがコントロールできることがわかりました。

EventBridgeはAWS上のリソースのスケジュールジョブの管理によく使われるサービスですが、これまではEC2から閉域通信で変更する術がないため動的な管理には向きませんでした。

ただ、今回のアップデートによりそれが可能になったので、かなり柔軟なスケジューリングができるようになります。

何かしらのステータスを確認して、実行頻度を調整するような形でリソースの不可調整等も現実的になります。
正直なところ、何故今までできなかったのか不思議なくらいのアップデートです。

色々と使い方ができそうなので、いい方法を探ってみてください。