diff --git a/examples/tencentcloud-cos/main.tf b/examples/tencentcloud-cos/main.tf index 4550802dc6..1ab5c2ab67 100644 --- a/examples/tencentcloud-cos/main.tf +++ b/examples/tencentcloud-cos/main.tf @@ -1,66 +1,158 @@ -resource "tencentcloud_cos_bucket" "bucket" { - bucket = var.bucket-name - acl = var.acl +data "tencentcloud_user_info" "info" {} - cors_rules { - allowed_headers = ["*"] - allowed_methods = ["GET", "POST"] - allowed_origins = ["https://www.test.com"] - expose_headers = ["x-cos-test"] - max_age_seconds = 300 - } +locals { + app_id = data.tencentcloud_user_info.info.app_id + uin = data.tencentcloud_user_info.info.uin + owner_uin = data.tencentcloud_user_info.info.owner_uin + region = "ap-guangzhou" +} - lifecycle_rules { - filter_prefix = "test/" +# Private Bucket +resource "tencentcloud_cos_bucket" "private_sbucket" { + bucket = "private-bucket-${local.app_id}" + acl = "private" +} - expiration { - days = 365 - } +# Multiple available zone bucket +resource "tencentcloud_cos_bucket" "multi_zone_bucket" { + bucket = "multi-zone-bucket-${local.app_id}" + acl = "private" + multi_az = true + versioning_enable = true + force_clean = true +} - transition { - days = 30 - storage_class = "STANDARD_IA" - } +# Using verbose acl +resource "tencentcloud_cos_bucket" "bucket_with_acl" { + bucket = "bucketwith-acl-${local.app_id}" + # NOTE: Specify the acl_body by the priority sequence of permission and user type with the following sequence: `CanonicalUser with READ`, `CanonicalUser with WRITE`, `CanonicalUser with FULL_CONTROL`, `CanonicalUser with WRITE_ACP`, `CanonicalUser with READ_ACP`, then specify the `Group` of permissions same as `CanonicalUser`. + acl_body = < + + qcs::cam::uin/100022975249:uin/100022975249 + qcs::cam::uin/100022975249:uin/100022975249 + + + + + http://cam.qcloud.com/groups/global/AllUsers + + READ + + + + qcs::cam::uin/100022975249:uin/100022975249 + qcs::cam::uin/100022975249:uin/100022975249 + + FULL_CONTROL + + + + qcs::cam::uin/100022975249:uin/100022975249 + qcs::cam::uin/100022975249:uin/100022975249 + + WRITE_ACP + + + + http://cam.qcloud.com/groups/global/AllUsers + + READ_ACP + + + + http://cam.qcloud.com/groups/global/AllUsers + + WRITE_ACP + + + + qcs::cam::uin/100022975249:uin/100022975249 + qcs::cam::uin/100022975249:uin/100022975249 + + READ + + + + qcs::cam::uin/100022975249:uin/100022975249 + qcs::cam::uin/100022975249:uin/100022975249 + + WRITE + + + + http://cam.qcloud.com/groups/global/AllUsers + + FULL_CONTROL + + + +EOF +} - transition { - days = 60 - storage_class = "ARCHIVE" - } - } +# Static Website +resource "tencentcloud_cos_bucket" "bucket_with_static_website" { + bucket = "bucket-with-static-website-${local.app_id}" website { index_document = "index.html" error_document = "error.html" } - - tags = { - "test" = "test" - } } -resource "tencentcloud_cos_bucket_object" "object" { - bucket = tencentcloud_cos_bucket.bucket.bucket - key = var.object-name - content = var.object-content - content_type = "binary/octet-stream" +output "endpoint_test" { + value = tencentcloud_cos_bucket.bucket_with_static_website.website.0.endpoint } -data "tencentcloud_cos_bucket_object" "data_object" { - bucket = tencentcloud_cos_bucket.bucket.id - key = tencentcloud_cos_bucket_object.object.key +# Using CORS +resource "tencentcloud_cos_bucket" "bucket_with_cors" { + bucket = "bucket-with-cors-${local.app_id}" + acl = "public-read-write" + + cors_rules { + allowed_origins = ["http://*.abc.com"] + allowed_methods = ["PUT", "POST"] + allowed_headers = ["*"] + max_age_seconds = 300 + expose_headers = ["Etag"] + } } -data "tencentcloud_cos_buckets" "data_bucket" { - bucket_prefix = tencentcloud_cos_bucket.bucket.id - tags = tencentcloud_cos_bucket.bucket.tags +# Using object lifecycle +resource "tencentcloud_cos_bucket" "bucket_with_lifecycle" { + bucket = "bucket-with-lifecycle-${local.app_id}" + acl = "public-read-write" + + lifecycle_rules { + filter_prefix = "path1/" + + transition { + days = 30 + storage_class = "STANDARD_IA" + } + + expiration { + days = 90 + } + } } -resource "tencentcloud_cos_bucket_policy" "cos_policy" { - bucket = "mycos-1258798060" - policy = var.policy +# Using replication +resource "tencentcloud_cos_bucket" "bucket_replicate" { + bucket = "bucket-replicate-${local.app_id}" + acl = "private" + versioning_enable = true } -resource "tencentcloud_cos_buckets" "verbose_acl_bucket" { - bucket_prefix = "mycos-1258798060" - acl_body = var.acl_body +resource "tencentcloud_cos_bucket" "bucket_with_replication" { + bucket = "bucket-with-replication-${local.app_id}" + acl = "private" + versioning_enable = true + replica_role = "qcs::cam::uin/${local.owner_uin}:uin/${local.uin}" + replica_rules { + id = "test-rep1" + status = "Enabled" + prefix = "dist" + destination_bucket = "qcs::cos:${local.region}::${tencentcloud_cos_bucket.bucket_replicate.bucket}" + } } \ No newline at end of file diff --git a/examples/tencentcloud-cos/variables.tf b/examples/tencentcloud-cos/variables.tf deleted file mode 100644 index 71c7a889ab..0000000000 --- a/examples/tencentcloud-cos/variables.tf +++ /dev/null @@ -1,70 +0,0 @@ -variable "bucket-name" { - default = "bucket-test-1258798060" -} - -variable "object-name" { - default = "object-test" -} - -variable "acl" { - default = "public-read" -} - -variable "object-content" { - default = "terraform tencent cloud cos object" -} - -variable "policy" { - default = < - - qcs::cam::uin/100000000001:uin/100000000001 - - - - - http://cam.qcloud.com/groups/global/AllUsers - - READ - - - - qcs::cam::uin/100000000001:uin/100000000001 - - WRITE - - - - qcs::cam::uin/100000000001:uin/100000000001 - - READ_ACP - - - -EOF -} \ No newline at end of file diff --git a/examples/tencentcloud-emr/main.tf b/examples/tencentcloud-emr/main.tf new file mode 100644 index 0000000000..cb76a36f92 --- /dev/null +++ b/examples/tencentcloud-emr/main.tf @@ -0,0 +1,79 @@ +data "tencentcloud_instance_types" "cvm4c8m" { + exclude_sold_out=true + cpu_core_count=4 + memory_size=8 + filter { + name = "instance-charge-type" + values = ["POSTPAID_BY_HOUR"] + } + filter { + name = "zone" + values = [var.availability_zone] + } +} + +resource "tencentcloud_vpc" "emr_vpc" { + name = "emr-vpc" + cidr_block = "10.0.0.0/16" +} + +resource "tencentcloud_subnet" "emr_subnet" { + availability_zone = var.availability_zone + name = "emr-subnets" + vpc_id = tencentcloud_vpc.emr_vpc.id + cidr_block = "10.0.20.0/28" + is_multicast = false +} + +resource "tencentcloud_security_group" "emr_sg" { + name = "emr-sg" + description = "emr sg" + project_id = 0 +} + +resource "tencentcloud_emr_cluster" "emr_cluster" { + product_id=4 + display_strategy="clusterList" + vpc_settings={ + vpc_id=tencentcloud_vpc.emr_vpc.id + subnet_id=tencentcloud_subnet.emr_subnet.id + } + softwares=[ + "zookeeper-3.6.1", + ] + support_ha=0 + instance_name="emr-cluster-test" + resource_spec { + master_resource_spec { + mem_size=8192 + cpu=4 + disk_size=100 + disk_type="CLOUD_PREMIUM" + spec="CVM.${data.tencentcloud_instance_types.cvm4c8m.instance_types.0.family}" + storage_type=5 + root_size=50 + } + core_resource_spec { + mem_size=8192 + cpu=4 + disk_size=100 + disk_type="CLOUD_PREMIUM" + spec="CVM.${data.tencentcloud_instance_types.cvm4c8m.instance_types.0.family}" + storage_type=5 + root_size=50 + } + master_count=1 + core_count=2 + } + login_settings={ + password="Tencent@cloud123" + } + time_span=3600 + time_unit="s" + pay_mode=0 + placement={ + zone=var.availability_zone + project_id=0 + } + sg_id=tencentcloud_security_group.emr_sg.id +} \ No newline at end of file diff --git a/examples/tencentcloud-emr/variables.tf b/examples/tencentcloud-emr/variables.tf new file mode 100644 index 0000000000..7b512f3308 --- /dev/null +++ b/examples/tencentcloud-emr/variables.tf @@ -0,0 +1,3 @@ +variable "availability_zone" { + default = "ap-guangzhou-3" +} \ No newline at end of file diff --git a/examples/tencentcloud-emr/version.tf b/examples/tencentcloud-emr/version.tf new file mode 100644 index 0000000000..133d0d73e7 --- /dev/null +++ b/examples/tencentcloud-emr/version.tf @@ -0,0 +1,3 @@ +terraform { + required_version = ">= 0.12" +} \ No newline at end of file diff --git a/tencentcloud/resource_tc_cos_bucket.go b/tencentcloud/resource_tc_cos_bucket.go index 3969a07399..b3262bea97 100644 --- a/tencentcloud/resource_tc_cos_bucket.go +++ b/tencentcloud/resource_tc_cos_bucket.go @@ -6,18 +6,29 @@ Example Usage Private Bucket ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "private_sbucket" { + bucket = "private-bucket-${local.app_id}" acl = "private" } ``` - Creation of multiple available zone bucket ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "multi_zone_bucket" { + bucket = "multi-zone-bucket-${local.app_id}" acl = "private" multi_az = true versioning_enable = true @@ -28,8 +39,14 @@ resource "tencentcloud_cos_bucket" "mycos" { Using verbose acl ```hcl -resource "tencentcloud_cos_bucket" "with_acl_body" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_acl" { + bucket = "bucketwith-acl-${local.app_id}" # NOTE: Specify the acl_body by the priority sequence of permission and user type with the following sequence: `CanonicalUser with READ`, `CanonicalUser with WRITE`, `CanonicalUser with FULL_CONTROL`, `CanonicalUser with WRITE_ACP`, `CanonicalUser with READ_ACP`, then specify the `Group` of permissions same as `CanonicalUser`. acl_body = < @@ -99,8 +116,14 @@ EOF Static Website ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_static_website" { + bucket = "bucket-with-static-website-${local.app_id}" website { index_document = "index.html" @@ -109,15 +132,21 @@ resource "tencentcloud_cos_bucket" "mycos" { } output "endpoint_test" { - value = tencentcloud_cos_bucket.mycos.website.0.endpoint + value = tencentcloud_cos_bucket.bucket_with_static_website.website.0.endpoint } ``` Using CORS ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_cors" { + bucket = "bucket-with-cors-${local.app_id}" acl = "public-read-write" cors_rules { @@ -133,15 +162,21 @@ resource "tencentcloud_cos_bucket" "mycos" { Using object lifecycle ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_lifecycle" { + bucket = "bucket-with-lifecycle-${local.app_id}" acl = "public-read-write" lifecycle_rules { filter_prefix = "path1/" transition { - date = "2019-06-01" + days = 30 storage_class = "STANDARD_IA" } @@ -152,116 +187,37 @@ resource "tencentcloud_cos_bucket" "mycos" { } ``` -Using custom origin domain settings - +Using replication ```hcl -resource "tencentcloud_cos_bucket" "with_origin" { - bucket = "mycos-1258798060" - acl = "private" - origin_domain_rules { - domain = "abc.example.com" - type = "REST" - status = "ENABLE" - } -} -``` +data "tencentcloud_user_info" "info" {} -Using origin-pull settings -```hcl -resource "tencentcloud_cos_bucket" "with_origin" { - bucket = "mycos-1258798060" - acl = "private" - origin_pull_rules { - priority = 1 - sync_back_to_source = false - host = "abc.example.com" - prefix = "/" - protocol = "FOLLOW" // "HTTP" "HTTPS" - follow_query_string = true - follow_redirection = true - follow_http_headers = ["origin", "host"] - custom_http_headers = { - "x-custom-header" = "custom_value" - } - } +locals { + app_id = data.tencentcloud_user_info.info.app_id + uin = data.tencentcloud_user_info.info.uin + owner_uin = data.tencentcloud_user_info.info.owner_uin + region = "ap-guangzhou" } -``` -Using replication -```hcl -resource "tencentcloud_cos_bucket" "replica1" { - bucket = "tf-replica-foo-1234567890" +resource "tencentcloud_cos_bucket" "bucket_replicate" { + bucket = "bucket-replicate-${local.app_id}" acl = "private" versioning_enable = true } -resource "tencentcloud_cos_bucket" "with_replication" { - bucket = "tf-bucket-replica-1234567890" +resource "tencentcloud_cos_bucket" "bucket_with_replication" { + bucket = "bucket-with-replication-${local.app_id}" acl = "private" versioning_enable = true - replica_role = "qcs::cam::uin/100000000001:uin/100000000001" + replica_role = "qcs::cam::uin/${local.owner_uin}:uin/${local.uin}" replica_rules { id = "test-rep1" status = "Enabled" prefix = "dist" - destination_bucket = "qcs::cos:%s::${tencentcloud_cos_bucket.replica1.bucket}" + destination_bucket = "qcs::cos:${local.region}::${tencentcloud_cos_bucket.bucket_replicate.bucket}" } } ``` -Setting log status - -```hcl -resource "tencentcloud_cam_role" "cosLogGrant" { - name = "CLS_QcsRole" - document = < @@ -108,8 +126,14 @@ EOF ### Static Website ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_static_website" { + bucket = "bucket-with-static-website-${local.app_id}" website { index_document = "index.html" @@ -118,15 +142,21 @@ resource "tencentcloud_cos_bucket" "mycos" { } output "endpoint_test" { - value = tencentcloud_cos_bucket.mycos.website.0.endpoint + value = tencentcloud_cos_bucket.bucket_with_static_website.website.0.endpoint } ``` ### Using CORS ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_cors" { + bucket = "bucket-with-cors-${local.app_id}" acl = "public-read-write" cors_rules { @@ -142,15 +172,21 @@ resource "tencentcloud_cos_bucket" "mycos" { ### Using object lifecycle ```hcl -resource "tencentcloud_cos_bucket" "mycos" { - bucket = "mycos-1258798060" +data "tencentcloud_user_info" "info" {} + +locals { + app_id = data.tencentcloud_user_info.info.app_id +} + +resource "tencentcloud_cos_bucket" "bucket_with_lifecycle" { + bucket = "bucket-with-lifecycle-${local.app_id}" acl = "public-read-write" lifecycle_rules { filter_prefix = "path1/" transition { - date = "2019-06-01" + days = 30 storage_class = "STANDARD_IA" } @@ -161,115 +197,38 @@ resource "tencentcloud_cos_bucket" "mycos" { } ``` -### Using custom origin domain settings +### Using replication ```hcl -resource "tencentcloud_cos_bucket" "with_origin" { - bucket = "mycos-1258798060" - acl = "private" - origin_domain_rules { - domain = "abc.example.com" - type = "REST" - status = "ENABLE" - } -} -``` +data "tencentcloud_user_info" "info" {} -### Using origin-pull settings - -```hcl -resource "tencentcloud_cos_bucket" "with_origin" { - bucket = "mycos-1258798060" - acl = "private" - origin_pull_rules { - priority = 1 - sync_back_to_source = false - host = "abc.example.com" - prefix = "/" - protocol = "FOLLOW" // "HTTP" "HTTPS" - follow_query_string = true - follow_redirection = true - follow_http_headers = ["origin", "host"] - custom_http_headers = { - "x-custom-header" = "custom_value" - } - } +locals { + app_id = data.tencentcloud_user_info.info.app_id + uin = data.tencentcloud_user_info.info.uin + owner_uin = data.tencentcloud_user_info.info.owner_uin + region = "ap-guangzhou" } -``` -### Using replication - -```hcl -resource "tencentcloud_cos_bucket" "replica1" { - bucket = "tf-replica-foo-1234567890" +resource "tencentcloud_cos_bucket" "bucket_replicate" { + bucket = "bucket-replicate-${local.app_id}" acl = "private" versioning_enable = true } -resource "tencentcloud_cos_bucket" "with_replication" { - bucket = "tf-bucket-replica-1234567890" +resource "tencentcloud_cos_bucket" "bucket_with_replication" { + bucket = "bucket-with-replication-${local.app_id}" acl = "private" versioning_enable = true - replica_role = "qcs::cam::uin/100000000001:uin/100000000001" + replica_role = "qcs::cam::uin/${local.owner_uin}:uin/${local.uin}" replica_rules { id = "test-rep1" status = "Enabled" prefix = "dist" - destination_bucket = "qcs::cos:%s::${tencentcloud_cos_bucket.replica1.bucket}" + destination_bucket = "qcs::cos:${local.region}::${tencentcloud_cos_bucket.bucket_replicate.bucket}" } } ``` -### Setting log status - -```hcl -resource "tencentcloud_cam_role" "cosLogGrant" { - name = "CLS_QcsRole" - document = <