EventBridge を経由した、Function Compute (Alibaba Cloud) の RDS トリガー検証

2023年2月17日掲載

キービジュアル

本記事では、Alibaba CloudのサーバレスプロダクトFunction ComputeにはRDSトリガーが実装されていましたが、2023年1月に廃止されてしまいました。

今後はどうすれば RDS 製品のイベントで Function Compute を実行させられるのかを紹介します。

目次

  • Alibaba Cloud Function Compute に関する記事です。
  • Function ComputeのRDSトリガーが廃止されたため、その代替となるEventBridge 経由の Function Compute の RDS トリガーを検証します。

はじめに

Function Compute は Alibaba Cloud が提供するフルマネージド型のイベント駆動型コンピューティングサービスです。利用者がサーバーなどのインフラストラクチャを管理する必要がなく、コード開発に集中できるのが特徴です。詳細はFunction Computeの公式ドキュメントを参照してください。

Function Compute 関数は手動実行方式以外、様々なトリガーもサポートしています。例えば、指定時刻になったら実行する時間トリガー、専用の URL が呼び出されたら実行する HTTP トリガー、また OSS にファイルがアップロードされたら実行するような製品イベントトリガーがあります。

その中には、RDS 製品のイベントが Function Compute のトリガーになってくれる RDS トリガーも存在していましたが、2023年1月に廃止されました。

では、今後はどうすれば良いかというと、 RDS 製品のイベントで Function Compute を実行させたい場合、EventBridge 製品を経由するワークアラウンドがありますので、今回はそれを検証していきたいと思います。

構成概要図

a

今回の検証では、RDS の API 操作を Function Compute のトリガーに設定します。具体的には、対象 RDS の「ModifyDBInstanceDescription」という API をコールし、APIをコールしたイベントがEventBridge 経由で Function Compute に到達し、関数の起動を確認します。

注意点として、トリガーになれるにはインスタンスレベルのイベントのみです。RDS 内データベースレベルの操作はトリガー対象外になります。現在EventBridge 経由で Function ComputeのトリガーになれるRDSイベントは以下の通りです。

イベント名

説明

rds:ActionTrail:AliyunServiceEvent

プラットフォームによるリソース操作

rds:ActionTrail:ApiCall

API操作

rds:ActionTrail:ConsoleOperation

コンソール操作

rds:CloudMonitor:InstanceFailover

フェールオーバー(故障)

rds:CloudMonitor:InstanceFailureEnd

故障終了

rds:CloudMonitor:InstanceFailureStart

故障開始

rds:CloudMonitor:InstanceSwitchover

フェールオーバー(手動)

rds:CloudMonitor:Instance[System

Maintenance.MinorVersionUpgrade:Canceled]

マイナーバージョンアップ(キャンセル)

rds:CloudMonitor:Instance[System

Maintenance.MinorVersionUpgrade:Executed]

マイナーバージョンアップ(完了)

rds:CloudMonitor:Instance[System

Maintenance.MinorVersionUpgrade:Executing]

マイナーバージョンアップ(開始)

rds:CloudMonitor:Instance[System

Maintenance.MinorVersionUpgrade:Scheduled]

マイナーバージョンアップ(設定済)

rds:CloudMonitor:Instance[System

Maintenance.ScheduledOperation:Canceled]

メンテナンス操作(キャンセル)

rds:CloudMonitor:Instance[System

Maintenance.ScheduledOperation:Executed]

メンテナンス操作(完了)

rds:CloudMonitor:Instance[System

Maintenance.ScheduledOperation:Executing]

メンテナンス操作(開始)

rds:CloudMonitor:Instance[System

Maintenance.ScheduledOperation:Scheduled]

メンテナンス操作(設定済)

rds:CloudMonitor:Instance[System

Maintenance.Transfer:Canceled]

マイグレーション(キャンセル)

rds:CloudMonitor:Instance[System

Maintenance.Transfer:Executed]

マイグレーション(完了)

rds:CloudMonitor:Instance[System

Maintenance.Transfer:Executing]

マイグレーション(開始)

rds:CloudMonitor:Instance[System

Maintenance.Transfer:Scheduled]

マイグレーション(設定済)

rds:Config:ConfigurationItemChangeNotification

設定項目変更

rds:Config:NonCompliantNotification

異常検知

構築手順-1:関数の作成

