このトピックでは、EventBridge コンソールで API Gateway をカスタムイベントソースとして追加する方法について説明します。
前提条件
ステップ 1:バックエンドサービスの作成
-
API Gateway コンソールにログインします。左側のナビゲーションウィンドウで、[Manage APIs] > Backend Services を選択します。
-
[バックエンドサービス] ページで、右上隅の [バックエンドサービスの作成] をクリックします。ダイアログボックスで、バックエンドサービス名を入力し、Type として EventBridge を選択し、OK をクリックします。
-
バックエンドサービスリストで、作成したバックエンドサービスを見つけ、Actions 列の [設定と API の関連付け] をクリックします。
-
[バックエンドサービス定義] ページで [プロダクション] タブをクリックし、Basic Information セクションで Create をクリックします。
-
[バックエンドサービスの定義] ページで、作成したカスタムイベントバスの リージョン と イベントバス を選択し、イベントソースの名前と説明を設定してから、[公開] をクリックします。
ステップ 2:API グループの作成
-
左側のナビゲーションウィンドウで、[Manage APIs] > [API Groups] を選択します。
-
[API Groups] ページで、右上の [Create Group] をクリックします。インスタンスを選択し、[Group Name] を設定してから、OK をクリックします。
インスタンスタイプとして [Shared Instance (VPC)] を選択し、[BasePath] を
/に設定します。重要API グループは、作成したカスタムイベントバスと同じリージョンにある必要があります。
ステップ 3:API の作成と権限付与
-
[API グループ] ページで、ステップ 2 で作成した API グループを見つけ、Actions 列の API Management をクリックします。
-
APIs ページで、Create API をクリックします。
-
Basic Information ウィザードステップで、以下の設定を行い、Next をクリックします。
[Group] (例:
test_EB)、[API Name] (例:testAPI)、[Security Authentication] (例:[Alibaba Cloud APP] を選択)、[AppCode Authentication] (例:[Allow AppCode Authentication (Header & Query)] を選択)、[Signature Algorithm] (例:[HMAC_SHA256] を選択) などのパラメーターを設定します。主要な設定は [API Name]、[Security Authentication]、[AppCode Authentication] です。また、[API Options] (リプレイ攻撃の防止、パブリックアクセスの無効化、Cloud Marketplace への掲載許可など) を選択し、[Description] を入力することもできます。完了したら、[Next] をクリックします。 -
[Define API Request] ウィザードステップで、次の設定を行い、Next をクリックします。
[Protocol] は HTTP と HTTPS を選択します。[Request Path] には
/test/eb/1を入力し、[Match all sub-paths] を選択します。[HTTP Method] は [GET] を選択します。[Request Mode] は [Pass-through] を選択します。説明このステップでは、EventBridge が API を呼び出す方法を定義します。リクエストタイプ、プロトコル、リクエストパス、HTTP メソッド、リクエストモード、およびリクエストパラメーターの定義を指定する必要があります。
-
[Define API Backend Service] ウィザードステップで、[Backend Service Type] と Backend Services を選択し、Next をクリックします。
この例では、[Backend Service Type] を [EventBridge] に、[Backend Service] を
test_ebに設定し、デフォルトの [Backend Timeout] である10000ms を使用します。 -
(オプション) [Define Response] ウィザードステップで、レスポンスの例とエラーレスポンスの例を設定して API ドキュメントを生成し、Create をクリックします。
-
-
API を作成した後、Actions 列の [公開] をクリックして、本番環境に公開します。
-
APIs ページで、対象 API の [Actions] 列にある
アイコンをクリックし、Grant をクリックします。 -
Grant パネルで、権限の有効期間を設定し、権限を付与するアプリケーションを追加してから、OK をクリックします。
権限を付与する環境 ([Production]、[Staging]、または [Test]) と、[Authorization valid for] セクションで有効期間を選択します。次に、対象のアプリケーションを検索し、結果リストから [+ Add] をクリックしてアプリケーションを追加します。
ステップ 4:API のデバッグ
-
APIs ページで、ステップ 3: API の作成と承認で作成した API を探し、Actions 列で [デバッグ] をクリックします。
-
デバッグ環境を [Production] に、検証方法 を [AppCode を使用] に設定し、リクエストパラメーターを設定してから[リクエストを送信] をクリックします。
イベントの詳細
-
EventBridge コンソールにログインします。左側のナビゲーションウィンドウで、[Event Bus] をクリックします。
-
[Event Bus] ページで、対象のカスタムイベントバスの名前をクリックします。
-
左側のナビゲーションウィンドウで、イベントトレース をクリックします。クエリメソッドとして [Query By Time Range] または イベント ID で照会 を選択し、照会 をクリックします。
-
対象のイベント ID を見つけ、Actions 列の イベント詳細 をクリックします。
イベントの詳細の例を次に示します。
{ "datacontenttype": "application/json", "aliyunaccountid": "1431999136******", "data": { "headers": { "Authorization": "APPCODE 0624849af6ab4020a272fe9f7b******", "Proxy-Uid": "X-Ca-e605e437-b65d-4e52-9f8c-515c55******", "X-Ca-Stage": "RELEASE", "User-Agent": "Apache-HttpClient/4.5.6 (Java/1.8.0_172)", "Accept-Encoding": "gzip,deflate", "Content-Type": "text/html" }, "path": "/test/eb/1", "pathParameters": {}, "method": "GET", "queryParameters": {}, "body": "" }, "aliyunoriginalaccountid": "143199913******", "source": "time-source-ad2a0405-9a2a-4f86-87f1-c0ef89******", "type": "eventbridge:Events:ApiGateway", "aliyunpublishtime": "2024-11-14T07:11:33.287Z", "specversion": "1.0", "aliyuneventbusname": "ad2a0405-9a2a-4f86-87f1-c0ef89******", "id": "324213ab-cae5-4049-89a4-560ead******", "time": "2024-11-14T07:11:33.000Z", "aliyunregionid": "cn-hangzhou", "aliyunpublishaddr": "172.20.XX.XX" }CloudEvents 仕様で定義されているパラメーターの詳細については、「イベントの概要」をご参照ください。
次の表に、data フィールド内のパラメーターを示します。
パラメーター
タイプ
例
説明
headers
Map
{ "Authorization": "APPCODE b6e439f27045443ca58e9136ef20****", "X-Ca-Dashboard-Uid": "115964845466****", "X-Ca-Dashboard-Action": "DEBUG", "X-Ca-Stage": "RELEASE", "X-Ca-Dashboard-Role": "USER", "User-Agent": "Apache-HttpClient/4.5.6 (Java/1.8.0_172)", "Accept-Encoding": "gzip,deflate", "Content-Type": "text/html; charset=utf-8" }HTTP リクエストヘッダー。
path
String
/test/eb/1
HTTP リクエストパス。
pathParameters
Map
なし
パスパラメーター。
body
String/Map
なし
HTTP リクエストボディ。HTTP リクエストの Content-Type フィールドが application/json の場合、ボディは JSON オブジェクトとして解析されます。それ以外の場合は、プレーン文字列として解析されます。
method
String
GET
HTTP リクエストメソッド。
queryParameters
Map
なし
HTTP リクエストの query パラメーター (token を除く)。