Ошибка при получении ошибки. Ошибка проверки свойства: [Значение свойства {/ TableInput / ViewOriginalText} не соответствует типу {String}] Облачная информация AWS

Я пытаюсь создать внешнее представление, используя данные из таблиц, но получаю ошибку Ошибка проверки свойства: [Значение свойства {/ TableInput / ViewOriginalText} не соответствует типу {String}] при создании представлений в AWS glue с использованием формирования облака.

Любая идея о разрешении будет оценена по достоинству. Ниже приведен фрагмент кода файла yaml, который я использую.

Заранее спасибо

---
AWSTemplateFormatVersion: 2010-09-09
Description: "Glue Athena database and table configuration"
Parameters:

  MarketingAndSalesDatabaseName:
    Type: String
    MinLength: "4"
    Default: "marketingandsales_qs"
    Description: "Name of the AWS Glue database to contain this CloudFormation template's tables."

  SalesPipelineTableName:
    Type: String
    MinLength: "4"
    Default: "salespipeline_qs"
    Description: "Name of the Sales Pipeline data table in AWS Glue."

Resources:

  ### AWS GLUE RESOURCES ###

  MarketingAndSalesDatabase:
    Type: "AWS::Glue::Database"
    Properties:
      DatabaseInput:
        Description: "Marketing and Sales database (Amazon QuickSight Samples)."
        Name: !Ref MarketingAndSalesDatabaseName
      CatalogId: !Ref AWS::AccountId

  SalesPipelineTable:
    Type: "AWS::Glue::Table"
    DependsOn: MarketingAndSalesDatabase
    Properties:
      TableInput:
        Description: "Sales Pipeline table (Amazon QuickSight Sample)."
        TableType: "VIRTUAL_VIEW"
        Parameters: {
                "CrawlerSchemaDeserializerVersion": "1.0",
                "compressionType": "none",
                "classification": "csv",
                "recordCount": "16831",
                "typeOfData": "file",
                "CrawlerSchemaSerializerVersion": "1.0",
                "columnsOrdered": "true",
                "objectCount": "1",
                "delimiter": ",",
                "skip.header.line.count": "1",
                "averageRecordSize": "119",
                "sizeKey": "2002910",
                "presto_view": "true"
        }
        StorageDescriptor:
          StoredAsSubDirectories: False
          Parameters: {
                  "CrawlerSchemaDeserializerVersion": "1.0",
                  "compressionType": "none",
                  "classification": "csv",
                  "recordCount": "16831",
                  "typeOfData": "file",
                  "CrawlerSchemaSerializerVersion": "1.0",
                  "columnsOrdered": "true",
                  "objectCount": "1",
                  "delimiter": ",",
                  "skip.header.line.count": "1",
                  "averageRecordSize": "119",
                  "sizeKey": "2002910"
          }
          InputFormat: "org.apache.hadoop.mapred.TextInputFormat"
          OutputFormat: "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
          Columns:
            - Type: string
              Name: salesperson
            - Type: string
              Name: lead_name
        ViewOriginalText:
          'Fn::Sub':
            - '/* Presto View: ${View} */'
            - View:
                 'Fn::Base64': !sub '{"catalog": "awsdatacatalog",
                                  "schema":"default",
                                  "columns": [ { "name": "salesperson", "type": "varchar" }, { "name": "lead_name", "type": "varchar" }],
                                  "originalSql": "SELECT salesperson AS salesperson, lead_name AS lead_name FROM marketing_qs_1"
                  }'
        Retention: 0
        Name: !Ref SalesPipelineTableName
      DatabaseName: !Ref MarketingAndSalesDatabaseName
      CatalogId: !Ref AWS::AccountId



Ответы (1)


Эти свойства должны находиться под _1 _ вместо _ 2_:

          Compressed: False
          Location: !Sub "s3://${DataBucketName}/sales/"

Рекомендуем попробовать CloudFormation Linter в VSCode, чтобы увидеть некоторые из этих ошибок в строке при создании шаблонов:

Скриншот кода Visual Studio

[cfn-lint] E3002: Property is an object instead of String at Resources/SalesPipelineTable/Properties/TableInput/ViewOriginalText

Sub также не требуется внутри этого Base64:

[cfn-lint] W1020: Fn::Sub isn't needed because there are no variables at Resources/SalesPipelineTable/Properties/TableInput/ViewOriginalText/Fn::Sub/1/View/Fn::Base64/Fn::Sub

person Pat Myron    schedule 06.09.2020
comment
Отредактировал новый код для вашей ссылки в исходном сообщении - person John; 07.09.2020
comment
Спасибо @pat за ответ, я исправил эти проблемы с помощью cfn-lint. Я столкнулся с новой проблемой E3002. Свойство должно иметь тип String, а не List в Resources / SalesPipelineTable / Properties / TableInput / ViewOriginalText. Извините, я новичок в этих сценариях облачной информации, поэтому мне не удалось найти решение этой проблемы. заранее спасибо - person John; 07.09.2020
comment
@John думает, что я запутал вас дополнительным комментарием о _ 1_, потому что теперь слишком много удалено из _ 2_. Исходный _ 3_ должно быть хорошо - person Pat Myron; 07.09.2020
comment
Спасибо @Pat за ответ. Я внес их изменения и разместил в исходном посте. cfn-lint не показывает никаких ошибок, но образование облаков говорит о том, что YAML сформирован неправильно. Можете ли вы посмотреть на него и понять, почему он выдает ошибку? Заранее спасибо! - person John; 09.09.2020