Шаблон содержит ошибки .: [/ Resources / CloudTrail / Type / EventSelectors] 'нулевые' значения не допускаются в шаблонах в AWS CloudFormation CloudTrail - PullRequest
1 голос
/ 20 января 2020

Я получаю сообщение «Шаблон содержит ошибки. [/ Resources / CloudTrail / Type / EventSelectors]« пустые »значения не допускаются в шаблонах» ошибка при попытке проверить шаблон облачной информации.

"Conditions":
  "S3Enabled":
    "Fn::Equals":
    - "IsS3Enabled"
    - "true"
"Parameters":
  "IsS3Enabled":
    "AllowedValues":
    - "true"
    - "false"
    "Default": "true"
    "Description": "whether you want cloudtrail enabled for S3"
    "Type": "String"
  "LambdaArns":
    "Default": "arn:aws:lambda"
    "Description": "The lambda arns of cloudtrail event selectors"
    "Type": "CommaDelimitedList"
  "S3Arns":
    "Default": "'arn:aws:s3:::'"
    "Description": "The S3 arns of cloudtrail event selectors"
    "Type": "CommaDelimitedList"
"Resources":
  "CloudTrail":
    "DependsOn":
    - "CloudTrailLogBucketPolicy"
    "Properties":
      "EnableLogFileValidation": "true"
      "EventSelectors":
      "DataResources": {"Fn::If" : ["S3Enabled", { "Type": "AWS::S3::Object", "Values": !Ref "S3Arns"}, {"Type": "AWS::Lambda::Function", "Values": !Ref "LambdaArns"}]}
      "IncludeGlobalServiceEvents": "true"
      "IsLogging": "true"
      "IsMultiRegionTrail": "true"
      "S3BucketName":
        "Ref": "CloudTrailLogBucket"
      "S3KeyPrefix": "sample"
      "TrailName": "sample"
    "Type": "AWS::CloudTrail::Trail"

Ресурсы, которые я использую

  1. CloudTrail CloudFormation: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudtrail-trail.html
  2. Fn :: If документация: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html#intrinsic -функция-ссылка -условия-если

Я прошел через похожие вопросы, оба они приводят к отступу, но не могу найти ошибку в моем шаблоне.

  1. AWS Cloudformation [/ Resources / PrivateGateway / Properties] 'нулевые' значения недопустимы в шаблонах
  2. AWS IAM Cloudformation YAML шаблон ошибки: нулевые значения не допускаются

1 Ответ

1 голос
/ 20 января 2020

CloudFormation Linter ловит это с:

E0000: Null value at line 31 column 24


DataResources недостаточно отступ, и EventSelectors и DataResources оба должны быть списками

Все члены списка - это строки, начинающиеся с одного и того же уровня отступа, начинающиеся с "-" (да sh и пробел)


Я бы рекомендовал, чтобы этот фрагмент кода работал без Fn::If, сначала так:

"Resources":
  "CloudTrail":
    "DependsOn":
    - "CloudTrailLogBucketPolicy"
    "Properties":
      "EnableLogFileValidation": "true"
      "EventSelectors":
        - "DataResources":
           - Type: AWS::S3::Object
             Values: !Ref S3Arns

, а затем с помощью Fn::If для установки первого DataResource в списке DataResources

...