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

注意

Azure Functions 用の PowerShell は現在プレビュー段階です。PowerShell 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.

このクイック スタート記事では、Visual Studio Code を使用して初めてのサーバーレス PowerShell 関数を作成する方法について説明します。This quickstart article walks you through how to create your first serverless PowerShell function using Visual Studio Code.

Visual Studio Code プロジェクトの Azure Functions コード

Visual Studio Code 用 Azure Functions 拡張機能を使用して、PowerShell 関数をローカルに作成し、Azure の新しい関数アプリにデプロイします。You use the Azure Functions extension for Visual Studio Code to create a PowerShell function locally and then deployed it to a new function app in Azure. この拡張機能は現在プレビュー段階にあります。The extension is currently in preview. 詳細については、Visual Studio Code 用 Azure Functions 拡張機能のページをご覧ください。To learn more, see the Azure Functions extension for Visual Studio Code extension page.

注意

Azure Functions 拡張機能への PowerShell のサポートは、既定では現在無効になっています。PowerShell support for the Azure Functions extension is currently disabled by default. PowerShell のサポートを有効にすることが、この記事の手順の 1 つです。Enabling PowerShell support is one of the steps in this article.

次の手順は、macOS、Windows、および Linux ベースのオペレーティング システムでサポートされます。The following steps are supported on macOS, Windows, and Linux-based operating systems.

前提条件Prerequisites

このクイック スタートを完了するには、以下が必要です。To complete this quickstart:

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Functions 拡張機能をインストールするInstall the Azure Functions extension

Azure Functions 拡張機能を使用すると、関数を作成してテストし、Azure にデプロイすることができます。You can use the Azure Functions extension to create and test functions and deploy them to Azure.

  1. Visual Studio Code で [拡張機能] を開き、azure functions を検索するか、Visual Studio Code でこのリンクを選択します。In Visual Studio Code, open Extensions and search for azure functions, or select this link in Visual Studio Code.

  2. [インストール] を選択して、Visual Studio Code に拡張機能をインストールします。Select Install to install the extension for Visual Studio Code:

    Azure Functions の拡張機能をインストールする

  3. Visual Studio Code を再起動し、アクティビティ バーの Azure アイコンを選択します。Restart Visual Studio Code and select the Azure icon on the Activity bar. サイド バーに Azure Functions 領域が表示されます。You should see an Azure Functions area in the Side Bar.

    サイド バーの Azure Functions 領域

関数アプリ プロジェクトを作成するCreate a function app project

Visual Studio Code の Azure Functions プロジェクト テンプレートでは、Azure の関数アプリに発行できるプロジェクトを作成します。The Azure Functions project template in Visual Studio Code creates a project that can be published to a function app in Azure. 関数アプリを使用すると、リソースを管理、デプロイ、および共有するための論理ユニットとして関数をグループ化できます。A function app lets you group functions as a logical unit for management, deployment, and sharing of resources.

  1. Visual Studio Code で、Azure ロゴを選択して [Azure:Functions] 領域を表示し、[新しいプロジェクトの作成] アイコンを選択します。In Visual Studio Code, select the Azure logo to display the Azure: Functions area, and then select the Create New Project icon.

    関数アプリ プロジェクトを作成する

  2. Functions プロジェクト ワークスペースの場所を選択し、 [選択] を選択します。Choose a location for your Functions project workspace and choose Select.

    注意

    この記事は、ワークスペースの外部で実行するように設計されています。This article was designed to be completed outside of a workspace. ここでは、ワークスペースに含まれるプロジェクト フォルダーは選択しないでください。In this case, do not select a project folder that is part of a workspace.

  3. 関数アプリ プロジェクトの言語として [Powershell (プレビュー)] を選択し、 [Azure Functions v2] を選択します。Select the Powershell (preview) as the language for your function app project and then Azure Functions v2.

  4. 初めての関数のテンプレートとして [HTTP Trigger](HTTP トリガー) を選択し、関数名として HTTPTrigger を使用します。次に、承認レベルとして [Function](関数) を選択します。Choose HTTP Trigger as the template for your first function, use HTTPTrigger as the function name, and choose an authorization level of Function.

    注意

    関数承認レベルでは、Azure で関数エンドポイントを呼び出すときに関数キーの値が必要です。The Function authorization level requires a function key value when calling the function endpoint in Azure. これにより、あらゆるユーザーによる関数の呼び出しを防ぎます。This makes it harder for just anyone to call your function.

  5. メッセージが表示されたら、 [Add to workspace](ワークスペースに追加) を選択します。When prompted, choose Add to workspace.

