Deploying an Event Function using Terraform¶
This section describes on how to deploy an Event Function using Terraform.
Full sample can be found in doc-sample-deploy-tf.
Prerequisite¶
Terraform configured according to Prepare the Terraform environment
Adapt Terraform files¶
Configure variables in: variables.tf.
for
function_handler_name
, see Define FunctionGraph function handler in Java.for
jar_file_name
, see Deploy Event Functions with .zip or JAR file archives.
src/main/tf/variables.tf¶
# prefix will be prepended to all ressource names
variable "prefix" {
type = string
default = "sample"
}
# FunctionGraph function name
variable "function_name" {
type = string
default = "TFDeployment"
}
# FunctionGraph handler name
variable "function_handler_name" {
type = string
default = "com.opentelekomcloud.samples.SampleFG.handleRequest"
}
# name of jar file to deploy, generated by 'mvn package' command
variable "jar_file_name" {
type = string
default = "functiongraph-samples-doc-deploy-tf-jar-with-dependencies.jar"
}
The following “function.tf” configurationdeploys:
Event function
LogGroup
LogStream
Event
src/main/tf/function.tf¶
##########################################################
# Create Function
##########################################################
resource "opentelekomcloud_fgs_function_v2" "MyFunction" {
name = format("%s_%s", var.prefix, var.function_name)
app = "default"
# agency = var.agency_name
handler = var.function_handler_name
description = "Sample on how to deploy using terraform"
memory_size = 128
timeout = 30
max_instance_num = 400
runtime = "Java17"
code_type = "jar"
func_code = filebase64(format("${path.module}/../../../target/%s", var.jar_file_name))
code_filename = var.jar_file_name
log_group_id = opentelekomcloud_lts_group_v2.MyLogGroup.id
log_group_name = opentelekomcloud_lts_group_v2.MyLogGroup.group_name
log_topic_id = opentelekomcloud_lts_stream_v2.MyLogStream.id
log_topic_name = opentelekomcloud_lts_stream_v2.MyLogStream.stream_name
# set some environment variables
user_data = jsonencode({ "LOG_LEVEL" : "INFO", "DATA" : "Test" })
}
##########################################################
# Create Log Group
##########################################################
resource "opentelekomcloud_lts_group_v2" "MyLogGroup" {
group_name = format("%s_%s_%s", var.prefix, var.function_name, "log_group")
ttl_in_days = 1
}
##########################################################
# Create Log Stream
##########################################################
resource "opentelekomcloud_lts_stream_v2" "MyLogStream" {
group_id = opentelekomcloud_lts_group_v2.MyLogGroup.id
stream_name = format("%s_%s_%s", var.prefix, var.function_name, "log_stream")
}
##########################################################
# Create Test Event
##########################################################
resource "opentelekomcloud_fgs_event_v2" "test_event" {
function_urn = opentelekomcloud_fgs_function_v2.MyFunction.urn
name = "my-value-event"
content = base64encode(jsonencode({
"key" = "MyValue"
}))
}
Using Terraform¶
Run following commands in folder src/main/tf
:
# init terraform
terraform init
# plan terraform
terraform plan
# apply changes
terraform apply