Terraform の alicloud_alikafka_instance リソースは、ApsaraMQ for Kafka インスタンスを管理するための引数を提供します。 Terraform を使用して、ApsaraMQ for Kafka インスタンスを自動的に作成およびデプロイできます。 これにより、デプロイ時間が短縮され、複数の環境での構成の整合性が確保され、手動操作によるエラーが軽減されます。
このトピックのサンプルコードは、数回クリックするだけで実行できます。 こちら をクリックしてサンプルコードを実行します。
始める前に
Alibaba Cloud アカウントは、このアカウントに属するすべてのリソースに対する完全な権限を持っています。 Alibaba Cloud アカウントの資格情報が漏洩した場合、セキュリティリスクが発生する可能性があります。Resource Access Management(RAM)ユーザーを使用し、RAM ユーザーの AccessKey ペアを作成することをお勧めします。 詳細については、「RAM ユーザーを作成する」および「AccessKey ペアを作成する」をご参照ください。
RAM を使用して、クラウド リソースへのアクセス許可を効率的に管理する必要があります。 これは、マルチユーザーコラボレーションの要件を満たすのに役立ち、過剰な権限によって引き起こされるセキュリティの脆弱性を防ぐために、最小権限の原則に基づいてユーザーに権限を付与することができます。 詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "vpc:DescribeVpcAttribute", "vpc:DescribeRouteTableList", "vpc:DescribeVSwitchAttributes", "vpc:DeleteVpc", "vpc:DeleteVSwitch", "vpc:CreateVpc", "vpc:CreateVSwitch" ], "Resource": "*" }, { "Effect": "Allow", "Action": "bss:ModifyAgreementRecord", "Resource": "*" }, { "Effect": "Allow", "Action": [ "bss:DescribeOrderList", "bss:DescribeOrderDetail", "bss:PayOrder", "bss:CancelOrder" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:CreateSecurityGroup", "ecs:ModifySecurityGroupPolicy", "ecs:DescribeSecurityGroups", "ecs:ListTagResources", "ecs:DeleteSecurityGroup", "ecs:DescribeSecurityGroupAttribute", "ecs:AuthorizeSecurityGroup", "ecs:RevokeSecurityGroup" ], "Resource": "*" }, { "Action": "alikafka:*", "Resource": "*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": [ "connector.alikafka.aliyuncs.com", "instanceencryption.alikafka.aliyuncs.com", "alikafka.aliyuncs.com", "etl.alikafka.aliyuncs.com" ] } } } ] }次のいずれかの方法を使用して、Terraform のランタイム環境を準備します。
Terraform Explorer で Terraform を使用する: Alibaba Cloud は、Terraform のオンライン ランタイム環境である Terraform Explorer を提供しています。 Terraform をインストールする必要なく、Terraform Explorer にログインした後に Terraform を使用できます。 この方法は、追加費用なしで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。
Cloud Shell で Terraform を使用する: Terraform は Cloud Shell にプリインストールされており、ID 資格情報が構成されています。 Cloud Shell で Terraform コマンドを直接実行できます。 この方法は、低コストで Terraform を迅速かつ便利に使用およびデバッグしたい場合に適しています。
オンプレミス マシンに Terraform をインストールして構成する: この方法は、ネットワーク接続が不安定な場合、またはカスタム開発環境が必要な場合に適しています。
必要なリソース
このトピックで必要な特定のリソースに対して課金されます。 リソースが不要になった場合は、できるだけ早くリソースを解放するか、サブスクライブを解除してください。
alicloud_vpc: 仮想プライベートクラウド (VPC) を作成します。
alicloud_vswitch: VPC 内に vSwitch を作成します。
alicloud_security_group: セキュリティグループを作成します。
alicloud_alikafka_instance: ApsaraMQ for Kafka インスタンスを作成します。
alicloud_alikakfa_instances: ApsaraMQ for Kafka インスタンスをクエリします。
インスタンスを作成してデプロイする
Terraform を使用してサブスクリプション ApsaraMQ for Kafka インスタンスを削除することはできません。
次の例では、alikafkaInstanceName という名前の ApsaraMQ for Kafka インスタンスが中国 (深セン) リージョンに作成されます。 インスタンスは、alikafka.hw.2xlarge 仕様を使用する VPC タイプのインスタンスです。
作業ディレクトリと、そのディレクトリの下に main.tf という名前のファイルを作成します。 次に、次のコンテンツを main.tf ファイルにコピーします。
variable "region" { default = "cn-shenzhen" } variable "instance_name" { default = "alikafkaInstanceName" } variable "zone_id" { default = "cn-shenzhen-f" } provider "alicloud" { region = var.region } # VPC を作成します。 resource "alicloud_vpc" "default" { vpc_name = "alicloud" cidr_block = "172.16.0.0/16" } # vSwitch を作成します。 resource "alicloud_vswitch" "default" { vpc_id = alicloud_vpc.default.id cidr_block = "172.16.192.0/20" zone_id = var.zone_id } # セキュリティグループを作成します。 resource "alicloud_security_group" "default" { vpc_id = alicloud_vpc.default.id } # インスタンスを作成します。 ディスクタイプは Ultra ディスク、ディスク容量は 500 GB、トラフィック仕様は alikafka.hw.2xlarge です。 # インスタンスをデプロイします。 resource "alicloud_alikafka_instance" "default" { name = var.instance_name partition_num = 50 disk_type = 0 disk_size = 500 deploy_type = 5 io_max_spec = "alikafka.hw.2xlarge" vswitch_id = alicloud_vswitch.default.id security_group = alicloud_security_group.default.id }次のコマンドを実行して、Terraform のランタイム環境を初期化します。
terraform init次の情報が返された場合、Terraform は初期化されています。
Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.90.1... ... 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実行計画を作成し、変更をプレビューします。
terraform plan次のコマンドを実行して、リソースを作成します。
terraform apply実行中に、プロンプトが表示されたら
yesと入力し、[enter] キーを押します。 コマンドが実行されるまで待ちます。 次の情報が返された場合、コマンドは実行されています。... alicloud_alikafka_instance.default: Destroying... [id=alikafka_post-cn-****] alicloud_alikafka_instance.default: Still destroying... [id=alikafka_post-cn-****, 10s elapsed] alicloud_alikafka_instance.default: Destruction complete after 11s alicloud_security_group.default: Destroying... [id=sg-****] alicloud_vswitch.vsw: Destroying... [id=vsw-****] alicloud_security_group.default: Destruction complete after 1s alicloud_vpc.default: Creating... alicloud_vswitch.vsw: Destruction complete after 4s alicloud_vpc.vpc: Destroying... [id=vpc-****] alicloud_vpc.vpc: Destruction complete after 1s alicloud_vpc.default: Creation complete after 4s [id=vpc-****] alicloud_security_group.default: Creating... alicloud_vswitch.default: Creating... alicloud_security_group.default: Creation complete after 1s [id=sg-****] alicloud_vswitch.default: Creation complete after 4s [id=vsw-****] alicloud_alikafka_instance.default: Creating... alicloud_alikafka_instance.default: Still creating... [10s elapsed] ... alicloud_alikafka_instance.default: Creation complete after 3m42s [id=alikafka_post-cn-****] Apply complete! Resources: 4 added, 0 changed, 0 destroyed.結果を確認します。
terraform show コマンドを使用する
terraform showコマンドを実行して、ApsaraMQ for Kafka インスタンスに関する情報を表示します。terraform show# alicloud_alikafka_instance.default: resource "alicloud_alikafka_instance" "default" { config = jsonencode( { "cloud.maxTieredStoreSpace" = "0" "enable.acl" = "false" "enable.compact" = "true" "enable.tiered" = "false" "enable.vpc_sasl_ssl" = "false" "kafka.log.retention.hours" = "72" "kafka.message.max.bytes" = "1048576" "kafka.offsets.retention.minutes" = "10080" "kafka.ssl.bit" = "1024" } ) deploy_type = 5 disk_size = 500 disk_type = 0 eip_max = 0 end_point = "172.16.201.166:9092,172.16.201.167:9092,172.16.201.165:9092" group_left = 2100 group_used = 0 id = "alikafka_post-cn-jfj40boei007" io_max = 20 io_max_spec = "alikafka.hw.2xlarge" is_partition_buy = 1 kms_key_id = null name = "alikafkaInstanceName" paid_type = "PostPaid" partition_left = 1050 partition_num = 50 partition_used = 0 resource_group_id = "rg-acfmykd63gtpfpa" security_group = "sg-wz95ccy5lzy46acczhsm" service_version = "2.2.0" spec_type = "normal" status = 5 topic_left = 1050 topic_num_of_buy = 1050 topic_quota = 1050 topic_used = 0 vpc_id = "vpc-wz9gv3xgeoyxte8t4zab0" vswitch_id = "vsw-wz9u6icvx3k1hy2d44emk" zone_id = "zonef" }ApsaraMQ for Kafka コンソールを使用する
ApsaraMQ for Kafka コンソール にログインして、ApsaraMQ for Kafka インスタンスに関する情報を表示します。

インスタンスをクエリする
次の例では、Alibaba Cloud アカウントにリストされている最初の ApsaraMQ for Kafka インスタンスがクエリされます。
main.tf 構成ファイルで、data "alicloud_alikafka_instances" "instances_ds" 設定項目を追加し、次のコード スニペットに基づいて設定項目を構成します。
data "alicloud_alikafka_instances" "instances_ds" { output_file = "instances.txt" } output "first_instance_name" { # インデックス [0] は、リストの最初の項目を示します。 value = data.alicloud_alikafka_instances.instances_ds.instances.0.name }実行計画を作成し、変更をプレビューします。
terraform plan次のコマンドを実行して、リソースを作成します。
terraform apply実行中に、プロンプトが表示されたら
yesと入力し、[enter] キーを押します。 コマンドが実行されるまで待ちます。 次の情報が返された場合、コマンドは実行されています。alicloud_vpc.default: Refreshing state... [id=vpc-****] alicloud_security_group.default: Refreshing state... [id=sg-****] alicloud_vswitch.default: Refreshing state... [id=vsw-****] alicloud_alikafka_instance.default: Refreshing state... [id=alikafka_post-cn-****] data.alicloud_alikafka_instances.instances_ds: Reading... data.alicloud_alikafka_instances.instances_ds: Read complete after 0s [id=****] Changes to Outputs: + first_instance_name = "alikafkaInstanceName" 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: 0 added, 0 changed, 0 destroyed. Outputs: first_instance_name = "alikafkaInstanceName"結果を確認します。
instances.txtファイルで、ApsaraMQ for Kafka インスタンスに関する情報を表示します。[ { "config": "{\"enable.vpc_sasl_ssl\":\"false\",\"kafka.log.retention.hours\":\"72\",\"kafka.offsets.retention.minutes\":\"10080\",\"enable.tiered\":\"false\",\"cloud.maxTieredStoreSpace\":\"0\",\"enable.acl\":\"true\",\"kafka.ssl.bit\":\"1024\",\"enable.compact\":\"true\",\"kafka.message.max.bytes\":\"1048576\"}", "create_time": 1698908400000, "deploy_type": 5, "disk_size": 900, "disk_type": 0, "domain_endpoint": "alikafka-post-cn-uax3go6z****-1-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-****-2-vpc.alikafka.aliyuncs.com:9092,alikafka-post-cn-****-3-vpc.alikafka.aliyuncs.com:9092", "eip_max": 0, "end_point": "192.168.XX.XX:9092,192.168.XX.XX:9092,192.168.XX.XX:9092", "expired_time": 2014527600000, "id": "alikafka_post-cn-****", "io_max": 20, "msg_retain": 72, "name": "alikafka_post-cn-****", "paid_type": "PostPaid", "sasl_domain_endpoint": "alikafka-post-cn-****-1-vpc.alikafka.aliyuncs.com:9094,alikafka-post-cn-****-2-vpc.alikafka.aliyuncs.com:9094,alikafka-post-cn-****-3-vpc.alikafka.aliyuncs.com:9094", "security_group": "sg-****", "service_status": 5, "service_version": "2.2.0", "spec_type": "professional", "ssl_domain_endpoint": null, "ssl_end_point": "", "tags": {}, "upgrade_service_detail_info": [ { "current2_open_source_version": "2.2.0" } ], "vpc_id": "vpc-****", "vswitch_id": "vsw-****", "zone_id": "zonek" }, ]
リソースをクリアする
Terraform を使用して作成または管理された上記の不要になったリソースがある場合は、次のコマンドを実行してリソースを解放します。 terraform destroy コマンドの詳細については、「共通コマンド」をご参照ください。
terraform destroyサンプルコード
サンプルコードは、数回クリックするだけで実行できます。 こちら をクリックしてサンプルコードを実行します。
サンプルコード
関連情報
ApsaraMQ for Kafka コンソールで、または API 操作を呼び出すことによって、インスタンスを管理することもできます。 詳細については、「手順 2: インスタンスを購入してデプロイする」および「CreatePostPayOrder」をご参照ください。
alicloud_alikafka_instanceリソースによって提供される他の引数の詳細については、「alicloud_alikafka_instance」をご参照ください。