热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我可以在Aws上使用terraform在Glue上为表名指定一个正则表达式吗?

我想应用以下Terraform

我想应用以下Terraform aws_iam_policy_document data source:

statement {
sid= "DeleteTmpTable"
actiOns= [
"glue:Deletetable",]
resources = [
"arn:aws:glue:eu-west-1:${data.aws_caller_identity.current.account_id}:table/compan-${terraform.workspace}/*_[0-9]+","arn:aws:glue:eu-west-1:${data.aws_caller_identity.current.account_id}:database/company-${terraform.workspace}","arn:aws:glue:eu-west-1:${data.aws_caller_identity.current.account_id}:catalog"
]
}

所以我只能在table_name_454044243243之类的表上允许粘胶删除表,但table_name_blablabla之类的表则不可删除。

但是我在可用的正则表达式上找不到任何信息。


这更多是AWS IAM限制而不是Terraform限制。 IAM allows for either multi character wildcards (*) or single character wildcards (?) but not arbitrary regexes.

尽管Terraform supports regexes对此没有帮助,因为您需要创建一个无效的IAM策略。

您可以做的一个选择是使用Terraform插值受IAM策略影响的资源,因此IAM策略将按字面意义列出所有受影响的资源,而不是作为正则表达式或通配符匹配。

如果您正在使用Terraform创建AWS Glue表,则可以执行以下操作:

variable "tables" {
default = [
"table_name_454044243243","table_name_454044243244",# ...
]
}
resource "aws_glue_catalog_table" "example" {
for_each = toset(tables)
name = each.key
database_name = "MyCatalogDatabase"
}
data "aws_iam_policy_document" "example" {
statement {
sid= "DeleteTmpTable"
actiOns= [
"glue:DeleteTable",]
resources = values(aws_glue_catalog_table.example)[*].arn
}
}

如果您还没有使用Terraform创建Glue表,那么另一种选择是使用external data source进行外壳处理并使用AWS CLI which does support matching by regex with the --expression parameter或Boto 3's get_tables method获取Glue表。未经测试的示例可能类似于以下内容:

data "external" "example" {
program = ["python","${path.module}/example-get-tables.py"]
query = {
database_name = "MyCatalogDatabase"
expression = "compan-${terraform.workspace}/*_[0-9]+"
}
}
data "aws_iam_policy_document" "example" {
statement {
sid= "DeleteTmpTable"
actiOns= [
"glue:DeleteTable",]
resources = data.external.example.tables
}
}

#!/usr/bin/env python3
import json
import sys
import boto3
glue_client = boto3.client('glue')
query = json.loads(sys.stdin)
respOnse= glue_client.get_tables(
DatabaseName=query["database_name"],Expression=query["expression"]
)
tables = [table["name"] for table in response["TableList"]]
print(json.dumps("tables": tables))

全部失败,我强烈建议您为资源分配更好的名称空间,以便即使您可以控制表的创建方式,也可以在IAM策略中使用*通配符匹配前缀或后缀。


推荐阅读
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • python中使用正则表达式的步骤:1.导入re模块:importre2.初始化一个Regex对象:re.compile()3.刚刚创建的 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Iwanttointegratesort,order,maxandoffsetinafindAllquery.Thefollowingworksfine:我想在fin ... [详细]
  • Non-ASCIIhelponitsownisOK: ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • 2.ElasticSearch练习索引 : sms-logs-index类型:sms-logs-type   数据导入部分PUTsms_logs_indexsms_logs_typ ... [详细]
author-avatar
大海2502902497
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有