伝説のどいつまの伝説~失敗編~

岩美に永住したい新米エンジニアのあれやこれやな話。

【1 人アドベントカレンダー 2020】第 11 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

今日の項目内容

Azure Functions Core Tools を使用した Azure Functions の開発、テスト、および発行

  • Core Tools を使用してローカルで Azure 関数を作成して実行する
  • 演習 - Core Tools を使用してローカルで関数を作成する
  • Core Tools を使用して関数を Azure に発行する
  • 演習 - Core Tools を使用して関数を Azure に発行する

学習内容まとめ

Core Tools を使用してローカルで Azure 関数を作成して実行する

Azure Functions Core Tools を使用すると、コマンドラインからローカルコンピューターで関数を開発して実行できる。
Core Tools を使用する目的は主に以下の通り。

  1. ローカル コンピューターで関数を開発するために必要なファイルとフォルダーを生成する
  2. 関数をローカルで実行し、テストし、デバッグできるようにする
  3. 関数を Azure に発行する

演習 - Core Tools を使用してローカルで関数を作成する

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201211141106p:plain
f:id:d01tsumath:20201211141944p:plain

Core Tools を使用して関数を Azure に発行する

単利関数をビルドし、テストしたら、Azure に発行でき、Web 上で稼働が確認できる。
Core Tools を使用するにあたり、注意すべき点がある。

  • Core Tools では、発行時に関数コードの検証またはテストが行われない。 発行する前に、必ず func start を使用してのテストが必要。
  • 発行すると、プロジェクトの内容がデプロイされる前に、ターゲット アプリに既に存在するすべての関数が停止および削除される。
  • Azure に発行しても、ローカル プロジェクトとターゲット関数アプリの間にいかなる種類のリレーションシップも作成されない。
  • 発行後に表示される呼び出し URL には、クエリ文字列に code パラメーターが含まれている可能性がある。呼び出し元は要求ヘッダーまたはクエリ文字列に秘密キーを指定する必要がある。

演習 - Core Tools を使用して関数を Azure に発行する

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201211143115p:plain

本日の内容は以上です。

【1 人アドベントカレンダー 2020】第 10 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

今日の項目内容

Durable Functions を使って実行時間の長いサーバーレス ワークフローを作成する

  • タイマーを使用して実行時間の長いタスクを制御する
  • 演習 - 実行時間の長いタスクを管理する持続的タイマーを追加する

学習内容まとめ

タイマーを使用して実行時間の長いタスクを制御する

Durable にはオーケストレーター関数で使うためのタイマーが用意されている。
遅延を実装したり非同期操作のタイムアウトを設定したりできる。

演習 - 実行時間の長いタスクを管理する持続的タイマーを追加する

サンドボックスを用いて演習を行う。
前回からの続きなので、前回同様 HttpStart / OrchFunction / Approval 関数を再度作成した。
f:id:d01tsumath:20201210111024p:plain
f:id:d01tsumath:20201210111242p:plain

本日の内容は以上です。

【1 人アドベントカレンダー 2020】第 9 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

※ 今日は大寝坊かましたので午前中にできなかった...

今日の項目内容

Durable Functions を使って実行時間の長いサーバーレス ワークフローを作成する

  • Durable Functions とは
  • Durable Functions に基づいてワークフローを設計する
  • 演習 - Durable Functions を使用してワークフローを作成する

学習内容まとめ

Durable Functions とは

Durable Functions は Azure Functions の拡張機能で、サーバーレス環境で複雑なステートフル機能を実装できる。
Azure Functions はステートレス環境で動作するのに対し、Durable Functions は複数の関数の呼び出しにまたがった状態を維持できる。

  • 1 つ以上の外部イベントを非同期的に待機し、イベントに応じて一連のタスクを実行できる
  • 複数の関数を連結することができる
  • 関数を実行する順序を指定できる
  • 状態は自動的に管理される

などの特徴があげられる。
また、オーケストレーション関数を使用して、ステートフルワークフローを定義できる。
オーケストレーション関数の利点として、

  • コードでワークフローを定義できる
  • 関数は同期 / 非同期どちらでも呼び出しが可能
  • 関数の進行状況に応じて自動的にチェックポイントが設定される

Durable Functions では 3 種類の永続関数を使用できる。

  1. クライアント関数 : オーケストレーションインスタンス作成のエントリポイント
  2. オーケストレーター関数 : アクションが実行される方法と実行順序を記述する
  3. アクティビティ関数 : オーケストレーションの作業単位。関数には実際の作業が含まれる。

Logic Apps も複雑なサーバーレスワークフローを構築できるが、Durable との違いとして、以下が挙げられる。

比較対象 Azure Durable Functions Azure Logic Apps
開発 コード優先 (命令型) 設計優先 (宣言型)
接続 組み込みのバインド型 (約 10 種類)。
カスタム バインドのためにコードを書くことができる
コネクタの豊富なコレクション。
B2B 向けの Enterprise Integration Pack。
カスタム コネクタも構築できる
アクション 個々のアクティビティが Azure 関数。
アクティビティ関数のコードを書く
既製のアクションの豊富なコレクション。
カスタム コネクタを介してカスタム ロジックを統合する
監視 Azure Application Insights Azure portal、Azure Monitor ログ
管理 REST APIVisual Studio Azure portalREST APIPowerShellVisual Studio
実行コンテキスト ローカルまたはクラウドで実行 クラウドでのみ動作

Durable Functions に基づいてワークフローを設計する

次の演習用に、設計承認プロセスのワークフローを想定する。
手順に基づき、Durable で使用する関数の種類にどう対応するのかを決定する。

ワークフロー関数 Durable Functions の種類
承認を受けるためにプロジェクト設計提案を送信する クライアント 関数
承認タスクを関連するスタッフ メンバーに割り当てる オーケストレーション 関数
承認タスク アクティビティ 関数
エスカレーション タスク アクティビティ 関数

演習 - Durable Functions を使用してワークフローを作成する

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201209123425p:plain
f:id:d01tsumath:20201209123845p:plain
f:id:d01tsumath:20201209124114p:plain
f:id:d01tsumath:20201209124307p:plain
f:id:d01tsumath:20201209124958p:plain

本日の内容は以上です。

【1 人アドベントカレンダー 2020】第 8 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

今日の項目内容

入力バインディングと出力バインディングを使用して Azure Functions を連結する

学習内容まとめ

出力バインディングを使用してデータを書き込む

入力バインディング同様に、出力バインディングにも複数の種類がある。
出力バインディングには、以下の種類がある。

  • BLOB Storage : BLOB へ書き込みができる
  • Azure Cosmos DB : SQL API を使用して、データベースに新しいドキュメントを書き込む
  • Event Hub : イベントストリームに書き込む。イベントハブへの送信アクセス許可が必要となる
  • HTTP : HTTP 要求送信元に応答。この場合、HTTP トリガーが必要
  • Microsoft Graph : One Drive 内のファイル、Excel データの変更、Outlook からの電子メールの送信が可能
  • Mobile Apps : Mobile Apps テーブルに新しいレコードを書き込み
  • Notification Hubs : プッシュ通知を送信
  • Queue Storage : キューにメッセージを書き込み
  • Send Grid : Send Grid バインディングを使用して、電子メールを送信
  • Service Bus : キューメッセージまたはトピックメッセージを送信
  • Table Storage : Azure Storage アカウント内のテーブルに書き込む
  • Twilo : テキストメッセージを送信

1 つの関数に複数のバインディングを適応できる。

演習 - 出力バインディングを使用してデータを書き込む

サンドボックスを用いて演習を行う。

本日の内容は以上です。

【1 人アドベントカレンダー 2020】第 7 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

今日の項目内容

入力バインディングと出力バインディングを使用して Azure Functions を連結する

学習内容まとめ

