curl -X POST https://{region}.api.konghq.com/v1/event-gateways/{eventGatewayId}/virtual-clusters/{virtualClusterId}/produce-policies \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN " \
--data '
{
"name": "convert-produce-topic-to-avro",
"type": "transcode",
"parent_policy_id": "' $PARENT_POLICY_ID '",
"condition": "context.topic.name == \"my_topic\"",
"config": {
"failure_mode": "reject",
"output_format": "avro",
"schema_source": {
"type": "reference",
"schema_registry": {
"name": "my-schema-registry"
},
"subject": "${context.topic.name + ' -value '}",
"version": "${' latest '}",
"schema_ref_destination": {
"type": "record_header"
}
}
}
}
'
Make sure to replace the following placeholders with your own values:
region: Geographic region where your Kong Konnect is hosted and operates.
KONNECT_TOKEN: Your Personal Access Token (PAT) associated with your Konnect account.
virtualClusterId: The id of the Virtual Cluster.
eventGatewayId: The id of the Event Gateway.
eventGatewayListenerId: The id of the Event Gateway Listener.
See the Konnect Event Gateway API reference to learn about region-specific URLs and personal access tokens.
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect-beta = {
source = "kong/konnect-beta"
}
}
}
provider "konnect-beta" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration:
resource "konnect_event_gateway_produce_policy_transcode" "my_virtual_cluster_policy_transcode" {
provider = konnect - beta
type = "transcode"
parent_policy_id = var . parent_policy_id
condition = "context.topic.name == \" my_topic \" "
config = {
failure_mode = "reject"
output_format = "avro"
schema_source = {
type = "reference"
schema_registry = {
name = "my-schema-registry"
}
subject = " ${ context . topic . name + ' - value ' } "
version = " ${ ' latest ' } "
schema_ref_destination = {
type = "record_header"
}
}
}
virtual_cluster_id = konnect_event_gateway_virtual_cluster . my_virtual_cluster . id
gateway_id = konnect_event_gateway . my_event_gateway . id
}
This example requires the following variables to be added to your manifest. You can specify values at runtime by setting TF_VAR_name=value.
variable "parent_policy_id" {
type = string
}
The following example creates a new transcode policy.
event_gateways :
- ref : eventGatewayName
name : eventGatewayName
virtual_clusters :
- ref : virtualClusterName
name : virtualClusterName
produce_policies :
- ref : convert-produce-topic-to-avro
type : transcode
transcode :
name : convert-produce-topic-to-avro
parent_policy_id : !env PARENT_POLICY_ID
condition : context.topic.name == "my_topic"
config :
failure_mode : reject
output_format : avro
schema_source :
type : reference
schema_registry :
name : my-schema-registry
subject : "${context.topic.name + '-value'}"
version : "${'latest'}"
schema_ref_destination :
type : record_header
Make sure to replace the following placeholders with your own values: