Pythonフォームの展開
14934 ワード
この投稿は、Aterure関数Pythonをterraformで展開することに焦点を当てます.両方のサービスに新しい場合は、前提条件から始めることができます.
Create and deploy serverless Azure Functions in Python with Visual Studio Code Quickstart: Configure Terraform using Azure Cloud Shell
Azure Functions マイクロソフトAzureの上のFAAS(機能- AS - Aサービス)です.それはあなたがServerlessサービスであるため、より速くあなたのエキサイティングなサービスを作成することができます.あなたのコードに焦点を当てる必要がありますOSの更新とミドルウェアを気にする必要はありません.
さらに、azure関数は外部イベントによって引き起こされるイベント駆動です: Azure Blobストレージにおける画像のアップロード(オブジェクトストレージサービス) Azure Cosso DB ( NoSQL DB Service )にある項目の挿入/更新 着信リクエスト cronで定義されたタイマー しかしながら、すべてのサービスを展開して、azureポータルからそれらを構成することは長い時間をかけて、間違いを起こります.
私たちの生産性を向上させ、安全に展開するために、iacARM Template or Terraform , Azureポータルから各リソースを展開するのではなく.特に生産環境では、コードとしてインフラストラクチャを管理することはとても重要です.
terraform > = 0.12 Azurermプロバイダー 紺碧のCLI
リソースを定義しましょう.あなたのリソースを定義する 用途 隠しリンクタグの追加 セット
上記のファイルを作成したら、展開しましょう!
ローカルのPCでTerraFormをインストールしたくない場合はAzure Cloud Shell テストとして.
各リソース名が一意であることを確認します.
結果
Azureポータルのリソース
アフター
一度アプリケーションを機能するためにコードを展開すると、Azureポータル上であなたの機能を見ることができます.
Azureポータルの機能
あなたは様々なリソースと制御バージョンを管理することができます
Terraform と Azure Pipelines を使って App Service / Azure Functions をコード化して管理する azurerm_function_app Example Usage (Linux) in docs produces error on apply Feature Request: Attach azurerm_application_insights to a azurerm_app_service azurerm_function_app
必要条件
概要
Azure Functions マイクロソフトAzureの上のFAAS(機能- AS - Aサービス)です.それはあなたがServerlessサービスであるため、より速くあなたのエキサイティングなサービスを作成することができます.あなたのコードに焦点を当てる必要がありますOSの更新とミドルウェアを気にする必要はありません.
さらに、azure関数は外部イベントによって引き起こされるイベント駆動です:
私たちの生産性を向上させ、安全に展開するために、iacARM Template or Terraform , Azureポータルから各リソースを展開するのではなく.特に生産環境では、コードとしてインフラストラクチャを管理することはとても重要です.
環境設定
リソース定義
リソースを定義しましょう.あなたのリソースを定義する
.tf
ファイル.main.tf
# https://github.com/terraform-providers/terraform-provider-azurerm/issues/7960
provider "azurerm" {
version = ">=2.21.0"
features {}
}
resource "azurerm_resource_group" "funcdeploy" {
name = "rg-${var.prefix}-function"
location = var.location
}
resource "azurerm_storage_account" "funcdeploy" {
name = "${var.prefix}storage"
resource_group_name = azurerm_resource_group.funcdeploy.name
location = azurerm_resource_group.funcdeploy.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_storage_container" "funcdeploy" {
name = "contents"
storage_account_name = azurerm_storage_account.funcdeploy.name
container_access_type = "private"
}
resource "azurerm_application_insights" "funcdeploy" {
name = "${var.prefix}-appinsights"
location = azurerm_resource_group.funcdeploy.location
resource_group_name = azurerm_resource_group.funcdeploy.name
application_type = "web"
# https://github.com/terraform-providers/terraform-provider-azurerm/issues/1303
tags = {
"hidden-link:${azurerm_resource_group.funcdeploy.id}/providers/Microsoft.Web/sites/${var.prefix}func" = "Resource"
}
}
resource "azurerm_app_service_plan" "funcdeploy" {
name = "${var.prefix}-functions-consumption-asp"
location = azurerm_resource_group.funcdeploy.location
resource_group_name = azurerm_resource_group.funcdeploy.name
kind = "FunctionApp"
reserved = true
sku {
tier = "Dynamic"
size = "Y1"
}
}
resource "azurerm_function_app" "funcdeploy" {
name = "${var.prefix}func"
location = azurerm_resource_group.funcdeploy.location
resource_group_name = azurerm_resource_group.funcdeploy.name
app_service_plan_id = azurerm_app_service_plan.funcdeploy.id
storage_account_name = azurerm_storage_account.funcdeploy.name
storage_account_access_key = azurerm_storage_account.funcdeploy.primary_access_key
https_only = true
version = "~3"
os_type = "linux"
app_settings = {
"WEBSITE_RUN_FROM_PACKAGE" = "1"
"FUNCTIONS_WORKER_RUNTIME" = "python"
"APPINSIGHTS_INSTRUMENTATIONKEY" = "${azurerm_application_insights.funcdeploy.instrumentation_key}"
"APPLICATIONINSIGHTS_CONNECTION_STRING" = "InstrumentationKey=${azurerm_application_insights.funcdeploy.instrumentation_key};IngestionEndpoint=https://japaneast-0.in.applicationinsights.azure.com/"
}
site_config {
linux_fx_version= "Python|3.8"
ftps_state = "Disabled"
}
# Enable if you need Managed Identity
# identity {
# type = "SystemAssigned"
# }
}
variables.tf
variable "location" {
type = string
default = "japaneast"
}
variable "prefix" {
type = string
default = "my"
}
成功した展開のための若干のヒントは、ここにあります.azurerm >= 2.21.0
version = ~3
(デフォルトはv 1 )Azureリソースの配備
上記のファイルを作成したら、展開しましょう!
ローカルのPCでTerraFormをインストールしたくない場合はAzure Cloud Shell テストとして.
各リソース名が一意であることを確認します.
$ terraform init
...
Terraform has been successfully initialized!
...
$ terraform plan
$ terraform apply
...
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
結果
terraform apply
次に、azureポータルにazure関数を参照してください.Azureポータルのリソース
機能の配備
アフター
terrafrom apply
, あなたのコードをアップロードすることがありますFunction with Visual Studio Code .一度アプリケーションを機能するためにコードを展開すると、Azureポータル上であなたの機能を見ることができます.
Azureポータルの機能
あなたは様々なリソースと制御バージョンを管理することができます
.tf
ファイル.生産では、Ci/CDツールを使用しますGitHub Actions or Azure DevOps .リファレンス
Reference
この問題について(Pythonフォームの展開), 我々は、より多くの情報をここで見つけました https://dev.to/kemurayama/deploying-azure-functions-for-python-with-terraform-nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol