Azure Functions の関数アプリのリソース デプロイを自動化Automate resource deployment for your function app in Azure Functions

Azure Resource Manager テンプレートを使用して、関数アプリをデプロイできます。You can use an Azure Resource Manager template to deploy a function app. この記事では、これを行う際に必要なリソースとパラメーターについて説明します。This article outlines the required resources and parameters for doing so. 関数アプリのトリガーとバインドによっては、追加のリソースのデプロイが必要になる可能性があります。You might need to deploy additional resources, depending on the triggers and bindings in your function app.

テンプレートの作成の詳細については、「 Azure Resource Manager のテンプレートの作成」を参照してください。For more information about creating templates, see Authoring Azure Resource Manager templates.

サンプル テンプレートについては、以下を参照してください。For sample templates, see:

必要なリソースRequired resources

Azure Functions のデプロイは通常、次のリソースで構成されています。An Azure Functions deployment typically consists of these resources:

リソースResource 要件Requirement 構文とプロパティの参照Syntax and properties reference
関数アプリA function app 必須Required Microsoft.Web/sitesMicrosoft.Web/sites
Azure Storage アカウントAn Azure Storage account 必須Required Microsoft.Storage/storageAccountsMicrosoft.Storage/storageAccounts
Application Insights コンポーネントAn Application Insights component 省略可能Optional Microsoft.Insights/componentsMicrosoft.Insights/components
ホスティング プランA hosting plan 省略可能1Optional1 Microsoft.Web/serverfarmsMicrosoft.Web/serverfarms

1ホスティング プランは、Premium プラン (プレビュー段階) または App Service プランで関数アプリを実行することを選択する場合にのみ必要です。1A hosting plan is only required when you choose to run your function app on a Premium plan (in preview) or on an App Service plan.

ヒント

必須ではありませんが、Application Insights をアプリ用に構成することを強くお勧めします。While not required, it is strongly recommended that you configure Application Insights for your app.

ストレージ アカウントStorage account

関数アプリには、Azure ストレージ アカウントが必要です。An Azure storage account is required for a function app. 必要なのは BLOB、テーブル、キュー、およびファイルをサポートする汎用アカウントです。You need a general purpose account that supports blobs, tables, queues, and files. 詳細については、Azure Functions ストレージ アカウント要件に関するページをご覧ください。For more information, see Azure Functions storage account requirements.

{
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2019-04-01",
    "location": "[resourceGroup().location]",
    "kind": "StorageV2",
    "sku": {
        "name": "[parameters('storageAccountType')]"
    }
}

さらに、AzureWebJobsStorage プロパティを、サイト構成でアプリ設定として指定する必要があります。In addition, the property AzureWebJobsStorage must be specified as an app setting in the site configuration. 関数アプリで監視に Application Insights を使用していない場合は、AzureWebJobsDashboard もアプリ設定として指定する必要があります。If the function app doesn't use Application Insights for monitoring, it should also specify AzureWebJobsDashboard as an app setting.

AzureWebJobsStorage 接続文字列は、Azure Functions ランタイムが内部キューを作成するときに使用します。The Azure Functions runtime uses the AzureWebJobsStorage connection string to create internal queues. Application Insights が有効でない場合、ランタイムでは AzureWebJobsDashboard 接続文字列を使用して、Azure Table Storage にログを記録し、ポータルの [監視] タブをオンにします。When Application Insights is not enabled, the runtime uses the AzureWebJobsDashboard connection string to log to Azure Table storage and power the Monitor tab in the portal.

こうしたプロパティは、siteConfig オブジェクトの appSettings コレクションで指定します。These properties are specified in the appSettings collection in the siteConfig object:

"appSettings": [
    {
        "name": "AzureWebJobsStorage",
        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
    },
    {
        "name": "AzureWebJobsDashboard",
        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
    }
]

Application InsightsApplication Insights

Application Insights は、関数アプリを監視するために推奨されます。Application Insights is recommended for monitoring your function apps. Application Insights リソースは、タイプが Microsoft.Insights/components、サブタイプが web で定義されます。The Application Insights resource is defined with the type Microsoft.Insights/components and the kind web:

        {
            "apiVersion": "2015-05-01",
            "name": "[variables('appInsightsName')]",
            "type": "Microsoft.Insights/components",
            "kind": "web",
            "location": "[resourceGroup().location]",
            "tags": {
                "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('functionAppName'))]": "Resource"
            },
            "properties": {
                "Application_Type": "web",
                "ApplicationId": "[variables('functionAppName')]"
            }
        },

さらに、APPINSIGHTS_INSTRUMENTATIONKEY のアプリケーション設定を使用して、関数アプリにインストルメンテーション キーを提供する必要があります。In addition, the instrumentation key needs to be provided to the function app using the APPINSIGHTS_INSTRUMENTATIONKEY application setting. このプロパティは、siteConfig オブジェクト内の appSettings コレクションで指定されます。This property is specified in the appSettings collection in the siteConfig object:

"appSettings": [
    {
        "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
        "value": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]"
    }
]

ホスティング プランHosting plan

ホスティング プランの定義はさまざまあり、次のいずれかを指定できます。The definition of the hosting plan varies, and can be one of the following:

関数アプリFunction app

関数アプリのリソースは、タイプが Microsoft.Web/sites、サブタイプが functionapp のリソースを使用して定義されます。The function app resource is defined by using a resource of type Microsoft.Web/sites and kind functionapp:

{
    "apiVersion": "2015-08-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]"
    ]

重要

ホスティング プランを明示的に定義している場合は、dependsOn 配列に次の追加の項目が必要になります: "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"If you are explicitly defining a hosting plan, an additional item would be needed in the dependsOn array: "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]"

関数アプリには、次のアプリケーション設定を含める必要があります。A function app must include these application settings:

設定名Setting name 説明Description 値の例Example values
AzureWebJobsStorageAzureWebJobsStorage Functions ランタイムの内部キューイングのためのストレージ アカウントへの接続文字列A connection string to a storage account that the Functions runtime for internal queueing ストレージ アカウント」を参照See Storage account
FUNCTIONS_EXTENSION_VERSIONFUNCTIONS_EXTENSION_VERSION Azure Functions ランタイムのバージョンThe version of the Azure Functions runtime ~2
FUNCTIONS_WORKER_RUNTIMEFUNCTIONS_WORKER_RUNTIME このアプリ内の関数で使用される言語スタックThe language stack to be used for functions in this app dotnetnodejava、または pythondotnet, node, java, or python
WEBSITE_NODE_DEFAULT_VERSIONWEBSITE_NODE_DEFAULT_VERSION node 言語スタックを使用している場合にのみ必要、使用するバージョンを指定しますOnly needed if using the node language stack, specifies the version to use 10.14.1

これらのプロパティは、siteConfig プロパティ内の appSettings コレクションで指定されます。These properties are specified in the appSettings collection in the siteConfig property:

"properties": {
    "siteConfig": {
        "appSettings": [
            {
                "name": "AzureWebJobsStorage",
                "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
            },
            {
                "name": "FUNCTIONS_WORKER_RUNTIME",
                "value": "node"
            },
            {
                "name": "WEBSITE_NODE_DEFAULT_VERSION",
                "value": "10.14.1"
            },
            {
                "name": "FUNCTIONS_EXTENSION_VERSION",
                "value": "~2"
            }
        ]
    }
}

従量課金プランでデプロイするDeploy on Consumption plan

従量課金プランでは、コードの実行時にコンピューティング能力を自動的に割り当て、負荷の処理の必要性に応じてスケールアウトし、コードを実行していないときはスケールダウンします。The Consumption plan automatically allocates compute power when your code is running, scales out as necessary to handle load, and then scales down when code is not running. アイドル状態の VM に対して支払う必要はなく、事前に容量を予約する必要もありません。You don't have to pay for idle VMs, and you don't have to reserve capacity in advance. 詳細については、「Azure Functions のスケールとホスティング」を参照してください。To learn more, see Azure Functions scale and hosting.

Azure Resource Manager テンプレートのサンプルについては、従量課金プランの関数アプリに関するページをご覧ください。For a sample Azure Resource Manager template, see Function app on Consumption plan.

従量課金プランを作成するCreate a Consumption plan

従量課金プランを定義する必要はありません。A Consumption plan does not need to be defined. 関数アプリのリソース自体を作成したときに、このプランがリージョンごとに自動的に作成または選択されます。One will automatically be created or selected on a per-region basis when you create the function app resource itself.

