Terraformを使ったAppServiceのバックアップとAppServiceログの設定
2020-01-10
こんにちは。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ログの「詳細なエラーメッセージ」と「失敗した要求のトレース」を有効にする方法をご存じの方がいましたら、ぜひご教示ください。