solution/solution-log-audit-using-sls/step3-cold-archive-to-oss/main.tf (104 lines of code) (raw):

provider "alicloud" { region = var.logarchive_central_region } # assume role to logarchive account provider "alicloud" { alias = "logarchive" region = var.logarchive_central_region assume_role { role_arn = format("acs:ram::%s:role/ResourceDirectoryAccountAccessRole", var.logarchive_account_id) session_name = "WellArchitectedSolutionSetup" session_expiration = 999 } } provider "random" {} resource "alicloud_oss_bucket" "logarchive" { count = try(var.is_oss_bucket_existed, false) == true ? 0 : 1 provider = alicloud.logarchive bucket = var.oss_bucket_name storage_class = "ColdArchive" redundancy_type = "LRS" } module "logarchive_ram_role" { source = "../modules/ram-role" count = try(var.is_logarchive_ram_role_existed, false) == true ? 0 : 1 providers = { alicloud = alicloud.logarchive } role_name = var.logarchive_ram_role_name role_document = <<EOF { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" } EOF policy_name = format("%s-policy", var.logarchive_ram_role_name) policy_document = <<EOF { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:GetCursorOrData", "log:ListShards" ], "Resource": [ "acs:log:*:*:project/${var.central_sls_project}/logstore/*", "acs:log:*:*:project/${var.central_sls_project}/logstore/*/*" ] }, { "Effect": "Allow", "Action": "oss:PutObject", "Resource": [ "acs:oss:*:*:${var.oss_bucket_name}", "acs:oss:*:*:${var.oss_bucket_name}/*" ] } ] } EOF } # log cold archive to oss resource "random_string" "logarchive" { for_each = { for export in var.central_sls_logstore_exports : export.logstore_name => export } length = 16 special = false upper = false } resource "alicloud_log_oss_export" "logarchive" { for_each = { for export in var.central_sls_logstore_exports : export.logstore_name => export } provider = alicloud.logarchive project_name = var.central_sls_project logstore_name = each.key export_name = format("%s%s", each.value.export_name_prefix == null ? "cold-logarchive-" : each.value.export_name_prefix, random_string.logarchive[each.key].result) display_name = "cold-logarchive" prefix = try(each.value.oss_bucket_directory, null) suffix = try(each.value.suffix, null) bucket = var.oss_bucket_name buffer_interval = try(each.value.buffer_interval, null) == null ? 300 : each.value.buffer_interval buffer_size = try(each.value.buffer_size, null) == null ? 256 : each.value.buffer_size role_arn = format("acs:ram::%s:role/%s", var.logarchive_account_id, var.logarchive_ram_role_name) log_read_role_arn = format("acs:ram::%s:role/%s", var.logarchive_account_id, var.logarchive_ram_role_name) compress_type = try(each.value.compress_type, null) == null ? "snappy" : each.value.compress_type path_format = "%Y/%m/%d/%H/%M" time_zone = try(each.value.time_zone, null) == null ? "+0800" : each.value.time_zone content_type = try(each.value.content_type, null) == null ? "json" : each.value.content_type depends_on = [ alicloud_oss_bucket.logarchive, module.logarchive_ram_role ] }