Visual Studio Code により、新しいワークスペースに PowerShell 関数アプリ プロジェクトが作成されます。Visual Studio Code creates the PowerShell function app project in a new workspace. このプロジェクトには、プロジェクト内のすべての関数に適用される host.json および local.settings.json 構成ファイルが含まれます。This project contains the host.json and local.settings.json configuration files, which apply to all function in the project. この PowerShell プロジェクトは、Azure で実行される関数アプリと同じです。This PowerShell project is the same as a function app running in Azure.

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

Azure Functions プロジェクトをローカルで実行してデバッグするために、Azure Functions Core Tools は Visual Studio Code と統合されています。Azure Functions Core Tools integrates with Visual Studio Code to let you run and debug an Azure Functions project locally.

  1. 関数をデバッグするには、デバッガーにアタッチする前に、Wait-Debugger コマンドレットへの呼び出しを関数コードに挿入し、F5 を押して関数アプリ プロジェクトを開始してからデバッガーをアタッチします。To debug your function, insert a call to the Wait-Debugger cmdlet in the function code before you want to attach the debugger, then press F5 to start the function app project and attach the debugger. Core Tools からの出力がターミナル パネルに表示されます。Output from Core Tools is displayed in the Terminal panel.

  2. ターミナル パネルで、HTTP によってトリガーされる関数の URL エンドポイントをコピーします。In the Terminal panel, copy the URL endpoint of your HTTP-triggered function.

    Azure のローカル出力

  3. 次のように、この URL にクエリ文字列 ?name=<yourname> を追加し、Invoke-RestMethod を使用して要求を実行します。Append the query string ?name=<yourname> to this URL, and then use Invoke-RestMethod to execute the request, as follows:

    PS > Invoke-RestMethod -Method Get -Uri http://localhost:7071/api/HttpTrigger?name=PowerShell
    Hello PowerShell
    

    ブラウザーから GET 要求を実行することもできます。You can also execute the GET request from a browser.

    クエリ パラメーターとして、または本文で name パラメーターを渡さずに HttpTrigger エンドポイントを呼び出すと、関数は 500 エラーを返します。When you call the HttpTrigger endpoint without passing a name parameter either as a query parameter or in the body, the function returns a 500 error. run.ps1 でコードを確認すると、このエラーが仕様によって発生することがわかります。When you review the code in run.ps1, you see that this error occurs by design.

  4. デバッグを停止するには、Shift キーを押しながら F5 キーを押します。To stop debugging, press Shift + F5.

関数がローカル コンピューター上で正常に動作することを確認したら、プロジェクトを Azure に発行します。After you've verified that the function runs correctly on your local computer, it's time to publish the project to Azure.

注意

関数を Azure に公開する前に、Wait-Debugger への呼び出しを必ず削除してください。Remember to remove any calls to Wait-Debugger before you publish your functions to Azure.

注意

Azure で Function App を作成すると、Function App 名のみを求められます。Creating a Function App in Azure will only prompt for Function App name. 他のすべての値を求めるようにするには、azureFunctions.advancedCreation を true に設定します。Set azureFunctions.advancedCreation to true to be prompted for all other values.

Azure にプロジェクトを発行するPublish the project to Azure

Visual Studio Code を使用すると、関数プロジェクトを Azure に直接発行できます。Visual Studio Code lets you publish your functions project directly to Azure. このプロセスでは、Azure サブスクリプションに関数アプリと関連リソースを作成します。In the process, you create a function app and related resources in your Azure subscription. 関数アプリは、関数の実行コンテキストを提供します。The function app provides an execution context for your functions. プロジェクトがパッケージ化され、Azure サブスクリプション内の新しい関数アプリにデプロイされます。The project is packaged and deployed to the new function app in your Azure subscription.

既定で、Visual Studio Code では関数アプリの作成に必要なすべての Azure リソースが作成されます。By default, Visual Studio Code creates all of the Azure resources required to create your function app. これらのリソースの名前は、選択した関数アプリの名前に基づきます。The names of these resources are based on the function app name you choose. 作成したリソースを完全に管理する必要がある場合は、代わりに高度なオプションを使用して発行することができます。If you need to have full control of the created resources, you can instead publish using advanced options.

このセクションでは、Azure で新しい関数アプリを作成することを想定しています。This section assumes that you are creating a new function app in Azure.

重要

既存の関数アプリに発行すると、Azure のそのアプリのコンテンツが上書きされます。Publishing to an existing function app overwrites the content of that app in Azure.

  1. Visual Studio Code で F1 を押して、コマンド パレットを開きます。In Visual Studio Code, press F1 to open the command palette. コマンド パレットで、Azure Functions: Deploy to function app... を検索して選択します。In the command palette, search for and select Azure Functions: Deploy to function app....

  2. サインインしていない場合、Azure にサインインするよう求められます。If not signed-in, you are prompted to Sign in to Azure. 無料の Azure アカウントを作成することもできます。You can also Create a free Azure account. ブラウザーから正常にサインインしたら、Visual Studio Code に戻ります。After successful sign in from the browser, go back to Visual Studio Code.

  3. 複数のサブスクリプションがある場合、関数アプリ用の [サブスクリプションを選択] してから、 [+ Create New Function App in Azure](+ Azure で新しい Function App を作成) を選択します。If you have multiple subscriptions, Select a subscription for the function app, then choose + Create New Function App in Azure.

  4. 関数アプリを識別するグローバルに一意の名前を入力し、Enter キーを押します。Type a globally unique name that identifies your function app and press Enter. 関数アプリ名の有効な文字は、a-z0-9- です。Valid characters for a function app name are a-z, 0-9, and -.

    Enter キーを押すと、次の Azure リソースがサブスクリプションに作成されます。When you press Enter, the following Azure resources are created in your subscription:

    • リソース グループ :作成された Azure リソースがすべて含まれます。Resource group: Contains all of the created Azure resources. 名前は関数アプリの名前に基づきます。The name is based on your function app name.
    • ストレージ アカウント :関数アプリの名前に基づいた一意の名前で、Standard Storage アカウントが作成されます。Storage account: A standard Storage account is created with a unique name that is based on your function app name.
    • ホスティング プラン :サーバーレス関数アプリをホストするために、従量課金プランが米国西部リージョンに作成されます。Hosting plan: A consumption plan is created in the West US region to host your serverless function app.
    • 関数アプリ:プロジェクトはこの新しい関数アプリにデプロイされ、そこで実行されます。Function app: Your project is deployed to and runs in this new function app.

    関数アプリが作成され、展開パッケージが適用されると、通知が表示されます。A notification is displayed after your function app is created and the deployment package is applied. この通知の [View Output](出力の表示) を選択すると、作成済みの Azure リソースなど、作成とデプロイの結果が表示されます。Select View Output in this notification to view the creation and deployment results, including the Azure resources that you created.

  5. [Azure: Functions] 領域に戻り、サブスクリプションの下にある新しい関数アプリを展開します。Back in the Azure: Functions area, expand the new function app under your subscription. [Functions] を展開し、 [HttpTrigger] を右クリックして [Copy function URL](関数 URL のコピー) を選択します。Expand Functions, right-click HttpTrigger, and then choose Copy function URL.

    新しい HTTP トリガーの関数 URL をコピーします

Azure で関数を実行するRun the function in Azure

公開した関数が Azure で実行されることを確認するには、次の PowerShell コマンドを実行します。Uri パラメーターは前の手順の HTTPTrigger 関数の URL で置き換えます。To verify that your published function runs in Azure, execute the following PowerShell command, replacing the Uri parameter with the URL of the HTTPTrigger function from the previous step. 次の例のように、前の手順と同様にクエリ文字列 &name=<yourname> を URL に追加します。As before, append the query string &name=<yourname> to the URL, as in the following example:

PS > Invoke-WebRequest -Method Get -Uri "https://glengatest-vscode-powershell.azurewebsites.net/api/HttpTrigger?code=nrY05eZutfPqLo0som...&name=PowerShell"

StatusCode        : 200
StatusDescription : OK
Content           : Hello PowerShell
RawContent        : HTTP/1.1 200 OK
                    Content-Length: 16
                    Content-Type: text/plain; charset=utf-8
                    Date: Thu, 25 Apr 2019 16:01:22 GMT

                    Hello PowerShell
Forms             : {}
Headers           : {[Content-Length, 16], [Content-Type, text/plain; charset=utf-8], [Date, Thu, 25 Apr 2019 16:01:22 GMT]}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 16

次の手順Next steps

Visual Studio Code を使用して、HTTP によってトリガーされる単純な関数を含む PowerShell 関数アプリを作成しました。You have used Visual Studio Code to create a PowerShell function app with a simple HTTP-triggered function. Azure Functions Core Tools を使用して PowerShell 関数のローカルでのデバッグについても学習できます。You may also want to learn more about debugging a PowerShell function locally using the Azure Functions Core Tools. Azure Functions PowerShell 開発者ガイドをご確認ください。Check out the Azure Functions PowerShell developer guide.