今回検証対象である RDS トリガーが正常に Function Compute を起動させるかを確認するため、呼び出し先の関数を作成します。

 

1-1. Function Compute のコンソールを開きます。

 

1-2. サービスを作成しますので、「Create Service」をクリックします。

1

1-3.下記内容をを入力し、「OK」をクリックします。

Name:任意入力
Description:任意入力
Logging:Enable

1

1-4.関数を作成しますので、「Create Function」をクリックします。

a

1-5.下記内容をを入力し、「Create」をクリックします。

Method:Use Built-in Runtime
Function Name:任意入力
Handler Type:Event Handler
Runtime:Python3.6
Code Upload Method:Use Sample Code
Sample Code Description:Hello, world!

a

1-6.関数作成完了後に、サンプルコードが表示されますので、下記コード(機能:呼び出し元のイベント情報を表示)で入れ替えて「Deploy」をクリックします。

import logging

def handler(event, context):
  logger = logging.getLogger()
  logger.info(event)
  return
a

1-7.「Test Function」をクリックして関数を実行します。「Logs ー 1番目のレコード ー Request Logs」をクリックし、実行ログを確認します。

1

1-8.実行ログに、テストイベントのデータが表示されていることを確認します。

a

構築手順-2:RDS トリガーの作成

EventBridge の有効化とトリガー元の RDS を作成し、構築手順-1で作成した関数に RDS のイベントをトリガーに指定します。

 

2-1.EventBridgeのコンソールから、「Enable For Free」をクリックし、EventBridge 製品の有効化をします。

 

1

2-2.公式ドキュメント「Create an ApsaraDB RDS for MySQL instance」の購入手順に沿って、RDS を作成し、インスタンスID を記録します。

Billing Method:Pay-As-You-Go
Region:Tokyo
Database Engine:MySQL5.7
Edition:Basic
Instance Type:mysql.n2.medium.1
Capacity:20GB

1

2-3. 手順1-6 で作成した関数に戻り、「Triggers ー Create Trigger」をクリックします。

1

2-4.EventBridge から Function Compute に送信用ロールが存在しない場合、下記ポップアップが表示されますので、ロール「AliyunServiceRoleForEventBridgeSendToFC」の作成を承認します。

1

2-5.下記のように、トリガー情報を入力します。

Trigger Type:ApasaDB RDS
Name:任意入力
Event Type:Custom Event Types
Event Name:rds:ActionTrail:ApiCall
Invocation Method:Synchronous Invocation
Trigger State:Enable Trigger

1

2-6.デフォルトでアカウント配下全 RDS がトリガー対象になります。特定 RDS を絞りたい場合、「Event Mode Configurations」をクリックし、下記構文を追加します。

   "data": {
        "referencedResources": {
            "ACS::RDS::DBInstance": [
                "「手順2-2で記録した RDS のインスタンスID」"
            ]
        }
    }
1

2-7.作成した RDS トリガーを確認します。

a

検証手順-3:呼び出しテスト

今回は RDS の「ModifyDBInstanceDescription」という API をコールして、呼び出し元になる「ModifyDBInstanceDescription」イベントが Function Compute の出力ログに記録されるかを確認します。

 

3-1.Alibaba Cloud が Web 版 API テストツールを提供していますので、OpenAPIを開きます。

 

3-2.下記内容を入力し、「Call Now」をクリックします。

DBInstanceId:「手順2-2で記録した RDS のインスタンスID」

DBInstanceDescription:任意入力

1

3-3. EventBridge コンソールにて、該当 API コールの履歴を確認します。

a

3-4.「Event Trace」をクリックし、手順2-7 で作成した RDS トリガーに転送されたことを確認します。

a

3-5.手順1-6 で作成した関数に戻り、「Logs ー 1番目のレコード ー Request Logs」をクリックし、実行ログを確認します。

a

3-6.実行ログに、「ModifyDBInstanceDescription」イベントのデータが表示されていることを確認します。

a

まとめ

今回は、EventBridge を経由した、Function Compute の RDS トリガーの検証をやってみました。

設定自体に難しいところがなく、想定通りに動作してくれました。ただ、対応できるイベントは限られ、希望するトリガーがサポートできない可能性もあります。

もし RDS イベントが Function Compute のトリガーになる環境を構築したい場合、ぜひ本記事を参考にしてみてください。

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません