4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Functions] Azure Functions - とりあえず立ち上げて公開

Last updated at Posted at 2019-03-22

今日から何度かに分けてAzure Functionsに関して書いていきます。

今日の記事は3分ぐらいで読み切れます。
対象となる方は、これからAzure Functionsやってみようかな、サーバーレース環境ってどんなもんだろうと思っている方々でC#の知識をある程度もっている方々となります。

Azure Functions?

Azure FunctionsとはVM、Webappなどの個サーバーを所持することなく、スクリプトやコードを起動することができます。最近よく聞く「サーバーレス」っていうやつです。

まずは

いろいろ説明するよりもまずは使ってみましょう。「いろいろ」部分はこちらをご参照ください。https://docs.microsoft.com/ja-jp/azure/azure-functions/

VS2017から新しいプロジェクト作成

Visual Studio を開いて新しいプロジェクトを作成、Azure Functionsを選択します。
image.png

次に、Functionsのタイプを選択し、ストレージアカウントとアクセス権限を選択します。

image.png

Function1.cs

「OK」をクリックすると、自動でFunction1.cs("Hello" + Name を返すAPI
)が生成されます。

image.png

Function1.cs
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;

namespace FunctionApp1
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            // parse query parameter
            string name = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
                .Value;

            if (name == null)
            {
                // Get request body
                dynamic data = await req.Content.ReadAsAsync<object>();
                name = data?.name;
            }

            return name == null
                ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
                : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
        }
    }
}

Run - Endpointの取得

早速ローカル環境で起動してみます。FunctionApp1プレイボタンをクリック
image.png

image.png

Run - nameを指定

http://localhost:7071/api/Function1 がendpointであると出てきました。.
指定されたエンドポイントのパラメターでname値を渡してみます。 http://localhost:7071/api/Function1?name=Sho

image.png

APIを介して値が生成されました。 下記でFunctionsが動いている内容を確認することができます。

image.png

公開

次はFunctionsを公開して一般のユーザーが使えるようにします。

プロジェクトを右クリックして発行を選択

image.png

新規に作成します。

image.png

image.png

作成できました。
image.png

発行されたURLをたたいてみます。「Functions App は稼働しているよ」とのことで。次はパラメターを指定してみます。

image.png

では試しに
https://functionapp120190322072250.azurewebsites.net/api/Function1?name=Sho

image.png

いけましたね。これで、Azure Functionsの本番化ができました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?