【问题标题】:Substitute variable with bucket name用存储桶名称替换变量
【发布时间】: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

【问题讨论】:

    标签: amazon-cloudformation


    【解决方案1】:

    你可以external_location = 's3://${myS3Bucket}/optimized-data11/'

    【讨论】:

      【解决方案2】:

      通常您使用Fn::Sub 替换某些输入字符串中的变量。

      在您的 YAML 中,这将类似于:

          QueryString: !Sub
            - |-
              CREATE table new_parquet11
              WITH (format='PARQUET', 
              parquet_compression='SNAPPY', 
              partitioned_by=array['year'], 
              external_location = 's3://${myS3Bucket}/optimized-data11/') 
              ...
      

      抱歉,我不会提供 JSON 语法,因为它对于多行值来说太可怕了。

      【讨论】:

      • @shantanuo 请参阅 YAML 示例 here。 YAML 语法有点棘手,您可能需要尝试一下。
      猜你喜欢
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多