首页 > 其他分享 >[迎风奔雨] terraform create pubsub and inputs

[迎风奔雨] terraform create pubsub and inputs

时间:2023-08-06 17:48:35浏览次数:46  
标签:inputs name config create bigquery topic terraform var my

terragrunt.hcl

---------------------------------------------------------------------------------------------------------------------------------------

inputs = {
topics = [
{
name = "my-topic-1"
subscriptions = [
{
name = "my-subscription-1"
bigquery_config = "my-table-1"
},
{
name = "my-subscription-2"
bigquery_config = "my-table-2"
}
]
},
{
name = "my-topic-2"
subscriptions = [
{
name = "my-subscription-3"
bigquery_config = "my-table-3"
},
{
name = "my-subscription-4"
bigquery_config = "my-table-4"
}
]
}
]
schema_file = "schema.avsc"
schema_bucket = "my-bucket"
encoding = "JSON"
type = "AVRO"
create_before_destroy = true
message_retention_duration = "604800s"
retain_acked_messages = true
ack_deadline_seconds = 60
ttl = "3600s"
minimum_backoff = "10s"
maximum_backoff = "300s"
maximum_attempts = 10
max_delivery_attempts = 5
}

 

---------------------------------------------------------------------------------------------------------------------------------------

terraform maint.tf 

---------------------------------------------------------------------------------------------------------------------------------------

# 定义多个 Pub/Sub Topic 和 Subscription
locals {
topics = [for topic in var.topics : {
name = topic.name
subscriptions = [for sub in topic.subscriptions : {
name = sub.name
bigquery_config = sub.bigquery_config
}]
}]
}

resource "google_pubsub_topic" "topics" {
for_each = { for topic in local.topics : topic.name => {} }

name = each.key

# 定义消息模式
schema_settings {
encoding = var.encoding
type = var.type
schema = file("${path.module}/${var.schema_file}")
}

# 配置资源生命周期
lifecycle {
create_before_destroy = var.create_before_destroy
}
}

resource "google_pubsub_subscription" "subscriptions" {
for_each = { for topic in local.topics : topic.subscriptions => topic.name }

topic = google_pubsub_topic.topics[each.key].id
name = each.value[count.index].name

# 配置消息保留时间、消息确认方式等
message_retention_duration = var.message_retention_duration
retain_acked_messages = var.retain_acked_messages
ack_deadline_seconds = var.ack_deadline_seconds

# 配置消息过期策略、重试策略、死信队列等
expiration_policy {
ttl = var.ttl
}
retry_policy {
minimum_backoff = var.minimum_backoff
maximum_backoff = var.maximum_backoff
maximum_attempts = var.maximum_attempts
}
dead_letter_policy {
dead_letter_topic = google_pubsub_topic.dead_letter_topic.id
max_delivery_attempts = var.max_delivery_attempts
}

# 配置将消息写入 BigQuery
bigquery_config {
table_name = each.value[count.index].bigquery_config
}

# 配置资源生命周期
lifecycle {
create_before_destroy = var.create_before_destroy
}
}

标签:inputs,name,config,create,bigquery,topic,terraform,var,my
From: https://www.cnblogs.com/jingqiyong/p/17609636.html

相关文章

  • MSSQL提权之xp_cmdshell、SP_OACreate、沙盒提权
    在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权 首先 EXECsp_configure'showadvancedoptions',1;  RECONFIGUREWITHOVERRIDE;  EXECsp_configure'OleAutomationProcedures',1;  RECONFIGUREWITHOVERRIDE;  EXECsp_configure'showad......
  • Terraform Backend 配置
    TerraformBackend配置Backend配置Backend简介StateTerraform可以根据state跟踪托管资源,默认文件存储在本地(local),可以使用backend{}定义远程的存储(remote)。terraform.tfstateterraform.tfstate.backup{"version":4,"terraform_version":"1.1.9","seri......
  • Terraform 部署 Docker
    Terraform部署Docker文件目录结构./├──network#network目录,创建network│├──main.tf│├──outputs.tf│├──terraform.tfstate│├──terraform.tfstate.backup│└──versions.tf└──service......
  • Terraform 语法配置
    Terraform语法配置Terraform语法配置语法Terraform的配置文件都是以.tf为后缀Terraform支持两种模式HCL、JSONProvider插件providers地址:https://registry.terraform.io/browse/providersTerraform通过provider管理基础设施,使用provider与云供应商API......
  • 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣
     星期一早上到了公司,据称产品环境抛出了最可爱的异常—OutOfMemory, 它是这样来描述他自己的:java.lang.OutOfMemoryError:unabletocreatenewnativethread而且这位仁兄竟然还堂而皇之地同时出现在了3个application里面,所有应用全部遭殃。那可爱的OOM是如何产生的呢?直接原因......
  • SQLite的SQL语法 CREATE INDEX
    SQLite的SQL语法[目录]CREATEINDEXsql-statement ::=CREATE[UNIQUE]INDEX[IFNOTEXISTS][database-name.]index-nameONtable-name(column-name[,column-name]*)column-name ::=name[COLLATEcollation-name][ASC|DESCCREATEINDEX命令由"CREATEINDEX&qu......
  • 当使用create table ... as select建表时报错ERROR 1786
    问题描述:当使用createtable...asselect建表时报错ERROR1786.数据库:mysql5.7.211、异常重现mysql>createtablebooksbakasselect*frombooks;ERROR1786(HY000):StatementviolatesGTIDconsistency:CREATETABLE...SELECT.2、异常原因ERROR1786是由于开......
  • Terraform
    Terraformhttps://developer.hashicorp.com/terraform/intro什么是Terraform?Terraform是一种基础设施即代码工具,可让您在人类可读的配置文件中定义云和本地资源,您可以对这些文件进行版本控制、重用和共享。然后,您可以使用一致的工作流程来配置和管理所有基础设施的整个生......
  • windows下shellcode注入的例子(WriteProcessMemory+CreateRemoteThread)
    vs里x64编译如下代码:  #include<iostream>#include<Windows.h>//#include"common.h"intmain(){ //msfvenom-pwindows/x64/execCMD=notepad.exe-fc unsignedcharshellcode[]= "\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x0......
  • Android studio DerInputStream.getLength(): lengthTag=109, too big.Failed to
    AndroidStudio:解决DerInputStream.getLength():lengthTag=109,toobig.Failedto的问题简介在使用AndroidStudio开发Android应用程序时,你可能会遇到DerInputStream.getLength():lengthTag=109,toobig.Failedto的错误。该错误通常发生在尝试使用包含较大数据的......