Azure で初めての Python 関数を作成する (プレビュー)Create your first Python function in Azure (preview)

注意

Python 用の Azure Functions は現在プレビュー段階です。Python for Azure Functions is currently in preview. 重要な更新プログラムを受け取るために、GitHub 上で Azure App Service のお知らせリポジトリをサブスクライブしてください。To receive important updates, subscribe to the Azure App Service announcements repository on GitHub.

このクイック スタート記事では、Linux 上で動作する初めてのサーバーレス Python 関数アプリを Azure CLI を使用して作成する方法について説明します。This quickstart article walks you through how to use the Azure CLI to create your first serverless Python function app running on Linux. Azure Functions Core Tools を使用して、関数のコードをローカルで作成し、その後 Azure にデプロイします。The function code is created locally and then deployed to Azure by using the Azure Functions Core Tools. 関数アプリを Linux 上で実行するためのプレビューに関する考慮事項の詳細については、Linux 上の関数に関するこちらの記事を参照してください。To learn more about preview considerations for running your function apps on Linux, see this Functions on Linux article.

次の手順は、Mac、Windows、または Linux コンピューターでサポートされます。The following steps are supported on a Mac, Windows, or Linux computer.

前提条件Prerequisites

ローカルでビルドしてテストするには、以下を行う必要があります。To build and test locally, you will need to:

Azure に発行して実行するには:To publish and run in Azure:

仮想環境を作成してアクティブにするCreate and activate a virtual environment

関数プロジェクトを作成するには、Python 3.6 仮想環境で作業する必要があります。To create a Functions project, it is required that you work in a Python 3.6 virtual environment. 次のコマンドを実行して、.env という名前の仮想環境を作成してアクティブにします。Run the following commands to create and activate a virtual environment named .env.

# In Bash
python3.6 -m venv .env
source .env/bin/activate

# In PowerShell
py -3.6 -m venv .env
.env\scripts\activate

ローカル関数プロジェクトを作成するCreate a local Functions project

次に、ローカル関数プロジェクトを作成できます。You can now create a local Functions project. このディレクトリは、Azure 上の関数アプリに相当します。This directory is the equivalent of a Function App in Azure. 同じローカル構成とホスティング構成を共有する複数の関数を含めることができます。It can contain multiple functions that share the same local and hosting configuration.

コマンド プロンプトまたはターミナル ウィンドウで、次のコマンドを実行します。In the terminal window or from a command prompt, run the following command:

func init MyFunctionProj

目的のランタイムとして python を選択します。Pick python as the desired runtime.

Select a worker runtime:
1. dotnet
2. node
3. python

次のような出力が表示されます。You see something like the following output.

Installing wheel package
Installing azure-functions package
Installing azure-functions-worker package
Running pip freeze
Writing .gitignore
Writing host.json
Writing local.settings.json
Writing /MyFunctionProj/.vscode/extensions.json

MyFunctionProj という名前の新しいフォルダーが作成されます。A new folder named MyFunctionProj is created. 続行するには、このフォルダーにディレクトリを変更します。To continue, change directory to this folder.

cd MyFunctionProj

関数を作成するCreate a function

関数を作成するには、次のコマンドを実行します。To create a function, run the following command:

func new

テンプレートとして HTTP Trigger を選択し、関数名として HttpTrigger を指定します。Choose HTTP Trigger as the template and provide a function name of HttpTrigger.

Select a template:
1. Blob trigger
2. Cosmos DB trigger
3. Event Grid trigger
4. Event Hub trigger
5. HTTP trigger
6. Queue trigger
7. Service Bus Queue trigger
8. Service Bus Topic trigger
9. Timer trigger

Choose option: 5
Function name: HttpTrigger

次のような出力が表示されます。You see something like the following output.

Writing /MyFunctionProj/HttpTrigger/sample.dat
Writing /MyFunctionProj/HttpTrigger/__init__.py
Writing /MyFunctionProj/HttpTrigger/function.json
The function "HttpTrigger" was created successfully from the "HTTP trigger" template.

HttpTrigger という名前のサブフォルダーが作成されます。A sub-folder named HttpTrigger is created. これには、プライマリ スクリプト ファイルである __init__.py と、トリガーの説明とこの関数によって使用されるバインドを記述する function.json ファイルが含まれています。This contains __init__.py which is the primary script file and function.json file which describes the trigger and bindings used by the function. このプログラミング モデルの詳細については、「Azure Functions Python developer guide」(Azure Functions の Python 開発者向けガイド) を参照してください。To learn more about the programming model, you can refer to the Azure Functions Python developer guide.

関数をローカルで実行するRun the function locally

次のコマンドを使用して、Functions ホストをローカルで実行します。Use the following command to run the Functions host locally.

func host start

Functions ホストが起動すると、HTTP によってトリガーされる関数の URL が出力されます When the Functions host starts, it outputs the URL of your HTTP-triggered function. (読みやすくするために出力の一部が省略されていることに注意してください)。(Note that the entire output has been truncated for readability.)


                  %%%%%%
                 %%%%%%
            @   %%%%%%    @
          @@   %%%%%%      @@
       @@@    %%%%%%%%%%%    @@@
     @@      %%%%%%%%%%        @@
       @@         %%%%       @@
         @@      %%%       @@
           @@    %%      @@
                %%
                %
...
Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.
...

Http Functions:

        HttpTrigger: http://localhost:7071/api/HttpTrigger

出力からご自分の関数の URL をコピーしてブラウザーのアドレス バーに貼り付けます。Copy the URL of your function from the output and paste it into your browser's address bar. この URL にクエリ文字列 ?name=<yourname> を追加して、要求を実行します。Append the query string ?name=<yourname> to this URL and execute the request.

http://localhost:7071/api/HttpTrigger?name=<yourname>

次のスクリーン ショットに、ブラウザーからトリガーされたときの関数の応答を示します。The following screenshot shows the response from the function, when it is triggered from the browser:

テスト

これで、関数アプリを作成して Azure に発行するために必要なその他のリソースの準備が整いました。You are now ready to create a Function App and other required resources for publishing to Azure.

リソース グループの作成Create a resource group

az group create でリソース グループを作成します。Create a resource group with the az group create. Azure リソース グループとは、Function App、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。An Azure resource group is a logical container into which Azure resources like function apps, databases, and storage accounts are deployed and managed.

次の例では、myResourceGroup という名前のリソース グループを作成します。The following example creates a resource group named myResourceGroup.
Cloud Shell を使用していない場合は、まず az login でサインインします。If you are not using Cloud Shell, sign in first using az login.

az group create --name myResourceGroup --location westeurope

通常は、現在地付近の地域にリソース グループおよびリソースを作成します。You generally create your resource group and the resources in a region near you. App Service プランがサポートされているすべての場所を表示するには、az appservice list-locations コマンドを実行します。To see all supported locations for App Service plans, run the az appservice list-locations command.

Azure Storage アカウントの作成Create an Azure Storage account

Functions は、関数に関する状態その他の情報を維持するために Azure Storage の汎用のアカウントを使用します。Functions uses a general-purpose account in Azure Storage to maintain state and other information about your functions. az storage account create コマンドを使用して作成したリソース グループ内に汎用のストレージ アカウントを作成します。Create a general-purpose storage account in the resource group you created by using the az storage account create command.

次のコマンドでは、<storage_name> プレースホルダーをグローバルに一意なストレージ アカウント名で置き換えます。In the following command, substitute a globally unique storage account name where you see the <storage_name> placeholder. ストレージ アカウント名の長さは 3 ~ 24 文字で、数字と小文字のみを使用できます。Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.

az storage account create --name <storage_name> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

ストレージ アカウントの作成後に、Azure CLI によって次の例のような情報が表示されます。After the storage account has been created, the Azure CLI shows information similar to the following example:

{
  "creationTime": "2017-04-15T17:14:39.320307+00:00",
  "id": "/subscriptions/bbbef702-e769-477b-9f16-bc4d3aa97387/resourceGroups/myresourcegroup/...",
  "kind": "Storage",
  "location": "westeurope",
  "name": "myfunctionappstorage",
  "primaryEndpoints": {
    "blob": "https://myfunctionappstorage.blob.core.windows.net/",
    "file": "https://myfunctionappstorage.file.core.windows.net/",
    "queue": "https://myfunctionappstorage.queue.core.windows.net/",
    "table": "https://myfunctionappstorage.table.core.windows.net/"
  },
     ....
    // Remaining output has been truncated for readability.
}

Azure に Linux の関数アプリを作成するCreate a Linux function app in Azure

関数アプリには、関数コードを実行するための環境を指定します。The function app provides an environment for executing your function code. これにより、リソースの管理、デプロイ、および共有を容易にするための論理ユニットとして関数をグループ化できます。It lets you group functions as a logical unit for easier management, deployment, and sharing of resources. az functionapp create コマンドを使用して、Linux 上で動作する Python 関数アプリを作成します。Create a Python function app running on Linux using the az functionapp create command.

<app_name> プレースホルダーに一意の関数アプリ名を、ストレージ アカウント名として <storage_name> を使用して、次のコマンドを実行します。Run the following command using a unique function app name in place of the <app_name> placeholder and the storage account name for <storage_name>. <app_name> は、関数アプリの既定の DNS ドメインでもあります。The <app_name> is also the default DNS domain for the function app. この名前は、Azure のすべてのアプリで一意である必要があります。This name needs to be unique across all apps in Azure.

az functionapp create --resource-group myResourceGroup --os-type Linux \
--consumption-plan-location westeurope  --runtime python \
--name <app_name> --storage-account  <storage_name>

注意

Linux 以外の App Service アプリを含んだ myResourceGroup という名前のリソース グループが既にある場合は、別のリソース グループを使用する必要があります。If you have an existing resource group named myResourceGroup with any non-Linux App Service apps, you must use a different resource group. Windows アプリと Linux アプリの両方を同じリソース グループでホストすることはできません。You can't host both Windows and Linux apps in the same resource group.

関数アプリが作成されると、次のメッセージが表示されます。After the function app has been created, you will see the following message:

Your serverless Linux function app 'myfunctionapp' has been successfully created.
To active this function app, publish your app content using Azure Functions Core Tools or the Azure portal.

これで、ローカル関数プロジェクトを Azure 上の関数アプリに対して発行する準備が整いました。You are now ready to publish your local functions project to the Function App in Azure.

Azure に関数アプリのプロジェクトをデプロイするDeploy the function app project to Azure

Azure Functions Core Tools を使用して、次のコマンドを実行します。Using the Azure Functions Core Tools, run the following command. <app_name> には、前の手順で作成したアプリの名前を指定します。Replace <app_name> with the name of your app from the previous step.

func azure functionapp publish <app_name>

次のような出力が表示されます (読みやすくするために一部が省略されています)。You will see something like the following output, which has been truncated for readability.

Getting site publishing info...

...

Preparing archive...
Uploading content...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...

関数をテストするTest the function

cURL を使用して、Mac または Linux コンピューターで、または Windows で PowerShell を使用して、デプロイした関数をテストします。Use cURL to test the deployed function on a Mac or Linux computer or using Powershell on Windows. 次の cURL コマンドを実行します。<app_name> プレースホルダーを Function App の名前に置き換えます。Execute the following cURL command, replacing the <app_name> placeholder with the name of your function app. URL にクエリ文字列 &name=<yourname> を追加します。Append the query string &name=<yourname> to the URL.

Invoke-WebRequest -Uri "https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>"
curl https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>

ブラウザーに表示された関数の応答。

コマンド ラインで使用可能な cURL または Invoke-WebRequest がない場合は、Web ブラウザーのアドレスに同じ URL を入力します。If you don't have cURLor Invoke-WebRequest available in your command line, enter the same URL in the address of your web browser. 再度、<app_name> プレースホルダーを関数アプリの名前に置き換え、URL にクエリ文字列 &name=<yourname> を追加して、要求を実行します。Again, replace the <app_name> placeholder with the name of your function app, and append the query string &name=<yourname> to the URL and execute the request.

https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>

ブラウザーに表示された関数の応答。

リソースのクリーンアップClean up resources

このコレクションの他のクイックスタートは、このクイックスタートに基づいています。Other quickstarts in this collection build upon this quickstart. 引き続きクイックスタートまたはチュートリアルの作業を行う場合は、このクイックスタートで作成したリソースをクリーンアップしないでください。If you plan to continue on to work with subsequent quickstarts or with the tutorials, do not clean up the resources created in this quickstart. 作業する予定がない場合は、次のコマンドを使用して、このクイックスタートで作成したすべてのリソースを削除してください。If you do not plan to continue, use the following command to delete all resources created by this quickstart:

az group delete --name myResourceGroup

確認を求められたら y と入力します。Type y when prompted.

次の手順Next steps

Python を使用した Azure Functions の開発の詳細を確認します。Learn more about developing Azure Functions using Python.