1

从文档AWS::Athena::NamedQuery,不清楚如何将雅典娜附加到同一个堆栈中指定的S3存储桶。将雅典娜和S3连接在同一个Cloudformation栈中

如果我不得不从example猜,我会想象,你可以写像一个模板,

Resources: 
    MyS3Bucket: 
    Type: AWS::S3::Bucket 
     ... other params ... 

    AthenaNamedQuery: 
    Type: AWS::Athena::NamedQuery 
    Properties: 
     Database: "db_name" 
     Name: "MostExpensiveWorkflow" 
     QueryString: > 
        CREATE EXTERNAL TABLE db_name.test_table 
        (...) LOCATION s3://.../path/to/folder/ 

希望上述工作的模板?在创建堆栈时,表db_name.test_table可用于在上运行查询吗?

回答

1

原来,你连接S3和雅典娜的方式是做一个胶水表!我多么愚蠢!当然胶水是你如何连接的东西!

除了讽刺以外,这是一个模板,使用AWS::Glue::TableAWS::Glue::Database当为我工作,

Resources: 
    MyS3Bucket: 
    Type: AWS::S3::Bucket 

    MyGlueDatabase: 
    Type: AWS::Glue::Database 
    Properties: 
     DatabaseInput: 
     Name: my-glue-database 
     Description: "Glue beats tape" 
     CatalogId: !Ref AWS::AccountId 

    MyGlueTable: 
    Type: AWS::Glue::Table 
    Properties: 
     DatabaseName: !Ref MyGlueDatabase 
     CatalogId: !Ref AWS::AccountId 
     TableInput: 
     Name: my-glue-table 
     Parameters: { "classification" : "csv" } 
     StorageDescriptor: 
      Location: 
      Fn::Sub: "s3://${MyS3Bucket}/" 
      InputFormat: "org.apache.hadoop.mapred.TextInputFormat" 
      OutputFormat: "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat" 
      SerdeInfo: 
      Parameters: { "separatorChar" : "," } 
      SerializationLibrary: "org.apache.hadoop.hive.serde2.OpenCSVSerde" 
      StoredAsSubDirectories: false 
      Columns: 
      - Name: column0 
       Type: string 
      - Name: column1 
       Type: string 

在此之后,数据库和表是在AWS控制台雅典娜!