すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Terraform を使用して Logtail 構成を作成する

最終更新日:Oct 23, 2025

Terraform は、安全かつ効率的な方法でクラウドインフラストラクチャとリソースをプレビュー、構成、管理するために使用できるオープンソースツールです。このトピックでは、Terraform を使用して Logtail 構成を作成する方法について説明します。

説明

このトピックのサンプルコードは数回クリックするだけで実行できます。詳細については、「Terraform Explorer」をご参照ください。

前提条件

  • Simple Log Service (SLS) が有効化されていること。詳細については、「リソース管理の概要」をご参照ください。

  • このトピックの操作を実行するには、最小限の権限を持つ Resource Access Management (RAM) ユーザーを使用することを推奨します。これにより、Alibaba Cloud アカウントの AccessKey ペアが漏洩するリスクを軽減できます。RAM ユーザーに最小限の必須ポリシーをアタッチする方法の詳細については、「RAM ユーザーの作成」および「RAM ユーザーへの権限付与」をご参照ください。このトピックでは、次のポリシーが提供されています:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "log:GetProject",
            "log:ListProject",
            "log:CreateProject",
            "log:DeleteProject",
            "log:UpdateProject",
            "log:GetAppliedMachineGroups",
            "log:GetMachineGroup",
            "log:ListMachineGroup",
            "log:CreateMachineGroup",
            "log:GetLogStore",
            "log:GetLogStoreLogs",
            "log:GetLogStoreMeteringMode",
            "log:ListLogStores",
            "log:CreateLogStore",
            "log:PostLogStoreLogs",
            "log:UpdateLogStore",
            "log:GetLogtailPipelineConfig",
            "log:UpdateLogtailPipelineConfig",
            "log:ListTagResources",
            "log:ListShards",
            "log:ListSavedSearch",
            "log:GetIndex",
            "log:ListDashboard",
            "log:ListConfig",
            "log:CreateConfig",
            "log:GetConfig",
            "log:ApplyConfigToGroup",
            "log:DeleteConfig",
            "log:DeleteMachineGroup",
            "log:GetProjectPolicy",
            "log:DeleteLogStore"
          ],
          "Resource": "*"
        }
      ]
    }
  • Terraform のランタイム環境は、次のいずれかの方法で準備します:

    • Explorer: Alibaba Cloud は Terraform のオンラインランタイム環境を提供します。インストールせずに環境にログインして Terraform を使用できます。低コストで効率的かつ便利な方法で Terraform を使用およびデバッグする必要があるシナリオに適しています。

    • Cloud Shell: Cloud Shell には Terraform がプリインストールされており、ID 資格情報が設定されています。Cloud Shell で Terraform コマンドを実行できます。低コストで効率的かつ便利な方法で Terraform を使用およびアクセスする必要があるシナリオに適しています。

    • オンプレミスマシンに Terraform をインストールして設定する: ネットワーク接続が不安定な場合や、カスタム開発環境が必要なシナリオに適しています。

説明

特定のリソースに対して課金されます。リソースが不要になった場合は、できるだけ早くリソースをリリースまたはサブスクライブ解除する必要があります。

必要なリソース

ステップ 1: プロジェクトの作成

  1. 作業ディレクトリを作成します。次に、ディレクトリに main.tf という名前の構成ファイルを作成します。次のコードを main.tf 構成ファイルにコピーします。

    variable "region" {
      default = "cn-hangzhou"
    }
    
    variable "identify_list" {
      type        = list(string)
      description = "マシングループに含まれるマシンの IP アドレス"
      default     = ["10.0.0.1", "10.0.0.2"]
    }
    
    provider "alicloud" {
      region = var.region
    }
    
    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    
    # プロジェクト。
    resource "alicloud_log_project" "example" {
      project_name = "project-name-${random_integer.default.result}"
      description  = "tf actiontrail example"
    }
  2. 次のコマンドを実行して、Terraform ランタイム環境を初期化します:

    terraform init

    次の情報が返された場合、Terraform は初期化されています:

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. 次のコマンドを実行して、生成された実行計画を適用します:

    terraform apply

    プロセス中に、プロンプトが表示されたら yes と入力し、[Enter] キーを押します。コマンドが実行されるまで待ちます。次の情報が返された場合、実行計画は適用されています。

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    
    Apply complete!  Resources: 2 added, 0 changed, 0 destroyed.
  4. 結果を確認します。

    terraform show コマンドを実行して結果を表示する

    作業ディレクトリで次のコマンドを実行して、Terraform を使用して作成されたプロジェクトの詳細をクエリします:

    terraform show

    image

    SLS コンソールで結果を表示する

    SLS コンソールにログインし、作成されたプロジェクトを表示します。

    image

ステップ 2: マシングループと Logstore の作成

  1. 次のコードを main.tf 構成ファイルに追加します:

    # マシングループ。
    resource "alicloud_log_machine_group" "example" {
      project     = alicloud_log_project.example.project_name
      name          = "terraform-example-${random_integer.default.result}"
      identify_type = "ip"
      topic         = "terraform"
      identify_list = var.identify_list
    }
    
    # Logstore。
    resource "alicloud_log_store" "example" {
      project_name = alicloud_log_project.example.project_name
      logstore_name = "logstore_example_${random_integer.default.result}"
      retention_period = 3
    }
  2. 実行計画を作成し、変更をプレビューします。

    terraform plan
  3. 次のコマンドを実行して実行計画を適用します:

    terraform apply

    プロセス中に、プロンプトが表示されたら yes と入力し、[Enter] キーを押します。コマンドが完了するまで待ちます。次の情報が返された場合、実行計画は適用されています。

    Apply complete!  Resources: 2 added, 0 changed, 0 destroyed.
  4. 結果を確認します。

    terraform show コマンドを実行して結果を表示する

    作業ディレクトリで次のコマンドを実行して、Terraform を使用して作成されたマシングループと Logstore の詳細をクエリします:

    terraform show

    image

    SLS コンソールで結果を表示する

    1. SLS コンソールにログインします。[Projects] セクションで、ステップ 1 で作成したプロジェクトを見つけ、プロジェクト名をクリックしてプロジェクト詳細ページに移動します。左側のナビゲーションウィンドウで、[ログストレージ] アイコンをクリックします。Logstores リストで、作成された Logstore を表示します。

      image

    2. 左側のナビゲーションウィンドウで、ポインターを [リソース] アイコンに移動し、[マシングループ] を選択します。マシングループリストで、作成されたマシングループを表示します。

      image

ステップ 3: Logtail 構成の作成

  1. 次のコードを main.tf 構成ファイルに追加します:

    # Logtail 構成。
    resource "alicloud_logtail_config" "example" {
      project     = alicloud_log_project.example.project_name
      logstore    = alicloud_log_store.example.logstore_name
      name        = "config-sample-${random_integer.default.result}"
      input_type  = "file"
      output_type = "LogService"
      input_detail = jsonencode(
      	{
    		"logPath": "/logPath",
    		"filePattern": "access.log",
    		"logType": "json_log",
    		"topicFormat": "default",
    		"discardUnmatch": false,
    		"enableRawLog": true,
    		"fileEncoding": "gbk",
    		"maxDepth": 10
    	}
      )
    }
    
    # Logtail 構成をマシングループに適用します。
    resource "alicloud_logtail_attachment" "example" {
      project     = alicloud_log_project.example.project_name
      logtail_config_name = alicloud_logtail_config.example.name
      machine_group_name  = alicloud_log_machine_group.example.name
    }
  2. 実行計画を作成し、変更をプレビューします。

    terraform plan
  3. 次のコマンドを実行して実行計画を適用します:

    terraform apply

    プロセス中に、プロンプトが表示されたら yes と入力し、[Enter] キーを押します。コマンドが実行されるまで待ちます。次の情報が返された場合、実行計画は適用されています。

    Apply complete!  Resources: 2 added, 0 changed, 0 destroyed.
  4. 結果を確認します。

    terraform show コマンドを実行して結果を表示する

    作業ディレクトリで次のコマンドを実行して、Terraform を使用して作成された Logtail 構成の詳細をクエリします:

    terraform show

    image

    SLS コンソールで結果を表示する

    1. SLS コンソールにログインします。[Projects] セクションで、ステップ 1 で作成したプロジェクトを見つけ、プロジェクト名をクリックしてプロジェクト詳細ページに移動します。左側のナビゲーションウィンドウで、[ログストレージ] アイコンをクリックします。Logstores リストで、ステップ 2 で作成した Logstore を見つけてクリックします。次に、[データ収集] > [Logtail 設定] を選択して、Logstore の Logtail 構成を表示します。

      image

    2. [Logtail 設定] ページで、Logtail 構成の名前をクリックします。次に、[マシングループの管理] タブをクリックします。このタブで、Logtail 構成が適用されているマシングループを表示します。

      image

リソースのリリース

Terraform を使用して作成または管理された上記のリソースが不要になった場合は、次のコマンドを実行してリソースをリリースします: terraform destroy コマンドの詳細については、「一般的なコマンド」をご参照ください。

terraform destroy

説明

このトピックのサンプルコードは数回クリックするだけで実行できます。

サンプルコード

variable "region" {
  default = "cn-hangzhou"
}

variable "identify_list" {
  type        = list(string)
  description = "マシングループに含まれるマシンの IP アドレス"
  default     = ["10.0.0.1", "10.0.0.2"]
}

provider "alicloud" {
  region = var.region
}

resource "random_integer" "default" {
  min = 10000
  max = 99999
}

# プロジェクト。
resource "alicloud_log_project" "example" {
  project_name = "project-name-${random_integer.default.result}"
  description  = "tf actiontrail example"
}

# マシングループ。
resource "alicloud_log_machine_group" "example" {
  project     = alicloud_log_project.example.project_name
  name          = "terraform-example-${random_integer.default.result}"
  identify_type = "ip"
  topic         = "terraform"
  identify_list = var.identify_list
}

# Logstore。
resource "alicloud_log_store" "example" {
  project_name = alicloud_log_project.example.project_name
  logstore_name = "logstore_example_${random_integer.default.result}"
  retention_period = 3
}

# Logtail 構成。
resource "alicloud_logtail_config" "example" {
  project     = alicloud_log_project.example.project_name
  logstore    = alicloud_log_store.example.logstore_name
  name        = "config-sample-${random_integer.default.result}"
  input_type  = "file"
  output_type = "LogService"
  input_detail = jsonencode(
  	{
		"logPath": "/logPath",
		"filePattern": "access.log",
		"logType": "json_log",
		"topicFormat": "default",
		"discardUnmatch": false,
		"enableRawLog": true,
		"fileEncoding": "gbk",
		"maxDepth": 10
	}
  )
}

# Logtail 構成をマシングループに適用します。
resource "alicloud_logtail_attachment" "example" {
  project     = alicloud_log_project.example.project_name
  logtail_config_name = alicloud_logtail_config.example.name
  machine_group_name  = alicloud_log_machine_group.example.name
}

その他の例については、GitHub の Log_Service(SLS) フォルダをご覧ください。

関連ドキュメント

  • Terraform の詳細については、「Terraform とは」をご参照ください。