本文介绍通过Terraform创建API Destination的前提条件、操作步骤和结果验证。
背景信息
HashiCorp Terraform是一个IT基础架构自动化编排工具,可以用代码来管理维护IT资源。Terraform的命令行接口(CLI)提供一种简单机制,可以将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。阿里云的大多数产品(包括事件总线EventBridge)都支持使用Terraform,使得跨多云部署基础设施变得简单。更多信息,请参见什么是Terraform。
API Destination定义了API的元数据,您在创建事件规则时可以引用不同的API Destination以访问不同的第三方SaaS系统或自建系统,不同规则也可以引用同一个API Destination。多个规则向同一个目标服务API进行事件投递时,一旦需要修改某个参数,需要修改所有的规则,但如果将目标服务的API定义成API Destination,那么只需要修改API Destination的配置,则所有引用这个API Destination的规则,将同步自动更新。
本文将演示如何通过Terraform在事件总线EventBridge控制台创建API Destination。
前提条件
安装Terraform,具体操作,请参见在本地安装和配置Terraform。
创建阿里云账号并获取访问密钥。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的账号及密钥。
操作步骤
创建terraform.tf文件,声明API Destination、自定义总线、自定义事件源、连接器配置、自定义事件源的规则。
provider "alicloud" { # AccessKey ID和AccessKey Secret请参照前提条件在阿里云控制台的AccessKey管理页面获取。 # Region Id为您创建API Destination的目标地域,例如"cn-hangzhou"。 access_key = "<your AccessKey Id>" secret_key = "<your AccessKey Secret>" region = "<Region Id>" } # 声明API Destination的名称。 variable "terraform_api_destination_name" { default = "terraform-api_destination-name-api-key" } # 声明连接配置名称。 variable "terraform_connection_name" { default = "terraform_connection_name-api-key" } # 声明自定义事件总线的名称。 resource "alicloud_event_bridge_event_bus" "default" { event_bus_name = "my-tf-EventBus-api-key-test" } # 声明事件源的名称、类型及配置。 resource "alicloud_event_bridge_event_source" "default" { event_bus_name = "my-tf-EventBus-api-key-test" event_source_name = "tf-test-api-key" description = "tf-test-api-key" linked_external_source = true external_source_type = "MNS" external_source_config = { QueueName = "test-tf" } } resource "alicloud_event_bridge_connection" "defaultConnection" { connection_name = var.terraform_connection_name description = "test-connection-api-key-pre" network_parameters { network_type = "PublicNetwork" } auth_parameters { authorization_type = "API_KEY_AUTH" api_key_auth_parameters { api_key_name = "<使用API_KEY_AUTH鉴权方式的用户名>" api_key_value = "<使用API_KEY_AUTH鉴权方式的Value>" } } } resource "alicloud_event_bridge_api_destination" "default" { description = "test-api-destination-connection" http_api_parameters { # endpoint为API端点的接入点地址,其中xxxx填写您的服务端地址的IP或域名。 endpoint = "http://xxxx:8080/putEventsByAPiKey" method = "POST" } api_destination_name = var.terraform_api_destination_name connection_name = alicloud_event_bridge_connection.defaultConnection.connection_name } # 声明事件规则,将事件投递至API Destination。 resource "alicloud_event_bridge_rule" "default" { event_bus_name = "my-tf-EventBus-api-key-test" rule_name = "tf-rule-test-api-key" description = "test-api-key" filter_pattern = "{\n \"source\": [\n \"tf-test-api-key\"\n ]\n}" targets { target_id = "sadsadsss" endpoint = "acs:api-destination:<Region ID>:<阿里云账号ID>:name/terraform-api_destination-name-api-key" type = "acs.api.destination" param_list { resource_key = "Name" form = "CONSTANT" value = "terraform-api_destination-name-api-key" } param_list { resource_key = "QueryStringParameters" form = "TEMPLATE" value = "{\"queryKey1\":\"id\",\"queryValue1\":\"$.data.name\"}" # ${}用于声明EventBridge中的变量,$${}用于在Terraform文件中声明变量。 template = "{\"$${queryKey1}\":\"$${queryValue1}\"}" } } }
在命令行窗口执行初始化命令
terraform init
。出现以下结果则表示初始化成功:Terraform has been successfully initialized!
执行预览变更命令
terraform plan
。在结果中可以预览到即将被创建的资源。alicloud_event_bridge_api_destination.default will be created alicloud_event_bridge_connection.defaultConnection will be created alicloud_event_bridge_event_bus.default will be created alicloud_event_bridge_event_source.default will be created alicloud_event_bridge_rule.default will be created
执行应用变更命令
terraform apply
。出现以下结果则表示资源被创建成功:Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
结果验证
登录事件总线EventBridge控制台,验证资源是否被成功创建。
在左侧导航栏,单击事件总线,查看自定义事件总线及事件规则是否成功创建。
在左侧导航栏,选择
,查看API端点和连接配置是否创建。
在自定义事件总线页面,单击右上角的发布事件,选择自定义事件源为已创建的事件源,单击确认。
在自定义事件总线页面的左侧导航栏,单击事件追踪,查询事件投递结果。
相关文档
- 本页导读 (1)