従量課金プランは、特殊なタイプの "serverfarm" リソースです。The Consumption plan is a special type of "serverfarm" resource. Windows では、computeMode および sku プロパティに Dynamic 値を使用して指定できます。For Windows, you can specify it by using the Dynamic value for the computeMode and sku properties:

{  
   "type":"Microsoft.Web/serverfarms",
   "apiVersion":"2016-09-01",
   "name":"[variables('hostingPlanName')]",
   "location":"[resourceGroup().location]",
   "properties":{  
      "name":"[variables('hostingPlanName')]",
      "computeMode":"Dynamic"
   },
   "sku":{  
      "name":"Y1",
      "tier":"Dynamic",
      "size":"Y1",
      "family":"Y",
      "capacity":0
   }
}

注意

Linux では、従量課金プランを明示的に定義できません。The Consumption plan cannot be explicitly defined for Linux. これは自動的に作成されます。It will be created automatically.

従量課金プランを明示的に定義する場合は、アプリで serverFarmId プロパティを設定して、それがプランのリソース ID を指すようにする必要があります。If you do explicitly define your consumption plan, you will need to set the serverFarmId property on the app so that it points to the resource ID of the plan. 関数アプリにプランに対する dependsOn 設定も含まれていることを確認する必要があります。You should ensure that the function app has a dependsOn setting for the plan as well.

Function App を作成するCreate a function app

WindowsWindows

Windows の場合、従量課金プランでは、サイト構成に WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHARE の 2 つの追加の設定が必要です。On Windows, a Consumption plan requires two additional settings in the site configuration: WEBSITE_CONTENTAZUREFILECONNECTIONSTRING and WEBSITE_CONTENTSHARE. このプロパティによって、関数アプリ コードと構成が格納されているストレージ アカウントとファイル パスが構成されます。These properties configure the storage account and file path where the function app code and configuration are stored.

{
    "apiVersion": "2016-03-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
    ],
    "properties": {
        "siteConfig": {
            "appSettings": [
                {
                    "name": "AzureWebJobsStorage",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "WEBSITE_CONTENTSHARE",
                    "value": "[toLower(variables('functionAppName'))]"
                },
                {
                    "name": "FUNCTIONS_WORKER_RUNTIME",
                    "value": "node"
                },
                {
                    "name": "WEBSITE_NODE_DEFAULT_VERSION",
                    "value": "10.14.1"
                },
                {
                    "name": "FUNCTIONS_EXTENSION_VERSION",
                    "value": "~2"
                }
            ]
        }
    }
}

LinuxLinux

Linux の場合、関数アプリは kindfunctionapp,linux に設定され、reserved プロパティが true に設定されている必要があります。On Linux, the function app must have its kind set to functionapp,linux, and it must have the reserved property set to true:

{
    "apiVersion": "2016-03-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp,linux",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
    ],
    "properties": {
        "siteConfig": {
            "appSettings": [
                {
                    "name": "AzureWebJobsStorage",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountName'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "FUNCTIONS_WORKER_RUNTIME",
                    "value": "node"
                },
                {
                    "name": "WEBSITE_NODE_DEFAULT_VERSION",
                    "value": "10.14.1"
                },
                {
                    "name": "FUNCTIONS_EXTENSION_VERSION",
                    "value": "~2"
                }
            ]
        },
        "reserved": true
    }
}

Premium プランでデプロイするDeploy on Premium plan

Premium プランでは、従量課金プランと同じスケーリングが提供されますが、専用リソースと追加の機能が含まれています。The Premium plan offers the same scaling as the consumption plan but includes dedicated resources and additional capabilities. 詳細については、「Azure Functions の Premium プラン」を参照してください。To learn more, see Azure Functions Premium Plan.

Premium プランを作成するCreate a Premium plan

Premium プランは、特殊なタイプの "serverfarm" リソースです。A Premium plan is a special type of "serverfarm" resource. これは、sku プロパティ値に EP1EP2EP3 のいずれかを使用して指定できます。You can specify it by using either EP1, EP2, or EP3 for the sku property value.

{
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2015-04-01",
    "name": "[variables('hostingPlanName')]",
    "location": "[resourceGroup().location]",
    "properties": {
        "name": "[variables('hostingPlanName')]",
        "sku": "EP1"
    }
}

Function App を作成するCreate a function app

Premium プランでの関数アプリは、serverFarmId プロパティが、前に作成されたプランのリソース ID に設定されている必要があります。A function app on a Premium plan must have the serverFarmId property set to the resource ID of the plan created earlier. さらに、Premium プランでは、サイト構成に WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHARE の 2 つの追加の設定が必要です。In addition, a Premium plan requires two additional settings in the site configuration: WEBSITE_CONTENTAZUREFILECONNECTIONSTRING and WEBSITE_CONTENTSHARE. このプロパティによって、関数アプリ コードと構成が格納されているストレージ アカウントとファイル パスが構成されます。These properties configure the storage account and file path where the function app code and configuration are stored.

{
    "apiVersion": "2016-03-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",            
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
    ],
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "siteConfig": {
            "appSettings": [
                {
                    "name": "AzureWebJobsStorage",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "WEBSITE_CONTENTSHARE",
                    "value": "[toLower(variables('functionAppName'))]"
                },
                {
                    "name": "FUNCTIONS_WORKER_RUNTIME",
                    "value": "node"
                },
                {
                    "name": "WEBSITE_NODE_DEFAULT_VERSION",
                    "value": "10.14.1"
                },
                {
                    "name": "FUNCTIONS_EXTENSION_VERSION",
                    "value": "~2"
                }
            ]
        }
    }
}

App Service プランでデプロイするDeploy on App Service plan

App Service プランでは、関数アプリは、Web アプリと同様に、Basic、Standard、および Premium SKU の専用 VM 上で実行されます。In the App Service plan, your function app runs on dedicated VMs on Basic, Standard, and Premium SKUs, similar to web apps. App Service プランの仕組みの詳細については、「Azure App Service プランの詳細な概要」を参照してください。For details about how the App Service plan works, see the Azure App Service plans in-depth overview.

Azure Resource Manager テンプレートのサンプルについては、Azure App Service プランの関数アプリに関するページをご覧ください。For a sample Azure Resource Manager template, see Function app on Azure App Service plan.

App Service プランを作成するCreate an App Service plan

App Service プランは、"serverfarm" リソースによって定義されます。An App Service plan is defined by a "serverfarm" resource.

{
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2018-02-01",
    "name": "[variables('hostingPlanName')]",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "S1",
        "tier": "Standard",
        "size": "S1",
        "family": "S",
        "capacity": 1
    }
}

Linux でアプリを実行するには、kindLinux に設定することも必要です。To run your app on Linux, you must also set the kind to Linux:

{
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2018-02-01",
    "name": "[variables('hostingPlanName')]",
    "location": "[resourceGroup().location]",
    "kind": "Linux",
    "sku": {
        "name": "S1",
        "tier": "Standard",
        "size": "S1",
        "family": "S",
        "capacity": 1
    }
}

Function App を作成するCreate a function app

App Service プランでの関数アプリは、serverFarmId プロパティが、前に作成されたプランのリソース ID に設定されている必要があります。A function app on an App Service plan must have the serverFarmId property set to the resource ID of the plan created earlier.

{
    "apiVersion": "2016-03-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
    ],
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "siteConfig": {
            "appSettings": [
                {
                    "name": "AzureWebJobsStorage",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "FUNCTIONS_WORKER_RUNTIME",
                    "value": "node"
                },
                {
                    "name": "WEBSITE_NODE_DEFAULT_VERSION",
                    "value": "10.14.1"
                },
                {
                    "name": "FUNCTIONS_EXTENSION_VERSION",
                    "value": "~2"
                }
            ]
        }
    }
}

Linux アプリでは、siteConfig の下に linuxFxVersion プロパティも含める必要があります。Linux apps should also include a linuxFxVersion property under siteConfig. コードをデプロイしているだけである場合、この値は、目的のランタイム スタックによって決定されます。If you are just deploying code, the value for this is determined by your desired runtime stack:

