2 Star 0 Fork 0

HuaweiCloudDeveloper / huaweicloud-solution-device-edge-cloud-serverless-datalake

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
device-edge-cloud-serverless-datalake.tf.json 18.31 KB
一键复制 编辑 原始数据 按行查看 历史
HWCloudSolution 提交于 2023-08-14 11:05 . 优化代码
{
"terraform": {
"required_providers": [
{
"huaweicloud": {
"source": "huawei.com/provider/huaweicloud",
"version": "1.50.0"
}
}
]
},
"provider": {
"huaweicloud": {
"cloud": "myhuaweicloud.com",
"endpoints": {
"iam": "iam.cn-north-4.myhuaweicloud.com",
"dns": "dns.cn-north-4.myhuaweicloud.com"
},
"insecure": true,
"region": "cn-north-4",
"auth_url": "https://iam.cn-north-4.myhuaweicloud.com/v3"
}
},
"variable": {
"subnet_id": {
"default": "",
"description": "子网ID,该模板使用已有子网,该方案所涉及到的其他云服务资源将会部署在该子网下,查询子网ID请参考部署指南。",
"type": "string",
"nullable": "false",
"validation": {
"condition": "${length(regexall(\"^[a-z0-9]{8}(-[a-z0-9]{4}){3}-[a-z0-9]{12}$\",var.subnet_id))>0}",
"error_message": "Invalid input. Please re-enter."
}
},
"secgroup_name": {
"default": "device-edge-cloud-serverless-datalake-demo",
"description": "安全组名称,该模板新建安全组,安全组规则请参考部署指南进行配置。取值范围:1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)。默认:device-edge-cloud-serverless-datalake-demo。",
"type": "string",
"nullable": false
},
"obs_bucket_name": {
"default": "",
"description": "对象存储服务OBS桶名称,用于存放应用数据,全局唯一。取值范围: 长度 1-59个字符,以小写字母或数字开头,仅支持小写字母、数字、中划线(-)、点(.)。",
"type": "string",
"nullable": false,
"validation": {
"condition": "${length(regexall(\"^[a-z0-9][a-z0-9\\\\.-]{0,58}$\",var.obs_bucket_name))>0}",
"error_message": "Invalid input. Please re-enter."
}
},
"kafka_name": {
"default": "device-edge-cloud-serverless-datalake-demo",
"description": "分布式消息服务Kafka实例名称,取值范围:以字母开头,长度为4-64个字符,仅支持字母、数字、连字符(-)和下划线(_)。默认:device-edge-cloud-serverless-datalake-demo。",
"type": "string",
"nullable": false,
"validation": {
"condition": "${length(regexall(\"^([a-zA-Z])[\\\\w-]{3,63}$\",var.kafka_name))>0}",
"error_message": "Invalid input. Please re-enter."
}
},
"kafka_flavor_id": {
"default": "c6.2u4g.cluster",
"description": "Kafka实例规格,可选值:c6.2u4g.cluster、c6.4u8g.cluster、c6.8u16g.cluster、c6.12u24g.cluster、c6.16u32g.cluster,关于规格介绍请参考:https://support.huaweicloud.com/productdesc-kafka/Kafka-specification.html。默认:c6.2u4g.cluster。",
"type": "string",
"nullable": false,
"validation": {
"condition": "${contains([\"c6.2u4g.cluster\",\"c6.4u8g.cluster\",\"c6.8u16g.cluster\",\"c6.12u24g.cluster\",\"c6.16u32g.cluster\"], var.kafka_flavor_id)}",
"error_message": "Invalid input. Please re-enter."
}
},
"kafka_storage_spec_type": {
"default": "dms.physical.storage.ultra.v2",
"description": "Kafka实例存储空间磁盘类型,创建完成后不可修改。请参考https://support.huaweicloud.com/productdesc-evs/zh-cn_topic_0044524691.html选择磁盘类型,并根据业务IO要求选择。可选值:dms.physical.storage.high.v2(高I/O磁盘类型)、dms.physical.storage.ultra.v2(超高I/O磁盘类型)。默认:dms.physical.storage.ultra.v2。",
"type": "string",
"nullable": false,
"validation": {
"condition": "${contains([\"dms.physical.storage.high.v2\",\"dms.physical.storage.ultra.v2\"], var.kafka_storage_spec_type)}",
"error_message": "Invalid input. Please re-enter."
}
},
"kafka_storage_space": {
"default": 300,
"description": "Kafka实例存储空间容量,存储空间不支持缩容。存储空间主要用于存储消息(包含副本,Kafka默认使用3副本),除了存储消息外还需要预留部分空间用于存储日志和元数据。例如:业务消息体积预估100GB,则存储空间最少应为100GB * 副本数 + 预留磁盘大小100GB。取值需为300的整数倍,范围:300-900,000 。默认:300。",
"type": "number",
"nullable": false,
"validation": {
"condition": "${length(regexall(\"^([3-9]\\\\d{2}|[1-9]\\\\d{3,4}|[1-8]\\\\d{5}|900000)$\",var.kafka_storage_space))>0}",
"error_message": "Invalid input, please re-enter."
}
},
"kafka_manager_password": {
"default": "",
"description": "Kafka实例Manager用户密码,创建完成后,可参考部署指南登录Kafka控制台修改密码。取值范围:8-32个字符,密码至少必须包含大写字母、小写字母、数字和特殊字符`~!@#$%^&*()-_=+|[{}];:'\",<.>?和空格中的三种,并且不能以-开头。不能与用户名或倒叙的用户名相同。用户名默认root。",
"type": "string",
"nullable": false,
"sensitive": true
},
"functiongraph_name": {
"default": "device-edge-cloud-serverless-datalake-demo",
"description": "函数工作流functiongraph函数名称,取值范围:长度为2-47个字符,可包含字母、数字、_(下划线)和-(中划线),以字母开头,以字母或数字结尾。默认:device-edge-cloud-serverless-datalake-demo。",
"type": "string",
"nullable": false,
"validation": {
"condition": "${length(regexall(\"^([a-zA-Z])[\\\\w-]{0,45}[a-zA-Z0-9]$\",var.functiongraph_name))>0}",
"error_message": "Invalid input. Please re-enter."
}
},
"api_name": {
"default": "device_edge_cloud_serverless_datalake_demo",
"description": "API名称,该方案使用共享版API网关,对外提供API服务。取值范围:3-244个字符,中英文字符开头,只能由中英文字符、数字、下划线组成(_),中文字符必须是UTF-8或Unicode格式。默认:device_edge_cloud_serverless_datalake_demo。",
"type": "string",
"nullable": false
},
"ges_graph_name": {
"default": "device_edge_cloud_serverless_datalake_demo",
"description": "图形名称,取值范围:长度为4-64个字符,可包含字母、数字、_(下划线),以字母开头。默认:device_edge_cloud_serverless_datalake_demo。",
"type": "string",
"nullable": false,
"validation": {
"condition": "${length(regexall(\"^([a-zA-Z])[\\\\w_]{0,63}$\",var.ges_graph_name))>0}",
"error_message": "Invalid input. Please re-enter."
}
},
"graph_size_type": {
"default": "0",
"description": "图形大小类型索引,0:表示1万边、1:表示100万条边、2:表示1000万条边、3:表示1亿条边、4:表示10亿条边、5:表示100亿条边、6:表示数据库版本、401:表示10亿条增强边。默认:0",
"type": "string",
"nullable": false,
"validation": {
"condition": "${contains([\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"401\"], var.graph_size_type)}",
"error_message": "Invalid input. Please re-enter."
}
}
},
"data": {
"huaweicloud_availability_zones": {
"az": {}
},
"huaweicloud_vpc_subnet": {
"subnet": {
"id": "${var.subnet_id}"
}
},
"huaweicloud_dms_kafka_flavors": {
"kafka_flavor": {
"flavor_id": "${var.kafka_flavor_id}"
}
}
},
"resource": {
"huaweicloud_networking_secgroup": {
"secgroup": {
"name": "${var.secgroup_name}"
}
},
"huaweicloud_networking_secgroup_rule": {
"allow_fgs_accessing_kafka": {
"security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}",
"description": "允许函数工作流访问DMS Kafka",
"direction": "ingress",
"ethertype": "IPv4",
"protocol": "tcp",
"ports": 9092,
"remote_ip_prefix": "${data.huaweicloud_vpc_subnet.subnet.cidr}"
},
"networking_secgroup_rule_https": {
"description": "允许使用HTTPS协议访问网站",
"direction": "ingress",
"ethertype": "IPv4",
"ports": 443,
"protocol": "tcp",
"remote_ip_prefix": "0.0.0.0/0",
"security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}"
},
"allow_vpcep": {
"security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}",
"description": "允许通过VPC终端节点实现跨VPC访问Kafka实例(开启SSL加密和关闭SSL加密都适用)",
"direction": "ingress",
"ethertype": "IPv4",
"remote_ip_prefix": "198.19.128.0/17"
}
},
"huaweicloud_obs_bucket": {
"obs_bucket": {
"acl": "private",
"bucket": "${var.obs_bucket_name}-obs",
"multi_az": false
}
},
"huaweicloud_dms_kafka_instance": {
"kafka_instance": {
"name": "${var.kafka_name}",
"flavor_id": "${data.huaweicloud_dms_kafka_flavors.kafka_flavor.flavors[0].id}",
"engine_version": 2.7,
"storage_spec_code": "${var.kafka_storage_spec_type}",
"storage_space": "${var.kafka_storage_space}",
"broker_num": 3,
"vpc_id": "${data.huaweicloud_vpc_subnet.subnet.vpc_id}",
"network_id": "${data.huaweicloud_vpc_subnet.subnet.id}",
"security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}",
"availability_zones": [
"${data.huaweicloud_availability_zones.az.names[0]}",
"${data.huaweicloud_availability_zones.az.names[1]}",
"${data.huaweicloud_availability_zones.az.names[2]}"
],
"manager_user": "root",
"manager_password": "${var.kafka_manager_password}"
}
},
"huaweicloud_dms_kafka_topic": {
"kafka_topic": {
"instance_id": "${huaweicloud_dms_kafka_instance.kafka_instance.id}",
"name": "vehicle_raw_data",
"partitions": 1
}
},
"huaweicloud_ges_graph": {
"ges_graph": {
"name": "${var.ges_graph_name}",
"graph_size_type_index": "${var.graph_size_type}",
"cpu_arch": "x86_64",
"vpc_id": "${data.huaweicloud_vpc_subnet.subnet.vpc_id}",
"subnet_id": "${data.huaweicloud_vpc_subnet.subnet.id}",
"security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}",
"crypt_algorithm": "generalCipher",
"enable_https": false
}
},
"huaweicloud_identity_agency": {
"identity_agency": {
"delegated_service_name": "op_svc_cff",
"domain_roles": [
"OBS Administrator"
],
"name": "${var.functiongraph_name}_agency",
"project_role": [
{
"project": "MOS",
"roles": [
"OBS Administrator"
]
},
{
"project": "cn-north-4",
"roles": [
"VPC FullAccess",
"GES FullAccess"
]
}
]
}
},
"huaweicloud_fgs_function": {
"fgs_function_collect_data": {
"name": "${var.functiongraph_name}-collect-data",
"app": "default",
"memory_size": "256",
"runtime": "Python3.9",
"timeout": 120,
"code_type": "obs",
"handler": "collect_data.handler",
"functiongraph_version": "v2",
"code_url": "https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/device-edge-cloud-serverless-datalake/functiongraph/collect_data.zip",
"agency": "${huaweicloud_identity_agency.identity_agency.name}",
"vpc_id": "${data.huaweicloud_vpc_subnet.subnet.vpc_id}",
"network_id": "${data.huaweicloud_vpc_subnet.subnet.id}",
"user_data": "${jsonencode({\nregion = \"cn-north-4\"\nobs_endpoint = \"obs.cn-north-4.myhuaweicloud.com\"\ntarget_bucket = huaweicloud_obs_bucket.obs_bucket.bucket\ntarget_prefix = \"original_data\"})}"
},
"fgs_function_parse_data": {
"name": "${var.functiongraph_name}-parse-data",
"app": "default",
"memory_size": "256",
"runtime": "Python3.9",
"timeout": 120,
"code_type": "obs",
"handler": "parse_data.handler",
"functiongraph_version": "v2",
"code_url": "https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/device-edge-cloud-serverless-datalake/functiongraph/parse_data.zip",
"agency": "${huaweicloud_identity_agency.identity_agency.name}",
"vpc_id": "${data.huaweicloud_vpc_subnet.subnet.vpc_id}",
"network_id": "${data.huaweicloud_vpc_subnet.subnet.id}",
"user_data": "${jsonencode({\nregion = \"cn-north-4\"\nobs_endpoint = \"obs.cn-north-4.myhuaweicloud.com\"\noriginal_data_bucket = huaweicloud_obs_bucket.obs_bucket.bucket\n original_data_prefix = \"original_data\", \n parse_data_prefix = \"csv_data\"})}"
},
"fgs_function_import_ges": {
"name": "${var.functiongraph_name}-import-ges",
"app": "default",
"memory_size": "1024",
"runtime": "Python3.9",
"timeout": 120,
"code_type": "obs",
"handler": "import_ges.handler",
"functiongraph_version": "v2",
"code_url": "https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/device-edge-cloud-serverless-datalake/functiongraph/import_ges.zip",
"agency": "${huaweicloud_identity_agency.identity_agency.name}",
"vpc_id": "${data.huaweicloud_vpc_subnet.subnet.vpc_id}",
"network_id": "${data.huaweicloud_vpc_subnet.subnet.id}",
"user_data": "${jsonencode({\nregion = \"cn-north-4\"\nobs_endpoint = \"obs.cn-north-4.myhuaweicloud.com\"\ntarget_bucket = huaweicloud_obs_bucket.obs_bucket.bucket\n target_prefix = \"graph_data\"\n graph_ip = huaweicloud_ges_graph.ges_graph.private_ip\ngraph_name = huaweicloud_ges_graph.ges_graph.name\ngraph_port = \"443\"})}"
}
},
"huaweicloud_api_gateway_group": {
"api_gateway_group": {
"description": "${var.api_name} apig group",
"name": "${var.api_name}_apig_group"
}
},
"huaweicloud_api_gateway_api": {
"api_gateway_api": {
"group_id": "${huaweicloud_api_gateway_group.api_gateway_group.id}",
"name": "${var.api_name}_api",
"visibility": 2,
"auth_type": "IAM",
"backend_type": "FUNCTION",
"request_protocol": "HTTPS",
"request_method": "POST",
"request_uri": "/${var.api_name}_api/",
"example_success_response": "Successful",
"function_backend": [
{
"function_urn": "${huaweicloud_fgs_function.fgs_function_parse_data.urn}",
"invocation_type": "sync",
"timeout": 10000,
"version": "latest"
}
]
}
},
"huaweicloud_fgs_trigger": {
"kafka_trigger": {
"function_urn": "${huaweicloud_fgs_function.fgs_function_collect_data.urn}",
"kafka": [
{
"instance_id": "${huaweicloud_dms_kafka_instance.kafka_instance.id}",
"batch_size": 100,
"topic_ids": [
"${huaweicloud_dms_kafka_topic.kafka_topic.id}"
]
}
],
"status": "ACTIVE",
"type": "KAFKA"
},
"obs_trigger": {
"function_urn": "${huaweicloud_fgs_function.fgs_function_import_ges.urn}",
"obs": [
{
"bucket_name": "${huaweicloud_obs_bucket.obs_bucket.bucket}",
"event_notification_name": "${var.functiongraph_name}_trigger",
"events": [
"Put",
"Post"
],
"prefix": "csv_data",
"suffix": "zip"
}
],
"status": "ACTIVE",
"type": "OBS"
}
}
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/HuaweiCloudDeveloper/huaweicloud-solution-device-edge-cloud-serverless-datalake.git
git@gitee.com:HuaweiCloudDeveloper/huaweicloud-solution-device-edge-cloud-serverless-datalake.git
HuaweiCloudDeveloper
huaweicloud-solution-device-edge-cloud-serverless-datalake
huaweicloud-solution-device-edge-cloud-serverless-datalake
master-dev

搜索帮助

344bd9b3 5694891 D2dac590 5694891