ロジックは自社のもの
Fóirはコードをホストしません。関数を書き、HTTPを提供できる場所ならどこにでもホストし、そのURLをオペレーションとして登録すると、Fóirがそれを呼び出し、リトライが役立つ場合はリトライし、すべての実行の記録を残します。
HTTPの契約
1つのオペレーションの呼び出しは、JSON本文を持つHTTP POSTです。そのため、HTTPを提供し、署名付きトークンを検証できる言語であれば何でも使えます。公開されているSDKのヘルパーはJavaScriptとTypeScript用です。他の言語では、リクエストとトークンの検証を自分で実装します。エンドポイントはインターネットから到達できなければならず、ループバック、プライベート、クラウドメタデータのアドレスは、保存時と呼び出し時の両方で拒否されます。ローカルでの作業では、foir operations devを使うと、手元のマシンを公開することなく、プロジェクトのディスパッチをそこに転送できます。
各呼び出しが運ぶトークン
すべての呼び出しは、その1回のディスパッチに限定された、署名付きで有効期間の短いトークンを、X-Foir-Tokenヘッダーに載せて運びます。関数はFóirの公開鍵でそれを検証します。トークンには、オペレーションが宣言した権限だけが含まれ、たとえば1つのモデルのレコードの読み取りや、別のモデルへの書き込みです。関数はAPIキーを持ちません。トークンからクライアントを構築し、オペレーションとしてFóirを呼び出します。
シークレットの読み取り
同じトークンで、関数はプロジェクトのシークレットを読み取れます。必要なときにgetSecretで1つ取得し、Fóirが送るリクエストには何も差し込まれません。例外はテンプレート型のオペレーションで、FóirがサードパーティAPIを自分で呼び出し、自分のコードは実行されません。その場合、Fóirはボールトから送信リクエストにシークレットを埋め込みます。
リトライと実行の記録
到達できないエンドポイントやサーバーエラーなど、再試行で直る可能性のある失敗は、既定で3回リトライされます。クライアントエラーや拒否はリトライされません。リトライを使い切った実行はデッドレターキューに入り、そこで確認、リトライ、却下ができます。すべての実行は、ステータス、所要時間、結果またはエラー、トリガー、リトライ回数とともに保存されます。同じペイロードが複数回届くことがあるため、ハンドラーは冪等に書いてください。
詳細を読む
オペレーションガイドでは、リクエストとトークンの契約、トリガー、同期と非同期のモード、リトライ、実行の記録を扱っています。