スタックStack 値の例Example value
PythonPython DOCKER|microsoft/azure-functions-python3.6:2.0
JavaScriptJavaScript DOCKER|microsoft/azure-functions-node8:2.0
.NET.NET DOCKER|microsoft/azure-functions-dotnet-core2.0:2.0
{
    "apiVersion": "2016-03-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
    ],
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "siteConfig": {
            "appSettings": [
                {
                    "name": "AzureWebJobsStorage",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "FUNCTIONS_WORKER_RUNTIME",
                    "value": "node"
                },
                {
                    "name": "WEBSITE_NODE_DEFAULT_VERSION",
                    "value": "10.14.1"
                },
                {
                    "name": "FUNCTIONS_EXTENSION_VERSION",
                    "value": "~2"
                }
            ],
            "linuxFxVersion": "DOCKER|microsoft/azure-functions-node8:2.0"
        }
    }
}

カスタム コンテナー イメージをデプロイしている場合は、それを linuxFxVersion で指定し、Web App for Containers のように、イメージをプルできるようにする構成を含める必要があります。If you are deploying a custom container image, you must specify it with linuxFxVersion and include configuration that allows your image to be pulled, as in Web App for Containers. また、アプリのコンテンツはコンテナー自体で提供されるため、WEBSITES_ENABLE_APP_SERVICE_STORAGEfalse に設定します。Also, set WEBSITES_ENABLE_APP_SERVICE_STORAGE to false, since your app content is provided in the container itself:

{
    "apiVersion": "2016-03-01",
    "type": "Microsoft.Web/sites",
    "name": "[variables('functionAppName')]",
    "location": "[resourceGroup().location]",
    "kind": "functionapp",
    "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
    ],
    "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]",
        "siteConfig": {
            "appSettings": [
                {
                    "name": "AzureWebJobsStorage",
                    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]"
                },
                {
                    "name": "FUNCTIONS_WORKER_RUNTIME",
                    "value": "node"
                },
                {
                    "name": "WEBSITE_NODE_DEFAULT_VERSION",
                    "value": "10.14.1"
                },
                {
                    "name": "FUNCTIONS_EXTENSION_VERSION",
                    "value": "~2"
                },
                {
                    "name": "DOCKER_REGISTRY_SERVER_URL",
                    "value": "[parameters('dockerRegistryUrl')]"
                },
                {
                    "name": "DOCKER_REGISTRY_SERVER_USERNAME",
                    "value": "[parameters('dockerRegistryUsername')]"
                },
                {
                    "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
                    "value": "[parameters('dockerRegistryPassword')]"
                },
                {
                    "name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE",
                    "value": "false"
                }
            ],
            "linuxFxVersion": "DOCKER|myacr.azurecr.io/myimage:mytag"
        }
    }
}

デプロイのカスタマイズCustomizing a deployment

関数アプリには、アプリ設定オプション、ソース管理オプションなど、デプロイで使用できる子リソースが多数含まれます。A function app has many child resources that you can use in your deployment, including app settings and source control options. sourcecontrols 子リソースを削除して、別のデプロイ オプションを代わりに使用することもできます。You also might choose to remove the sourcecontrols child resource, and use a different deployment option instead.

重要

Azure Resource Manager を使用して、アプリケーションを適切にデプロイするには、リソースが Azure でどのようにデプロイされているかを理解することが重要です。To successfully deploy your application by using Azure Resource Manager, it's important to understand how resources are deployed in Azure. 次の例では、siteConfig を使用して最上位レベル構成が適用されます。In the following example, top-level configurations are applied by using siteConfig. この構成は、情報を Functions ランタイムとデプロイ エンジンに提供するため、最上位レベルで設定することが重要です。It's important to set these configurations at a top level, because they convey information to the Functions runtime and deployment engine. sourcecontrols/web 子リソースが適用される前に、最上位の情報が必要です。Top-level information is required before the child sourcecontrols/web resource is applied. この設定は、子レベルの config/appSettings リソースで構成することもできますが、場合によっては、関数アプリを、config/appSettings が適用される "" にデプロイする必要があります。Although it's possible to configure these settings in the child-level config/appSettings resource, in some cases your function app must be deployed before config/appSettings is applied. たとえば、Logic Apps で関数を使用している場合、関数は他のリソースと依存関係にあります。For example, when you are using functions with Logic Apps, your functions are a dependency of another resource.

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('appName')]",
  "type": "Microsoft.Web/sites",
  "kind": "functionapp",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Web/serverfarms', parameters('appName'))]"
  ],
  "properties": {
     "serverFarmId": "[variables('appServicePlanName')]",
     "siteConfig": {
        "alwaysOn": true,
        "appSettings": [
            {
                "name": "FUNCTIONS_EXTENSION_VERSION",
                "value": "~2"
            },
            {
                "name": "Project",
                "value": "src"
            }
        ]
     }
  },
  "resources": [
     {
        "apiVersion": "2015-08-01",
        "name": "appsettings",
        "type": "config",
        "dependsOn": [
          "[resourceId('Microsoft.Web/Sites', parameters('appName'))]",
          "[resourceId('Microsoft.Web/Sites/sourcecontrols', parameters('appName'), 'web')]",
          "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
        ],
        "properties": {
          "AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]",
          "AzureWebJobsDashboard": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountid'),'2015-05-01-preview').key1)]",
          "FUNCTIONS_EXTENSION_VERSION": "~2",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet",
          "Project": "src"
        }
     },
     {
          "apiVersion": "2015-08-01",
          "name": "web",
          "type": "sourcecontrols",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites/', parameters('appName'))]"
          ],
          "properties": {
            "RepoUrl": "[parameters('sourceCodeRepositoryURL')]",
            "branch": "[parameters('sourceCodeBranch')]",
            "IsManualIntegration": "[parameters('sourceCodeManualIntegration')]"
          }
     }
  ]
}

ヒント

このテンプレートでは、プロジェクト アプリの設定値を使用します。これによって、Functions デプロイ エンジン (Kudu) がデプロイ可能なコードを検索するベース ディレクトリを設定します。This template uses the Project app settings value, which sets the base directory in which the Functions deployment engine (Kudu) looks for deployable code. リポジトリでは、関数は src フォルダーのサブフォルダーにあります。In our repository, our functions are in a subfolder of the src folder. したがって、この例では、アプリ設定値を src に設定します。So, in the preceding example, we set the app settings value to src. 関数がリポジトリのルートにある場合、またはソース管理からデプロイしない場合、このアプリ設定値は削除できます。If your functions are in the root of your repository, or if you are not deploying from source control, you can remove this app settings value.

テンプレートのデプロイDeploy your template

次のいずれかの方法を使用して、テンプレートをデプロイできます。You can use any of the following ways to deploy your template:

[Azure にデプロイ] ボタンDeploy to Azure button

<url-encoded-path-to-azuredeploy-json> を、GitHub の azuredeploy.json ファイルの生のパスのエンコードされた URL で置き換えます。Replace <url-encoded-path-to-azuredeploy-json> with a URL-encoded version of the raw path of your azuredeploy.json file in GitHub.

マークダウンを使用する例を次に示します。Here is an example that uses markdown:

[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>)

HTML を使用する例を次に示します。Here is an example that uses HTML:

<a href="https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>" target="_blank"><img src="https://azuredeploy.net/deploybutton.png"></a>

PowerShell を使用したデプロイDeploy using PowerShell

次の PowerShell コマンドを実行すると、リソース グループが作成され、必要なリソースを使って関数アプリを作成するテンプレートがデプロイされます。The following PowerShell commands create a resource group and deploy a template that create a function app with its required resources. ローカルで実行するには、Azure PowerShell がインストールされている必要があります。To run locally, you must have Azure PowerShell installed. Connect-AzAccount を実行してサインインします。Run Connect-AzAccount to sign in.

# Register Resource Providers if they're not already registered
Register-AzResourceProvider -ProviderNamespace "microsoft.web"
Register-AzResourceProvider -ProviderNamespace "microsoft.storage"

# Create a resource group for the function app
New-AzResourceGroup -Name "MyResourceGroup" -Location 'West Europe'

# Create the parameters for the file, which for this template is the function app name.
$TemplateParams = @{"appName" = "<function-app-name>"}

# Deploy the template
New-AzResourceGroupDeployment -ResourceGroupName "MyResourceGroup" -TemplateFile template.json -TemplateParameterObject $TemplateParams -Verbose

このデプロイをテストするには、従量課金プランで Windows 上に関数アプリを作成するこのようなテンプレートを使用できます。To test out this deployment, you can use a template like this one that creates a function app on Windows in a Consumption plan. <function-app-name> は、関数アプリの一意の名前に置き換えてください。Replace <function-app-name> with a unique name for your function app.

次の手順Next steps

Azure Functions を開発および構成する方法について学習します。Learn more about how to develop and configure Azure Functions.