From bc75922eb604d6e43f290912234a644c4d7584b5 Mon Sep 17 00:00:00 2001 From: Paul Maddox Date: Thu, 13 Feb 2020 10:00:48 +0400 Subject: [PATCH] feat(schema): CloudFormation Updates (2020-02-13) (#266) Updated the following AWS CloudFormation resources: - AWS::WAFv2::WebACLAssociation - AWS::EC2::ClientVpnEndpoint - AWS::AppConfig::ConfigurationProfile - AWS::AppSync::GraphQLApi - AWS::AppConfig::Deployment - AWS::AppConfig::Environment - AWS::ACMPCA::Certificate - AWS::ACMPCA::CertificateAuthority - AWS::AppConfig::DeploymentStrategy - AWS::AppConfig::Application - AWS::OpsWorksCM::Server - AWS::ACMPCA::CertificateAuthority.RevocationConfiguration - AWS::AppConfig::ConfigurationProfile.Validators - AWS::EC2::LaunchTemplate.MetadataOptions - AWS::Backup::BackupPlan.BackupRuleResourceType - AWS::MediaLive::Channel.OutputDestination - AWS::Backup::BackupPlan.CopyActionResourceType - AWS::ACMPCA::Certificate.Validity - AWS::AppConfig::Environment.Monitors - AWS::AppConfig::Environment.Tags - AWS::EC2::LaunchTemplate.Placement - AWS::ACMPCA::CertificateAuthority.Subject - AWS::AppConfig::Application.Tags - AWS::AppConfig::Deployment.Tags - AWS::EC2::LaunchTemplate.LaunchTemplateElasticInferenceAccelerator - AWS::EC2::LaunchTemplate.LaunchTemplateData - AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings - AWS::ACMPCA::CertificateAuthority.CrlConfiguration - AWS::AppConfig::ConfigurationProfile.Tags - AWS::AppConfig::DeploymentStrategy.Tags --- .../acmpca/aws-acmpca-certificate.go | 2 +- .../acmpca/aws-acmpca-certificate_validity.go | 37 + .../acmpca/aws-acmpca-certificateauthority.go | 4 +- ...a-certificateauthority_crlconfiguration.go | 47 + ...ficateauthority_revocationconfiguration.go | 32 + ...aws-acmpca-certificateauthority_subject.go | 97 ++ cloudformation/all.go | 151 +++ .../appconfig/aws-appconfig-application.go | 107 ++ .../aws-appconfig-application_tags.go | 37 + .../aws-appconfig-configurationprofile.go | 127 +++ ...aws-appconfig-configurationprofile_tags.go | 37 + ...pconfig-configurationprofile_validators.go | 37 + .../appconfig/aws-appconfig-deployment.go | 127 +++ .../aws-appconfig-deployment_tags.go | 37 + .../aws-appconfig-deploymentstrategy.go | 132 +++ .../aws-appconfig-deploymentstrategy_tags.go | 37 + .../appconfig/aws-appconfig-environment.go | 117 +++ .../aws-appconfig-environment_monitors.go | 37 + .../aws-appconfig-environment_tags.go | 37 + .../appsync/aws-appsync-graphqlapi.go | 5 + ...ackup-backupplan_backupruleresourcetype.go | 5 + ...ackup-backupplan_copyactionresourcetype.go | 37 + .../ec2/aws-ec2-clientvpnendpoint.go | 5 + ...s-ec2-launchtemplate_launchtemplatedata.go | 5 + ...unchtemplateelasticinferenceaccelerator.go | 5 + .../aws-ec2-launchtemplate_metadataoptions.go | 42 + .../ec2/aws-ec2-launchtemplate_placement.go | 15 + ...tiplexprogramchanneldestinationsettings.go | 37 + ...aws-medialive-channel_outputdestination.go | 5 + .../opsworkscm/aws-opsworkscm-server.go | 6 + .../wafv2/aws-wafv2-webaclassociation.go | 102 ++ schema/cloudformation.go | 957 +++++++++++++++--- schema/cloudformation.schema.json | 957 +++++++++++++++--- schema/sam.go | 957 +++++++++++++++--- schema/sam.schema.json | 957 +++++++++++++++--- 35 files changed, 4829 insertions(+), 507 deletions(-) create mode 100644 cloudformation/acmpca/aws-acmpca-certificate_validity.go create mode 100644 cloudformation/acmpca/aws-acmpca-certificateauthority_crlconfiguration.go create mode 100644 cloudformation/acmpca/aws-acmpca-certificateauthority_revocationconfiguration.go create mode 100644 cloudformation/acmpca/aws-acmpca-certificateauthority_subject.go create mode 100644 cloudformation/appconfig/aws-appconfig-application.go create mode 100644 cloudformation/appconfig/aws-appconfig-application_tags.go create mode 100644 cloudformation/appconfig/aws-appconfig-configurationprofile.go create mode 100644 cloudformation/appconfig/aws-appconfig-configurationprofile_tags.go create mode 100644 cloudformation/appconfig/aws-appconfig-configurationprofile_validators.go create mode 100644 cloudformation/appconfig/aws-appconfig-deployment.go create mode 100644 cloudformation/appconfig/aws-appconfig-deployment_tags.go create mode 100644 cloudformation/appconfig/aws-appconfig-deploymentstrategy.go create mode 100644 cloudformation/appconfig/aws-appconfig-deploymentstrategy_tags.go create mode 100644 cloudformation/appconfig/aws-appconfig-environment.go create mode 100644 cloudformation/appconfig/aws-appconfig-environment_monitors.go create mode 100644 cloudformation/appconfig/aws-appconfig-environment_tags.go create mode 100644 cloudformation/backup/aws-backup-backupplan_copyactionresourcetype.go create mode 100644 cloudformation/ec2/aws-ec2-launchtemplate_metadataoptions.go create mode 100644 cloudformation/medialive/aws-medialive-channel_multiplexprogramchanneldestinationsettings.go create mode 100644 cloudformation/wafv2/aws-wafv2-webaclassociation.go diff --git a/cloudformation/acmpca/aws-acmpca-certificate.go b/cloudformation/acmpca/aws-acmpca-certificate.go index 4d56caf582..599f86a0b3 100644 --- a/cloudformation/acmpca/aws-acmpca-certificate.go +++ b/cloudformation/acmpca/aws-acmpca-certificate.go @@ -35,7 +35,7 @@ type Certificate struct { // Validity AWS CloudFormation Property // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-validity - Validity interface{} `json:"Validity,omitempty"` + Validity *Certificate_Validity `json:"Validity,omitempty"` // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/cloudformation/acmpca/aws-acmpca-certificate_validity.go b/cloudformation/acmpca/aws-acmpca-certificate_validity.go new file mode 100644 index 0000000000..2a3c96c4a7 --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificate_validity.go @@ -0,0 +1,37 @@ +package acmpca + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Certificate_Validity AWS CloudFormation Resource (AWS::ACMPCA::Certificate.Validity) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-validity.html +type Certificate_Validity struct { + + // Type AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-validity.html#cfn-acmpca-certificate-validity-type + Type string `json:"Type,omitempty"` + + // Value AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-validity.html#cfn-acmpca-certificate-validity-value + Value int `json:"Value"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Certificate_Validity) AWSCloudFormationType() string { + return "AWS::ACMPCA::Certificate.Validity" +} diff --git a/cloudformation/acmpca/aws-acmpca-certificateauthority.go b/cloudformation/acmpca/aws-acmpca-certificateauthority.go index 2d74fab541..8e5ca8fcd9 100644 --- a/cloudformation/acmpca/aws-acmpca-certificateauthority.go +++ b/cloudformation/acmpca/aws-acmpca-certificateauthority.go @@ -21,7 +21,7 @@ type CertificateAuthority struct { // RevocationConfiguration AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-revocationconfiguration - RevocationConfiguration interface{} `json:"RevocationConfiguration,omitempty"` + RevocationConfiguration *CertificateAuthority_RevocationConfiguration `json:"RevocationConfiguration,omitempty"` // SigningAlgorithm AWS CloudFormation Property // Required: true @@ -31,7 +31,7 @@ type CertificateAuthority struct { // Subject AWS CloudFormation Property // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-subject - Subject interface{} `json:"Subject,omitempty"` + Subject *CertificateAuthority_Subject `json:"Subject,omitempty"` // Tags AWS CloudFormation Property // Required: false diff --git a/cloudformation/acmpca/aws-acmpca-certificateauthority_crlconfiguration.go b/cloudformation/acmpca/aws-acmpca-certificateauthority_crlconfiguration.go new file mode 100644 index 0000000000..42f079a539 --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificateauthority_crlconfiguration.go @@ -0,0 +1,47 @@ +package acmpca + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// CertificateAuthority_CrlConfiguration AWS CloudFormation Resource (AWS::ACMPCA::CertificateAuthority.CrlConfiguration) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html +type CertificateAuthority_CrlConfiguration struct { + + // CustomCname AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-customcname + CustomCname string `json:"CustomCname,omitempty"` + + // Enabled AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-enabled + Enabled bool `json:"Enabled,omitempty"` + + // ExpirationInDays AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-expirationindays + ExpirationInDays int `json:"ExpirationInDays,omitempty"` + + // S3BucketName AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-s3bucketname + S3BucketName string `json:"S3BucketName,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *CertificateAuthority_CrlConfiguration) AWSCloudFormationType() string { + return "AWS::ACMPCA::CertificateAuthority.CrlConfiguration" +} diff --git a/cloudformation/acmpca/aws-acmpca-certificateauthority_revocationconfiguration.go b/cloudformation/acmpca/aws-acmpca-certificateauthority_revocationconfiguration.go new file mode 100644 index 0000000000..57d20c57b6 --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificateauthority_revocationconfiguration.go @@ -0,0 +1,32 @@ +package acmpca + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// CertificateAuthority_RevocationConfiguration AWS CloudFormation Resource (AWS::ACMPCA::CertificateAuthority.RevocationConfiguration) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-revocationconfiguration.html +type CertificateAuthority_RevocationConfiguration struct { + + // CrlConfiguration AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-revocationconfiguration.html#cfn-acmpca-certificateauthority-revocationconfiguration-crlconfiguration + CrlConfiguration *CertificateAuthority_CrlConfiguration `json:"CrlConfiguration,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *CertificateAuthority_RevocationConfiguration) AWSCloudFormationType() string { + return "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration" +} diff --git a/cloudformation/acmpca/aws-acmpca-certificateauthority_subject.go b/cloudformation/acmpca/aws-acmpca-certificateauthority_subject.go new file mode 100644 index 0000000000..815dd49f6e --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificateauthority_subject.go @@ -0,0 +1,97 @@ +package acmpca + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// CertificateAuthority_Subject AWS CloudFormation Resource (AWS::ACMPCA::CertificateAuthority.Subject) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html +type CertificateAuthority_Subject struct { + + // CommonName AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-commonname + CommonName string `json:"CommonName,omitempty"` + + // Country AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-country + Country string `json:"Country,omitempty"` + + // DistinguishedNameQualifier AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-distinguishednamequalifier + DistinguishedNameQualifier string `json:"DistinguishedNameQualifier,omitempty"` + + // GenerationQualifier AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-generationqualifier + GenerationQualifier string `json:"GenerationQualifier,omitempty"` + + // GivenName AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-givenname + GivenName string `json:"GivenName,omitempty"` + + // Initials AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-initials + Initials string `json:"Initials,omitempty"` + + // Locality AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-locality + Locality string `json:"Locality,omitempty"` + + // Organization AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-organization + Organization string `json:"Organization,omitempty"` + + // OrganizationalUnit AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-organizationalunit + OrganizationalUnit string `json:"OrganizationalUnit,omitempty"` + + // Pseudonym AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-pseudonym + Pseudonym string `json:"Pseudonym,omitempty"` + + // SerialNumber AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-serialnumber + SerialNumber string `json:"SerialNumber,omitempty"` + + // State AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-state + State string `json:"State,omitempty"` + + // Surname AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-surname + Surname string `json:"Surname,omitempty"` + + // Title AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-title + Title string `json:"Title,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *CertificateAuthority_Subject) AWSCloudFormationType() string { + return "AWS::ACMPCA::CertificateAuthority.Subject" +} diff --git a/cloudformation/all.go b/cloudformation/all.go index 3f4a518818..88459ce968 100644 --- a/cloudformation/all.go +++ b/cloudformation/all.go @@ -8,6 +8,7 @@ import ( "github.com/awslabs/goformation/v4/cloudformation/amplify" "github.com/awslabs/goformation/v4/cloudformation/apigateway" "github.com/awslabs/goformation/v4/cloudformation/apigatewayv2" + "github.com/awslabs/goformation/v4/cloudformation/appconfig" "github.com/awslabs/goformation/v4/cloudformation/applicationautoscaling" "github.com/awslabs/goformation/v4/cloudformation/appmesh" "github.com/awslabs/goformation/v4/cloudformation/appstream" @@ -153,6 +154,11 @@ func AllResources() map[string]Resource { "AWS::ApiGatewayV2::Route": &apigatewayv2.Route{}, "AWS::ApiGatewayV2::RouteResponse": &apigatewayv2.RouteResponse{}, "AWS::ApiGatewayV2::Stage": &apigatewayv2.Stage{}, + "AWS::AppConfig::Application": &appconfig.Application{}, + "AWS::AppConfig::ConfigurationProfile": &appconfig.ConfigurationProfile{}, + "AWS::AppConfig::Deployment": &appconfig.Deployment{}, + "AWS::AppConfig::DeploymentStrategy": &appconfig.DeploymentStrategy{}, + "AWS::AppConfig::Environment": &appconfig.Environment{}, "AWS::AppMesh::Mesh": &appmesh.Mesh{}, "AWS::AppMesh::Route": &appmesh.Route{}, "AWS::AppMesh::VirtualNode": &appmesh.VirtualNode{}, @@ -607,6 +613,7 @@ func AllResources() map[string]Resource { "AWS::WAFv2::RegexPatternSet": &wafv2.RegexPatternSet{}, "AWS::WAFv2::RuleGroup": &wafv2.RuleGroup{}, "AWS::WAFv2::WebACL": &wafv2.WebACL{}, + "AWS::WAFv2::WebACLAssociation": &wafv2.WebACLAssociation{}, "AWS::WorkSpaces::Workspace": &workspaces.Workspace{}, "Alexa::ASK::Skill": &ask.Skill{}, } @@ -1572,6 +1579,126 @@ func (t *Template) GetApiGatewayV2StageWithName(name string) (*apigatewayv2.Stag return nil, fmt.Errorf("resource %q of type apigatewayv2.Stage not found", name) } +// GetAllAppConfigApplicationResources retrieves all appconfig.Application items from an AWS CloudFormation template +func (t *Template) GetAllAppConfigApplicationResources() map[string]*appconfig.Application { + results := map[string]*appconfig.Application{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *appconfig.Application: + results[name] = resource + } + } + return results +} + +// GetAppConfigApplicationWithName retrieves all appconfig.Application items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetAppConfigApplicationWithName(name string) (*appconfig.Application, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *appconfig.Application: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type appconfig.Application not found", name) +} + +// GetAllAppConfigConfigurationProfileResources retrieves all appconfig.ConfigurationProfile items from an AWS CloudFormation template +func (t *Template) GetAllAppConfigConfigurationProfileResources() map[string]*appconfig.ConfigurationProfile { + results := map[string]*appconfig.ConfigurationProfile{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *appconfig.ConfigurationProfile: + results[name] = resource + } + } + return results +} + +// GetAppConfigConfigurationProfileWithName retrieves all appconfig.ConfigurationProfile items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetAppConfigConfigurationProfileWithName(name string) (*appconfig.ConfigurationProfile, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *appconfig.ConfigurationProfile: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type appconfig.ConfigurationProfile not found", name) +} + +// GetAllAppConfigDeploymentResources retrieves all appconfig.Deployment items from an AWS CloudFormation template +func (t *Template) GetAllAppConfigDeploymentResources() map[string]*appconfig.Deployment { + results := map[string]*appconfig.Deployment{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *appconfig.Deployment: + results[name] = resource + } + } + return results +} + +// GetAppConfigDeploymentWithName retrieves all appconfig.Deployment items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetAppConfigDeploymentWithName(name string) (*appconfig.Deployment, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *appconfig.Deployment: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type appconfig.Deployment not found", name) +} + +// GetAllAppConfigDeploymentStrategyResources retrieves all appconfig.DeploymentStrategy items from an AWS CloudFormation template +func (t *Template) GetAllAppConfigDeploymentStrategyResources() map[string]*appconfig.DeploymentStrategy { + results := map[string]*appconfig.DeploymentStrategy{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *appconfig.DeploymentStrategy: + results[name] = resource + } + } + return results +} + +// GetAppConfigDeploymentStrategyWithName retrieves all appconfig.DeploymentStrategy items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetAppConfigDeploymentStrategyWithName(name string) (*appconfig.DeploymentStrategy, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *appconfig.DeploymentStrategy: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type appconfig.DeploymentStrategy not found", name) +} + +// GetAllAppConfigEnvironmentResources retrieves all appconfig.Environment items from an AWS CloudFormation template +func (t *Template) GetAllAppConfigEnvironmentResources() map[string]*appconfig.Environment { + results := map[string]*appconfig.Environment{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *appconfig.Environment: + results[name] = resource + } + } + return results +} + +// GetAppConfigEnvironmentWithName retrieves all appconfig.Environment items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetAppConfigEnvironmentWithName(name string) (*appconfig.Environment, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *appconfig.Environment: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type appconfig.Environment not found", name) +} + // GetAllAppMeshMeshResources retrieves all appmesh.Mesh items from an AWS CloudFormation template func (t *Template) GetAllAppMeshMeshResources() map[string]*appmesh.Mesh { results := map[string]*appmesh.Mesh{} @@ -12468,6 +12595,30 @@ func (t *Template) GetWAFv2WebACLWithName(name string) (*wafv2.WebACL, error) { return nil, fmt.Errorf("resource %q of type wafv2.WebACL not found", name) } +// GetAllWAFv2WebACLAssociationResources retrieves all wafv2.WebACLAssociation items from an AWS CloudFormation template +func (t *Template) GetAllWAFv2WebACLAssociationResources() map[string]*wafv2.WebACLAssociation { + results := map[string]*wafv2.WebACLAssociation{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *wafv2.WebACLAssociation: + results[name] = resource + } + } + return results +} + +// GetWAFv2WebACLAssociationWithName retrieves all wafv2.WebACLAssociation items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetWAFv2WebACLAssociationWithName(name string) (*wafv2.WebACLAssociation, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *wafv2.WebACLAssociation: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type wafv2.WebACLAssociation not found", name) +} + // GetAllWorkSpacesWorkspaceResources retrieves all workspaces.Workspace items from an AWS CloudFormation template func (t *Template) GetAllWorkSpacesWorkspaceResources() map[string]*workspaces.Workspace { results := map[string]*workspaces.Workspace{} diff --git a/cloudformation/appconfig/aws-appconfig-application.go b/cloudformation/appconfig/aws-appconfig-application.go new file mode 100644 index 0000000000..9d10bf817b --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-application.go @@ -0,0 +1,107 @@ +package appconfig + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Application AWS CloudFormation Resource (AWS::AppConfig::Application) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html +type Application struct { + + // Description AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-description + Description string `json:"Description,omitempty"` + + // Name AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-name + Name string `json:"Name,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-tags + Tags []Application_Tags `json:"Tags,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Application) AWSCloudFormationType() string { + return "AWS::AppConfig::Application" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r Application) MarshalJSON() ([]byte, error) { + type Properties Application + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *Application) UnmarshalJSON(b []byte) error { + type Properties Application + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = Application(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/appconfig/aws-appconfig-application_tags.go b/cloudformation/appconfig/aws-appconfig-application_tags.go new file mode 100644 index 0000000000..8086098631 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-application_tags.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Application_Tags AWS CloudFormation Resource (AWS::AppConfig::Application.Tags) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html +type Application_Tags struct { + + // Key AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html#cfn-appconfig-application-tags-key + Key string `json:"Key,omitempty"` + + // Value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html#cfn-appconfig-application-tags-value + Value string `json:"Value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Application_Tags) AWSCloudFormationType() string { + return "AWS::AppConfig::Application.Tags" +} diff --git a/cloudformation/appconfig/aws-appconfig-configurationprofile.go b/cloudformation/appconfig/aws-appconfig-configurationprofile.go new file mode 100644 index 0000000000..0c2fea5e82 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-configurationprofile.go @@ -0,0 +1,127 @@ +package appconfig + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ConfigurationProfile AWS CloudFormation Resource (AWS::AppConfig::ConfigurationProfile) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html +type ConfigurationProfile struct { + + // ApplicationId AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-applicationid + ApplicationId string `json:"ApplicationId,omitempty"` + + // Description AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-description + Description string `json:"Description,omitempty"` + + // LocationUri AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-locationuri + LocationUri string `json:"LocationUri,omitempty"` + + // Name AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-name + Name string `json:"Name,omitempty"` + + // RetrievalRoleArn AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-retrievalrolearn + RetrievalRoleArn string `json:"RetrievalRoleArn,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-tags + Tags []ConfigurationProfile_Tags `json:"Tags,omitempty"` + + // Validators AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-validators + Validators []ConfigurationProfile_Validators `json:"Validators,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *ConfigurationProfile) AWSCloudFormationType() string { + return "AWS::AppConfig::ConfigurationProfile" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r ConfigurationProfile) MarshalJSON() ([]byte, error) { + type Properties ConfigurationProfile + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *ConfigurationProfile) UnmarshalJSON(b []byte) error { + type Properties ConfigurationProfile + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = ConfigurationProfile(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/appconfig/aws-appconfig-configurationprofile_tags.go b/cloudformation/appconfig/aws-appconfig-configurationprofile_tags.go new file mode 100644 index 0000000000..2c3e6f7c36 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-configurationprofile_tags.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ConfigurationProfile_Tags AWS CloudFormation Resource (AWS::AppConfig::ConfigurationProfile.Tags) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html +type ConfigurationProfile_Tags struct { + + // Key AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html#cfn-appconfig-configurationprofile-tags-key + Key string `json:"Key,omitempty"` + + // Value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html#cfn-appconfig-configurationprofile-tags-value + Value string `json:"Value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *ConfigurationProfile_Tags) AWSCloudFormationType() string { + return "AWS::AppConfig::ConfigurationProfile.Tags" +} diff --git a/cloudformation/appconfig/aws-appconfig-configurationprofile_validators.go b/cloudformation/appconfig/aws-appconfig-configurationprofile_validators.go new file mode 100644 index 0000000000..881f7ef59c --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-configurationprofile_validators.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ConfigurationProfile_Validators AWS CloudFormation Resource (AWS::AppConfig::ConfigurationProfile.Validators) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html +type ConfigurationProfile_Validators struct { + + // Content AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html#cfn-appconfig-configurationprofile-validators-content + Content string `json:"Content,omitempty"` + + // Type AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html#cfn-appconfig-configurationprofile-validators-type + Type string `json:"Type,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *ConfigurationProfile_Validators) AWSCloudFormationType() string { + return "AWS::AppConfig::ConfigurationProfile.Validators" +} diff --git a/cloudformation/appconfig/aws-appconfig-deployment.go b/cloudformation/appconfig/aws-appconfig-deployment.go new file mode 100644 index 0000000000..b12c6b628d --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-deployment.go @@ -0,0 +1,127 @@ +package appconfig + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Deployment AWS CloudFormation Resource (AWS::AppConfig::Deployment) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html +type Deployment struct { + + // ApplicationId AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-applicationid + ApplicationId string `json:"ApplicationId,omitempty"` + + // ConfigurationProfileId AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-configurationprofileid + ConfigurationProfileId string `json:"ConfigurationProfileId,omitempty"` + + // ConfigurationVersion AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-configurationversion + ConfigurationVersion string `json:"ConfigurationVersion,omitempty"` + + // DeploymentStrategyId AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-deploymentstrategyid + DeploymentStrategyId string `json:"DeploymentStrategyId,omitempty"` + + // Description AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-description + Description string `json:"Description,omitempty"` + + // EnvironmentId AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-environmentid + EnvironmentId string `json:"EnvironmentId,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-tags + Tags []Deployment_Tags `json:"Tags,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Deployment) AWSCloudFormationType() string { + return "AWS::AppConfig::Deployment" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r Deployment) MarshalJSON() ([]byte, error) { + type Properties Deployment + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *Deployment) UnmarshalJSON(b []byte) error { + type Properties Deployment + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = Deployment(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/appconfig/aws-appconfig-deployment_tags.go b/cloudformation/appconfig/aws-appconfig-deployment_tags.go new file mode 100644 index 0000000000..ced15cedf2 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-deployment_tags.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Deployment_Tags AWS CloudFormation Resource (AWS::AppConfig::Deployment.Tags) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-tags.html +type Deployment_Tags struct { + + // Key AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-tags.html#cfn-appconfig-deployment-tags-key + Key string `json:"Key,omitempty"` + + // Value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-tags.html#cfn-appconfig-deployment-tags-value + Value string `json:"Value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Deployment_Tags) AWSCloudFormationType() string { + return "AWS::AppConfig::Deployment.Tags" +} diff --git a/cloudformation/appconfig/aws-appconfig-deploymentstrategy.go b/cloudformation/appconfig/aws-appconfig-deploymentstrategy.go new file mode 100644 index 0000000000..5d89e301b7 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-deploymentstrategy.go @@ -0,0 +1,132 @@ +package appconfig + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// DeploymentStrategy AWS CloudFormation Resource (AWS::AppConfig::DeploymentStrategy) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html +type DeploymentStrategy struct { + + // DeploymentDurationInMinutes AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-deploymentdurationinminutes + DeploymentDurationInMinutes float64 `json:"DeploymentDurationInMinutes"` + + // Description AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-description + Description string `json:"Description,omitempty"` + + // FinalBakeTimeInMinutes AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-finalbaketimeinminutes + FinalBakeTimeInMinutes float64 `json:"FinalBakeTimeInMinutes,omitempty"` + + // GrowthFactor AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-growthfactor + GrowthFactor float64 `json:"GrowthFactor"` + + // GrowthType AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-growthtype + GrowthType string `json:"GrowthType,omitempty"` + + // Name AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-name + Name string `json:"Name,omitempty"` + + // ReplicateTo AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-replicateto + ReplicateTo string `json:"ReplicateTo,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-tags + Tags []DeploymentStrategy_Tags `json:"Tags,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *DeploymentStrategy) AWSCloudFormationType() string { + return "AWS::AppConfig::DeploymentStrategy" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r DeploymentStrategy) MarshalJSON() ([]byte, error) { + type Properties DeploymentStrategy + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *DeploymentStrategy) UnmarshalJSON(b []byte) error { + type Properties DeploymentStrategy + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = DeploymentStrategy(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/appconfig/aws-appconfig-deploymentstrategy_tags.go b/cloudformation/appconfig/aws-appconfig-deploymentstrategy_tags.go new file mode 100644 index 0000000000..2c3700fca4 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-deploymentstrategy_tags.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// DeploymentStrategy_Tags AWS CloudFormation Resource (AWS::AppConfig::DeploymentStrategy.Tags) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deploymentstrategy-tags.html +type DeploymentStrategy_Tags struct { + + // Key AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deploymentstrategy-tags.html#cfn-appconfig-deploymentstrategy-tags-key + Key string `json:"Key,omitempty"` + + // Value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deploymentstrategy-tags.html#cfn-appconfig-deploymentstrategy-tags-value + Value string `json:"Value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *DeploymentStrategy_Tags) AWSCloudFormationType() string { + return "AWS::AppConfig::DeploymentStrategy.Tags" +} diff --git a/cloudformation/appconfig/aws-appconfig-environment.go b/cloudformation/appconfig/aws-appconfig-environment.go new file mode 100644 index 0000000000..d1d15e60f3 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-environment.go @@ -0,0 +1,117 @@ +package appconfig + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Environment AWS CloudFormation Resource (AWS::AppConfig::Environment) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html +type Environment struct { + + // ApplicationId AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-applicationid + ApplicationId string `json:"ApplicationId,omitempty"` + + // Description AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-description + Description string `json:"Description,omitempty"` + + // Monitors AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-monitors + Monitors []Environment_Monitors `json:"Monitors,omitempty"` + + // Name AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-name + Name string `json:"Name,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-tags + Tags []Environment_Tags `json:"Tags,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Environment) AWSCloudFormationType() string { + return "AWS::AppConfig::Environment" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r Environment) MarshalJSON() ([]byte, error) { + type Properties Environment + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *Environment) UnmarshalJSON(b []byte) error { + type Properties Environment + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = Environment(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/appconfig/aws-appconfig-environment_monitors.go b/cloudformation/appconfig/aws-appconfig-environment_monitors.go new file mode 100644 index 0000000000..b3f84686e7 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-environment_monitors.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Environment_Monitors AWS CloudFormation Resource (AWS::AppConfig::Environment.Monitors) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitors.html +type Environment_Monitors struct { + + // AlarmArn AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitors.html#cfn-appconfig-environment-monitors-alarmarn + AlarmArn string `json:"AlarmArn,omitempty"` + + // AlarmRoleArn AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitors.html#cfn-appconfig-environment-monitors-alarmrolearn + AlarmRoleArn string `json:"AlarmRoleArn,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Environment_Monitors) AWSCloudFormationType() string { + return "AWS::AppConfig::Environment.Monitors" +} diff --git a/cloudformation/appconfig/aws-appconfig-environment_tags.go b/cloudformation/appconfig/aws-appconfig-environment_tags.go new file mode 100644 index 0000000000..03d455cf77 --- /dev/null +++ b/cloudformation/appconfig/aws-appconfig-environment_tags.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Environment_Tags AWS CloudFormation Resource (AWS::AppConfig::Environment.Tags) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-tags.html +type Environment_Tags struct { + + // Key AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-tags.html#cfn-appconfig-environment-tags-key + Key string `json:"Key,omitempty"` + + // Value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-tags.html#cfn-appconfig-environment-tags-value + Value string `json:"Value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Environment_Tags) AWSCloudFormationType() string { + return "AWS::AppConfig::Environment.Tags" +} diff --git a/cloudformation/appsync/aws-appsync-graphqlapi.go b/cloudformation/appsync/aws-appsync-graphqlapi.go index 1aba854476..89234b879c 100644 --- a/cloudformation/appsync/aws-appsync-graphqlapi.go +++ b/cloudformation/appsync/aws-appsync-graphqlapi.go @@ -47,6 +47,11 @@ type GraphQLApi struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig UserPoolConfig *GraphQLApi_UserPoolConfig `json:"UserPoolConfig,omitempty"` + // XrayEnabled AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-xrayenabled + XrayEnabled bool `json:"XrayEnabled,omitempty"` + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/cloudformation/backup/aws-backup-backupplan_backupruleresourcetype.go b/cloudformation/backup/aws-backup-backupplan_backupruleresourcetype.go index 343b8cb038..4dc52e8e84 100644 --- a/cloudformation/backup/aws-backup-backupplan_backupruleresourcetype.go +++ b/cloudformation/backup/aws-backup-backupplan_backupruleresourcetype.go @@ -13,6 +13,11 @@ type BackupPlan_BackupRuleResourceType struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-completionwindowminutes CompletionWindowMinutes float64 `json:"CompletionWindowMinutes,omitempty"` + // CopyActions AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-copyactions + CopyActions []BackupPlan_CopyActionResourceType `json:"CopyActions,omitempty"` + // Lifecycle AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-lifecycle diff --git a/cloudformation/backup/aws-backup-backupplan_copyactionresourcetype.go b/cloudformation/backup/aws-backup-backupplan_copyactionresourcetype.go new file mode 100644 index 0000000000..f4765c6420 --- /dev/null +++ b/cloudformation/backup/aws-backup-backupplan_copyactionresourcetype.go @@ -0,0 +1,37 @@ +package backup + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// BackupPlan_CopyActionResourceType AWS CloudFormation Resource (AWS::Backup::BackupPlan.CopyActionResourceType) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html +type BackupPlan_CopyActionResourceType struct { + + // DestinationBackupVaultArn AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html#cfn-backup-backupplan-copyactionresourcetype-destinationbackupvaultarn + DestinationBackupVaultArn string `json:"DestinationBackupVaultArn,omitempty"` + + // Lifecycle AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html#cfn-backup-backupplan-copyactionresourcetype-lifecycle + Lifecycle *BackupPlan_LifecycleResourceType `json:"Lifecycle,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *BackupPlan_CopyActionResourceType) AWSCloudFormationType() string { + return "AWS::Backup::BackupPlan.CopyActionResourceType" +} diff --git a/cloudformation/ec2/aws-ec2-clientvpnendpoint.go b/cloudformation/ec2/aws-ec2-clientvpnendpoint.go index 620f734b45..60657ee405 100644 --- a/cloudformation/ec2/aws-ec2-clientvpnendpoint.go +++ b/cloudformation/ec2/aws-ec2-clientvpnendpoint.go @@ -57,6 +57,11 @@ type ClientVpnEndpoint struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-transportprotocol TransportProtocol string `json:"TransportProtocol,omitempty"` + // VpnPort AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-vpnport + VpnPort int `json:"VpnPort,omitempty"` + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplatedata.go b/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplatedata.go index 0e2703da28..4008b4dbad 100644 --- a/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplatedata.go +++ b/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplatedata.go @@ -93,6 +93,11 @@ type LaunchTemplate_LaunchTemplateData struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-licensespecifications LicenseSpecifications []LaunchTemplate_LicenseSpecification `json:"LicenseSpecifications,omitempty"` + // MetadataOptions AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions + MetadataOptions *LaunchTemplate_MetadataOptions `json:"MetadataOptions,omitempty"` + // Monitoring AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-monitoring diff --git a/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplateelasticinferenceaccelerator.go b/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplateelasticinferenceaccelerator.go index 116dba91be..549a0057e0 100644 --- a/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplateelasticinferenceaccelerator.go +++ b/cloudformation/ec2/aws-ec2-launchtemplate_launchtemplateelasticinferenceaccelerator.go @@ -8,6 +8,11 @@ import ( // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html type LaunchTemplate_LaunchTemplateElasticInferenceAccelerator struct { + // Count AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html#cfn-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator-count + Count int `json:"Count,omitempty"` + // Type AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html#cfn-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator-type diff --git a/cloudformation/ec2/aws-ec2-launchtemplate_metadataoptions.go b/cloudformation/ec2/aws-ec2-launchtemplate_metadataoptions.go new file mode 100644 index 0000000000..dd9f948477 --- /dev/null +++ b/cloudformation/ec2/aws-ec2-launchtemplate_metadataoptions.go @@ -0,0 +1,42 @@ +package ec2 + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// LaunchTemplate_MetadataOptions AWS CloudFormation Resource (AWS::EC2::LaunchTemplate.MetadataOptions) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html +type LaunchTemplate_MetadataOptions struct { + + // HttpEndpoint AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions-httpendpoint + HttpEndpoint string `json:"HttpEndpoint,omitempty"` + + // HttpPutResponseHopLimit AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions-httpputresponsehoplimit + HttpPutResponseHopLimit int `json:"HttpPutResponseHopLimit,omitempty"` + + // HttpTokens AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions-httptokens + HttpTokens string `json:"HttpTokens,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *LaunchTemplate_MetadataOptions) AWSCloudFormationType() string { + return "AWS::EC2::LaunchTemplate.MetadataOptions" +} diff --git a/cloudformation/ec2/aws-ec2-launchtemplate_placement.go b/cloudformation/ec2/aws-ec2-launchtemplate_placement.go index 1ca33a683f..30af302077 100644 --- a/cloudformation/ec2/aws-ec2-launchtemplate_placement.go +++ b/cloudformation/ec2/aws-ec2-launchtemplate_placement.go @@ -28,6 +28,21 @@ type LaunchTemplate_Placement struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-hostid HostId string `json:"HostId,omitempty"` + // HostResourceGroupArn AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-hostresourcegrouparn + HostResourceGroupArn string `json:"HostResourceGroupArn,omitempty"` + + // PartitionNumber AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-partitionnumber + PartitionNumber int `json:"PartitionNumber,omitempty"` + + // SpreadDomain AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-spreaddomain + SpreadDomain string `json:"SpreadDomain,omitempty"` + // Tenancy AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-tenancy diff --git a/cloudformation/medialive/aws-medialive-channel_multiplexprogramchanneldestinationsettings.go b/cloudformation/medialive/aws-medialive-channel_multiplexprogramchanneldestinationsettings.go new file mode 100644 index 0000000000..6fef4f55e7 --- /dev/null +++ b/cloudformation/medialive/aws-medialive-channel_multiplexprogramchanneldestinationsettings.go @@ -0,0 +1,37 @@ +package medialive + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Channel_MultiplexProgramChannelDestinationSettings AWS CloudFormation Resource (AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html +type Channel_MultiplexProgramChannelDestinationSettings struct { + + // MultiplexId AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-multiplexid + MultiplexId string `json:"MultiplexId,omitempty"` + + // ProgramName AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-programname + ProgramName string `json:"ProgramName,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Channel_MultiplexProgramChannelDestinationSettings) AWSCloudFormationType() string { + return "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings" +} diff --git a/cloudformation/medialive/aws-medialive-channel_outputdestination.go b/cloudformation/medialive/aws-medialive-channel_outputdestination.go index f4b2506bed..cd92198397 100644 --- a/cloudformation/medialive/aws-medialive-channel_outputdestination.go +++ b/cloudformation/medialive/aws-medialive-channel_outputdestination.go @@ -18,6 +18,11 @@ type Channel_OutputDestination struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-mediapackagesettings MediaPackageSettings []Channel_MediaPackageOutputDestinationSettings `json:"MediaPackageSettings,omitempty"` + // MultiplexSettings AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-multiplexsettings + MultiplexSettings *Channel_MultiplexProgramChannelDestinationSettings `json:"MultiplexSettings,omitempty"` + // Settings AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-settings diff --git a/cloudformation/opsworkscm/aws-opsworkscm-server.go b/cloudformation/opsworkscm/aws-opsworkscm-server.go index ca2756abde..0542b55f29 100644 --- a/cloudformation/opsworkscm/aws-opsworkscm-server.go +++ b/cloudformation/opsworkscm/aws-opsworkscm-server.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/awslabs/goformation/v4/cloudformation/policies" + "github.com/awslabs/goformation/v4/cloudformation/tags" ) // Server AWS CloudFormation Resource (AWS::OpsWorksCM::Server) @@ -112,6 +113,11 @@ type Server struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-subnetids SubnetIds []string `json:"SubnetIds,omitempty"` + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-tags + Tags []tags.Tag `json:"Tags,omitempty"` + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/cloudformation/wafv2/aws-wafv2-webaclassociation.go b/cloudformation/wafv2/aws-wafv2-webaclassociation.go new file mode 100644 index 0000000000..e36f47fd55 --- /dev/null +++ b/cloudformation/wafv2/aws-wafv2-webaclassociation.go @@ -0,0 +1,102 @@ +package wafv2 + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// WebACLAssociation AWS CloudFormation Resource (AWS::WAFv2::WebACLAssociation) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html +type WebACLAssociation struct { + + // ResourceArn AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html#cfn-wafv2-webaclassociation-resourcearn + ResourceArn string `json:"ResourceArn,omitempty"` + + // WebACLArn AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html#cfn-wafv2-webaclassociation-webaclarn + WebACLArn string `json:"WebACLArn,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *WebACLAssociation) AWSCloudFormationType() string { + return "AWS::WAFv2::WebACLAssociation" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r WebACLAssociation) MarshalJSON() ([]byte, error) { + type Properties WebACLAssociation + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *WebACLAssociation) UnmarshalJSON(b []byte) error { + type Properties WebACLAssociation + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = WebACLAssociation(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/schema/cloudformation.go b/schema/cloudformation.go index 442542b045..8fe332f891 100644 --- a/schema/cloudformation.go +++ b/schema/cloudformation.go @@ -50,7 +50,7 @@ var CloudformationSchema = `{ "type": "string" }, "Validity": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::Certificate.Validity" } }, "required": [ @@ -74,6 +74,22 @@ var CloudformationSchema = `{ ], "type": "object" }, + "AWS::ACMPCA::Certificate.Validity": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, "AWS::ACMPCA::CertificateAuthority": { "additionalProperties": false, "properties": { @@ -110,13 +126,13 @@ var CloudformationSchema = `{ "type": "string" }, "RevocationConfiguration": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.RevocationConfiguration" }, "SigningAlgorithm": { "type": "string" }, "Subject": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.Subject" }, "Tags": { "items": { @@ -149,6 +165,81 @@ var CloudformationSchema = `{ ], "type": "object" }, + "AWS::ACMPCA::CertificateAuthority.CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "number" + }, + "S3BucketName": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.CrlConfiguration" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, "AWS::ACMPCA::CertificateAuthorityActivation": { "additionalProperties": false, "properties": { @@ -3808,132 +3899,601 @@ var CloudformationSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "ApiId": { - "type": "string" - }, - "ModelSelectionExpression": { - "type": "string" - }, - "ResponseModels": { - "type": "object" - }, - "ResponseParameters": { - "type": "object" - }, - "RouteId": { + "ApiId": { + "type": "string" + }, + "ModelSelectionExpression": { + "type": "string" + }, + "ResponseModels": { + "type": "object" + }, + "ResponseParameters": { + "type": "object" + }, + "RouteId": { + "type": "string" + }, + "RouteResponseKey": { + "type": "string" + } + }, + "required": [ + "ApiId", + "RouteId", + "RouteResponseKey" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::RouteResponse" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { + "additionalProperties": false, + "properties": { + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "AccessLogSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" + }, + "ApiId": { + "type": "string" + }, + "AutoDeploy": { + "type": "boolean" + }, + "ClientCertificateId": { + "type": "string" + }, + "DefaultRouteSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" + }, + "DeploymentId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "RouteSettings": { + "type": "object" + }, + "StageName": { + "type": "string" + }, + "StageVariables": { + "type": "object" + }, + "Tags": { + "type": "object" + } + }, + "required": [ + "ApiId", + "StageName" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::Stage" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "type": "string" + }, + "Format": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.RouteSettings": { + "additionalProperties": false, + "properties": { + "DataTraceEnabled": { + "type": "boolean" + }, + "DetailedMetricsEnabled": { + "type": "boolean" + }, + "LoggingLevel": { + "type": "string" + }, + "ThrottlingBurstLimit": { + "type": "number" + }, + "ThrottlingRateLimit": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::AppConfig::Application": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Application.Tags" + }, + "type": "array" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Application" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Application.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "LocationUri": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RetrievalRoleArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Tags" + }, + "type": "array" + }, + "Validators": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Validators" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "LocationUri", + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::ConfigurationProfile" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Validators": { + "additionalProperties": false, + "properties": { + "Content": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Deployment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "ConfigurationProfileId": { + "type": "string" + }, + "ConfigurationVersion": { + "type": "string" + }, + "DeploymentStrategyId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "EnvironmentId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Deployment.Tags" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "ConfigurationProfileId", + "ConfigurationVersion", + "DeploymentStrategyId", + "EnvironmentId" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Deployment" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Deployment.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "DeploymentDurationInMinutes": { + "type": "number" + }, + "Description": { + "type": "string" + }, + "FinalBakeTimeInMinutes": { + "type": "number" + }, + "GrowthFactor": { + "type": "number" + }, + "GrowthType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReplicateTo": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy.Tags" + }, + "type": "array" + } + }, + "required": [ + "DeploymentDurationInMinutes", + "GrowthFactor", + "Name", + "ReplicateTo" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::DeploymentStrategy" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Environment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { "type": "string" }, - "RouteResponseKey": { - "type": "string" - } - }, - "required": [ - "ApiId", - "RouteId", - "RouteResponseKey" - ], - "type": "object" - }, - "Type": { - "enum": [ - "AWS::ApiGatewayV2::RouteResponse" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Properties" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { - "additionalProperties": false, - "properties": { - "Required": { - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::Stage": { - "additionalProperties": false, - "properties": { - "DeletionPolicy": { - "enum": [ - "Delete", - "Retain", - "Snapshot" - ], - "type": "string" - }, - "DependsOn": { - "anyOf": [ - { - "pattern": "^[a-zA-Z0-9]+$", + "Description": { "type": "string" }, - { + "Monitors": { "items": { - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" + "$ref": "#/definitions/AWS::AppConfig::Environment.Monitors" }, "type": "array" - } - ] - }, - "Metadata": { - "type": "object" - }, - "Properties": { - "additionalProperties": false, - "properties": { - "AccessLogSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" - }, - "ApiId": { - "type": "string" - }, - "AutoDeploy": { - "type": "boolean" - }, - "ClientCertificateId": { - "type": "string" - }, - "DefaultRouteSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" - }, - "DeploymentId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "RouteSettings": { - "type": "object" }, - "StageName": { + "Name": { "type": "string" }, - "StageVariables": { - "type": "object" - }, "Tags": { - "type": "object" + "items": { + "$ref": "#/definitions/AWS::AppConfig::Environment.Tags" + }, + "type": "array" } }, "required": [ - "ApiId", - "StageName" + "ApplicationId", + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::ApiGatewayV2::Stage" + "AWS::AppConfig::Environment" ], "type": "string" } @@ -3944,35 +4504,26 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "AWS::AppConfig::Environment.Monitors": { "additionalProperties": false, "properties": { - "DestinationArn": { + "AlarmArn": { "type": "string" }, - "Format": { + "AlarmRoleArn": { "type": "string" } }, "type": "object" }, - "AWS::ApiGatewayV2::Stage.RouteSettings": { + "AWS::AppConfig::Environment.Tags": { "additionalProperties": false, "properties": { - "DataTraceEnabled": { - "type": "boolean" - }, - "DetailedMetricsEnabled": { - "type": "boolean" - }, - "LoggingLevel": { + "Key": { "type": "string" }, - "ThrottlingBurstLimit": { - "type": "number" - }, - "ThrottlingRateLimit": { - "type": "number" + "Value": { + "type": "string" } }, "type": "object" @@ -6203,6 +6754,9 @@ var CloudformationSchema = `{ }, "UserPoolConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.UserPoolConfig" + }, + "XrayEnabled": { + "type": "boolean" } }, "required": [ @@ -8110,6 +8664,12 @@ var CloudformationSchema = `{ "CompletionWindowMinutes": { "type": "number" }, + "CopyActions": { + "items": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.CopyActionResourceType" + }, + "type": "array" + }, "Lifecycle": { "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, @@ -8135,6 +8695,21 @@ var CloudformationSchema = `{ ], "type": "object" }, + "AWS::Backup::BackupPlan.CopyActionResourceType": { + "additionalProperties": false, + "properties": { + "DestinationBackupVaultArn": { + "type": "string" + }, + "Lifecycle": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" + } + }, + "required": [ + "DestinationBackupVaultArn" + ], + "type": "object" + }, "AWS::Backup::BackupPlan.LifecycleResourceType": { "additionalProperties": false, "properties": { @@ -17383,6 +17958,9 @@ var CloudformationSchema = `{ }, "TransportProtocol": { "type": "string" + }, + "VpnPort": { + "type": "number" } }, "required": [ @@ -19128,6 +19706,9 @@ var CloudformationSchema = `{ }, "type": "array" }, + "MetadataOptions": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.MetadataOptions" + }, "Monitoring": { "$ref": "#/definitions/AWS::EC2::LaunchTemplate.Monitoring" }, @@ -19170,6 +19751,9 @@ var CloudformationSchema = `{ "AWS::EC2::LaunchTemplate.LaunchTemplateElasticInferenceAccelerator": { "additionalProperties": false, "properties": { + "Count": { + "type": "number" + }, "Type": { "type": "string" } @@ -19185,6 +19769,21 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::EC2::LaunchTemplate.MetadataOptions": { + "additionalProperties": false, + "properties": { + "HttpEndpoint": { + "type": "string" + }, + "HttpPutResponseHopLimit": { + "type": "number" + }, + "HttpTokens": { + "type": "string" + } + }, + "type": "object" + }, "AWS::EC2::LaunchTemplate.Monitoring": { "additionalProperties": false, "properties": { @@ -19263,6 +19862,15 @@ var CloudformationSchema = `{ "HostId": { "type": "string" }, + "HostResourceGroupArn": { + "type": "string" + }, + "PartitionNumber": { + "type": "number" + }, + "SpreadDomain": { + "type": "string" + }, "Tenancy": { "type": "string" } @@ -41903,6 +42511,18 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { + "additionalProperties": false, + "properties": { + "MultiplexId": { + "type": "string" + }, + "ProgramName": { + "type": "string" + } + }, + "type": "object" + }, "AWS::MediaLive::Channel.NetworkInputSettings": { "additionalProperties": false, "properties": { @@ -41927,6 +42547,9 @@ var CloudformationSchema = `{ }, "type": "array" }, + "MultiplexSettings": { + "$ref": "#/definitions/AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings" + }, "Settings": { "items": { "$ref": "#/definitions/AWS::MediaLive::Channel.OutputDestinationSettings" @@ -43918,6 +44541,12 @@ var CloudformationSchema = `{ "type": "string" }, "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" } }, "required": [ @@ -58130,6 +58759,64 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::WAFv2::WebACLAssociation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ResourceArn": { + "type": "string" + }, + "WebACLArn": { + "type": "string" + } + }, + "required": [ + "ResourceArn", + "WebACLArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::WAFv2::WebACLAssociation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::WorkSpaces::Workspace": { "additionalProperties": false, "properties": { @@ -58636,6 +59323,21 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::ApiGatewayV2::Stage" }, + { + "$ref": "#/definitions/AWS::AppConfig::Application" + }, + { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Deployment" + }, + { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Environment" + }, { "$ref": "#/definitions/AWS::AppMesh::Mesh" }, @@ -59983,6 +60685,9 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::WAFv2::WebACL" }, + { + "$ref": "#/definitions/AWS::WAFv2::WebACLAssociation" + }, { "$ref": "#/definitions/AWS::WorkSpaces::Workspace" }, diff --git a/schema/cloudformation.schema.json b/schema/cloudformation.schema.json index f8989a8b35..5cbed52b49 100644 --- a/schema/cloudformation.schema.json +++ b/schema/cloudformation.schema.json @@ -47,7 +47,7 @@ "type": "string" }, "Validity": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::Certificate.Validity" } }, "required": [ @@ -71,6 +71,22 @@ ], "type": "object" }, + "AWS::ACMPCA::Certificate.Validity": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, "AWS::ACMPCA::CertificateAuthority": { "additionalProperties": false, "properties": { @@ -107,13 +123,13 @@ "type": "string" }, "RevocationConfiguration": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.RevocationConfiguration" }, "SigningAlgorithm": { "type": "string" }, "Subject": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.Subject" }, "Tags": { "items": { @@ -146,6 +162,81 @@ ], "type": "object" }, + "AWS::ACMPCA::CertificateAuthority.CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "number" + }, + "S3BucketName": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.CrlConfiguration" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, "AWS::ACMPCA::CertificateAuthorityActivation": { "additionalProperties": false, "properties": { @@ -3805,132 +3896,601 @@ "Properties": { "additionalProperties": false, "properties": { - "ApiId": { - "type": "string" - }, - "ModelSelectionExpression": { - "type": "string" - }, - "ResponseModels": { - "type": "object" - }, - "ResponseParameters": { - "type": "object" - }, - "RouteId": { + "ApiId": { + "type": "string" + }, + "ModelSelectionExpression": { + "type": "string" + }, + "ResponseModels": { + "type": "object" + }, + "ResponseParameters": { + "type": "object" + }, + "RouteId": { + "type": "string" + }, + "RouteResponseKey": { + "type": "string" + } + }, + "required": [ + "ApiId", + "RouteId", + "RouteResponseKey" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::RouteResponse" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { + "additionalProperties": false, + "properties": { + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "AccessLogSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" + }, + "ApiId": { + "type": "string" + }, + "AutoDeploy": { + "type": "boolean" + }, + "ClientCertificateId": { + "type": "string" + }, + "DefaultRouteSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" + }, + "DeploymentId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "RouteSettings": { + "type": "object" + }, + "StageName": { + "type": "string" + }, + "StageVariables": { + "type": "object" + }, + "Tags": { + "type": "object" + } + }, + "required": [ + "ApiId", + "StageName" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::Stage" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "type": "string" + }, + "Format": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.RouteSettings": { + "additionalProperties": false, + "properties": { + "DataTraceEnabled": { + "type": "boolean" + }, + "DetailedMetricsEnabled": { + "type": "boolean" + }, + "LoggingLevel": { + "type": "string" + }, + "ThrottlingBurstLimit": { + "type": "number" + }, + "ThrottlingRateLimit": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::AppConfig::Application": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Application.Tags" + }, + "type": "array" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Application" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Application.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "LocationUri": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RetrievalRoleArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Tags" + }, + "type": "array" + }, + "Validators": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Validators" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "LocationUri", + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::ConfigurationProfile" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Validators": { + "additionalProperties": false, + "properties": { + "Content": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Deployment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "ConfigurationProfileId": { + "type": "string" + }, + "ConfigurationVersion": { + "type": "string" + }, + "DeploymentStrategyId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "EnvironmentId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Deployment.Tags" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "ConfigurationProfileId", + "ConfigurationVersion", + "DeploymentStrategyId", + "EnvironmentId" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Deployment" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Deployment.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "DeploymentDurationInMinutes": { + "type": "number" + }, + "Description": { + "type": "string" + }, + "FinalBakeTimeInMinutes": { + "type": "number" + }, + "GrowthFactor": { + "type": "number" + }, + "GrowthType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReplicateTo": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy.Tags" + }, + "type": "array" + } + }, + "required": [ + "DeploymentDurationInMinutes", + "GrowthFactor", + "Name", + "ReplicateTo" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::DeploymentStrategy" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Environment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { "type": "string" }, - "RouteResponseKey": { - "type": "string" - } - }, - "required": [ - "ApiId", - "RouteId", - "RouteResponseKey" - ], - "type": "object" - }, - "Type": { - "enum": [ - "AWS::ApiGatewayV2::RouteResponse" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Properties" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { - "additionalProperties": false, - "properties": { - "Required": { - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::Stage": { - "additionalProperties": false, - "properties": { - "DeletionPolicy": { - "enum": [ - "Delete", - "Retain", - "Snapshot" - ], - "type": "string" - }, - "DependsOn": { - "anyOf": [ - { - "pattern": "^[a-zA-Z0-9]+$", + "Description": { "type": "string" }, - { + "Monitors": { "items": { - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" + "$ref": "#/definitions/AWS::AppConfig::Environment.Monitors" }, "type": "array" - } - ] - }, - "Metadata": { - "type": "object" - }, - "Properties": { - "additionalProperties": false, - "properties": { - "AccessLogSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" - }, - "ApiId": { - "type": "string" - }, - "AutoDeploy": { - "type": "boolean" - }, - "ClientCertificateId": { - "type": "string" - }, - "DefaultRouteSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" - }, - "DeploymentId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "RouteSettings": { - "type": "object" }, - "StageName": { + "Name": { "type": "string" }, - "StageVariables": { - "type": "object" - }, "Tags": { - "type": "object" + "items": { + "$ref": "#/definitions/AWS::AppConfig::Environment.Tags" + }, + "type": "array" } }, "required": [ - "ApiId", - "StageName" + "ApplicationId", + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::ApiGatewayV2::Stage" + "AWS::AppConfig::Environment" ], "type": "string" } @@ -3941,35 +4501,26 @@ ], "type": "object" }, - "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "AWS::AppConfig::Environment.Monitors": { "additionalProperties": false, "properties": { - "DestinationArn": { + "AlarmArn": { "type": "string" }, - "Format": { + "AlarmRoleArn": { "type": "string" } }, "type": "object" }, - "AWS::ApiGatewayV2::Stage.RouteSettings": { + "AWS::AppConfig::Environment.Tags": { "additionalProperties": false, "properties": { - "DataTraceEnabled": { - "type": "boolean" - }, - "DetailedMetricsEnabled": { - "type": "boolean" - }, - "LoggingLevel": { + "Key": { "type": "string" }, - "ThrottlingBurstLimit": { - "type": "number" - }, - "ThrottlingRateLimit": { - "type": "number" + "Value": { + "type": "string" } }, "type": "object" @@ -6200,6 +6751,9 @@ }, "UserPoolConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.UserPoolConfig" + }, + "XrayEnabled": { + "type": "boolean" } }, "required": [ @@ -8107,6 +8661,12 @@ "CompletionWindowMinutes": { "type": "number" }, + "CopyActions": { + "items": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.CopyActionResourceType" + }, + "type": "array" + }, "Lifecycle": { "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, @@ -8132,6 +8692,21 @@ ], "type": "object" }, + "AWS::Backup::BackupPlan.CopyActionResourceType": { + "additionalProperties": false, + "properties": { + "DestinationBackupVaultArn": { + "type": "string" + }, + "Lifecycle": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" + } + }, + "required": [ + "DestinationBackupVaultArn" + ], + "type": "object" + }, "AWS::Backup::BackupPlan.LifecycleResourceType": { "additionalProperties": false, "properties": { @@ -17380,6 +17955,9 @@ }, "TransportProtocol": { "type": "string" + }, + "VpnPort": { + "type": "number" } }, "required": [ @@ -19125,6 +19703,9 @@ }, "type": "array" }, + "MetadataOptions": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.MetadataOptions" + }, "Monitoring": { "$ref": "#/definitions/AWS::EC2::LaunchTemplate.Monitoring" }, @@ -19167,6 +19748,9 @@ "AWS::EC2::LaunchTemplate.LaunchTemplateElasticInferenceAccelerator": { "additionalProperties": false, "properties": { + "Count": { + "type": "number" + }, "Type": { "type": "string" } @@ -19182,6 +19766,21 @@ }, "type": "object" }, + "AWS::EC2::LaunchTemplate.MetadataOptions": { + "additionalProperties": false, + "properties": { + "HttpEndpoint": { + "type": "string" + }, + "HttpPutResponseHopLimit": { + "type": "number" + }, + "HttpTokens": { + "type": "string" + } + }, + "type": "object" + }, "AWS::EC2::LaunchTemplate.Monitoring": { "additionalProperties": false, "properties": { @@ -19260,6 +19859,15 @@ "HostId": { "type": "string" }, + "HostResourceGroupArn": { + "type": "string" + }, + "PartitionNumber": { + "type": "number" + }, + "SpreadDomain": { + "type": "string" + }, "Tenancy": { "type": "string" } @@ -41900,6 +42508,18 @@ }, "type": "object" }, + "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { + "additionalProperties": false, + "properties": { + "MultiplexId": { + "type": "string" + }, + "ProgramName": { + "type": "string" + } + }, + "type": "object" + }, "AWS::MediaLive::Channel.NetworkInputSettings": { "additionalProperties": false, "properties": { @@ -41924,6 +42544,9 @@ }, "type": "array" }, + "MultiplexSettings": { + "$ref": "#/definitions/AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings" + }, "Settings": { "items": { "$ref": "#/definitions/AWS::MediaLive::Channel.OutputDestinationSettings" @@ -43915,6 +44538,12 @@ "type": "string" }, "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" } }, "required": [ @@ -58127,6 +58756,64 @@ }, "type": "object" }, + "AWS::WAFv2::WebACLAssociation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ResourceArn": { + "type": "string" + }, + "WebACLArn": { + "type": "string" + } + }, + "required": [ + "ResourceArn", + "WebACLArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::WAFv2::WebACLAssociation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::WorkSpaces::Workspace": { "additionalProperties": false, "properties": { @@ -58633,6 +59320,21 @@ { "$ref": "#/definitions/AWS::ApiGatewayV2::Stage" }, + { + "$ref": "#/definitions/AWS::AppConfig::Application" + }, + { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Deployment" + }, + { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Environment" + }, { "$ref": "#/definitions/AWS::AppMesh::Mesh" }, @@ -59980,6 +60682,9 @@ { "$ref": "#/definitions/AWS::WAFv2::WebACL" }, + { + "$ref": "#/definitions/AWS::WAFv2::WebACLAssociation" + }, { "$ref": "#/definitions/AWS::WorkSpaces::Workspace" }, diff --git a/schema/sam.go b/schema/sam.go index 9bacb63aa2..95aa1a0dfe 100644 --- a/schema/sam.go +++ b/schema/sam.go @@ -50,7 +50,7 @@ var SamSchema = `{ "type": "string" }, "Validity": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::Certificate.Validity" } }, "required": [ @@ -74,6 +74,22 @@ var SamSchema = `{ ], "type": "object" }, + "AWS::ACMPCA::Certificate.Validity": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, "AWS::ACMPCA::CertificateAuthority": { "additionalProperties": false, "properties": { @@ -110,13 +126,13 @@ var SamSchema = `{ "type": "string" }, "RevocationConfiguration": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.RevocationConfiguration" }, "SigningAlgorithm": { "type": "string" }, "Subject": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.Subject" }, "Tags": { "items": { @@ -149,6 +165,81 @@ var SamSchema = `{ ], "type": "object" }, + "AWS::ACMPCA::CertificateAuthority.CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "number" + }, + "S3BucketName": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.CrlConfiguration" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, "AWS::ACMPCA::CertificateAuthorityActivation": { "additionalProperties": false, "properties": { @@ -3808,132 +3899,601 @@ var SamSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "ApiId": { - "type": "string" - }, - "ModelSelectionExpression": { - "type": "string" - }, - "ResponseModels": { - "type": "object" - }, - "ResponseParameters": { - "type": "object" - }, - "RouteId": { + "ApiId": { + "type": "string" + }, + "ModelSelectionExpression": { + "type": "string" + }, + "ResponseModels": { + "type": "object" + }, + "ResponseParameters": { + "type": "object" + }, + "RouteId": { + "type": "string" + }, + "RouteResponseKey": { + "type": "string" + } + }, + "required": [ + "ApiId", + "RouteId", + "RouteResponseKey" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::RouteResponse" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { + "additionalProperties": false, + "properties": { + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "AccessLogSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" + }, + "ApiId": { + "type": "string" + }, + "AutoDeploy": { + "type": "boolean" + }, + "ClientCertificateId": { + "type": "string" + }, + "DefaultRouteSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" + }, + "DeploymentId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "RouteSettings": { + "type": "object" + }, + "StageName": { + "type": "string" + }, + "StageVariables": { + "type": "object" + }, + "Tags": { + "type": "object" + } + }, + "required": [ + "ApiId", + "StageName" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::Stage" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "type": "string" + }, + "Format": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.RouteSettings": { + "additionalProperties": false, + "properties": { + "DataTraceEnabled": { + "type": "boolean" + }, + "DetailedMetricsEnabled": { + "type": "boolean" + }, + "LoggingLevel": { + "type": "string" + }, + "ThrottlingBurstLimit": { + "type": "number" + }, + "ThrottlingRateLimit": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::AppConfig::Application": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Application.Tags" + }, + "type": "array" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Application" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Application.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "LocationUri": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RetrievalRoleArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Tags" + }, + "type": "array" + }, + "Validators": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Validators" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "LocationUri", + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::ConfigurationProfile" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Validators": { + "additionalProperties": false, + "properties": { + "Content": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Deployment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "ConfigurationProfileId": { + "type": "string" + }, + "ConfigurationVersion": { + "type": "string" + }, + "DeploymentStrategyId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "EnvironmentId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Deployment.Tags" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "ConfigurationProfileId", + "ConfigurationVersion", + "DeploymentStrategyId", + "EnvironmentId" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Deployment" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Deployment.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "DeploymentDurationInMinutes": { + "type": "number" + }, + "Description": { + "type": "string" + }, + "FinalBakeTimeInMinutes": { + "type": "number" + }, + "GrowthFactor": { + "type": "number" + }, + "GrowthType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReplicateTo": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy.Tags" + }, + "type": "array" + } + }, + "required": [ + "DeploymentDurationInMinutes", + "GrowthFactor", + "Name", + "ReplicateTo" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::DeploymentStrategy" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Environment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { "type": "string" }, - "RouteResponseKey": { - "type": "string" - } - }, - "required": [ - "ApiId", - "RouteId", - "RouteResponseKey" - ], - "type": "object" - }, - "Type": { - "enum": [ - "AWS::ApiGatewayV2::RouteResponse" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Properties" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { - "additionalProperties": false, - "properties": { - "Required": { - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::Stage": { - "additionalProperties": false, - "properties": { - "DeletionPolicy": { - "enum": [ - "Delete", - "Retain", - "Snapshot" - ], - "type": "string" - }, - "DependsOn": { - "anyOf": [ - { - "pattern": "^[a-zA-Z0-9]+$", + "Description": { "type": "string" }, - { + "Monitors": { "items": { - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" + "$ref": "#/definitions/AWS::AppConfig::Environment.Monitors" }, "type": "array" - } - ] - }, - "Metadata": { - "type": "object" - }, - "Properties": { - "additionalProperties": false, - "properties": { - "AccessLogSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" - }, - "ApiId": { - "type": "string" - }, - "AutoDeploy": { - "type": "boolean" - }, - "ClientCertificateId": { - "type": "string" - }, - "DefaultRouteSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" - }, - "DeploymentId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "RouteSettings": { - "type": "object" }, - "StageName": { + "Name": { "type": "string" }, - "StageVariables": { - "type": "object" - }, "Tags": { - "type": "object" + "items": { + "$ref": "#/definitions/AWS::AppConfig::Environment.Tags" + }, + "type": "array" } }, "required": [ - "ApiId", - "StageName" + "ApplicationId", + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::ApiGatewayV2::Stage" + "AWS::AppConfig::Environment" ], "type": "string" } @@ -3944,35 +4504,26 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "AWS::AppConfig::Environment.Monitors": { "additionalProperties": false, "properties": { - "DestinationArn": { + "AlarmArn": { "type": "string" }, - "Format": { + "AlarmRoleArn": { "type": "string" } }, "type": "object" }, - "AWS::ApiGatewayV2::Stage.RouteSettings": { + "AWS::AppConfig::Environment.Tags": { "additionalProperties": false, "properties": { - "DataTraceEnabled": { - "type": "boolean" - }, - "DetailedMetricsEnabled": { - "type": "boolean" - }, - "LoggingLevel": { + "Key": { "type": "string" }, - "ThrottlingBurstLimit": { - "type": "number" - }, - "ThrottlingRateLimit": { - "type": "number" + "Value": { + "type": "string" } }, "type": "object" @@ -6203,6 +6754,9 @@ var SamSchema = `{ }, "UserPoolConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.UserPoolConfig" + }, + "XrayEnabled": { + "type": "boolean" } }, "required": [ @@ -8110,6 +8664,12 @@ var SamSchema = `{ "CompletionWindowMinutes": { "type": "number" }, + "CopyActions": { + "items": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.CopyActionResourceType" + }, + "type": "array" + }, "Lifecycle": { "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, @@ -8135,6 +8695,21 @@ var SamSchema = `{ ], "type": "object" }, + "AWS::Backup::BackupPlan.CopyActionResourceType": { + "additionalProperties": false, + "properties": { + "DestinationBackupVaultArn": { + "type": "string" + }, + "Lifecycle": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" + } + }, + "required": [ + "DestinationBackupVaultArn" + ], + "type": "object" + }, "AWS::Backup::BackupPlan.LifecycleResourceType": { "additionalProperties": false, "properties": { @@ -17383,6 +17958,9 @@ var SamSchema = `{ }, "TransportProtocol": { "type": "string" + }, + "VpnPort": { + "type": "number" } }, "required": [ @@ -19128,6 +19706,9 @@ var SamSchema = `{ }, "type": "array" }, + "MetadataOptions": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.MetadataOptions" + }, "Monitoring": { "$ref": "#/definitions/AWS::EC2::LaunchTemplate.Monitoring" }, @@ -19170,6 +19751,9 @@ var SamSchema = `{ "AWS::EC2::LaunchTemplate.LaunchTemplateElasticInferenceAccelerator": { "additionalProperties": false, "properties": { + "Count": { + "type": "number" + }, "Type": { "type": "string" } @@ -19185,6 +19769,21 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::EC2::LaunchTemplate.MetadataOptions": { + "additionalProperties": false, + "properties": { + "HttpEndpoint": { + "type": "string" + }, + "HttpPutResponseHopLimit": { + "type": "number" + }, + "HttpTokens": { + "type": "string" + } + }, + "type": "object" + }, "AWS::EC2::LaunchTemplate.Monitoring": { "additionalProperties": false, "properties": { @@ -19263,6 +19862,15 @@ var SamSchema = `{ "HostId": { "type": "string" }, + "HostResourceGroupArn": { + "type": "string" + }, + "PartitionNumber": { + "type": "number" + }, + "SpreadDomain": { + "type": "string" + }, "Tenancy": { "type": "string" } @@ -41903,6 +42511,18 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { + "additionalProperties": false, + "properties": { + "MultiplexId": { + "type": "string" + }, + "ProgramName": { + "type": "string" + } + }, + "type": "object" + }, "AWS::MediaLive::Channel.NetworkInputSettings": { "additionalProperties": false, "properties": { @@ -41927,6 +42547,9 @@ var SamSchema = `{ }, "type": "array" }, + "MultiplexSettings": { + "$ref": "#/definitions/AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings" + }, "Settings": { "items": { "$ref": "#/definitions/AWS::MediaLive::Channel.OutputDestinationSettings" @@ -43918,6 +44541,12 @@ var SamSchema = `{ "type": "string" }, "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" } }, "required": [ @@ -59424,6 +60053,64 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::WAFv2::WebACLAssociation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ResourceArn": { + "type": "string" + }, + "WebACLArn": { + "type": "string" + } + }, + "required": [ + "ResourceArn", + "WebACLArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::WAFv2::WebACLAssociation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::WorkSpaces::Workspace": { "additionalProperties": false, "properties": { @@ -59930,6 +60617,21 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::ApiGatewayV2::Stage" }, + { + "$ref": "#/definitions/AWS::AppConfig::Application" + }, + { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Deployment" + }, + { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Environment" + }, { "$ref": "#/definitions/AWS::AppMesh::Mesh" }, @@ -61292,6 +61994,9 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::WAFv2::WebACL" }, + { + "$ref": "#/definitions/AWS::WAFv2::WebACLAssociation" + }, { "$ref": "#/definitions/AWS::WorkSpaces::Workspace" }, diff --git a/schema/sam.schema.json b/schema/sam.schema.json index ab158f5f22..53abe0d82d 100644 --- a/schema/sam.schema.json +++ b/schema/sam.schema.json @@ -47,7 +47,7 @@ "type": "string" }, "Validity": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::Certificate.Validity" } }, "required": [ @@ -71,6 +71,22 @@ ], "type": "object" }, + "AWS::ACMPCA::Certificate.Validity": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "number" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, "AWS::ACMPCA::CertificateAuthority": { "additionalProperties": false, "properties": { @@ -107,13 +123,13 @@ "type": "string" }, "RevocationConfiguration": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.RevocationConfiguration" }, "SigningAlgorithm": { "type": "string" }, "Subject": { - "type": "object" + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.Subject" }, "Tags": { "items": { @@ -146,6 +162,81 @@ ], "type": "object" }, + "AWS::ACMPCA::CertificateAuthority.CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "number" + }, + "S3BucketName": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority.CrlConfiguration" + } + }, + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority.Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, "AWS::ACMPCA::CertificateAuthorityActivation": { "additionalProperties": false, "properties": { @@ -3805,132 +3896,601 @@ "Properties": { "additionalProperties": false, "properties": { - "ApiId": { - "type": "string" - }, - "ModelSelectionExpression": { - "type": "string" - }, - "ResponseModels": { - "type": "object" - }, - "ResponseParameters": { - "type": "object" - }, - "RouteId": { + "ApiId": { + "type": "string" + }, + "ModelSelectionExpression": { + "type": "string" + }, + "ResponseModels": { + "type": "object" + }, + "ResponseParameters": { + "type": "object" + }, + "RouteId": { + "type": "string" + }, + "RouteResponseKey": { + "type": "string" + } + }, + "required": [ + "ApiId", + "RouteId", + "RouteResponseKey" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::RouteResponse" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { + "additionalProperties": false, + "properties": { + "Required": { + "type": "boolean" + } + }, + "required": [ + "Required" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "AccessLogSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" + }, + "ApiId": { + "type": "string" + }, + "AutoDeploy": { + "type": "boolean" + }, + "ClientCertificateId": { + "type": "string" + }, + "DefaultRouteSettings": { + "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" + }, + "DeploymentId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "RouteSettings": { + "type": "object" + }, + "StageName": { + "type": "string" + }, + "StageVariables": { + "type": "object" + }, + "Tags": { + "type": "object" + } + }, + "required": [ + "ApiId", + "StageName" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ApiGatewayV2::Stage" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "additionalProperties": false, + "properties": { + "DestinationArn": { + "type": "string" + }, + "Format": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ApiGatewayV2::Stage.RouteSettings": { + "additionalProperties": false, + "properties": { + "DataTraceEnabled": { + "type": "boolean" + }, + "DetailedMetricsEnabled": { + "type": "boolean" + }, + "LoggingLevel": { + "type": "string" + }, + "ThrottlingBurstLimit": { + "type": "number" + }, + "ThrottlingRateLimit": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::AppConfig::Application": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Application.Tags" + }, + "type": "array" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Application" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Application.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "LocationUri": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "RetrievalRoleArn": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Tags" + }, + "type": "array" + }, + "Validators": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile.Validators" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "LocationUri", + "Name" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::ConfigurationProfile" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::ConfigurationProfile.Validators": { + "additionalProperties": false, + "properties": { + "Content": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Deployment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { + "type": "string" + }, + "ConfigurationProfileId": { + "type": "string" + }, + "ConfigurationVersion": { + "type": "string" + }, + "DeploymentStrategyId": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "EnvironmentId": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::Deployment.Tags" + }, + "type": "array" + } + }, + "required": [ + "ApplicationId", + "ConfigurationProfileId", + "ConfigurationVersion", + "DeploymentStrategyId", + "EnvironmentId" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::Deployment" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::Deployment.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "DeploymentDurationInMinutes": { + "type": "number" + }, + "Description": { + "type": "string" + }, + "FinalBakeTimeInMinutes": { + "type": "number" + }, + "GrowthFactor": { + "type": "number" + }, + "GrowthType": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "ReplicateTo": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy.Tags" + }, + "type": "array" + } + }, + "required": [ + "DeploymentDurationInMinutes", + "GrowthFactor", + "Name", + "ReplicateTo" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::AppConfig::DeploymentStrategy" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::AppConfig::DeploymentStrategy.Tags": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::AppConfig::Environment": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ApplicationId": { "type": "string" }, - "RouteResponseKey": { - "type": "string" - } - }, - "required": [ - "ApiId", - "RouteId", - "RouteResponseKey" - ], - "type": "object" - }, - "Type": { - "enum": [ - "AWS::ApiGatewayV2::RouteResponse" - ], - "type": "string" - } - }, - "required": [ - "Type", - "Properties" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::RouteResponse.ParameterConstraints": { - "additionalProperties": false, - "properties": { - "Required": { - "type": "boolean" - } - }, - "required": [ - "Required" - ], - "type": "object" - }, - "AWS::ApiGatewayV2::Stage": { - "additionalProperties": false, - "properties": { - "DeletionPolicy": { - "enum": [ - "Delete", - "Retain", - "Snapshot" - ], - "type": "string" - }, - "DependsOn": { - "anyOf": [ - { - "pattern": "^[a-zA-Z0-9]+$", + "Description": { "type": "string" }, - { + "Monitors": { "items": { - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" + "$ref": "#/definitions/AWS::AppConfig::Environment.Monitors" }, "type": "array" - } - ] - }, - "Metadata": { - "type": "object" - }, - "Properties": { - "additionalProperties": false, - "properties": { - "AccessLogSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.AccessLogSettings" - }, - "ApiId": { - "type": "string" - }, - "AutoDeploy": { - "type": "boolean" - }, - "ClientCertificateId": { - "type": "string" - }, - "DefaultRouteSettings": { - "$ref": "#/definitions/AWS::ApiGatewayV2::Stage.RouteSettings" - }, - "DeploymentId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "RouteSettings": { - "type": "object" }, - "StageName": { + "Name": { "type": "string" }, - "StageVariables": { - "type": "object" - }, "Tags": { - "type": "object" + "items": { + "$ref": "#/definitions/AWS::AppConfig::Environment.Tags" + }, + "type": "array" } }, "required": [ - "ApiId", - "StageName" + "ApplicationId", + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::ApiGatewayV2::Stage" + "AWS::AppConfig::Environment" ], "type": "string" } @@ -3941,35 +4501,26 @@ ], "type": "object" }, - "AWS::ApiGatewayV2::Stage.AccessLogSettings": { + "AWS::AppConfig::Environment.Monitors": { "additionalProperties": false, "properties": { - "DestinationArn": { + "AlarmArn": { "type": "string" }, - "Format": { + "AlarmRoleArn": { "type": "string" } }, "type": "object" }, - "AWS::ApiGatewayV2::Stage.RouteSettings": { + "AWS::AppConfig::Environment.Tags": { "additionalProperties": false, "properties": { - "DataTraceEnabled": { - "type": "boolean" - }, - "DetailedMetricsEnabled": { - "type": "boolean" - }, - "LoggingLevel": { + "Key": { "type": "string" }, - "ThrottlingBurstLimit": { - "type": "number" - }, - "ThrottlingRateLimit": { - "type": "number" + "Value": { + "type": "string" } }, "type": "object" @@ -6200,6 +6751,9 @@ }, "UserPoolConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.UserPoolConfig" + }, + "XrayEnabled": { + "type": "boolean" } }, "required": [ @@ -8107,6 +8661,12 @@ "CompletionWindowMinutes": { "type": "number" }, + "CopyActions": { + "items": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.CopyActionResourceType" + }, + "type": "array" + }, "Lifecycle": { "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, @@ -8132,6 +8692,21 @@ ], "type": "object" }, + "AWS::Backup::BackupPlan.CopyActionResourceType": { + "additionalProperties": false, + "properties": { + "DestinationBackupVaultArn": { + "type": "string" + }, + "Lifecycle": { + "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" + } + }, + "required": [ + "DestinationBackupVaultArn" + ], + "type": "object" + }, "AWS::Backup::BackupPlan.LifecycleResourceType": { "additionalProperties": false, "properties": { @@ -17380,6 +17955,9 @@ }, "TransportProtocol": { "type": "string" + }, + "VpnPort": { + "type": "number" } }, "required": [ @@ -19125,6 +19703,9 @@ }, "type": "array" }, + "MetadataOptions": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.MetadataOptions" + }, "Monitoring": { "$ref": "#/definitions/AWS::EC2::LaunchTemplate.Monitoring" }, @@ -19167,6 +19748,9 @@ "AWS::EC2::LaunchTemplate.LaunchTemplateElasticInferenceAccelerator": { "additionalProperties": false, "properties": { + "Count": { + "type": "number" + }, "Type": { "type": "string" } @@ -19182,6 +19766,21 @@ }, "type": "object" }, + "AWS::EC2::LaunchTemplate.MetadataOptions": { + "additionalProperties": false, + "properties": { + "HttpEndpoint": { + "type": "string" + }, + "HttpPutResponseHopLimit": { + "type": "number" + }, + "HttpTokens": { + "type": "string" + } + }, + "type": "object" + }, "AWS::EC2::LaunchTemplate.Monitoring": { "additionalProperties": false, "properties": { @@ -19260,6 +19859,15 @@ "HostId": { "type": "string" }, + "HostResourceGroupArn": { + "type": "string" + }, + "PartitionNumber": { + "type": "number" + }, + "SpreadDomain": { + "type": "string" + }, "Tenancy": { "type": "string" } @@ -41900,6 +42508,18 @@ }, "type": "object" }, + "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { + "additionalProperties": false, + "properties": { + "MultiplexId": { + "type": "string" + }, + "ProgramName": { + "type": "string" + } + }, + "type": "object" + }, "AWS::MediaLive::Channel.NetworkInputSettings": { "additionalProperties": false, "properties": { @@ -41924,6 +42544,9 @@ }, "type": "array" }, + "MultiplexSettings": { + "$ref": "#/definitions/AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings" + }, "Settings": { "items": { "$ref": "#/definitions/AWS::MediaLive::Channel.OutputDestinationSettings" @@ -43915,6 +44538,12 @@ "type": "string" }, "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" } }, "required": [ @@ -59421,6 +60050,64 @@ }, "type": "object" }, + "AWS::WAFv2::WebACLAssociation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "ResourceArn": { + "type": "string" + }, + "WebACLArn": { + "type": "string" + } + }, + "required": [ + "ResourceArn", + "WebACLArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::WAFv2::WebACLAssociation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::WorkSpaces::Workspace": { "additionalProperties": false, "properties": { @@ -59927,6 +60614,21 @@ { "$ref": "#/definitions/AWS::ApiGatewayV2::Stage" }, + { + "$ref": "#/definitions/AWS::AppConfig::Application" + }, + { + "$ref": "#/definitions/AWS::AppConfig::ConfigurationProfile" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Deployment" + }, + { + "$ref": "#/definitions/AWS::AppConfig::DeploymentStrategy" + }, + { + "$ref": "#/definitions/AWS::AppConfig::Environment" + }, { "$ref": "#/definitions/AWS::AppMesh::Mesh" }, @@ -61289,6 +61991,9 @@ { "$ref": "#/definitions/AWS::WAFv2::WebACL" }, + { + "$ref": "#/definitions/AWS::WAFv2::WebACLAssociation" + }, { "$ref": "#/definitions/AWS::WorkSpaces::Workspace" },