AI の力を解き放つ

100 万トークンが無料

88% 割引

NaNDayNaN:NaN:NaN
今すぐアクティブ化
このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

アラート連絡先の作成に Terraform を使用する

更新日時2025-03-31 17:26

Terraform は、クラウドインフラストラクチャを安全かつ効率的にプロビジョニングおよび管理できるオープンソースツールです。 Terraform を使用して CloudMonitor リソースを管理できます。このトピックでは、Terraform を使用して CloudMonitor アラート連絡先を作成する方法について説明します。

説明

サンプルコードは数クリックで実行できます。 サンプルコードを実行する

前提条件

  • Alibaba Cloud アカウントは、アカウント内のリソースに対するすべての権限を持っています。 Alibaba Cloud アカウントが漏洩した場合、リソースは大きなリスクにさらされます。Resource Access Management(RAM)ユーザーを使用し、RAM ユーザーの AccessKey ペアを作成することをお勧めします。 詳細については、「RAM ユーザーを作成する」および「AccessKey ペアを作成する」をご参照ください。

  • 次のサンプルコードを使用して、RAM ユーザーに AliyunCloudMonitorFullAccess 権限を付与します。 AliyunCloudMonitorFullAccess 権限により、RAM ユーザーは CloudMonitor リソースを管理できます。 詳細については、「RAM ユーザーに権限を付与する」をご参照ください。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": "cms:*",
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": "arms:*",
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "ecs:DescribeInstances",
                    "rds:DescribeDBInstances",
                    "slb:DescribeLoadBalancer*",
                    "vpc:DescribeEipAddresses",
                    "vpc:DescribeRouterInterfaces",
                    "vpc:DescribeGlobalAccelerationInstances",
                    "vpc:DescribeVpnGateways",
                    "vpc:DescribeNatGateways",
                    "vpc:DescribeBandwidthPackages",
                    "vpc:DescribeCommonBandwidthPackages",
                    "oss:ListBuckets",
                    "log:ListProject",
                    "cdn:DescribeUserDomains",
                    "mns:ListQueue",
                    "mns:ListTopic",
                    "ess:DescribeScalingGroups",
                    "ocs:DescribeInstances",
                    "kvstore:DescribeInstances",
                    "kvstore:DescribeLogicInstanceTopology",
                    "hbase:DescribeClusterList",
                    "hitsdb:DescribeHiTSDBInstanceList",
                    "dds:DescribeDBInstances",
                    "petadata:DescribeInstances",
                    "petadata:DescribeDatabases",
                    "gpdb:DescribeDBInstances",
                    "emr:ListClusters",
                    "opensearch:ListApps",
                    "elasticsearch:ListInstance",
                    "mongodb:DescribeDBInstances",
                    "rds:DescribeReplicas",
                    "CloudAPI:DescribeApis",
                    "netgateway:DescribeNatGateways",
                    "ddos:DescribeInstancePage",
                    "live:DescribeLiveUserDomains",
                    "cen:DescribeCens",
                    "cen:DescribeCenAttachedChildInstances",
                    "kafka:GetKafkaInstanceList",
                    "scdn:DescribeScdnUserDomains",
                    "dcdn:DescribeDcdnUserDomains",
                    "polardb:DescribeDBInstances",
                    "polardb:DescribeRegions",
                    "polardb:DescribeDBClusters",
                    "cs:DescribeClusters",
                    "resourcemanager:GetAccount",
                    "resourcemanager:ListAccountsForParent",
                    "resourcemanager:ListAccounts",
                    "resourcemanager:GetFolder",
                    "resourcemanager:ListFoldersForParent",
                    "resourcemanager:ListAncestors",
                    "resourcemanager:GetResourceDirectory"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "quotas:ListProductQuotas",
                    "quotas:GetProductQuota",
                    "quotas:ListProducts",
                    "quotas:ListProductQuotaDimensions",
                    "quotas:ListProductDimensionGroups"
                ],
                "Resource": "acs:quotas:*:*:*",
                "Effect": "Allow"
            },
            {
                "Action": "ram:CreateServiceLinkedRole",
                "Resource": "*",
                "Effect": "Allow",
                "Condition": {
                    "StringEquals": {
                        "ram:ServiceName": "cloudmonitor.aliyuncs.com"
                    }
                }
            }
        ]
    }
  • 次のいずれかの方法で、Terraform のランタイム環境を準備します。

    Terraform Explorer で Terraform を使用する:Alibaba Cloud は、Terraform のオンラインランタイム環境である Terraform Explorer を提供しています。 Terraform Explorer にログインすれば、Terraform をインストールすることなく使用できます。 この方法は、追加費用なしで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。

    Cloud Shell で Terraform を使用する:Terraform は Cloud Shell にプリインストールされており、ID 資格情報が構成されています。 Cloud Shell で Terraform コマンドを直接実行できます。 この方法は、低コストで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。

    オンプレミス マシンに Terraform をインストールして構成する:この方法は、ネットワーク接続が不安定な場合、またはカスタム開発環境が必要な場合に適しています。

重要

Terraform 0.12.28 以降をインストールする必要があります。 terraform --version コマンドを実行して、Terraform のバージョンをクエリできます。

リソース

alicloud_cms_alarm_contact:アラート連絡先を作成します。

Terraform を使用してアラート連絡先を作成する

この例では、アラート連絡先が作成されます。

  1. 作業ディレクトリと、そのディレクトリに main.tf という名前の構成ファイルを作成します。 main.tf は Terraform のメインファイルであり、デプロイするリソースを定義します。

    variable "region" {
      default = "cn-heyuan"
    }
    provider "alicloud" {
      region = var.region
    }
    variable "name" {
      default = "tf_example"
    }
    variable "describe" {
      default = "For example"
    }
    variable "mail" {
      default = "username@example.com"
    }
    resource "alicloud_cms_alarm_contact" "example" {
      # (必須) アラート連絡先の名前。名前は 2 ~ 40 文字の長さでなければなりません。
      alarm_contact_name = var.name
      # (必須) アラート連絡先の説明。
      describe           = var.describe
      # (オプション) アラート連絡先のメールアドレス。
      channels_mail      = var.mail
      # channels_sms (オプション) アラート連絡先の電話番号。
      # channels_sms     =    "193****1234"
      # リンクがアクティブになる前は、メールアドレスは有効になりません。 Terraform は、現在のテンプレートに diff 属性があることを検出します。次の方法を使用して、diff 属性を一時的に無視できます。
      lifecycle {
        ignore_changes = [channels_mail]
      }
    }
  2. 次のコマンドを実行して、Terraform を初期化します。

    terraform init

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

    Initializing the backend...
    
    Initializing provider plugins...
    - Finding latest version of hashicorp/alicloud...
    - Installing hashicorp/alicloud v1.234.0...
    - Installed hashicorp/alicloud v1.234.0 (signed by HashiCorp)
    
    Terraform has created a lock file .terraform.lock.hcl to record the provider
    selections it made above. Include this file in your version control repository
    so that Terraform can guarantee to make the same selections by default when
    you run "terraform init" in the future.
    
    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 plan
  4. 次のコマンドを実行して、アラート連絡先を作成します。

    terraform apply

    実行中に、プロンプトが表示されたら yes と入力し、[enter] キーを押して、コマンドが実行されるまで待ちます。次の情報が表示された場合、アラート連絡先が作成されています。

    Plan: 1 to add, 0 to change, 0 to destroy.
    
    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
    
    alicloud_cms_alarm_contact.example: Creating...
    alicloud_cms_alarm_contact.example: Creation complete after 1s [id=********]
    
    Apply complete!  Resources: 1 added, 0 changed, 0 destroyed.
  5. 結果を確認します。

    terraform show コマンドを実行する
    CloudMonitor コンソールにログインする

    次のコマンドを実行して、Terraform によって作成されたリソースをクエリします。

    terraform show

    image

    アラート連絡先が作成された後、API 操作を呼び出したり、SDK を使用したり、CloudMonitor コンソールでアラート連絡先を表示したりできます。image

リソースを解放する

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

terraform destroy

サンプルコード

説明

サンプルコードはワンクリックで実行できます。 サンプルコードを実行する

サンプルコード

variable "region" {
  default = "cn-heyuan"
}
provider "alicloud" {
  region = var.region
}
variable "name" {
  default = "tf_example"
}
variable "describe" {
  default = "For example"
}
variable "mail" {
  default = "username@example.com"
}
resource "alicloud_cms_alarm_contact" "example" {
  # (必須) アラート連絡先の名前。名前は 2 ~ 40 文字の長さでなければなりません。
  alarm_contact_name = var.name
  # (必須) アラート連絡先の説明。
  describe           = var.describe
  # (オプション) アラート連絡先のメールアドレス。
  channels_mail      = var.mail
  # channels_sms (オプション) アラート連絡先の電話番号。
  # channels_sms     =    "193****1234"
  # リンクがアクティブになる前は、メールアドレスは有効になりません。 Terraform は、現在のテンプレートに diff 属性があることを検出します。次の方法を使用して、diff 属性を一時的に無視できます。
  lifecycle {
    ignore_changes = [channels_mail]
  }
}

その他のサンプルコードを表示するには、GitHub にアクセスしてください。

  • 目次 (1, M)
  • 前提条件
  • リソース
  • Terraform を使用してアラート連絡先を作成する
  • リソースを解放する
  • サンプルコード
  • サンプルコード
フィードバック
phone お問い合わせ

Chat now with Alibaba Cloud Customer Service to assist you in finding the right products and services to meet your needs.

alicare alicarealicarealicare