入力バインディングを使用してデータを読み取る

データソースに接続するには、入力バインディングを構成する必要がある。
入力バインディングには、以下の種類がある。

  • BLOB Storage : BLOB から 読み取りができる
  • Azure Cosmos DB : SQL API を使用して 1 つまたは複数の Azure Cosmos DB ドキュメントを取得する
  • Mobile Apps : モバイルテーブルエンドポイントからレコードを読み込む
  • Table Storage : Azure Table Storage からデータを読み込む

バインド式は、関数が呼び出されたときに評価され、値を生成する特殊テキストのこと。
幾つかの種類があり、ほどんどは中かっこで囲むことで認識されるが、アプリ設定の場合は % で囲まれる。

演習 - 入力バインディングを使用してデータを読み取る

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201207115307p:plain

f:id:d01tsumath:20201207115316p:plain

本日の内容は以上です。

【1 人アドベントカレンダー 2020】第 6 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

今日の項目内容

入力バインディングと出力バインディングを使用して Azure Functions を連結する

学習内容まとめ

入力バインディングと出力バインディングの種類を確認する

Azure Functions で使用できるバインディングは以下の 2 種類がある。

  1. 入力バインディング : データソースへの接続のこと。入力からデータを読み取る。
  2. 出力バインディング : データの送信先への接続のこと。送信先にデータを書き込むことができる。

Azure における一般的なバインドの種類は以下のようになっている。

  • BLOB Storage
  • Azure Service Bus Queue
  • Azure Cosmos DB
  • Azure Event Hub
  • 外部ファイル
  • 外部テーブル
  • HTTP エンドポイント etc...

また、どのバインディングもプロパティを指定しなければならない。

  1. 名前 : 関数パラメータを定義する
  2. 種類 : バインディングの種類 ( データまたはサービスの種類 ) を指定する
  3. 方向 : データの入出方向を指定する
  4. 接続 : 接続文字列が含まれたアプリ設定のキー名を指定する

演習 - 入力バインディングと出力バインディングの種類を確認する

SANDBOX を用いて演習を行った。

本日の内容は以上です。

【1 人アドベントカレンダー 2020】第 5 日目

だいぶアドベントカレンダーの趣旨からは外れてしまいますが、今年も 1 人アドベントカレンダー実施することにしました。
25 日まで毎日更新頑張ります!
qiita.com

今日の項目内容

トリガーを使用して Azure 関数を実行する

  • HTTP 要求を使用した Azure 関数の実行
  • 演習 - HTTP トリガーの作成
  • BLOB の作成時に Azure 関数を実行する
  • 演習 - BLOB トリガーの作成

学習内容まとめ

HTTP 要求を使用した Azure 関数の実行

HTTP トリガーでは、以下のような機能・カスタマイズがある。

  • キーを指定して承認されたアクセスを提供する
  • どの HTTP メソッドをサポーするか制限する
  • 呼び出し元にデータを戻す
  • クエリ文字列パラメータまたは要求本文を介して、データを受け取る
  • URL ルートテンプレートをサポートする

HTTP トリガーには、受信 HTTP 要求に承認のため API キーが必要であるかを示すフラグである承認レベルが設けられている。

  1. 関数
  2. 匿名 (anonymous)
  3. [Admin]

の 3 レベルに分かれている。

演習 - HTTP トリガーの作成

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201205105906p:plain f:id:d01tsumath:20201205110110p:plain

BLOB の作成時に Azure 関数を実行する

BLOB トリガーは、大容量の非構造化データを格納できる Azure BLOB Storage 内にファイルがアップロードされたり、ファイルが更新されたときに関数を実行する。
BLOB トリガーを作成するには、Azure Storage アカウントを作成し、トリガーで監視する場所を指定する。

演習 - BLOB トリガーの作成

サンドボックスを用いて演習を行う。
f:id:d01tsumath:20201205110810p:plain f:id:d01tsumath:20201205111136p:plain

本日の内容は以上です。