【发布时间】:2020-03-23 21:23:16
【问题描述】:
我有这个模板可以按预期工作并创建一个 S3 存储桶和一些 athena 查询。
https://datameetgeobk.s3.amazonaws.com/cftemplates/athena_saved_query_blog_partition_parquet.tpl
问题是: 如何将 S3 存储桶名称“athenadata162a”替换为第一步创建的存储桶名称。
external_location = 's3://athenadata162a/optimized-data11/'
创建新存储桶的代码如下所示...
"myS3Bucket" : {
"Type" : "AWS::S3::Bucket"
},
按照建议,将代码更改为 yaml,但仍然出现此错误:
模板验证错误:模板错误:一个或多个 Fn::Sub 内在函数不指定预期的参数。指定一个字符串 作为第一个参数,以及一个可选的第二个参数来指定 字符串中要替换的值的映射
代码:
Resources:
myS3Bucket:
Type: 'AWS::S3::Bucket'
createTableASParquetPartioned:
Type: 'AWS::Athena::NamedQuery'
Properties:
Database: default
Description: Create table as parquet partitioned
Name: Blog2createTableAS
QueryString: !Sub
- |-
CREATE table new_parquet11 WITH (format='PARQUET',
parquet_compression='SNAPPY', partitioned_by=array['year'],
external_location = 's3://myS3Bucket/optimized-data11/') AS SELECT
id, date, element, datavalue, mflag, qflag, sflag, obstime,
substr("date",1,4) AS year FROM original_csv WHERE
cast(substr("date",1,4) AS bigint) >= 2015 AND cast(substr("date",1,4)
AS bigint) <= 2019
【问题讨论】: