Amazon使用提交查询的用户的IAM凭据从输入的S3存储桶中读取数据;查询结果存储在单独的S3桶中。
以下是Hashicorp站点database.html中的脚本
resource "aws_s3_bucket" "hoge" {
bucket = "hoge"
}
resource "aws_athena_database" "hoge" {
name = "database_name"
bucket = "${aws_s3_bucket.hoge.bucket}"
}上面写着
bucket - (Required) Name of s3 bucket to save the results of the query execution.如何在terraform脚本中指定输入的S3桶?
发布于 2019-08-23 18:51:58
您可以在storage_descriptor资源中使用aws_glue_catalog_table参数:
table.html#parquet-table-for-athena
下面是使用CSV文件创建表的示例:
resource "aws_glue_catalog_table" "aws_glue_catalog_table" {
name = "your_table_name"
database_name = "${aws_athena_database.your_athena_database.name}"
table_type = "EXTERNAL_TABLE"
parameters = {
EXTERNAL = "TRUE"
}
storage_descriptor {
location = "s3://<your-s3-bucket>/your/file/location/"
input_format = "org.apache.hadoop.mapred.TextInputFormat"
output_format = "org.apache.hadoop.mapred.TextInputFormat"
ser_de_info {
name = "my-serde"
serialization_library = "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"
parameters = {
"field.delim" = ","
"skip.header.line.count" = "1"
}
}
columns {
name = "column1"
type = "string"
}
columns {
name = "column2"
type = "string"
}
}
}发布于 2019-03-20 15:45:45
您在数据库中创建的每个表中都指定了输入S3桶,因此没有对其进行全局定义。
到今天为止,API对于雅典娜的管理并没有太多的准备,因此,aws也没有命令,Terraform也没有。没有通过这些方法创建表的“适当”方法。
理论上,您可以创建一个命名查询来创建您的表,然后执行该查询(其中有API功能,但还没有Terraform)。对我来说,这似乎有点混乱,但如果TF获得StartQuery功能,它可能会起作用。雅典娜的异步特性使得我们很难知道这个表是什么时候创建的,所以我可以想象TF不会直接支持表的创建。
涵盖当前可用功能的TF代码如下:https://github.com/terraform-providers/terraform-provider-aws/tree/master/aws
雅典娜函数的API doco在这里:Operations.html
https://stackoverflow.com/questions/52505817
复制相似问题