このページの本文へ

FIXER cloud.config Tech Blog

Terraformを使ったAzure App Serviceのバックアップとログの設定

2020年01月15日 11時00分更新

文● 神田 仁/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Terraformを使ったAppServiceのバックアップとAppServiceログの設定」を再編集したものです。

 こんにちは。cloud.config Divの神田です。今回はTerraformを使ったAppServiceのバックアップとAppServiceログの設定を行います。

バックアップの設定

 AppServiceのバックアップをストレージアカウントに保存する際には、自動でShared Access Signatures(SAS)が生成されます。

 今回はTerraformでストレージアカウント、コンテナ、SAS、AppServiceの生成をまとめて行います。

 実行するコードは以下になります。

 以下のコードでは、バックアップは1日1回保存し、バックアップのリテンション期間は30日となっています。


# ストレージアカウントの生成 resource "azurerm_storage_account" "str01" { name = "ストレージアカウント名" resource_group_name = "リソースグループ名" location = "リージョン" account_kind = "StorageV2" account_tier = "Standard" account_replication_type = "LRS" access_tier = "Hot" }

# コンテナの生成 resource "azurerm_storage_container" "ctn01" { name = "コンテナ名" storage_account_name = "ストレージアカウント名" container_access_type = "private" }

# Shared Access Signatures(SAS)の生成 data "azurerm_storage_account_sas" "sas01" { # azurerm_storage_account.test.primary_connection_string : ストレージアカウントの接続文字列 connection_string = "${azurerm_storage_account.str01.primary_connection_string}" https_only = true

resource_types { service = false container = false object = true }

services { blob = true queue = false table = false file = false }

# SASの有効期間 Azureポータル上で設定した場合は有効期間100年のSASが自動生成される start = "YYYY-MM-DD" expiry = "YYYY-MM-DD"

permissions { read = false write = true delete = true list = false add = false create = false update = false process = false } }

# AppServiceの生成 resource "azurerm_app_service" "app01" { name = "AppService名" location = "リージョン" resource_group_name = "リソースグループ名" app_service_plan_id = "AppServicePlanのリソースID"

backup { name = "バックアップ名" enabled = true

# ${data.azurerm_storage_account_sas.sas01.sas} : バックアップを格納するコンテナのSASのURI storage_account_url = "https://.blob.core.windows.net/${data.azurerm_storage_account_sas.sas01.sas}&sr=b"

# バックアップのスケジュール schedule { frequency_interval = 1

# "Day" or "Hour" frequency_unit = "Day" keep_at_least_one_backup = true retention_period_in_days = 30

# バックアップの開始日時 JST(日本時間)なら "YYYY-MM-DDThh:mm:ss+09:00" start_time = "YYYY-MM-DDThh:mm:ss±hh:mm" } } }

 上記のコードを実行すると以下のバックアップ構成が設定されます。

 これでAppServiceのバックアップ構成が完了しました。

バックアップ構成

AppServiceログの設定

 次はAppServiceログの設定についてです。

 今回はAppServiceログのうち、アプリケーションログとWebサーバログをそれぞれストレージアカウントに保存するように設定します。

 なお、今回はアプリケーションログのストリーミングログ機能は設定しません。

 AppServiceログをストレージアカウントに保存する際もバックアップと同様に自動でSASが生成されます。

 以下がAppServiceログの設定を行ったAppServiceの生成コードです。(ストレージアカウントなどは省略)


# ストレージアカウント、コンテナ、SASの生成は省略

# AppServiceの生成 resource "azurerm_app_service" "app02" { name = "AppService名" location = "リージョン" resource_group_name = "リソースグループ名" app_service_plan_id = "AppServicePlanのリソースID"

logs { application_logs { azure_blob_storage { # "Error","Warning","Infomation","Verbose" and "Off" level = "Verbose" sas_url = "https://.blob.core.windows.net/${data.azurerm_storage_account_sas.sas01.sas}&sr=b" retention_in_days = 30 } } http_logs { azure_blob_storage { sas_url = "https://.blob.core.windows.net/${data.azurerm_storage_account_sas.sas01.sas}&sr=b" retention_in_days = 30 } } } }

 上記のコードを実行することで以下のAppServiceログの設定が行われます。

AppServiceログの構成

最後に

 AppServiceの「データベースをバックアップする」を有効にする方法、AppServiceログの「詳細なエラーメッセージ」と「失敗した要求のトレース」を有効にする方法をご存じの方がいましたら、ぜひご教示ください。

 神田 仁/FIXER

 cloud.config Division所属

[転載元]
 Terraformを使ったAppServiceのバックアップとAppServiceログの設定

カテゴリートップへ