TODO:

概要

VMにアクセスする Azure Functions の開発手順を記載する。

目次

サンプル関数の仕様

必要なリソースの作成

# ストレージアカウント名は世界で唯一である必要がある
SUFFIX=xxxxxxxx

# リージョン
region=japanwest

# リソースグループ名
# ( az group delete --name $resourceGroup で一括削除可能 )
resourceGroup=myResourceGroup$SUFFIX

# ストレージアカウント名
storageName=mystorageaccount$SUFFIX
storageSku=Standard_LRS

# 関数アプリ名
functionAppName=myFuncapp$SUFFIX

# 使用するFunctionsのバージョン
functionsVersion=2

# 関数アプリのプラン名
# ※VMへのアクセスにはVNet統合を使用するが、この機能はプレミアムプランでないと提供されない。
funcPlanName=mypremiumplan$SUFFIX
funcPlanSku=EP1

# Storageコンテナ名
storageContainer=mystrcontainer$SUFFIX

# 仮想マシン名
vmName=MyVM$SUFFIX
vmImage=UbuntuLTS

# リソースグループの作成
az group create \
  --name $resourceGroup \
  --location $region

# ストレージアカウントの作成
az storage account create \
  --name $storageName \
  --location $region \
  --resource-group $resourceGroup \
  --sku $storageSku

# プレミアムプランの作成
az functionapp plan create \
  --name $funcPlanName \
  --resource-group $resourceGroup \
  --location $region \
  --sku $funcPlanSku

# 関数アプリの作成
az functionapp create \
  --name $functionAppName \
  --storage-account $storageName \
  --plan $funcPlanName \
  --resource-group $resourceGroup \
  --functions-version $functionsVersion

# Storageコンテナの作成
az storage container create \
  --name $storageContainer \
  --resource-group $resourceGroup \
  --account-name $storageName

# 仮想マシンの作成
az vm create \
  --resource-group $resourceGroup \
  --name $vmName \
  --image $vmImage \
  --generate-ssh-keys \
  --ssh-dest-key-path `pwd`/ \
  --output json \
  --verbose

# InfluxDB用のポートを開放しておく
az vm open-port --resource-group $resourceGroup --name $vmName --port 8086

#TODO: Publicアクセスは踏み台サーバのみ許可する

InfluxDBインストール

VM上にInfluxDBをインストールする。
ここでは docker を使用する為、先に docker からインストールを行う。
https://docs.docker.com/engine/install/ubuntu/

VM作成時に生成されたSSH鍵を使用してVMに接続後、以下の作業を行う。

dockerインストール

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

docker-compose インストール

https://docs.docker.com/compose/install/

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

InfluxDBインストール

influxdb.conf

[meta]
  dir = "/var/lib/influxdb/meta"

[data]
  dir = "/var/lib/influxdb/data"
  engine = "tsm1"
  wal-dir = "/var/lib/influxdb/wal"

[http]
  enabled = true
  flux-enabled = true

docker-compose.yml

version: "3" 

services:
  influxdb:
    image: influxdb:1.8
    hostname: influxdb_sample
    container_name: influxdb_sample
    volumes:
      - ./influxdb:/var/lib/influxdb
      - ./influxdb.conf:/etc/influxdb/influxdb.conf
    ports:
      - 8086:8086

起動

sudo docker-compose up -d

サンプルDB/ユーザ作成

docker exec -it influxdb_for_test bash
# influx
> create database sampledb
> create user sample with password 'sample' WITH ALL PRIVILEGES

関数アプリの作成

TODO:

関数アプリのデプロイ

TODO:
az functionapp deployment source config-zip -g リソースグループ -n 関数名 --src ZIPファイルPATH

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS