Quickstart: Criar uma função PowerShell em Azure a partir da linha de comando

Neste artigo, utiliza ferramentas de linha de comando para criar uma função PowerShell que responde a pedidos HTTP. Depois de testar o código localmente, implemente-o para o ambiente sem servidor das Funções Azure.

Completar este quickstart incorre num pequeno custo de alguns usd ou menos na sua conta Azure.

Há também uma versão baseada em Código visual do Estúdio deste artigo.

Configure o seu ambiente local

Antes de começar, deve ter o seguinte:

Verificação pré-requisito

Verifique os seus pré-requisitos, que dependem se está a utilizar o Azure CLI ou o Azure PowerShell para criar recursos Azure:

  • Numa janela de terminal ou comando, corra func --version para verificar se as Ferramentas Centrais de Funções Azure são a versão 3.x.

  • Corra az --version para verificar se a versão Azure CLI é 2.4 ou mais tarde.

  • Corra az login para iniciar seduca no Azure e verifique uma subscrição ativa.

Criar um projeto de função local

Em Funções Azure, um projeto de função é um recipiente para uma ou mais funções individuais que cada um responde a um gatilho específico. Todas as funções de um projeto partilham as mesmas configurações locais e de hospedagem. Nesta secção, cria-se um projeto de função que contém uma única função.

  1. Executar o func init comando, da seguinte forma, para criar um projeto de funções numa pasta chamada LocalFunctionProj com o tempo de execução especificado:

    func init LocalFunctionProj --powershell
    
  2. Navegue na pasta do projeto:

    cd LocalFunctionProj
    

    Esta pasta contém vários ficheiros para o projeto, incluindo ficheiros de configurações nomeados local.settings.jse host.jsligados . Como local.settings.jspode conter segredos descarregados do Azure, o ficheiro é excluído do controlo de origem por padrão no ficheiro .gitignore.

  3. Adicione uma função ao seu projeto utilizando o seguinte comando, onde o --name argumento é o nome único da sua função (HttpExample) e o argumento especifica o gatilho da --template função (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    func new cria uma sub-dobradeira que corresponde ao nome da função que contém um ficheiro de código adequado à língua escolhida do projeto e um ficheiro de configuração denominado function.jsem.

(Opcional) Examine o conteúdo do ficheiro

Se desejar, pode saltar para Executar a função localmente e examinar o conteúdo do ficheiro mais tarde.

run.ps1

run.ps1 define um script de função que é desencadeado de acordo com a configuração em function.jsem.

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# Interact with query parameters or the body of the request.
$name = $Request.Query.Name
if (-not $name) {
    $name = $Request.Body.Name
}

$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."

if ($name) {
    $body = "Hello, $name. This HTTP triggered function executed successfully."
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $body
})

Para um gatilho HTTP, a função recebe dados de pedido passados para o $Request param definido em function.jsem. O objeto de retorno, definido como Response em function.js, é passado para o Push-OutputBinding cmdlet como resposta.

function.json

function.jsligado é um ficheiro de configuração que define a entrada e saída bindings para a função, incluindo o tipo de gatilho.

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    }
  ]
}

Cada encadernação requer uma direção, um tipo e um nome único. O gatilho HTTP tem uma ligação de entrada do tipo httpTrigger e da ligação de saída do tipo http .

Executar a função localmente

  1. Executar a sua função iniciando o anfitrião local do tempo de execução Azure Functions a partir da pasta LocalFunctionProj:

    func start
    

    No final da saída, devem aparecer as seguintes linhas:

     ...
    
     Now listening on: http://0.0.0.0:7071
     Application started. Press Ctrl+C to shut down.
    
     Http Functions:
    
             HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
     ...
    
     

    Nota

    Se httpExample não aparecer como mostrado acima, é provável que tenha iniciado o hospedeiro de fora da pasta raiz do projeto. Nesse caso, utilize o Ctrl + C para parar o hospedeiro, navegue na pasta raiz do projeto e volte a executar o comando anterior.

  2. Copie o URL da sua HttpExample função desta saída para um browser e apencha a cadeia de ?name=<YOUR_NAME> consulta, fazendo com que o URL completo seja semelhante http://localhost:7071/api/HttpExample?name=Functions a . O navegador deve apresentar uma mensagem de resposta que ecoe o valor da sua cadeia de consulta. O terminal em que iniciou o seu projeto também mostra a saída de registo à medida que faz pedidos.

  3. Quando terminar, use ctrl + C e opte por y parar o hospedeiro de funções.

Crie recursos Azure de suporte para a sua função

Antes de poder implantar o seu código de função para Azure, tem de criar três recursos:

  • Um grupo de recursos, que é um recipiente lógico para recursos relacionados.
  • Uma conta de Armazenamento,que é usada para manter o estado e outras informações sobre as suas funções.
  • Uma aplicação de função, que fornece o ambiente para a execução do seu código de função. Uma aplicação de função mapeia para o seu projeto de função local e permite-lhe agrupar funções como uma unidade lógica para uma gestão, implementação e partilha mais fácil de recursos.

Utilize os seguintes comandos para criar estes itens. Tanto o Azure CLI como o PowerShell são apoiados.

  1. Se ainda não o fez, inscreva-se no Azure:

    az login
    

    O comando de login az assina-o na sua conta Azure.

  2. Criar um grupo de recursos nomeado AzureFunctionsQuickstart-rg na westeurope região:

    az group create --name AzureFunctionsQuickstart-rg --location westeurope
    

    O grupo az cria um grupo de recursos. Geralmente cria o seu grupo de recursos e recursos numa região próxima de si, utilizando uma região disponível devolvida do az account list-locations comando.

  3. Crie uma conta de armazenamento para fins gerais no seu grupo de recursos e região:

    az storage account create --name <STORAGE_NAME> --location westeurope --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
    

    A conta de armazenamento az cria o comando cria a conta de armazenamento.

    No exemplo anterior, <STORAGE_NAME> substitua-o por um nome que lhe seja adequado e único no Azure Storage. Os nomes devem conter apenas três a 24 caracteres e letras minúsculas. Standard_LRS especifica uma conta de finalidade geral, que é suportada por Funções.

  1. Crie a aplicação de função em Azure:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime powershell --functions-version 3 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    O comando az functionapp cria a aplicação de função em Azure.

    No exemplo anterior, <STORAGE_NAME> substitua-o pelo nome da conta que usou no passo anterior e substitua-o <APP_NAME> por um nome globalmente único, adequado a si. O <APP_NAME> também é o domínio DNS predefinido para a aplicação de funções.

    Este comando cria uma aplicação de função em execução no seu tempo de funcionamento de idioma especificado ao abrigo do Plano de Consumo de Funções Azure, que é gratuito para a quantidade de utilização que incorre aqui. O comando também fornece uma instância Azure Application Insights associada no mesmo grupo de recursos, com a qual pode monitorizar a sua aplicação de função e visualizar registos. Para obter mais informações, consulte as Funções Do Monitor Azure. O caso não incorre em custos até que o ative.

Implementar o projeto de função para Azure

Depois de ter criado com sucesso a sua aplicação de função em Azure, está agora pronto para implementar o seu projeto de funções locais utilizando o comando de publicação do func azure functionapp.

No exemplo seguinte, <APP_NAME> substitua-a pelo nome da sua aplicação.

func azure functionapp publish <APP_NAME>

O comando de publicação apresenta resultados semelhantes à seguinte saída (truncada para a simplicidade):

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Invocar a função em Azure

Como a sua função utiliza um gatilho HTTP, invoca-o fazendo um pedido HTTP ao seu URL no navegador ou com uma ferramenta como o curl.

Copie o URL completo de invocação mostrado na saída do comando de publicação numa barra de endereços do navegador, anexando o parâmetro de consulta &name=Functions . O navegador deve apresentar uma saída semelhante à de quando executou a função localmente.

A saída da função executada no Azure num browser

Executar o seguinte comando para visualizar perto de registosde streaming em tempo real :

func azure functionapp logstream <APP_NAME> 

Numa janela de terminal separada ou no browser, volte a ligar para a função remota. Um registo verboso da execução da função em Azure é mostrado no terminal.

Limpar recursos

Se continuar até ao próximo passo e adicionar uma bagagem de saída da fila Azure Storage, mantenha todos os seus recursos no lugar, pois irá basear-se no que já fez.

Caso contrário, utilize o seguinte comando para eliminar o grupo de recursos e todos os seus recursos contidos para evitar custos adicionais.

az group delete --name AzureFunctionsQuickstart-rg

Passos seguintes