te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>amazon web services - aws_glue_catalog_database is having checkbox checked for `Default permissions for newly created tables` by
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

amazon web services - aws_glue_catalog_database is having checkbox checked for `Default permissions for newly created tables` by

programmeradmin2浏览0评论

I have a terraform resource defined for aws_glue_catalog_database, but by default it is checking the checkbox under Default permission for newly created tables. I have tried keeping the create_table_default_permission as null and removing the parameter; nothing helped.

Finally I tried manually editing the resource and unchecked the checkbox and when imported I was getting an error as

Error: Resource already managed by Terraform │ │ Terraform is already managing a remote object for module.glue_database["_lh_abc_xyz"].aws_glue_catalog_database.this[0]. To import to this address you must first remove the existing object from the state.

resource "aws_glue_catalog_database" "this" {
  count        = var.create_glue_catalog_database ? 1 : 0
  name         = var.catalog_database_name
  description  = var.catalog_database_description
  catalog_id   = var.catalog_id
  location_uri = var.location_uri
  parameters   = var.parameters
# create_table_default_permission {}
# create_table_default_permission = []
#  dynamic "create_table_default_permission" {
#    for_each = var.create_table_default_permission != null ? [true] : []
#     
#     content {
#      permissions = try(var.create_table_default_permission.permissions, null)
#       dynamic "principal" {
#        for_each = try(var.create_table_default_permission.principal, null) != null ? [true] : []
#         
#         content {
#          data_lake_principal_identifier = try(var.create_table_default_permission.principal.data_lake_principal_identifier, null)
#        }
#      }
#    }
#  }


  dynamic "target_database" {
    for_each = var.target_database != null ? [true] : []

    content {
      catalog_id    = var.target_database.catalog_id
      database_name = var.target_database.database_name
    }
  }

  tags = merge(
            var.standard_tags,
            var.tags,
            var.security_tags
          )
}

module "glue_database" {
  for_each                     = toset([var.glue_database_xyz, var.glue_database_pqr])
  source                       = "./module"
  create_glue_catalog_database = true
  catalog_database_name        = each.key
  catalog_database_description = "Database for ${var.pipeline} pipeline"
#   location_uri                 = local.data_source
  standard_tags = merge(localmon_primary_tags, var.mandatory_tags)
# create_table_default_permission = []
}

I have a terraform resource defined for aws_glue_catalog_database, but by default it is checking the checkbox under Default permission for newly created tables. I have tried keeping the create_table_default_permission as null and removing the parameter; nothing helped.

Finally I tried manually editing the resource and unchecked the checkbox and when imported I was getting an error as

Error: Resource already managed by Terraform │ │ Terraform is already managing a remote object for module.glue_database["_lh_abc_xyz"].aws_glue_catalog_database.this[0]. To import to this address you must first remove the existing object from the state.

resource "aws_glue_catalog_database" "this" {
  count        = var.create_glue_catalog_database ? 1 : 0
  name         = var.catalog_database_name
  description  = var.catalog_database_description
  catalog_id   = var.catalog_id
  location_uri = var.location_uri
  parameters   = var.parameters
# create_table_default_permission {}
# create_table_default_permission = []
#  dynamic "create_table_default_permission" {
#    for_each = var.create_table_default_permission != null ? [true] : []
#     
#     content {
#      permissions = try(var.create_table_default_permission.permissions, null)
#       dynamic "principal" {
#        for_each = try(var.create_table_default_permission.principal, null) != null ? [true] : []
#         
#         content {
#          data_lake_principal_identifier = try(var.create_table_default_permission.principal.data_lake_principal_identifier, null)
#        }
#      }
#    }
#  }


  dynamic "target_database" {
    for_each = var.target_database != null ? [true] : []

    content {
      catalog_id    = var.target_database.catalog_id
      database_name = var.target_database.database_name
    }
  }

  tags = merge(
            var.standard_tags,
            var.tags,
            var.security_tags
          )
}

module "glue_database" {
  for_each                     = toset([var.glue_database_xyz, var.glue_database_pqr])
  source                       = "./module"
  create_glue_catalog_database = true
  catalog_database_name        = each.key
  catalog_database_description = "Database for ${var.pipeline} pipeline"
#   location_uri                 = local.data_source
  standard_tags = merge(localmon_primary_tags, var.mandatory_tags)
# create_table_default_permission = []
}
Share Improve this question edited 2 days ago Marko E 18.2k4 gold badges26 silver badges35 bronze badges asked 2 days ago SaikiranSaikiran 1891 silver badge15 bronze badges 2
  • Did you remove the original resource from the state prior to importing it? – Marko E Commented 2 days ago
  • At first I did not, Later I tried removing it and re-importing it but then I got an error that resource is not defined. – Saikiran Commented yesterday
Add a comment  | 

1 Answer 1

Reset to default 0

Looks like terraform does not support this yet within the resource. I have achieved this through AWS cli but by using terraform null resource.

resource "null_resource" "update_glue_database" {
  for_each = module.glue_database
  triggers = {
    database_name = each.key
  }

  provisioner "local-exec" {
    command = <<EOT
      aws glue update-database \
        --name "${each.key}" \
        --database-input '{"Name": "${each.key}","CreateTableDefaultPermissions": []}' \
        --no-verify-ssl \
        --region ${var.aws_region}
    EOT
  }

  depends_on = [module.glue_database]
}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论