Azure Functions の継続的なデプロイ
Azure Functions を使用すると、ソース管理リポジトリで行われた変更を接続された関数アプリに継続的にデプロイできます。 このソース管理の統合により、コードの更新をトリガーにして、ビルド、パッケージ化、プロジェクトから Azure へのデプロイが行われるワークフローを実現することができます。
継続的デプロイは、運用スロットではなく、ステージング スロットに対して常に構成する必要があります。 運用スロットを使うと、コードの更新が、Azure で検証されずに運用環境に直接プッシュされます。 代わりに、ステージング スロットへの継続的デプロイを有効にすると、ステージング スロットで更新を検証し、すべてが正常に実行されるようになった後で、ステージング スロットのコードを運用環境にスワップできます。 運用スロットに接続する場合は、運用品質のコードのみが統合コード ブランチに含まれるようにしてください。
この記事の手順では、Azure portal のデプロイ センターを使って、Azure の関数アプリへのコードの継続的デプロイを構成する方法について説明します。 Azure CLI を使って継続的インテグレーションを構成することもできます。 これらの手順は、ステージング スロットまたは運用スロットを対象としています。
Functions では、アプリへの継続的デプロイのために次のソースがサポートされています。
Azure DevOps のサービスの 1 つである Azure Repos でプロジェクト コードを保持します。 Git と Team Foundation バージョン管理の両方をサポートします。 Azure Pipelines ビルド プロバイダーで使われます。 詳細については、「Azure Repos とは」を参照してください。
外部の Git リポジトリに関数アプリを接続することもできますが、これには手動での同期が必要です。 デプロイのオプションについて詳しくは、「Azure Functions のデプロイ テクノロジ」をご覧ください。
Note
この記事で説明する継続的デプロイのオプションは、コードのみのデプロイに固有です。 コンテナー化された関数アプリのデプロイについては、Azure へのコンテナーの継続的デプロイの有効化に関する記事をご覧ください。
要件
Azure の関数のデプロイの単位は関数アプリです。 継続的なデプロイを成功させるには、プロジェクトのディレクトリ構造が、Azure Functions が期待する基本フォルダー構造との互換性を備えている必要があります。 Azure Functions Core Tools、Visual Studio Code、Visual Studio を使用してコード プロジェクトを作成する場合は、正しいディレクトリ構造のコード プロジェクトを作成するために、Azure Functions テンプレートが使用されます。 関数アプリ内のすべての関数が、同時に同じパッケージでデプロイされます。
継続的デプロイを有効にした後は、"信頼できるソース" が他の場所に存在することがわかっているため、Azure portal 内の関数コードへのアクセスは "読み取り専用" として構成されます。
Note
デプロイ センターでは、インバウンド ネットワーク制限のある関数アプリの継続的デプロイを有効にすることは、サポートされていません。 代わりに、GitHub または Azure Pipelines でビルド プロバイダー ワークフローを直接構成する必要があります。 これらのワークフローでは、関数アプリと同じ仮想ネットワーク内の仮想マシンを、セルフホステッド エージェント (Pipelines) またはセルフホステッド ランナー (GitHub) として使う必要もあります。
ビルド プロバイダーを選択する
コード プロジェクトのビルドは、デプロイ プロセスの一部です。 具体的なビルド プロセスは、特定の言語スタック、オペレーティング システム、ホスティング プランによって異なります。 ビルドはローカルまたはリモートで行うことができ、これもやはり特定のホスティングに依存します。 詳細については、「リモート ビルド」を参照してください。
重要
セキュリティを強化するために、Azure Pipelines や GitHub Actions などのマネージド ID をサポートするビルド プロバイダーを使用することをご検討ください。 App Service (Kudu) サービスでは、基本認証を有効にし、テキストベースの資格情報を使用する必要があります。
Functions では、次のビルド プロバイダーがサポートされています。
Azure Pipelines は、Azure DevOps のサービスの 1 つであり、Azure Repos プロジェクトの既定のビルド プロバイダーです。 Pipelines を使って、GitHub からプロジェクトをビルドすることもできます。 Pipelines には、Azure Functions へのデプロイ用に特に設計されている AzureFunctionApp
タスクがあります。 このタスクを使うと、プロジェクトをビルド、パッケージ化、デプロイする方法を制御できます。 マネージド ID のサポート。
ソース管理の統合を有効にする場合は、これらのプロバイダーの長所と制限事項にご留意ください。 特定のプロバイダーを利用するには、リポジトリのソースの種類を変更する必要がある場合があります。
継続的なデプロイを構成する
Azure portal で提供されている関数アプリ用のデプロイ センターを使うと、継続的デプロイを簡単に構成できます。 継続的デプロイを構成する詳細な方法は、コードが存在するソース管理リポジトリの種類と、選んだビルド プロバイダーによって異なります。
Azure portal で関数アプリのページに移動し、左側のペインで [デプロイ] の下にある [デプロイ センター] を選びます。
次のサポートされているオプションから、プロジェクト コードが保持されているソース リポジトリの種類を選んでください。
Azure Pipelines を使う Azure Repos からのデプロイは、関数アプリからではなく、Azure DevOps ポータルで定義されます。 Azure Repos からの Pipelines ベースのデプロイを作成するための詳細なガイドについては、「Azure Pipelines を使用した継続的デリバリー」をご覧ください。
デプロイが完了した後は、指定したソースからのすべてのコードがアプリにデプロイされます。 その時点で、デプロイ ソースの変更により、Azure 内の関数アプリにそれらの変更をデプロイする処理がトリガーされます。
アプリ作成中の継続的デプロイを有効にする
現時点で、Azure portal で関数アプリを作成するときに、GitHub Actions を使って GitHub から継続的デプロイを構成できます。 [関数アプリの作成] ページの [デプロイ] タブでこれを行うことができます。
継続的インテグレーションに別のデプロイ ソースまたはビルド プロバイダーを使う場合は、まず関数アプリを作成してからポータルに戻り、デプロイ センターで継続的インテグレーションを設定します。
デプロイの基本認証を無効にする
場合によっては、scm
エンドポイントへの基本認証アクセスが無効になった状態で関数アプリが作成されます。 この場合、マネージド ID を使って scm
エンドポイントにアクセスできないすべてのメソッドによる発行はブロックされます。 scm
エンドポイントを無効にした場合の発行の影響については、「基本認証を使用しないデプロイ」を参照してください。
重要
基本認証を使う場合、資格情報はクリア テキストで送信されます。 これらの資格情報を保護するには、基本認証を使う場合は、暗号化された接続 (HTTPS) 経由でのみ scm
エンドポイントにアクセスする必要があります。 詳細については、「セキュリティで保護されたデプロイ」を参照してください。
scm
エンドポイントに対する基本認証を有効にするには:
Azure portal で関数アプリに移動します。
アプリの左側のメニューで、[設定]>[構成]>[全般設定] を選択します。
[SCM 基本認証の発行資格情報] を [オン] に設定し、[保存] を選びます。