Giter Site home page Giter Site logo

aws-cloudformation / cloudformation-template-schema Goto Github PK

View Code? Open in Web Editor NEW
138.0 22.0 24.0 8.35 MB

Inline syntax validation, documentation links and autocompletion for your CloudFormation templates.

License: Apache License 2.0

Java 100.00%
aws aws-cloudformation cloudformation

cloudformation-template-schema's Introduction

AWS CloudFormation Template Schema

The CloudFormation template schema is intended to improve the authoring experience for our customers. It is a simple code process which converts our existing Resource Specifications files into a JSON Schema formatted document. This schema can be integrated into many publicly available IDEs such as Visual Studio Code & PyCharm to provide inline syntax checking and code completion.

Key Features

  1. Complete type-safe template authoring with IntelliSense-based completion
  2. Support for both YAML and JSON templates
  3. Errors flagged for missing required properties
  4. Integrated deep links to CloudFormation documentation for the resource or template section you are editing

What does an integration look like?

Here is a VSCode setup integration example VSCode

How do I set it up?

VS Code

For VS Code please follow the setup/guidelines or install the pre-configured CloudFormation Linter VS Code extension

PyCharm

For PyCharm please follow the setup/guidelines

How do I build and run the tool?

See instructions which describes how to run the tool locally, to generate specifications for only subset of resources or AWS regions.

License

This library is licensed under the Apache 2.0 License.

cloudformation-template-schema's People

Contributors

anshikg avatar dadonzg avatar dchakrav-github avatar dependabot[bot] avatar jlhood avatar kddejong avatar oogetyboogety avatar patmyron avatar rjlohan avatar tobywf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudformation-template-schema's Issues

Cognito deploys only 8 custom:attributes (max allowable is 50) when using CF Template

Are you certain it's a bug?

  • Yes, it looks like a bug

Is the issue caused by a plugin?

  • It is not a plugin issue

Are you using the latest v3 release?

  • Yes, I'm using the latest v3 release

Is there an existing issue for this?

  • I have searched existing issues, it hasn't been reported yet

Issue description

ive deployed cognito resources to create a large amount of custom:attributes. here is a code sample of how I do it in my serverless.yml

resources:
  # Cognito User-Pool and Identity-Pool Services
  Resources:
    CognitoUserPool:
      Type: AWS::Cognito::UserPool
      Properties:
        # Need to generate a name based on the stage
        UserPoolName: ${self:custom.stage}-smart-notes-user-pool
        # User Pool Tags
        UserPoolTags:
          PROJECT: "smart-notes"
          FEATURE: "user-authentication"
          RESOURCE: "jwt-store"
        # Set email as an alias
        UsernameAttributes:
          - email
          # EVENTUALLY DYNAMIC
        AutoVerifiedAttributes:
          - email

        Schema:
          - Name: "userRole"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "superId"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "nickname"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "firstName"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "lastName"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "middleName"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "initials"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "organization"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "title"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1

everything works fine when I do this with anything <= 8 attributes.

however, this time I need more than 8 as you can see by the list above.

unfortunately, server less framework only deploys 8 to cognito even though cloudformation advertises that it can be up to 50.

please help ?!

Service configuration (serverless.yml) content

service: smart-notes-authentication-api

frameworkVersion: "3"

custom:
  # Stages are based on what is passed into the CLI when running
  # serverless commands. Or fallback to settings in provider section.
  #
  stage: ${opt:stage, self:provider.stage}

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-1
  tags:
    PROJECT_OWNER: smart-notes
    PROJECT_ENGINEER: lopezdp
  stackTags:
    PROJECT_RESOURCE: smart-notes-authentication-api
  tracing:
    # Optional, can be true (true equals 'Active'), 'Active' or 'PassThrough'
    lambda: true

  iam:
    role:
      statements:
        - Effect: Allow
          Action:
            - cognito-idp:*
            - "ses:SendEmail"
            - "ses:SendRawEmail"
          # Need to restrict IM Role to the specific table and stage
          Resource:
            - "*"

resources:
  # Cognito User-Pool and Identity-Pool Services
  Resources:
    CognitoUserPool:
      Type: AWS::Cognito::UserPool
      Properties:
        # Need to generate a name based on the stage
        UserPoolName: ${self:custom.stage}-smart-notes-user-pool
        # User Pool Tags
        UserPoolTags:
          PROJECT: "smart-notes"
          FEATURE: "user-authentication"
          RESOURCE: "jwt-store"
        # Set email as an alias
        UsernameAttributes:
          - email
          # EVENTUALLY DYNAMIC
        AutoVerifiedAttributes:
          - email

        Schema:
          - Name: "userRole"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "superId"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "nickname"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "firstName"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "lastName"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "middleName"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "initials"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "organization"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1
          - Name: "title"
            AttributeDataType: "String"
            Mutable: true
            StringAttributeConstraints:
              MaxLength: 256
              MinLength: 1

        VerificationMessageTemplate:
          DefaultEmailOption: CONFIRM_WITH_CODE
          EmailMessage: 'verify with this code {####}'
          EmailSubject: "Confirm your Registration!"

        EmailConfiguration:
          EmailSendingAccount: DEVELOPER
          From: [email protected]
          ReplyToEmailAddress: [email protected]
          SourceArn: arn:aws:ses:us-east-1:325676776482:identity/[email protected]

    CognitoUserPoolClient:
      Type: AWS::Cognito::UserPoolClient
      Properties:
        # Generate an app client name based on the dev/prod stage
        # FIXME: UPDATE USERPOOL!
        ClientName: ${self:custom.stage}-smart-notes-user-pool-client
        UserPoolId:
          Ref: CognitoUserPool
        ExplicitAuthFlows:
          - ALLOW_ADMIN_USER_PASSWORD_AUTH # See also: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html
          - ALLOW_USER_PASSWORD_AUTH
          - ALLOW_REFRESH_TOKEN_AUTH
          - ALLOW_USER_SRP_AUTH
        GenerateSecret: false

    UserPoolDomain:
      Type: AWS::Cognito::UserPoolDomain
      Properties:
        #CustomDomainConfig:
        #CertificateArn: arn:aws:acm:us-west-1:564811092027:certificate/3257712f-7f32-44f4-b859-136a25006b6f
        UserPoolId:
          Ref: CognitoUserPool
        Domain: "physiciansmart"

    # This is the federated identity I need for the user pool
    # to authenticate with
    CognitoIdentityPool:
      Type: AWS::Cognito::IdentityPool
      Properties:
        # Generate a name based on the stage of development
        IdentityPoolName: ${self:custom.stage}SmartNotesIdentityPool
        # Prevent unauthenticated users from using app
        AllowUnauthenticatedIdentities: false
        # Link this to the user-pool created
        CognitoIdentityProviders:
          - ClientId:
              Ref: CognitoUserPoolClient
            ProviderName:
              Fn::GetAtt: ["CognitoUserPool", "ProviderName"]

    # IAM Roles
    CognitoIdentityPoolRoles:
      Type: AWS::Cognito::IdentityPoolRoleAttachment
      Properties:
        IdentityPoolId:
          Ref: CognitoIdentityPool
        Roles:
          authenticated:
            Fn::GetAtt: [CognitoAuthRole, Arn]

    # IAM role used for authenticated users
    CognitoAuthRole:
      Type: AWS::IAM::Role
      Properties:
        Path: /
        AssumeRolePolicyDocument:
          Version: "2012-10-17"
          Statement:
            - Effect: "Allow"
              Principal:
                Federated: "cognito-identity.amazonaws.com"
              Action:
                - "sts:AssumeRoleWithWebIdentity"
              Condition:
                StringEquals:
                  "cognito-identity.amazonaws.com:aud":
                    Ref: CognitoIdentityPool
                "ForAnyValue:StringLike":
                  "cognito-identity.amazonaws.com:amr": authenticated
        Policies:
          - PolicyName: "CognitoAuthorizedPolicy"
            PolicyDocument:
              Version: "2012-10-17"
              Statement:
                - Effect: "Allow"
                  Action:
                    - "mobileanalytics:PutEvents"
                    - "cognito-sync:*"
                    - "cognito-identity:*"
                  Resource: "*"

                # Allow users to invoke the API
                - Effect: "Allow"
                  Action:
                    - "execute-api:Invoke"
                  Resource:
                    Fn::Join:
                      - ""
                      - - "arn:aws:execute-api:"
                        - Ref: AWS::Region
                        - ":"
                        - Ref: AWS::AccountId
                        - ":"
                        - "Fn::ImportValue": ${self:custom.stage}-ApiGatewayRestApiId
                        - "/*"

                # Allow users to upload attachments to their
                # folder inside of the s3 bucket created
                - Effect: "Allow"
                  Action:
                    - "s3:*"
                  Resource:
                    Fn::Join:
                      - ""
                      - - "Fn::ImportValue": ${self:custom.stage}-smartNotesAttachmentsBucketArn
                        - "/private/"
                        - "$"
                        - "{cognito-identity.amazonaws.com:sub}/*"

  # Print out the Id of the User Pool that is created
  Outputs:
    UserPoolId:
      Value:
        Ref: CognitoUserPool

    UserPoolClientId:
      Value:
        Ref: CognitoUserPoolClient

    # Print out the Id of the Identity Pool that is created
    # Outputs:
    IdentityPoolId:
      Value:
        Ref: CognitoIdentityPool

