原文はこちら
https://blogs.oracle.com/developers/whats-new-with-notifications-and-functions
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
https://blogs.oracle.com/developers/whats-new-with-notifications-and-functions
これまでに何度か素晴らしいサービスであるOracle Notification Service(ONS)とOracle Functionsについてブログを書いてきましたが、本日お伝えするのは我らが開発チームの大きな努力によりあなたの人生をもっと楽にするためにこのふたつのサービスに加えられた新機能についてです。以前もCustom URL、PagerDutyとEメールがONSのサブスクリプションに設定できました。また、Oracle Functionsは、Cloud EventsやAPI Gateway、Oracle Integration Cloudからトリガーできました。しかし今回追加された新機能では、このふたつの素晴らしいサービスを組み合わせること、また、サーバレスファンクションをONSの通知トピックにサブスクリプション設定することができるようになったのです。これにより、さまざまなかたちのインテグレーションが可能になったというだけでなく、Oracle Cloud上で利用可能な様々なプロダクトを組み合わせて使ってみる理由が新たにひとつ加わりました。
このふたつのサービスのインテグレーションについて詳しくみていきましょう。以下に挙げる図はドキュメントから抜粋したダイアグラムで、新機能を説明するために手を加えています。ひとつめのダイアグラムは、あるモニタリングメトリックルールがなにがしかの状況を検知して発報したアラームにより、ONSの通知をトリガーするやり方を表しています。

以前であれば、このようなことが起きた場合にオンコールエンジニアであるあなたが朝4時にベッドで起こされることになる通知というのは、あなたのWebサイトが急にバズった結果、多くのトラフィックでボコボコになっているということを意味する知らせだったかもしれません。なるほど確かにそれはいいニュースかもしれませんが、それでもあなたは多大に必要であろう睡眠を諦め、起きてなんらかの対応をしなければなりませんよね。そうやってあなたが眠い目をこすりながら対応するのではなく、必要な対応が自動的に行われるとしたら素敵じゃないですか?まさしくそれをやれるのがファンクションのサブスクリプションなんです。あなたのファンクションがサーバー追加が必要か識別し、OCI SDKを利用して自動化され、スクリプト化されたアクションを実行してくれるんです。
次のダイアグラムは、あなたのサービスやアプリケーションがONSを直接利用することでなんらかのアクションを実行するやり方を表しています。もしかするとあなたは巨大なEコマースアプリケーションがお客様の注文対して受け取り確認のEメールを返信する必要があり、あなたはこのEメールの返信にONSを使おうとしているかもしれません。しかし同時に、あなたは世界初の完全自動化工場も構築しており、お客様の注文に対応するロボットを起動するシーケンスをサーバレスファンクションで実行したいとも思っているかもしれません。そんなことにも対応できちゃうんです!

おことわり:もしかしてサーバレスファンクションで起動されるロボットが働く完全自動化工場というのはちょっとありそうもない話だとお考えかもしれませんが、まあでもユースケースの例としてはわかりやすいと思います。
ここからONSの通知トピックへのファンクションのサブスクリプション方法についてご説明させてください。
"Hello World"サーバレスファンクションの作成
Oracle Functionsをご存知でない場合は、こちらの動画を見てテナンシーのセットアップ方法について学んでください(あるいはこちらにクイックスタートガイドもあります)。
テナンシーの設定が済んだら、"Hello World"のファンクションを作成してデプロイしましょう。今度の動画はあなたの最初のOracle Functionを作成し、デプロイし、起動するやり方を説明してくれます。
最初のファンクションが作成できたら次に進みましょう。
サーバレスファンクションをトリガーするためのサブスクリプションの設定
最初のステップは新しい通知トピックを作成する、または既存のトピックを選択することです。そうしたらトピック詳細のページに行って'Create Subscription'をクリック。

'Protocol'の選択欄で'Function'を選択しましょう。

'Function'プロトコルを選択すると、追加の入力欄が表示されます。起動したいファンクションの所在するコンパートメントと、アプリケーションおよびファンクションIDを選択しましょう。

サブスクリプションが作成されたら、'Publish Message'をクリックしてテストしてみましょう。

なんらかの内容を入力して'Publish'をクリック。

そうしたら選んだファンクションの詳細ページに行き、メトリックを見てそのファンクションが起動されたことを確認しましょう。

ファンクションのObject Storageへのログ出力を有効にしている場合は;

設定したバケットにログが出力されていることも確認できるはずです。

それをダウンロードして見てみると:

というわけでこれがONSの通知でOracle Cloud上のサーバレスファンクションをトリガーする方法でした。他の例やAPIやCLIのドキュメントへのリンクについてはこちらのリリースのお知らせを見てみてくださいね。