Command name and used flags

SLS_DEBUG=* serverless deploy --verbose --stage dev | tee deploy.out

Command output

[Container] 2023/03/21 19:33:09 Running command npm install -g serverless
48	npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
49	npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
50	npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
51	npm WARN deprecated [email protected]: Please downgrade to v7.1.5 if you need IE/ActiveXObject support OR upgrade to v8.0.0 as we no longer support IE and published an incorrect patch version (see https://github.com/visionmedia/superagent/issues/1731)
52	
53	added 407 packages, and audited 408 packages in 11s
54	
55	67 packages are looking for funding
56	  run `npm fund` for details
57	
58	found 0 vulnerabilities
59	
60	[Container] 2023/03/21 19:33:20 Phase complete: INSTALL State: SUCCEEDED
61	[Container] 2023/03/21 19:33:20 Phase context status code:  Message: 
62	[Container] 2023/03/21 19:33:20 Entering phase PRE_BUILD
63	[Container] 2023/03/21 19:33:20 Phase complete: PRE_BUILD State: SUCCEEDED
64	[Container] 2023/03/21 19:33:20 Phase context status code:  Message: 
65	[Container] 2023/03/21 19:33:20 Entering phase BUILD
66	[Container] 2023/03/21 19:33:20 Running command SLS_DEBUG=* serverless deploy --verbose --stage dev | tee deploy.out
67	
68	Deploying smart-notes-authentication-api to stage dev (us-east-1)
69	
70	Uploading CloudFormation file to S3
71	Uploading State file to S3
72	Creating new change set
73	Waiting for new change set to be created
74	Created change set does not include any changes, removing it
75	Removing unnecessary service artifacts from S3
76	
77	Change set did not include any changes to be deployed. (1s)
78	
79	[Container] 2023/03/21 19:33:26 Running command echo build complete!
80	build complete!
81	
82	[Container] 2023/03/21 19:33:26 Phase complete: BUILD State: SUCCEEDED
83	[Container] 2023/03/21 19:33:26 Phase context status code:  Message: 
84	[Container] 2023/03/21 19:33:26 Entering phase POST_BUILD
85	[Container] 2023/03/21 19:33:26 Running command serverless info --verbose
86	service: smart-notes-authentication-api
87	stage: dev
88	region: us-east-1
89	stack: smart-notes-authentication-api-dev
90	
91	Stack Outputs:
92	  UserPoolClientId: 5m8ejpnn2ohk8638qv9go3i986
93	  UserPoolId: us-east-1_PC1cZPBeP
94	  IdentityPoolId: us-east-1:15e6ad97-06ec-4859-b3a6-7dd2d5ab4616
95	  ServerlessDeploymentBucketName: smart-notes-authenticati-serverlessdeploymentbuck-1a9xx1hssrr0n
96	
97	[Container] 2023/03/21 19:33:29 Running command echo post-build complete!
98	post-build complete!
99	
100	[Container] 2023/03/21 19:33:29 Phase complete: POST_BUILD State: SUCCEEDED
101	[Container] 2023/03/21 19:33:29 Phase context status code:  Message: 


### Environment information

```shell
`npm install -g serverless`

latest

Include intrinsic functions in generated schema

Code-complete will probably be a bit weak as most of the intrinsics take arbitrary expressions as args, but the validation can be helpful. This would require that resource properties can take a literal or an intrinsic expression, so dynamic oneOf extensions will need to be added on the fly for generating resource properties (replacing the generic object option which currently exists)

Build fails with JDK 17

mvn clean package ends with:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  34.071 s
[INFO] Finished at: 2022-04-06T19:46:44+10:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project aws-cloudformation-template-schema: Fatal error compiling: java.lang.ExceptionInInitializerError: Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.compiler does not "opens com.sun.tools.javac.processing" to unnamed module @4abbe41c -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

System:

❯ mvn -v
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /Users/.../.sdkman/candidates/maven/current
Java version: 17.0.2, vendor: Azul Systems, Inc., runtime: /Users/.../.sdkman/candidates/java/17.0.2-zulu/zulu-17.jdk/Contents/Home
Default locale: en_AU, platform encoding: UTF-8
OS name: "mac os x", version: "11.6.1", arch: "aarch64", family: "mac"

Incorrect type. Expected "array".

the following CFN code always creates the Warning 'Incorrect type. Expected "array".' even though it is right sythax:
"Id" : { "Fn::Select" : [ "2", { "Fn::Split": ["/", { "Ref": "AWS::StackId"}]}]} ________________________________~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

is this related to the schema version (https://s3.amazonaws.com/cfn-resource-specifications-us-east-1-prod/schemas/2.15.0/all-spec.json)? is there any newer schema version out there?
or any way to suppress this warning?
vscode_warning

Yaml schema errors on FindInMap_Inside_Sub template

The schema appears to cause the below errors on https://github.com/awslabs/aws-cloudformation-templates/blob/master/aws/services/CloudFormation/FindInMap_Inside_Sub.yaml#L89-L91:

        - {
   87               # This is where we keep the complex things we want inserted into the Fn::Sub literal block
   88               # You can even use Fn::If statements in this section
E  89               LocalFindInMapVarUsername:    !FindInMap [ EnvMap,                !Ref EnvNameParam,         UserToCreate ],     ■ unacceptable node kind for !<!FindInMap> tag; it should be "scalar", not "sequence"
E  90               LocalFindInMapVarWebserver:   !FindInMap [ EnvMap,                !Ref EnvNameParam,         WebServer ],     ■■ unacceptable node kind for !<!FindInMap> tag; it should be "scalar", not "sequence"
E  91               LocalIfVar:                   !If        [ ExampleConditionIfDev, 'This box is development', 'This box is testing' ]     ■■■ missed comma between flow collection entries
   92               }
   93 Outputs:

Add CI to the repo

To enable contributions to flow in cleanly, we should add a CI step to the repo and PR flow.

Schema is not valid

I followed the instructions for configuring VS Code to use the schema. VS Code is saying that the schema is not valid. The exact error message is below.

Schema 'all-spec.json' is not valid:
/definitions/FnOr/properties/description : must be object,boolean

Because of this, there is no auto-complete or linting. I am using the latest version of the redhat.vscode-yaml extension. Similarly, using !GetAtt results in an unresolved tag error but !Ref does not.

YAML schema error on new intrinsics function Fn::ForEach

Hi team,

With the new intrinsic function released, Fn::ForEach, I realize that it's not supported by the schema. I use AWS ToolKit for schema support for features like autocomplete. Everything else works great except when I try to use the new intrinsics, it looks quite nasty.
Screenshot 2023-09-05 at 5 11 56 PM
Screenshot 2023-09-05 at 5 12 06 PM

Would it be possible to support Fn::ForEach in the intrinsics.json schema file?

Best

Error with Pycharm: JSON Schema not found or contain error in 'all-spec.json': Can not load code model for JSON Schema file 'all-spec.json'

Good Morning,

First thank you very much for this tool, this is super useful and make me way more productive using cloudformation!

I have a strange issue and I don't know if it's related to Pycharm or this project, and maybe you could help me on my investigations.

OS: macOS Mojave 10.14.6
IDE: Pycharm 2019.3.3

I am generating the schema using this project by running java -jar target/aws-cloudformation-template-schema-1.0-SNAPSHOT-jar-with-dependencies.jar --output-dir out/

When I add the schema using the local path /path/to/all-spec.json to my Pycharm Preferences | Languages & Frameworks | Schemas and DTDs | JSON Schema Mappings I got the following error: JSON Schema not found or contain error in 'all-spec.json': Can not load code model for JSON Schema file 'all-spec.json'

But if I set up a local server using python -m SimpleHTTPServer and add the localhost url ( http://localhost:8000/all-spec.json) to Pycharm Preferences | Languages & Frameworks | Schemas and DTDs | JSON Schema Mappings then it is working

I tried to download an old file here https://s3.amazonaws.com/cfn-resource-specifications-us-east-1-prod/schemas/2.15.0/all-spec.json and load it locally and it is working locally

So I don't understand why I have an error when I load the generated file locally and not through http. And why I don't have an error with the old file.

I did a vimdiff to try to understand all the difference but it's hard for me to track.

The generated file is 2.6mb and the old file is 1.7mb but idk if it's related

The Unix right are the same.

Do you know a way to check if it's related to pycharm or not?

Did you encounter this issue?

Feel free to reach me if you have any questions,

Thanks!

Schema is invalid, and outdated.

Validing https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml, while using https://s3.amazonaws.com/cfn-resource-specifications-us-east-1-prod/schemas/2.15.0/all-spec.json, I encountered one hard schema error.

In all-spec.json,

   "FnOr" : {
     "type" : "object",
     "properties" : {
       "description" : "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html#intrinsic-function-reference-conditions-or",
       "Fn::Or" : {
         "type" : "array",
         "items" : {
           "$ref" : "#/definitions/Condition"
         },
         "minItems" : 2,
         "maxItems" : 10
       }
     },
     "additionalProperties" : false
   }

Is invalid, description might be in wrong place and should be a sibling of "type" : "array"? Schema refuse to load due to this bug. As of now it says description must be either object or boolean.

After working around this, this sea of validation errors were detected:

[{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 97,
	"startColumn": 5,
	"endLineNumber": 97,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 105,
	"startColumn": 5,
	"endLineNumber": 105,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 115,
	"startColumn": 5,
	"endLineNumber": 115,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 125,
	"startColumn": 5,
	"endLineNumber": 125,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 138,
	"startColumn": 5,
	"endLineNumber": 138,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 151,
	"startColumn": 5,
	"endLineNumber": 151,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property DependsOn is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 158,
	"startColumn": 5,
	"endLineNumber": 158,
	"endColumn": 14
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property Metadata is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 166,
	"startColumn": 5,
	"endLineNumber": 166,
	"endColumn": 13
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"array\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 173,
	"startColumn": 11,
	"endLineNumber": 175,
	"endColumn": 1
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected one of string, object.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 183,
	"startColumn": 16,
	"endLineNumber": 183,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"string | FnBase64 | FnCidr | FnFindInMap | FnGetAtt | FnGetAZs | FnImportValue | FnJoin | object | FnSelect | FnSplit | FnSub\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 183,
	"startColumn": 16,
	"endLineNumber": 183,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property Metadata is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 187,
	"startColumn": 5,
	"endLineNumber": 187,
	"endColumn": 13
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"array\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 194,
	"startColumn": 11,
	"endLineNumber": 196,
	"endColumn": 1
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected one of string, object.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 204,
	"startColumn": 16,
	"endLineNumber": 204,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"string | FnBase64 | FnCidr | FnFindInMap | FnGetAtt | FnGetAZs | FnImportValue | FnJoin | object | FnSelect | FnSplit | FnSub\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 204,
	"startColumn": 16,
	"endLineNumber": 204,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property Metadata is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 208,
	"startColumn": 5,
	"endLineNumber": 208,
	"endColumn": 13
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"array\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 214,
	"startColumn": 11,
	"endLineNumber": 216,
	"endColumn": 1
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected one of string, object.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 224,
	"startColumn": 16,
	"endLineNumber": 224,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"string | FnBase64 | FnCidr | FnFindInMap | FnGetAtt | FnGetAZs | FnImportValue | FnJoin | object | FnSelect | FnSplit | FnSub\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 224,
	"startColumn": 16,
	"endLineNumber": 224,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Property Metadata is not allowed.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 228,
	"startColumn": 5,
	"endLineNumber": 228,
	"endColumn": 13
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"array\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 234,
	"startColumn": 11,
	"endLineNumber": 236,
	"endColumn": 1
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected one of string, object.",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 244,
	"startColumn": 16,
	"endLineNumber": 244,
	"endColumn": 17
},{
	"resource": "/home/username/projects/ansible_aws_eks/playbooks/files/cloudformation/vpc_public_private_subnets-template.yaml",
	"owner": "_generated_diagnostic_collection_name_#1",
	"severity": 8,
	"message": "Incorrect type. Expected \"string | FnBase64 | FnCidr | FnFindInMap | FnGetAtt | FnGetAZs | FnImportValue | FnJoin | object | FnSelect | FnSplit | FnSub\".",
	"source": "yaml-schema: file:///home/username/projects/ansible_aws_eks/schemas/all-spec.json",
	"startLineNumber": 244,
	"startColumn": 16,
	"endLineNumber": 244,
	"endColumn": 17
}]

I'm assuming a cloudformation schema provided by Amazon should pass validation. That link is given in official AWS EKS documentation. It's possible that schema link is not recent, if there is a new link that will have an updated json spec, I'd really appreciate it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.