diff --git a/cloudformation/all.go b/cloudformation/all.go index 333aa274e5..32ec280dba 100644 --- a/cloudformation/all.go +++ b/cloudformation/all.go @@ -69,6 +69,7 @@ import ( "github.com/awslabs/goformation/v4/cloudformation/emrcontainers" "github.com/awslabs/goformation/v4/cloudformation/events" "github.com/awslabs/goformation/v4/cloudformation/eventschemas" + "github.com/awslabs/goformation/v4/cloudformation/fis" "github.com/awslabs/goformation/v4/cloudformation/fms" "github.com/awslabs/goformation/v4/cloudformation/fsx" "github.com/awslabs/goformation/v4/cloudformation/gamelift" @@ -125,6 +126,7 @@ import ( "github.com/awslabs/goformation/v4/cloudformation/route53" "github.com/awslabs/goformation/v4/cloudformation/route53resolver" "github.com/awslabs/goformation/v4/cloudformation/s3" + "github.com/awslabs/goformation/v4/cloudformation/s3objectlambda" "github.com/awslabs/goformation/v4/cloudformation/s3outposts" "github.com/awslabs/goformation/v4/cloudformation/sagemaker" "github.com/awslabs/goformation/v4/cloudformation/sdb" @@ -244,9 +246,12 @@ func AllResources() map[string]Resource { "AWS::Batch::JobDefinition": &batch.JobDefinition{}, "AWS::Batch::JobQueue": &batch.JobQueue{}, "AWS::Budgets::Budget": &budgets.Budget{}, + "AWS::CE::AnomalyMonitor": &ce.AnomalyMonitor{}, + "AWS::CE::AnomalySubscription": &ce.AnomalySubscription{}, "AWS::CE::CostCategory": &ce.CostCategory{}, "AWS::Cassandra::Keyspace": &cassandra.Keyspace{}, "AWS::Cassandra::Table": &cassandra.Table{}, + "AWS::CertificateManager::Account": &certificatemanager.Account{}, "AWS::CertificateManager::Certificate": &certificatemanager.Certificate{}, "AWS::Chatbot::SlackChannelConfiguration": &chatbot.SlackChannelConfiguration{}, "AWS::Cloud9::EnvironmentEC2": &cloud9.EnvironmentEC2{}, @@ -425,6 +430,7 @@ func AllResources() map[string]Resource { "AWS::ECR::Repository": &ecr.Repository{}, "AWS::ECS::CapacityProvider": &ecs.CapacityProvider{}, "AWS::ECS::Cluster": &ecs.Cluster{}, + "AWS::ECS::ClusterCapacityProviderAssociations": &ecs.ClusterCapacityProviderAssociations{}, "AWS::ECS::PrimaryTaskSet": &ecs.PrimaryTaskSet{}, "AWS::ECS::Service": &ecs.Service{}, "AWS::ECS::TaskDefinition": &ecs.TaskDefinition{}, @@ -474,6 +480,7 @@ func AllResources() map[string]Resource { "AWS::Events::EventBus": &events.EventBus{}, "AWS::Events::EventBusPolicy": &events.EventBusPolicy{}, "AWS::Events::Rule": &events.Rule{}, + "AWS::FIS::ExperimentTemplate": &fis.ExperimentTemplate{}, "AWS::FMS::NotificationChannel": &fms.NotificationChannel{}, "AWS::FMS::Policy": &fms.Policy{}, "AWS::FSx::FileSystem": &fsx.FileSystem{}, @@ -709,6 +716,7 @@ func AllResources() map[string]Resource { "AWS::RDS::DBInstance": &rds.DBInstance{}, "AWS::RDS::DBParameterGroup": &rds.DBParameterGroup{}, "AWS::RDS::DBProxy": &rds.DBProxy{}, + "AWS::RDS::DBProxyEndpoint": &rds.DBProxyEndpoint{}, "AWS::RDS::DBProxyTargetGroup": &rds.DBProxyTargetGroup{}, "AWS::RDS::DBSecurityGroup": &rds.DBSecurityGroup{}, "AWS::RDS::DBSecurityGroupIngress": &rds.DBSecurityGroupIngress{}, @@ -744,6 +752,8 @@ func AllResources() map[string]Resource { "AWS::S3::Bucket": &s3.Bucket{}, "AWS::S3::BucketPolicy": &s3.BucketPolicy{}, "AWS::S3::StorageLens": &s3.StorageLens{}, + "AWS::S3ObjectLambda::AccessPoint": &s3objectlambda.AccessPoint{}, + "AWS::S3ObjectLambda::AccessPointPolicy": &s3objectlambda.AccessPointPolicy{}, "AWS::S3Outposts::AccessPoint": &s3outposts.AccessPoint{}, "AWS::S3Outposts::Bucket": &s3outposts.Bucket{}, "AWS::S3Outposts::BucketPolicy": &s3outposts.BucketPolicy{}, @@ -3053,6 +3063,54 @@ func (t *Template) GetBudgetsBudgetWithName(name string) (*budgets.Budget, error return nil, fmt.Errorf("resource %q of type budgets.Budget not found", name) } +// GetAllCEAnomalyMonitorResources retrieves all ce.AnomalyMonitor items from an AWS CloudFormation template +func (t *Template) GetAllCEAnomalyMonitorResources() map[string]*ce.AnomalyMonitor { + results := map[string]*ce.AnomalyMonitor{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *ce.AnomalyMonitor: + results[name] = resource + } + } + return results +} + +// GetCEAnomalyMonitorWithName retrieves all ce.AnomalyMonitor items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetCEAnomalyMonitorWithName(name string) (*ce.AnomalyMonitor, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *ce.AnomalyMonitor: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type ce.AnomalyMonitor not found", name) +} + +// GetAllCEAnomalySubscriptionResources retrieves all ce.AnomalySubscription items from an AWS CloudFormation template +func (t *Template) GetAllCEAnomalySubscriptionResources() map[string]*ce.AnomalySubscription { + results := map[string]*ce.AnomalySubscription{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *ce.AnomalySubscription: + results[name] = resource + } + } + return results +} + +// GetCEAnomalySubscriptionWithName retrieves all ce.AnomalySubscription items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetCEAnomalySubscriptionWithName(name string) (*ce.AnomalySubscription, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *ce.AnomalySubscription: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type ce.AnomalySubscription not found", name) +} + // GetAllCECostCategoryResources retrieves all ce.CostCategory items from an AWS CloudFormation template func (t *Template) GetAllCECostCategoryResources() map[string]*ce.CostCategory { results := map[string]*ce.CostCategory{} @@ -3125,6 +3183,30 @@ func (t *Template) GetCassandraTableWithName(name string) (*cassandra.Table, err return nil, fmt.Errorf("resource %q of type cassandra.Table not found", name) } +// GetAllCertificateManagerAccountResources retrieves all certificatemanager.Account items from an AWS CloudFormation template +func (t *Template) GetAllCertificateManagerAccountResources() map[string]*certificatemanager.Account { + results := map[string]*certificatemanager.Account{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *certificatemanager.Account: + results[name] = resource + } + } + return results +} + +// GetCertificateManagerAccountWithName retrieves all certificatemanager.Account items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetCertificateManagerAccountWithName(name string) (*certificatemanager.Account, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *certificatemanager.Account: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type certificatemanager.Account not found", name) +} + // GetAllCertificateManagerCertificateResources retrieves all certificatemanager.Certificate items from an AWS CloudFormation template func (t *Template) GetAllCertificateManagerCertificateResources() map[string]*certificatemanager.Certificate { results := map[string]*certificatemanager.Certificate{} @@ -7397,6 +7479,30 @@ func (t *Template) GetECSClusterWithName(name string) (*ecs.Cluster, error) { return nil, fmt.Errorf("resource %q of type ecs.Cluster not found", name) } +// GetAllECSClusterCapacityProviderAssociationsResources retrieves all ecs.ClusterCapacityProviderAssociations items from an AWS CloudFormation template +func (t *Template) GetAllECSClusterCapacityProviderAssociationsResources() map[string]*ecs.ClusterCapacityProviderAssociations { + results := map[string]*ecs.ClusterCapacityProviderAssociations{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *ecs.ClusterCapacityProviderAssociations: + results[name] = resource + } + } + return results +} + +// GetECSClusterCapacityProviderAssociationsWithName retrieves all ecs.ClusterCapacityProviderAssociations items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetECSClusterCapacityProviderAssociationsWithName(name string) (*ecs.ClusterCapacityProviderAssociations, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *ecs.ClusterCapacityProviderAssociations: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type ecs.ClusterCapacityProviderAssociations not found", name) +} + // GetAllECSPrimaryTaskSetResources retrieves all ecs.PrimaryTaskSet items from an AWS CloudFormation template func (t *Template) GetAllECSPrimaryTaskSetResources() map[string]*ecs.PrimaryTaskSet { results := map[string]*ecs.PrimaryTaskSet{} @@ -8573,6 +8679,30 @@ func (t *Template) GetEventsRuleWithName(name string) (*events.Rule, error) { return nil, fmt.Errorf("resource %q of type events.Rule not found", name) } +// GetAllFISExperimentTemplateResources retrieves all fis.ExperimentTemplate items from an AWS CloudFormation template +func (t *Template) GetAllFISExperimentTemplateResources() map[string]*fis.ExperimentTemplate { + results := map[string]*fis.ExperimentTemplate{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *fis.ExperimentTemplate: + results[name] = resource + } + } + return results +} + +// GetFISExperimentTemplateWithName retrieves all fis.ExperimentTemplate items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetFISExperimentTemplateWithName(name string) (*fis.ExperimentTemplate, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *fis.ExperimentTemplate: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type fis.ExperimentTemplate not found", name) +} + // GetAllFMSNotificationChannelResources retrieves all fms.NotificationChannel items from an AWS CloudFormation template func (t *Template) GetAllFMSNotificationChannelResources() map[string]*fms.NotificationChannel { results := map[string]*fms.NotificationChannel{} @@ -14213,6 +14343,30 @@ func (t *Template) GetRDSDBProxyWithName(name string) (*rds.DBProxy, error) { return nil, fmt.Errorf("resource %q of type rds.DBProxy not found", name) } +// GetAllRDSDBProxyEndpointResources retrieves all rds.DBProxyEndpoint items from an AWS CloudFormation template +func (t *Template) GetAllRDSDBProxyEndpointResources() map[string]*rds.DBProxyEndpoint { + results := map[string]*rds.DBProxyEndpoint{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *rds.DBProxyEndpoint: + results[name] = resource + } + } + return results +} + +// GetRDSDBProxyEndpointWithName retrieves all rds.DBProxyEndpoint items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetRDSDBProxyEndpointWithName(name string) (*rds.DBProxyEndpoint, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *rds.DBProxyEndpoint: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type rds.DBProxyEndpoint not found", name) +} + // GetAllRDSDBProxyTargetGroupResources retrieves all rds.DBProxyTargetGroup items from an AWS CloudFormation template func (t *Template) GetAllRDSDBProxyTargetGroupResources() map[string]*rds.DBProxyTargetGroup { results := map[string]*rds.DBProxyTargetGroup{} @@ -15053,6 +15207,54 @@ func (t *Template) GetS3StorageLensWithName(name string) (*s3.StorageLens, error return nil, fmt.Errorf("resource %q of type s3.StorageLens not found", name) } +// GetAllS3ObjectLambdaAccessPointResources retrieves all s3objectlambda.AccessPoint items from an AWS CloudFormation template +func (t *Template) GetAllS3ObjectLambdaAccessPointResources() map[string]*s3objectlambda.AccessPoint { + results := map[string]*s3objectlambda.AccessPoint{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *s3objectlambda.AccessPoint: + results[name] = resource + } + } + return results +} + +// GetS3ObjectLambdaAccessPointWithName retrieves all s3objectlambda.AccessPoint items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetS3ObjectLambdaAccessPointWithName(name string) (*s3objectlambda.AccessPoint, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *s3objectlambda.AccessPoint: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type s3objectlambda.AccessPoint not found", name) +} + +// GetAllS3ObjectLambdaAccessPointPolicyResources retrieves all s3objectlambda.AccessPointPolicy items from an AWS CloudFormation template +func (t *Template) GetAllS3ObjectLambdaAccessPointPolicyResources() map[string]*s3objectlambda.AccessPointPolicy { + results := map[string]*s3objectlambda.AccessPointPolicy{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *s3objectlambda.AccessPointPolicy: + results[name] = resource + } + } + return results +} + +// GetS3ObjectLambdaAccessPointPolicyWithName retrieves all s3objectlambda.AccessPointPolicy items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetS3ObjectLambdaAccessPointPolicyWithName(name string) (*s3objectlambda.AccessPointPolicy, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *s3objectlambda.AccessPointPolicy: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type s3objectlambda.AccessPointPolicy not found", name) +} + // GetAllS3OutpostsAccessPointResources retrieves all s3outposts.AccessPoint items from an AWS CloudFormation template func (t *Template) GetAllS3OutpostsAccessPointResources() map[string]*s3outposts.AccessPoint { results := map[string]*s3outposts.AccessPoint{} diff --git a/cloudformation/appsync/aws-appsync-graphqlapi.go b/cloudformation/appsync/aws-appsync-graphqlapi.go index ebb0f91b05..0ee7217233 100644 --- a/cloudformation/appsync/aws-appsync-graphqlapi.go +++ b/cloudformation/appsync/aws-appsync-graphqlapi.go @@ -22,6 +22,11 @@ type GraphQLApi struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-authenticationtype AuthenticationType string `json:"AuthenticationType,omitempty"` + // LambdaAuthorizerConfig AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig + LambdaAuthorizerConfig *GraphQLApi_LambdaAuthorizerConfig `json:"LambdaAuthorizerConfig,omitempty"` + // LogConfig AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-logconfig diff --git a/cloudformation/appsync/aws-appsync-graphqlapi_additionalauthenticationprovider.go b/cloudformation/appsync/aws-appsync-graphqlapi_additionalauthenticationprovider.go index 73ec6a2fd8..c2bd76630b 100644 --- a/cloudformation/appsync/aws-appsync-graphqlapi_additionalauthenticationprovider.go +++ b/cloudformation/appsync/aws-appsync-graphqlapi_additionalauthenticationprovider.go @@ -13,6 +13,11 @@ type GraphQLApi_AdditionalAuthenticationProvider struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html#cfn-appsync-graphqlapi-additionalauthenticationprovider-authenticationtype AuthenticationType string `json:"AuthenticationType,omitempty"` + // LambdaAuthorizerConfig AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html#cfn-appsync-graphqlapi-additionalauthenticationprovider-lambdaauthorizerconfig + LambdaAuthorizerConfig *GraphQLApi_LambdaAuthorizerConfig `json:"LambdaAuthorizerConfig,omitempty"` + // OpenIDConnectConfig AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-additionalauthenticationprovider.html#cfn-appsync-graphqlapi-additionalauthenticationprovider-openidconnectconfig diff --git a/cloudformation/appsync/aws-appsync-graphqlapi_lambdaauthorizerconfig.go b/cloudformation/appsync/aws-appsync-graphqlapi_lambdaauthorizerconfig.go new file mode 100644 index 0000000000..297bb98adf --- /dev/null +++ b/cloudformation/appsync/aws-appsync-graphqlapi_lambdaauthorizerconfig.go @@ -0,0 +1,45 @@ +package appsync + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// GraphQLApi_LambdaAuthorizerConfig AWS CloudFormation Resource (AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html +type GraphQLApi_LambdaAuthorizerConfig struct { + + // AuthorizerResultTtlInSeconds AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig-authorizerresultttlinseconds + AuthorizerResultTtlInSeconds float64 `json:"AuthorizerResultTtlInSeconds,omitempty"` + + // AuthorizerUri AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig-authorizeruri + AuthorizerUri string `json:"AuthorizerUri,omitempty"` + + // IdentityValidationExpression AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-graphqlapi-lambdaauthorizerconfig.html#cfn-appsync-graphqlapi-lambdaauthorizerconfig-identityvalidationexpression + IdentityValidationExpression string `json:"IdentityValidationExpression,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *GraphQLApi_LambdaAuthorizerConfig) AWSCloudFormationType() string { + return "AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" +} diff --git a/cloudformation/backup/aws-backup-backupplan.go b/cloudformation/backup/aws-backup-backupplan.go index a87fecac98..a49db8c41c 100644 --- a/cloudformation/backup/aws-backup-backupplan.go +++ b/cloudformation/backup/aws-backup-backupplan.go @@ -20,7 +20,7 @@ type BackupPlan struct { // BackupPlanTags AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-backup-backupplan.html#cfn-backup-backupplan-backupplantags - BackupPlanTags interface{} `json:"BackupPlanTags,omitempty"` + BackupPlanTags map[string]string `json:"BackupPlanTags,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 5814f72525..8097bc239b 100644 --- a/cloudformation/backup/aws-backup-backupplan_backupruleresourcetype.go +++ b/cloudformation/backup/aws-backup-backupplan_backupruleresourcetype.go @@ -26,7 +26,7 @@ type BackupPlan_BackupRuleResourceType struct { // RecoveryPointTags AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-recoverypointtags - RecoveryPointTags interface{} `json:"RecoveryPointTags,omitempty"` + RecoveryPointTags map[string]string `json:"RecoveryPointTags,omitempty"` // RuleName AWS CloudFormation Property // Required: true diff --git a/cloudformation/ce/aws-ce-anomalymonitor.go b/cloudformation/ce/aws-ce-anomalymonitor.go new file mode 100644 index 0000000000..c1c4102fc3 --- /dev/null +++ b/cloudformation/ce/aws-ce-anomalymonitor.go @@ -0,0 +1,121 @@ +package ce + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AnomalyMonitor AWS CloudFormation Resource (AWS::CE::AnomalyMonitor) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalymonitor.html +type AnomalyMonitor struct { + + // MonitorDimension AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalymonitor.html#cfn-ce-anomalymonitor-monitordimension + MonitorDimension string `json:"MonitorDimension,omitempty"` + + // MonitorName AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalymonitor.html#cfn-ce-anomalymonitor-monitorname + MonitorName string `json:"MonitorName,omitempty"` + + // MonitorSpecification AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalymonitor.html#cfn-ce-anomalymonitor-monitorspecification + MonitorSpecification string `json:"MonitorSpecification,omitempty"` + + // MonitorType AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalymonitor.html#cfn-ce-anomalymonitor-monitortype + MonitorType string `json:"MonitorType,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AnomalyMonitor) AWSCloudFormationType() string { + return "AWS::CE::AnomalyMonitor" +} + +// 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 AnomalyMonitor) MarshalJSON() ([]byte, error) { + type Properties AnomalyMonitor + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *AnomalyMonitor) UnmarshalJSON(b []byte) error { + type Properties AnomalyMonitor + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = AnomalyMonitor(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/ce/aws-ce-anomalysubscription.go b/cloudformation/ce/aws-ce-anomalysubscription.go new file mode 100644 index 0000000000..6fe1e95d89 --- /dev/null +++ b/cloudformation/ce/aws-ce-anomalysubscription.go @@ -0,0 +1,126 @@ +package ce + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AnomalySubscription AWS CloudFormation Resource (AWS::CE::AnomalySubscription) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalysubscription.html +type AnomalySubscription struct { + + // Frequency AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalysubscription.html#cfn-ce-anomalysubscription-frequency + Frequency string `json:"Frequency,omitempty"` + + // MonitorArnList AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalysubscription.html#cfn-ce-anomalysubscription-monitorarnlist + MonitorArnList []string `json:"MonitorArnList,omitempty"` + + // Subscribers AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalysubscription.html#cfn-ce-anomalysubscription-subscribers + Subscribers []AnomalySubscription_Subscriber `json:"Subscribers,omitempty"` + + // SubscriptionName AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalysubscription.html#cfn-ce-anomalysubscription-subscriptionname + SubscriptionName string `json:"SubscriptionName,omitempty"` + + // Threshold AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ce-anomalysubscription.html#cfn-ce-anomalysubscription-threshold + Threshold float64 `json:"Threshold"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AnomalySubscription) AWSCloudFormationType() string { + return "AWS::CE::AnomalySubscription" +} + +// 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 AnomalySubscription) MarshalJSON() ([]byte, error) { + type Properties AnomalySubscription + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *AnomalySubscription) UnmarshalJSON(b []byte) error { + type Properties AnomalySubscription + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = AnomalySubscription(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/ce/aws-ce-anomalysubscription_subscriber.go b/cloudformation/ce/aws-ce-anomalysubscription_subscriber.go new file mode 100644 index 0000000000..1f8f10c0ab --- /dev/null +++ b/cloudformation/ce/aws-ce-anomalysubscription_subscriber.go @@ -0,0 +1,45 @@ +package ce + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AnomalySubscription_Subscriber AWS CloudFormation Resource (AWS::CE::AnomalySubscription.Subscriber) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ce-anomalysubscription-subscriber.html +type AnomalySubscription_Subscriber struct { + + // Address AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ce-anomalysubscription-subscriber.html#cfn-ce-anomalysubscription-subscriber-address + Address string `json:"Address,omitempty"` + + // Status AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ce-anomalysubscription-subscriber.html#cfn-ce-anomalysubscription-subscriber-status + Status string `json:"Status,omitempty"` + + // Type AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ce-anomalysubscription-subscriber.html#cfn-ce-anomalysubscription-subscriber-type + Type string `json:"Type,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AnomalySubscription_Subscriber) AWSCloudFormationType() string { + return "AWS::CE::AnomalySubscription.Subscriber" +} diff --git a/cloudformation/certificatemanager/aws-certificatemanager-account.go b/cloudformation/certificatemanager/aws-certificatemanager-account.go new file mode 100644 index 0000000000..245b5fd1b6 --- /dev/null +++ b/cloudformation/certificatemanager/aws-certificatemanager-account.go @@ -0,0 +1,106 @@ +package certificatemanager + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Account AWS CloudFormation Resource (AWS::CertificateManager::Account) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-account.html +type Account struct { + + // ExpiryEventsConfiguration AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-account.html#cfn-certificatemanager-account-expiryeventsconfiguration + ExpiryEventsConfiguration *Account_ExpiryEventsConfiguration `json:"ExpiryEventsConfiguration,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *Account) AWSCloudFormationType() string { + return "AWS::CertificateManager::Account" +} + +// 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 Account) MarshalJSON() ([]byte, error) { + type Properties Account + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *Account) UnmarshalJSON(b []byte) error { + type Properties Account + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = Account(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/certificatemanager/aws-certificatemanager-account_expiryeventsconfiguration.go b/cloudformation/certificatemanager/aws-certificatemanager-account_expiryeventsconfiguration.go new file mode 100644 index 0000000000..c9aca13bd0 --- /dev/null +++ b/cloudformation/certificatemanager/aws-certificatemanager-account_expiryeventsconfiguration.go @@ -0,0 +1,35 @@ +package certificatemanager + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Account_ExpiryEventsConfiguration AWS CloudFormation Resource (AWS::CertificateManager::Account.ExpiryEventsConfiguration) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-account-expiryeventsconfiguration.html +type Account_ExpiryEventsConfiguration struct { + + // DaysBeforeExpiry AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-certificatemanager-account-expiryeventsconfiguration.html#cfn-certificatemanager-account-expiryeventsconfiguration-daysbeforeexpiry + DaysBeforeExpiry int `json:"DaysBeforeExpiry,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *Account_ExpiryEventsConfiguration) AWSCloudFormationType() string { + return "AWS::CertificateManager::Account.ExpiryEventsConfiguration" +} diff --git a/cloudformation/dynamodb/aws-dynamodb-table.go b/cloudformation/dynamodb/aws-dynamodb-table.go index c6b15469eb..71003aa90c 100644 --- a/cloudformation/dynamodb/aws-dynamodb-table.go +++ b/cloudformation/dynamodb/aws-dynamodb-table.go @@ -23,6 +23,11 @@ type Table struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-billingmode BillingMode string `json:"BillingMode,omitempty"` + // ContributorInsightsSpecification AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-contributorinsightsspecification-enabled + ContributorInsightsSpecification *Table_ContributorInsightsSpecification `json:"ContributorInsightsSpecification,omitempty"` + // GlobalSecondaryIndexes AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-gsi @@ -33,11 +38,6 @@ type Table struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-keyschema KeySchema []Table_KeySchema `json:"KeySchema,omitempty"` - // KinesisStreamSpecification AWS CloudFormation Property - // Required: false - // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-kinesisstreamspecification - KinesisStreamSpecification *Table_KinesisStreamSpecification `json:"KinesisStreamSpecification,omitempty"` - // LocalSecondaryIndexes AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-lsi diff --git a/cloudformation/dynamodb/aws-dynamodb-table_contributorinsightsspecification.go b/cloudformation/dynamodb/aws-dynamodb-table_contributorinsightsspecification.go new file mode 100644 index 0000000000..a681c6777d --- /dev/null +++ b/cloudformation/dynamodb/aws-dynamodb-table_contributorinsightsspecification.go @@ -0,0 +1,35 @@ +package dynamodb + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Table_ContributorInsightsSpecification AWS CloudFormation Resource (AWS::DynamoDB::Table.ContributorInsightsSpecification) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-contributorinsightsspecification.html +type Table_ContributorInsightsSpecification struct { + + // Enabled AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-contributorinsightsspecification.html#cfn-dynamodb-contributorinsightsspecification-enabled + Enabled bool `json:"Enabled"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *Table_ContributorInsightsSpecification) AWSCloudFormationType() string { + return "AWS::DynamoDB::Table.ContributorInsightsSpecification" +} diff --git a/cloudformation/dynamodb/aws-dynamodb-table_globalsecondaryindex.go b/cloudformation/dynamodb/aws-dynamodb-table_globalsecondaryindex.go index f42f17fedb..10717379f4 100644 --- a/cloudformation/dynamodb/aws-dynamodb-table_globalsecondaryindex.go +++ b/cloudformation/dynamodb/aws-dynamodb-table_globalsecondaryindex.go @@ -8,6 +8,11 @@ import ( // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html type Table_GlobalSecondaryIndex struct { + // ContributorInsightsSpecification AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-contributorinsightsspecification-enabled + ContributorInsightsSpecification *Table_ContributorInsightsSpecification `json:"ContributorInsightsSpecification,omitempty"` + // IndexName AWS CloudFormation Property // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname diff --git a/cloudformation/ec2/aws-ec2-launchtemplate.go b/cloudformation/ec2/aws-ec2-launchtemplate.go index e52838358f..5e11121d7b 100644 --- a/cloudformation/ec2/aws-ec2-launchtemplate.go +++ b/cloudformation/ec2/aws-ec2-launchtemplate.go @@ -22,6 +22,11 @@ type LaunchTemplate struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-launchtemplatename LaunchTemplateName string `json:"LaunchTemplateName,omitempty"` + // TagSpecifications AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html#cfn-ec2-launchtemplate-tagspecifications + TagSpecifications []LaunchTemplate_TagSpecification `json:"TagSpecifications,omitempty"` + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/cloudformation/ecs/aws-ecs-cluster.go b/cloudformation/ecs/aws-ecs-cluster.go index 5dd2b4e53d..d330b1c3e0 100644 --- a/cloudformation/ecs/aws-ecs-cluster.go +++ b/cloudformation/ecs/aws-ecs-cluster.go @@ -28,6 +28,11 @@ type Cluster struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-clustersettings ClusterSettings []Cluster_ClusterSettings `json:"ClusterSettings,omitempty"` + // Configuration AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-configuration + Configuration *Cluster_ClusterConfiguration `json:"Configuration,omitempty"` + // DefaultCapacityProviderStrategy AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-defaultcapacityproviderstrategy diff --git a/cloudformation/ecs/aws-ecs-clustercapacityproviderassociations.go b/cloudformation/ecs/aws-ecs-clustercapacityproviderassociations.go new file mode 100644 index 0000000000..384cc10c11 --- /dev/null +++ b/cloudformation/ecs/aws-ecs-clustercapacityproviderassociations.go @@ -0,0 +1,116 @@ +package ecs + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ClusterCapacityProviderAssociations AWS CloudFormation Resource (AWS::ECS::ClusterCapacityProviderAssociations) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-clustercapacityproviderassociations.html +type ClusterCapacityProviderAssociations struct { + + // CapacityProviders AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-clustercapacityproviderassociations.html#cfn-ecs-clustercapacityproviderassociations-capacityproviders + CapacityProviders []string `json:"CapacityProviders,omitempty"` + + // Cluster AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-clustercapacityproviderassociations.html#cfn-ecs-clustercapacityproviderassociations-cluster + Cluster string `json:"Cluster,omitempty"` + + // DefaultCapacityProviderStrategy AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-clustercapacityproviderassociations.html#cfn-ecs-clustercapacityproviderassociations-defaultcapacityproviderstrategy + DefaultCapacityProviderStrategy []ClusterCapacityProviderAssociations_CapacityProviderStrategy `json:"DefaultCapacityProviderStrategy,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ClusterCapacityProviderAssociations) AWSCloudFormationType() string { + return "AWS::ECS::ClusterCapacityProviderAssociations" +} + +// 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 ClusterCapacityProviderAssociations) MarshalJSON() ([]byte, error) { + type Properties ClusterCapacityProviderAssociations + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *ClusterCapacityProviderAssociations) UnmarshalJSON(b []byte) error { + type Properties ClusterCapacityProviderAssociations + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = ClusterCapacityProviderAssociations(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/ecs/aws-ecs-clustercapacityproviderassociations_capacityproviderstrategy.go b/cloudformation/ecs/aws-ecs-clustercapacityproviderassociations_capacityproviderstrategy.go new file mode 100644 index 0000000000..60cf044ae8 --- /dev/null +++ b/cloudformation/ecs/aws-ecs-clustercapacityproviderassociations_capacityproviderstrategy.go @@ -0,0 +1,45 @@ +package ecs + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ClusterCapacityProviderAssociations_CapacityProviderStrategy AWS CloudFormation Resource (AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html +type ClusterCapacityProviderAssociations_CapacityProviderStrategy struct { + + // Base AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html#cfn-ecs-clustercapacityproviderassociations-capacityproviderstrategy-base + Base int `json:"Base,omitempty"` + + // CapacityProvider AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html#cfn-ecs-clustercapacityproviderassociations-capacityproviderstrategy-capacityprovider + CapacityProvider string `json:"CapacityProvider,omitempty"` + + // Weight AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html#cfn-ecs-clustercapacityproviderassociations-capacityproviderstrategy-weight + Weight int `json:"Weight,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ClusterCapacityProviderAssociations_CapacityProviderStrategy) AWSCloudFormationType() string { + return "AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy" +} diff --git a/cloudformation/ecs/aws-ecs-service.go b/cloudformation/ecs/aws-ecs-service.go index d1f6f9897a..9e7bcc5c5a 100644 --- a/cloudformation/ecs/aws-ecs-service.go +++ b/cloudformation/ecs/aws-ecs-service.go @@ -43,6 +43,11 @@ type Service struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-enableecsmanagedtags EnableECSManagedTags bool `json:"EnableECSManagedTags,omitempty"` + // EnableExecuteCommand AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-enableexecutecommand + EnableExecuteCommand bool `json:"EnableExecuteCommand,omitempty"` + // HealthCheckGracePeriodSeconds AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-healthcheckgraceperiodseconds diff --git a/cloudformation/efs/aws-efs-filesystem.go b/cloudformation/efs/aws-efs-filesystem.go index 191159a566..b1775cfc43 100644 --- a/cloudformation/efs/aws-efs-filesystem.go +++ b/cloudformation/efs/aws-efs-filesystem.go @@ -12,6 +12,11 @@ import ( // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html type FileSystem struct { + // AvailabilityZoneName AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-availabilityzonename + AvailabilityZoneName string `json:"AvailabilityZoneName,omitempty"` + // BackupPolicy AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-backuppolicy diff --git a/cloudformation/fis/aws-fis-experimenttemplate.go b/cloudformation/fis/aws-fis-experimenttemplate.go new file mode 100644 index 0000000000..b88cbd3b60 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate.go @@ -0,0 +1,131 @@ +package fis + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html +type ExperimentTemplate struct { + + // actions AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html#cfn-fis-experimenttemplate-actions + actions map[string]ExperimentTemplate_ExperimentTemplateAction `json:"actions,omitempty"` + + // description AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html#cfn-fis-experimenttemplate-description + description string `json:"description,omitempty"` + + // roleArn AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html#cfn-fis-experimenttemplate-rolearn + roleArn string `json:"roleArn,omitempty"` + + // stopConditions AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html#cfn-fis-experimenttemplate-stopconditions + stopConditions []ExperimentTemplate_ExperimentTemplateStopCondition `json:"stopConditions,omitempty"` + + // tags AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html#cfn-fis-experimenttemplate-tags + tags map[string]string `json:"tags,omitempty"` + + // targets AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fis-experimenttemplate.html#cfn-fis-experimenttemplate-targets + targets map[string]ExperimentTemplate_ExperimentTemplateTarget `json:"targets,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate" +} + +// 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 ExperimentTemplate) MarshalJSON() ([]byte, error) { + type Properties ExperimentTemplate + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *ExperimentTemplate) UnmarshalJSON(b []byte) error { + type Properties ExperimentTemplate + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = ExperimentTemplate(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateaction.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateaction.go new file mode 100644 index 0000000000..265954b041 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateaction.go @@ -0,0 +1,55 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateAction AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateAction) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateaction.html +type ExperimentTemplate_ExperimentTemplateAction struct { + + // actionId AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateaction.html#cfn-fis-experimenttemplate-experimenttemplateaction-actionid + actionId string `json:"actionId,omitempty"` + + // description AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateaction.html#cfn-fis-experimenttemplate-experimenttemplateaction-description + description string `json:"description,omitempty"` + + // parameters AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateaction.html#cfn-fis-experimenttemplate-experimenttemplateaction-parameters + parameters *ExperimentTemplate_ExperimentTemplateActionItemParameterMap `json:"parameters,omitempty"` + + // startAfter AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateaction.html#cfn-fis-experimenttemplate-experimenttemplateaction-startafter + startAfter *ExperimentTemplate_ExperimentTemplateActionItemStartAfterList `json:"startAfter,omitempty"` + + // targets AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateaction.html#cfn-fis-experimenttemplate-experimenttemplateaction-targets + targets *ExperimentTemplate_ExperimentTemplateActionItemTargetMap `json:"targets,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateAction) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateAction" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemparametermap.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemparametermap.go new file mode 100644 index 0000000000..2d7c15126f --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemparametermap.go @@ -0,0 +1,30 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateActionItemParameterMap AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateactionitemparametermap.html +type ExperimentTemplate_ExperimentTemplateActionItemParameterMap struct { + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateActionItemParameterMap) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemstartafterlist.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemstartafterlist.go new file mode 100644 index 0000000000..56fd55d124 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemstartafterlist.go @@ -0,0 +1,35 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateActionItemStartAfterList AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateactionitemstartafterlist.html +type ExperimentTemplate_ExperimentTemplateActionItemStartAfterList struct { + + // ExperimentTemplateActionItemStartAfterList AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateactionitemstartafterlist.html#cfn-fis-experimenttemplate-experimenttemplateactionitemstartafterlist-experimenttemplateactionitemstartafterlist + ExperimentTemplateActionItemStartAfterList []string `json:"ExperimentTemplateActionItemStartAfterList,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateActionItemStartAfterList) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemtargetmap.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemtargetmap.go new file mode 100644 index 0000000000..7a31c77bbc --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplateactionitemtargetmap.go @@ -0,0 +1,30 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateActionItemTargetMap AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplateactionitemtargetmap.html +type ExperimentTemplate_ExperimentTemplateActionItemTargetMap struct { + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateActionItemTargetMap) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatestopcondition.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatestopcondition.go new file mode 100644 index 0000000000..f2b7a74a7d --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatestopcondition.go @@ -0,0 +1,40 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateStopCondition AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatestopcondition.html +type ExperimentTemplate_ExperimentTemplateStopCondition struct { + + // source AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatestopcondition.html#cfn-fis-experimenttemplate-experimenttemplatestopcondition-source + source string `json:"source,omitempty"` + + // value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatestopcondition.html#cfn-fis-experimenttemplate-experimenttemplatestopcondition-value + value string `json:"value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateStopCondition) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetarget.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetarget.go new file mode 100644 index 0000000000..018ea2baa7 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetarget.go @@ -0,0 +1,55 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateTarget AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetarget.html +type ExperimentTemplate_ExperimentTemplateTarget struct { + + // filters AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetarget.html#cfn-fis-experimenttemplate-experimenttemplatetarget-filters + filters *ExperimentTemplate_ExperimentTemplateTargetFilterList `json:"filters,omitempty"` + + // resourceArns AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetarget.html#cfn-fis-experimenttemplate-experimenttemplatetarget-resourcearns + resourceArns *ExperimentTemplate_ResourceArnList `json:"resourceArns,omitempty"` + + // resourceTags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetarget.html#cfn-fis-experimenttemplate-experimenttemplatetarget-resourcetags + resourceTags *ExperimentTemplate_TagMap `json:"resourceTags,omitempty"` + + // resourceType AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetarget.html#cfn-fis-experimenttemplate-experimenttemplatetarget-resourcetype + resourceType string `json:"resourceType,omitempty"` + + // selectionMode AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetarget.html#cfn-fis-experimenttemplate-experimenttemplatetarget-selectionmode + selectionMode string `json:"selectionMode,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateTarget) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfilter.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfilter.go new file mode 100644 index 0000000000..2889f33b32 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfilter.go @@ -0,0 +1,40 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateTargetFilter AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfilter.html +type ExperimentTemplate_ExperimentTemplateTargetFilter struct { + + // path AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfilter.html#cfn-fis-experimenttemplate-experimenttemplatetargetfilter-path + path string `json:"path,omitempty"` + + // values AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfilter.html#cfn-fis-experimenttemplate-experimenttemplatetargetfilter-values + values *ExperimentTemplate_ExperimentTemplateTargetFilterValues `json:"values,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateTargetFilter) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfilterlist.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfilterlist.go new file mode 100644 index 0000000000..5d22046b6b --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfilterlist.go @@ -0,0 +1,35 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateTargetFilterList AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfilterlist.html +type ExperimentTemplate_ExperimentTemplateTargetFilterList struct { + + // ExperimentTemplateTargetFilterList AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfilterlist.html#cfn-fis-experimenttemplate-experimenttemplatetargetfilterlist-experimenttemplatetargetfilterlist + ExperimentTemplateTargetFilterList []ExperimentTemplate_ExperimentTemplateTargetFilter `json:"ExperimentTemplateTargetFilterList,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateTargetFilterList) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfiltervalues.go b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfiltervalues.go new file mode 100644 index 0000000000..8cc69adfb2 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_experimenttemplatetargetfiltervalues.go @@ -0,0 +1,35 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ExperimentTemplateTargetFilterValues AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfiltervalues.html +type ExperimentTemplate_ExperimentTemplateTargetFilterValues struct { + + // ExperimentTemplateTargetFilterValues AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-experimenttemplatetargetfiltervalues.html#cfn-fis-experimenttemplate-experimenttemplatetargetfiltervalues-experimenttemplatetargetfiltervalues + ExperimentTemplateTargetFilterValues []string `json:"ExperimentTemplateTargetFilterValues,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ExperimentTemplateTargetFilterValues) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_resourcearnlist.go b/cloudformation/fis/aws-fis-experimenttemplate_resourcearnlist.go new file mode 100644 index 0000000000..f2269a1327 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_resourcearnlist.go @@ -0,0 +1,35 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_ResourceArnList AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.ResourceArnList) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-resourcearnlist.html +type ExperimentTemplate_ResourceArnList struct { + + // ResourceArnList AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-resourcearnlist.html#cfn-fis-experimenttemplate-resourcearnlist-resourcearnlist + ResourceArnList []string `json:"ResourceArnList,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_ResourceArnList) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.ResourceArnList" +} diff --git a/cloudformation/fis/aws-fis-experimenttemplate_tagmap.go b/cloudformation/fis/aws-fis-experimenttemplate_tagmap.go new file mode 100644 index 0000000000..9fe831c048 --- /dev/null +++ b/cloudformation/fis/aws-fis-experimenttemplate_tagmap.go @@ -0,0 +1,30 @@ +package fis + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// ExperimentTemplate_TagMap AWS CloudFormation Resource (AWS::FIS::ExperimentTemplate.TagMap) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fis-experimenttemplate-tagmap.html +type ExperimentTemplate_TagMap struct { + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *ExperimentTemplate_TagMap) AWSCloudFormationType() string { + return "AWS::FIS::ExperimentTemplate.TagMap" +} diff --git a/cloudformation/gamelift/aws-gamelift-alias_routingstrategy.go b/cloudformation/gamelift/aws-gamelift-alias_routingstrategy.go index b1d883a578..416ea3256e 100644 --- a/cloudformation/gamelift/aws-gamelift-alias_routingstrategy.go +++ b/cloudformation/gamelift/aws-gamelift-alias_routingstrategy.go @@ -19,7 +19,7 @@ type Alias_RoutingStrategy struct { Message string `json:"Message,omitempty"` // Type AWS CloudFormation Property - // Required: false + // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-alias-routingstrategy.html#cfn-gamelift-alias-routingstrategy-type Type string `json:"Type,omitempty"` diff --git a/cloudformation/iot/aws-iot-topicrule_s3action.go b/cloudformation/iot/aws-iot-topicrule_s3action.go index ec9ee67ddd..da706c9e9e 100644 --- a/cloudformation/iot/aws-iot-topicrule_s3action.go +++ b/cloudformation/iot/aws-iot-topicrule_s3action.go @@ -13,6 +13,11 @@ type TopicRule_S3Action struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html#cfn-iot-topicrule-s3action-bucketname BucketName string `json:"BucketName,omitempty"` + // CannedAcl AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html#cfn-iot-topicrule-s3action-cannedacl + CannedAcl string `json:"CannedAcl,omitempty"` + // Key AWS CloudFormation Property // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-s3action.html#cfn-iot-topicrule-s3action-key diff --git a/cloudformation/iot/aws-iot-topicrule_topicrulepayload.go b/cloudformation/iot/aws-iot-topicrule_topicrulepayload.go index a094774961..e61ff1d31e 100644 --- a/cloudformation/iot/aws-iot-topicrule_topicrulepayload.go +++ b/cloudformation/iot/aws-iot-topicrule_topicrulepayload.go @@ -29,9 +29,9 @@ type TopicRule_TopicRulePayload struct { ErrorAction *TopicRule_Action `json:"ErrorAction,omitempty"` // RuleDisabled AWS CloudFormation Property - // Required: true + // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-topicrulepayload.html#cfn-iot-topicrule-topicrulepayload-ruledisabled - RuleDisabled bool `json:"RuleDisabled"` + RuleDisabled bool `json:"RuleDisabled,omitempty"` // Sql AWS CloudFormation Property // Required: true diff --git a/cloudformation/rds/aws-rds-dbproxyendpoint.go b/cloudformation/rds/aws-rds-dbproxyendpoint.go new file mode 100644 index 0000000000..17795a6ef2 --- /dev/null +++ b/cloudformation/rds/aws-rds-dbproxyendpoint.go @@ -0,0 +1,131 @@ +package rds + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// DBProxyEndpoint AWS CloudFormation Resource (AWS::RDS::DBProxyEndpoint) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html +type DBProxyEndpoint struct { + + // DBProxyEndpointName AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-dbproxyendpointname + DBProxyEndpointName string `json:"DBProxyEndpointName,omitempty"` + + // DBProxyName AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-dbproxyname + DBProxyName string `json:"DBProxyName,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-tags + Tags []DBProxyEndpoint_TagFormat `json:"Tags,omitempty"` + + // TargetRole AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-targetrole + TargetRole string `json:"TargetRole,omitempty"` + + // VpcSecurityGroupIds AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-vpcsecuritygroupids + VpcSecurityGroupIds []string `json:"VpcSecurityGroupIds,omitempty"` + + // VpcSubnetIds AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxyendpoint.html#cfn-rds-dbproxyendpoint-vpcsubnetids + VpcSubnetIds []string `json:"VpcSubnetIds,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *DBProxyEndpoint) AWSCloudFormationType() string { + return "AWS::RDS::DBProxyEndpoint" +} + +// 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 DBProxyEndpoint) MarshalJSON() ([]byte, error) { + type Properties DBProxyEndpoint + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *DBProxyEndpoint) UnmarshalJSON(b []byte) error { + type Properties DBProxyEndpoint + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = DBProxyEndpoint(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/rds/aws-rds-dbproxyendpoint_tagformat.go b/cloudformation/rds/aws-rds-dbproxyendpoint_tagformat.go new file mode 100644 index 0000000000..ae276a0f99 --- /dev/null +++ b/cloudformation/rds/aws-rds-dbproxyendpoint_tagformat.go @@ -0,0 +1,40 @@ +package rds + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// DBProxyEndpoint_TagFormat AWS CloudFormation Resource (AWS::RDS::DBProxyEndpoint.TagFormat) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxyendpoint-tagformat.html +type DBProxyEndpoint_TagFormat struct { + + // Key AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxyendpoint-tagformat.html#cfn-rds-dbproxyendpoint-tagformat-key + Key string `json:"Key,omitempty"` + + // Value AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbproxyendpoint-tagformat.html#cfn-rds-dbproxyendpoint-tagformat-value + Value string `json:"Value,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *DBProxyEndpoint_TagFormat) AWSCloudFormationType() string { + return "AWS::RDS::DBProxyEndpoint.TagFormat" +} diff --git a/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint.go b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint.go new file mode 100644 index 0000000000..9789bdf966 --- /dev/null +++ b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint.go @@ -0,0 +1,111 @@ +package s3objectlambda + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AccessPoint AWS CloudFormation Resource (AWS::S3ObjectLambda::AccessPoint) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html +type AccessPoint struct { + + // Name AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html#cfn-s3objectlambda-accesspoint-name + Name string `json:"Name,omitempty"` + + // ObjectLambdaConfiguration AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html#cfn-s3objectlambda-accesspoint-objectlambdaconfiguration + ObjectLambdaConfiguration *AccessPoint_ObjectLambdaConfiguration `json:"ObjectLambdaConfiguration,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AccessPoint) AWSCloudFormationType() string { + return "AWS::S3ObjectLambda::AccessPoint" +} + +// 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 AccessPoint) MarshalJSON() ([]byte, error) { + type Properties AccessPoint + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *AccessPoint) UnmarshalJSON(b []byte) error { + type Properties AccessPoint + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = AccessPoint(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint_objectlambdaconfiguration.go b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint_objectlambdaconfiguration.go new file mode 100644 index 0000000000..bdcbdf0a19 --- /dev/null +++ b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint_objectlambdaconfiguration.go @@ -0,0 +1,50 @@ +package s3objectlambda + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AccessPoint_ObjectLambdaConfiguration AWS CloudFormation Resource (AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-objectlambdaconfiguration.html +type AccessPoint_ObjectLambdaConfiguration struct { + + // AllowedFeatures AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-objectlambdaconfiguration.html#cfn-s3objectlambda-accesspoint-objectlambdaconfiguration-allowedfeatures + AllowedFeatures []string `json:"AllowedFeatures,omitempty"` + + // CloudWatchMetricsEnabled AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-objectlambdaconfiguration.html#cfn-s3objectlambda-accesspoint-objectlambdaconfiguration-cloudwatchmetricsenabled + CloudWatchMetricsEnabled bool `json:"CloudWatchMetricsEnabled,omitempty"` + + // SupportingAccessPoint AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-objectlambdaconfiguration.html#cfn-s3objectlambda-accesspoint-objectlambdaconfiguration-supportingaccesspoint + SupportingAccessPoint string `json:"SupportingAccessPoint,omitempty"` + + // TransformationConfigurations AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-objectlambdaconfiguration.html#cfn-s3objectlambda-accesspoint-objectlambdaconfiguration-transformationconfigurations + TransformationConfigurations []AccessPoint_TransformationConfiguration `json:"TransformationConfigurations,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AccessPoint_ObjectLambdaConfiguration) AWSCloudFormationType() string { + return "AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration" +} diff --git a/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint_transformationconfiguration.go b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint_transformationconfiguration.go new file mode 100644 index 0000000000..19581a3fda --- /dev/null +++ b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspoint_transformationconfiguration.go @@ -0,0 +1,40 @@ +package s3objectlambda + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AccessPoint_TransformationConfiguration AWS CloudFormation Resource (AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-transformationconfiguration.html +type AccessPoint_TransformationConfiguration struct { + + // Actions AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-transformationconfiguration.html#cfn-s3objectlambda-accesspoint-transformationconfiguration-actions + Actions []string `json:"Actions,omitempty"` + + // ContentTransformation AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3objectlambda-accesspoint-transformationconfiguration.html#cfn-s3objectlambda-accesspoint-transformationconfiguration-contenttransformation + ContentTransformation interface{} `json:"ContentTransformation,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AccessPoint_TransformationConfiguration) AWSCloudFormationType() string { + return "AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration" +} diff --git a/cloudformation/s3objectlambda/aws-s3objectlambda-accesspointpolicy.go b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspointpolicy.go new file mode 100644 index 0000000000..15597f2af7 --- /dev/null +++ b/cloudformation/s3objectlambda/aws-s3objectlambda-accesspointpolicy.go @@ -0,0 +1,111 @@ +package s3objectlambda + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// AccessPointPolicy AWS CloudFormation Resource (AWS::S3ObjectLambda::AccessPointPolicy) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspointpolicy.html +type AccessPointPolicy struct { + + // ObjectLambdaAccessPoint AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspointpolicy.html#cfn-s3objectlambda-accesspointpolicy-objectlambdaaccesspoint + ObjectLambdaAccessPoint string `json:"ObjectLambdaAccessPoint,omitempty"` + + // PolicyDocument AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspointpolicy.html#cfn-s3objectlambda-accesspointpolicy-policydocument + PolicyDocument interface{} `json:"PolicyDocument,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationUpdateReplacePolicy represents a CloudFormation UpdateReplacePolicy + AWSCloudFormationUpdateReplacePolicy policies.UpdateReplacePolicy `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 *AccessPointPolicy) AWSCloudFormationType() string { + return "AWS::S3ObjectLambda::AccessPointPolicy" +} + +// 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 AccessPointPolicy) MarshalJSON() ([]byte, error) { + type Properties AccessPointPolicy + 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"` + UpdateReplacePolicy policies.UpdateReplacePolicy `json:"UpdateReplacePolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + UpdateReplacePolicy: r.AWSCloudFormationUpdateReplacePolicy, + 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 *AccessPointPolicy) UnmarshalJSON(b []byte) error { + type Properties AccessPointPolicy + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + UpdateReplacePolicy 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 = AccessPointPolicy(*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.UpdateReplacePolicy != "" { + r.AWSCloudFormationUpdateReplacePolicy = policies.UpdateReplacePolicy(res.UpdateReplacePolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/servicecatalogappregistry/aws-servicecatalogappregistry-attributegroup.go b/cloudformation/servicecatalogappregistry/aws-servicecatalogappregistry-attributegroup.go index 265557b826..7a276b9d79 100644 --- a/cloudformation/servicecatalogappregistry/aws-servicecatalogappregistry-attributegroup.go +++ b/cloudformation/servicecatalogappregistry/aws-servicecatalogappregistry-attributegroup.go @@ -15,7 +15,7 @@ type AttributeGroup struct { // Attributes AWS CloudFormation Property // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalogappregistry-attributegroup.html#cfn-servicecatalogappregistry-attributegroup-attributes - Attributes *AttributeGroup_Attributes `json:"Attributes,omitempty"` + Attributes interface{} `json:"Attributes,omitempty"` // Description AWS CloudFormation Property // Required: false diff --git a/cloudformation/servicediscovery/aws-servicediscovery-service.go b/cloudformation/servicediscovery/aws-servicediscovery-service.go index 57467cead5..186b109c54 100644 --- a/cloudformation/servicediscovery/aws-servicediscovery-service.go +++ b/cloudformation/servicediscovery/aws-servicediscovery-service.go @@ -48,6 +48,11 @@ type Service struct { // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-tags Tags []tags.Tag `json:"Tags,omitempty"` + // Type AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-type + Type string `json:"Type,omitempty"` + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/cloudformation/ssm/aws-ssm-maintenancewindowtarget_targets.go b/cloudformation/ssm/aws-ssm-maintenancewindowtarget_targets.go index d2ec17ee12..bb667ccf8c 100644 --- a/cloudformation/ssm/aws-ssm-maintenancewindowtarget_targets.go +++ b/cloudformation/ssm/aws-ssm-maintenancewindowtarget_targets.go @@ -14,7 +14,7 @@ type MaintenanceWindowTarget_Targets struct { Key string `json:"Key,omitempty"` // Values AWS CloudFormation Property - // Required: false + // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtarget-targets.html#cfn-ssm-maintenancewindowtarget-targets-values Values []string `json:"Values,omitempty"` diff --git a/cloudformation/ssm/aws-ssm-maintenancewindowtask_target.go b/cloudformation/ssm/aws-ssm-maintenancewindowtask_target.go index d3c6adea95..8228e3ea17 100644 --- a/cloudformation/ssm/aws-ssm-maintenancewindowtask_target.go +++ b/cloudformation/ssm/aws-ssm-maintenancewindowtask_target.go @@ -14,7 +14,7 @@ type MaintenanceWindowTask_Target struct { Key string `json:"Key,omitempty"` // Values AWS CloudFormation Property - // Required: false + // Required: true // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-target.html#cfn-ssm-maintenancewindowtask-target-values Values []string `json:"Values,omitempty"` diff --git a/schema/cloudformation.go b/schema/cloudformation.go index 715777d617..cec8d32f23 100644 --- a/schema/cloudformation.go +++ b/schema/cloudformation.go @@ -10726,6 +10726,9 @@ var CloudformationSchema = `{ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "LogConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LogConfig" }, @@ -10778,6 +10781,9 @@ var CloudformationSchema = `{ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "OpenIDConnectConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.OpenIDConnectConfig" }, @@ -10810,6 +10816,21 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig": { + "additionalProperties": false, + "properties": { + "AuthorizerResultTtlInSeconds": { + "type": "number" + }, + "AuthorizerUri": { + "type": "string" + }, + "IdentityValidationExpression": { + "type": "string" + } + }, + "type": "object" + }, "AWS::AppSync::GraphQLApi.LogConfig": { "additionalProperties": false, "properties": { @@ -13561,6 +13582,12 @@ var CloudformationSchema = `{ "$ref": "#/definitions/AWS::Backup::BackupPlan.BackupPlanResourceType" }, "BackupPlanTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" } }, @@ -13647,6 +13674,12 @@ var CloudformationSchema = `{ "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, "RecoveryPointTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" }, "RuleName": { @@ -14881,6 +14914,181 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::CE::AnomalyMonitor": { + "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": { + "MonitorDimension": { + "type": "string" + }, + "MonitorName": { + "type": "string" + }, + "MonitorSpecification": { + "type": "string" + }, + "MonitorType": { + "type": "string" + } + }, + "required": [ + "MonitorName", + "MonitorType" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalyMonitor" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription": { + "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": { + "Frequency": { + "type": "string" + }, + "MonitorArnList": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Subscribers": { + "items": { + "$ref": "#/definitions/AWS::CE::AnomalySubscription.Subscriber" + }, + "type": "array" + }, + "SubscriptionName": { + "type": "string" + }, + "Threshold": { + "type": "number" + } + }, + "required": [ + "Frequency", + "MonitorArnList", + "Subscribers", + "SubscriptionName", + "Threshold" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalySubscription" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription.Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Address", + "Type" + ], + "type": "object" + }, "AWS::CE::CostCategory": { "additionalProperties": false, "properties": { @@ -15173,6 +15381,77 @@ var CloudformationSchema = `{ ], "type": "object" }, + "AWS::CertificateManager::Account": { + "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": { + "ExpiryEventsConfiguration": { + "$ref": "#/definitions/AWS::CertificateManager::Account.ExpiryEventsConfiguration" + } + }, + "required": [ + "ExpiryEventsConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CertificateManager::Account" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CertificateManager::Account.ExpiryEventsConfiguration": { + "additionalProperties": false, + "properties": { + "DaysBeforeExpiry": { + "type": "number" + } + }, + "type": "object" + }, "AWS::CertificateManager::Certificate": { "additionalProperties": false, "properties": { @@ -28254,6 +28533,9 @@ var CloudformationSchema = `{ "BillingMode": { "type": "string" }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "GlobalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.GlobalSecondaryIndex" @@ -28266,9 +28548,6 @@ var CloudformationSchema = `{ }, "type": "array" }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/AWS::DynamoDB::Table.KinesisStreamSpecification" - }, "LocalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.LocalSecondaryIndex" @@ -28342,9 +28621,24 @@ var CloudformationSchema = `{ ], "type": "object" }, + "AWS::DynamoDB::Table.ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, "AWS::DynamoDB::Table.GlobalSecondaryIndex": { "additionalProperties": false, "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "IndexName": { "type": "string" }, @@ -28384,18 +28678,6 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::DynamoDB::Table.KinesisStreamSpecification": { - "additionalProperties": false, - "properties": { - "StreamArn": { - "type": "string" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, "AWS::DynamoDB::Table.LocalSecondaryIndex": { "additionalProperties": false, "properties": { @@ -30592,6 +30874,12 @@ var CloudformationSchema = `{ }, "LaunchTemplateName": { "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.TagSpecification" + }, + "type": "array" } }, "type": "object" @@ -36511,6 +36799,9 @@ var CloudformationSchema = `{ }, "type": "array" }, + "Configuration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ClusterConfiguration" + }, "DefaultCapacityProviderStrategy": { "items": { "$ref": "#/definitions/AWS::ECS::Cluster.CapacityProviderStrategyItem" @@ -36561,6 +36852,15 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::ECS::Cluster.ClusterConfiguration": { + "additionalProperties": false, + "properties": { + "ExecuteCommandConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandConfiguration" + } + }, + "type": "object" + }, "AWS::ECS::Cluster.ClusterSettings": { "additionalProperties": false, "properties": { @@ -36573,6 +36873,136 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::ECS::Cluster.ExecuteCommandConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandLogConfiguration" + }, + "Logging": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::Cluster.ExecuteCommandLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchEncryptionEnabled": { + "type": "boolean" + }, + "CloudWatchLogGroupName": { + "type": "string" + }, + "S3BucketName": { + "type": "string" + }, + "S3EncryptionEnabled": { + "type": "boolean" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations": { + "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": { + "CapacityProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Cluster": { + "type": "string" + }, + "DefaultCapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy" + }, + "type": "array" + } + }, + "required": [ + "CapacityProviders", + "Cluster", + "DefaultCapacityProviderStrategy" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ECS::ClusterCapacityProviderAssociations" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy": { + "additionalProperties": false, + "properties": { + "Base": { + "type": "number" + }, + "CapacityProvider": { + "type": "string" + }, + "Weight": { + "type": "number" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, "AWS::ECS::PrimaryTaskSet": { "additionalProperties": false, "properties": { @@ -36696,6 +37126,9 @@ var CloudformationSchema = `{ "EnableECSManagedTags": { "type": "boolean" }, + "EnableExecuteCommand": { + "type": "boolean" + }, "HealthCheckGracePeriodSeconds": { "type": "number" }, @@ -38047,6 +38480,9 @@ var CloudformationSchema = `{ "Properties": { "additionalProperties": false, "properties": { + "AvailabilityZoneName": { + "type": "string" + }, "BackupPolicy": { "$ref": "#/definitions/AWS::EFS::FileSystem.BackupPolicy" }, @@ -44716,7 +45152,7 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::FMS::NotificationChannel": { + "AWS::FIS::ExperimentTemplate": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -44748,22 +45184,58 @@ var CloudformationSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "SnsRoleName": { + "actions": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateAction" + } + }, + "type": "object" + }, + "description": { "type": "string" }, - "SnsTopicArn": { + "roleArn": { "type": "string" + }, + "stopConditions": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition" + }, + "type": "array" + }, + "tags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, + "type": "object" + }, + "targets": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget" + } + }, + "type": "object" } }, "required": [ - "SnsRoleName", - "SnsTopicArn" + "description", + "roleArn", + "stopConditions", + "tags", + "targets" ], "type": "object" }, "Type": { "enum": [ - "AWS::FMS::NotificationChannel" + "AWS::FIS::ExperimentTemplate" ], "type": "string" }, @@ -44782,7 +45254,213 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::FMS::Policy": { + "AWS::FIS::ExperimentTemplate.ExperimentTemplateAction": { + "additionalProperties": false, + "properties": { + "actionId": { + "type": "string" + }, + "description": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap" + }, + "startAfter": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList" + }, + "targets": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateActionItemStartAfterList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition": { + "additionalProperties": false, + "properties": { + "source": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget": { + "additionalProperties": false, + "properties": { + "filters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList" + }, + "resourceArns": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ResourceArnList" + }, + "resourceTags": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.TagMap" + }, + "resourceType": { + "type": "string" + }, + "selectionMode": { + "type": "string" + } + }, + "required": [ + "resourceType", + "selectionMode" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + }, + "values": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues" + } + }, + "required": [ + "path", + "values" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterList": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterValues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ResourceArnList": { + "additionalProperties": false, + "properties": { + "ResourceArnList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.TagMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FMS::NotificationChannel": { + "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": { + "SnsRoleName": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + } + }, + "required": [ + "SnsRoleName", + "SnsTopicArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::FMS::NotificationChannel" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::FMS::Policy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -45225,6 +45903,9 @@ var CloudformationSchema = `{ "type": "string" } }, + "required": [ + "Type" + ], "type": "object" }, "AWS::GameLift::Build": { @@ -56111,6 +56792,9 @@ var CloudformationSchema = `{ "BucketName": { "type": "string" }, + "CannedAcl": { + "type": "string" + }, "Key": { "type": "string" }, @@ -56229,7 +56913,6 @@ var CloudformationSchema = `{ }, "required": [ "Actions", - "RuleDisabled", "Sql" ], "type": "object" @@ -79556,6 +80239,106 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::RDS::DBProxyEndpoint": { + "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": { + "DBProxyEndpointName": { + "type": "string" + }, + "DBProxyName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint.TagFormat" + }, + "type": "array" + }, + "TargetRole": { + "type": "string" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcSubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "DBProxyEndpointName", + "DBProxyName", + "VpcSubnetIds" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::RDS::DBProxyEndpoint" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::RDS::DBProxyEndpoint.TagFormat": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, "AWS::RDS::DBProxyTargetGroup": { "additionalProperties": false, "properties": { @@ -83655,22 +84438,342 @@ var CloudformationSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "Bucket": { + "Bucket": { + "type": "string" + }, + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::BucketPolicy" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens": { + "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": { + "StorageLensConfiguration": { + "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "StorageLensConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::StorageLens" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens.AccountLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "BucketLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" + } + }, + "required": [ + "BucketLevel" + ], + "type": "object" + }, + "AWS::S3::StorageLens.ActivityMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.AwsOrg": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "AWS::S3::StorageLens.BucketLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "PrefixLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.BucketsAndRegions": { + "additionalProperties": false, + "properties": { + "Buckets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Regions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.DataExport": { + "additionalProperties": false, + "properties": { + "S3BucketDestination": { + "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" + } + }, + "required": [ + "S3BucketDestination" + ], + "type": "object" + }, + "AWS::S3::StorageLens.Encryption": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevel": { + "additionalProperties": false, + "properties": { + "StorageMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" + } + }, + "required": [ + "StorageMetrics" + ], + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + }, + "SelectionCriteria": { + "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.S3BucketDestination": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" + }, + "Format": { + "type": "string" + }, + "OutputSchemaVersion": { + "type": "string" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "AccountId", + "Arn", + "Format", + "OutputSchemaVersion" + ], + "type": "object" + }, + "AWS::S3::StorageLens.SelectionCriteria": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "MaxDepth": { + "type": "number" + }, + "MinStorageBytesPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.StorageLensConfiguration": { + "additionalProperties": false, + "properties": { + "AccountLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" + }, + "AwsOrg": { + "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" + }, + "DataExport": { + "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" + }, + "Exclude": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "Id": { + "type": "string" + }, + "Include": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "IsEnabled": { + "type": "boolean" + }, + "StorageLensArn": { + "type": "string" + } + }, + "required": [ + "AccountLevel", + "Id", + "IsEnabled" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint": { + "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": { + "Name": { "type": "string" }, - "PolicyDocument": { - "type": "object" + "ObjectLambdaConfiguration": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration" } }, "required": [ - "Bucket", - "PolicyDocument" + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::BucketPolicy" + "AWS::S3ObjectLambda::AccessPoint" ], "type": "string" }, @@ -83689,7 +84792,50 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::S3::StorageLens": { + "AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedFeatures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "SupportingAccessPoint": { + "type": "string" + }, + "TransformationConfigurations": { + "items": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration" + }, + "type": "array" + } + }, + "required": [ + "SupportingAccessPoint", + "TransformationConfigurations" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ContentTransformation": { + "type": "object" + } + }, + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPointPolicy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -83721,24 +84867,22 @@ var CloudformationSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "StorageLensConfiguration": { - "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + "ObjectLambdaAccessPoint": { + "type": "string" }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" + "PolicyDocument": { + "type": "object" } }, "required": [ - "StorageLensConfiguration" + "ObjectLambdaAccessPoint", + "PolicyDocument" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::StorageLens" + "AWS::S3ObjectLambda::AccessPointPolicy" ], "type": "string" }, @@ -83757,193 +84901,6 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::S3::StorageLens.AccountLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "BucketLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" - } - }, - "required": [ - "BucketLevel" - ], - "type": "object" - }, - "AWS::S3::StorageLens.ActivityMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.AwsOrg": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "AWS::S3::StorageLens.BucketLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "PrefixLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.BucketsAndRegions": { - "additionalProperties": false, - "properties": { - "Buckets": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Regions": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.DataExport": { - "additionalProperties": false, - "properties": { - "S3BucketDestination": { - "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" - } - }, - "required": [ - "S3BucketDestination" - ], - "type": "object" - }, - "AWS::S3::StorageLens.Encryption": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevel": { - "additionalProperties": false, - "properties": { - "StorageMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" - } - }, - "required": [ - "StorageMetrics" - ], - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - }, - "SelectionCriteria": { - "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.S3BucketDestination": { - "additionalProperties": false, - "properties": { - "AccountId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" - }, - "Format": { - "type": "string" - }, - "OutputSchemaVersion": { - "type": "string" - }, - "Prefix": { - "type": "string" - } - }, - "required": [ - "AccountId", - "Arn", - "Format", - "OutputSchemaVersion" - ], - "type": "object" - }, - "AWS::S3::StorageLens.SelectionCriteria": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "type": "string" - }, - "MaxDepth": { - "type": "number" - }, - "MinStorageBytesPercentage": { - "type": "number" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.StorageLensConfiguration": { - "additionalProperties": false, - "properties": { - "AccountLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" - }, - "AwsOrg": { - "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" - }, - "DataExport": { - "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" - }, - "Exclude": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "Id": { - "type": "string" - }, - "Include": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "IsEnabled": { - "type": "boolean" - }, - "StorageLensArn": { - "type": "string" - } - }, - "required": [ - "AccountLevel", - "Id", - "IsEnabled" - ], - "type": "object" - }, "AWS::S3Outposts::AccessPoint": { "additionalProperties": false, "properties": { @@ -85887,7 +86844,8 @@ var CloudformationSchema = `{ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -86121,7 +87079,8 @@ var CloudformationSchema = `{ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -92714,7 +93673,7 @@ var CloudformationSchema = `{ "additionalProperties": false, "properties": { "Attributes": { - "$ref": "#/definitions/AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes" + "type": "object" }, "Description": { "type": "string" @@ -92759,11 +93718,6 @@ var CloudformationSchema = `{ ], "type": "object" }, - "AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation": { "additionalProperties": false, "properties": { @@ -93241,6 +94195,9 @@ var CloudformationSchema = `{ "$ref": "#/definitions/Tag" }, "type": "array" + }, + "Type": { + "type": "string" } }, "type": "object" @@ -98398,6 +99355,12 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::Budgets::Budget" }, + { + "$ref": "#/definitions/AWS::CE::AnomalyMonitor" + }, + { + "$ref": "#/definitions/AWS::CE::AnomalySubscription" + }, { "$ref": "#/definitions/AWS::CE::CostCategory" }, @@ -98407,6 +99370,9 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::Cassandra::Table" }, + { + "$ref": "#/definitions/AWS::CertificateManager::Account" + }, { "$ref": "#/definitions/AWS::CertificateManager::Certificate" }, @@ -98941,6 +99907,9 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::ECS::Cluster" }, + { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations" + }, { "$ref": "#/definitions/AWS::ECS::PrimaryTaskSet" }, @@ -99088,6 +100057,9 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::Events::Rule" }, + { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate" + }, { "$ref": "#/definitions/AWS::FMS::NotificationChannel" }, @@ -99793,6 +100765,9 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::RDS::DBProxy" }, + { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint" + }, { "$ref": "#/definitions/AWS::RDS::DBProxyTargetGroup" }, @@ -99898,6 +100873,12 @@ var CloudformationSchema = `{ { "$ref": "#/definitions/AWS::S3::StorageLens" }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint" + }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPointPolicy" + }, { "$ref": "#/definitions/AWS::S3Outposts::AccessPoint" }, diff --git a/schema/cloudformation.schema.json b/schema/cloudformation.schema.json index 04cd397c64..e04dba2cb6 100644 --- a/schema/cloudformation.schema.json +++ b/schema/cloudformation.schema.json @@ -10723,6 +10723,9 @@ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "LogConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LogConfig" }, @@ -10775,6 +10778,9 @@ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "OpenIDConnectConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.OpenIDConnectConfig" }, @@ -10807,6 +10813,21 @@ }, "type": "object" }, + "AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig": { + "additionalProperties": false, + "properties": { + "AuthorizerResultTtlInSeconds": { + "type": "number" + }, + "AuthorizerUri": { + "type": "string" + }, + "IdentityValidationExpression": { + "type": "string" + } + }, + "type": "object" + }, "AWS::AppSync::GraphQLApi.LogConfig": { "additionalProperties": false, "properties": { @@ -13558,6 +13579,12 @@ "$ref": "#/definitions/AWS::Backup::BackupPlan.BackupPlanResourceType" }, "BackupPlanTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" } }, @@ -13644,6 +13671,12 @@ "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, "RecoveryPointTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" }, "RuleName": { @@ -14878,6 +14911,181 @@ }, "type": "object" }, + "AWS::CE::AnomalyMonitor": { + "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": { + "MonitorDimension": { + "type": "string" + }, + "MonitorName": { + "type": "string" + }, + "MonitorSpecification": { + "type": "string" + }, + "MonitorType": { + "type": "string" + } + }, + "required": [ + "MonitorName", + "MonitorType" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalyMonitor" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription": { + "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": { + "Frequency": { + "type": "string" + }, + "MonitorArnList": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Subscribers": { + "items": { + "$ref": "#/definitions/AWS::CE::AnomalySubscription.Subscriber" + }, + "type": "array" + }, + "SubscriptionName": { + "type": "string" + }, + "Threshold": { + "type": "number" + } + }, + "required": [ + "Frequency", + "MonitorArnList", + "Subscribers", + "SubscriptionName", + "Threshold" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalySubscription" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription.Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Address", + "Type" + ], + "type": "object" + }, "AWS::CE::CostCategory": { "additionalProperties": false, "properties": { @@ -15170,6 +15378,77 @@ ], "type": "object" }, + "AWS::CertificateManager::Account": { + "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": { + "ExpiryEventsConfiguration": { + "$ref": "#/definitions/AWS::CertificateManager::Account.ExpiryEventsConfiguration" + } + }, + "required": [ + "ExpiryEventsConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CertificateManager::Account" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CertificateManager::Account.ExpiryEventsConfiguration": { + "additionalProperties": false, + "properties": { + "DaysBeforeExpiry": { + "type": "number" + } + }, + "type": "object" + }, "AWS::CertificateManager::Certificate": { "additionalProperties": false, "properties": { @@ -28251,6 +28530,9 @@ "BillingMode": { "type": "string" }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "GlobalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.GlobalSecondaryIndex" @@ -28263,9 +28545,6 @@ }, "type": "array" }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/AWS::DynamoDB::Table.KinesisStreamSpecification" - }, "LocalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.LocalSecondaryIndex" @@ -28339,9 +28618,24 @@ ], "type": "object" }, + "AWS::DynamoDB::Table.ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, "AWS::DynamoDB::Table.GlobalSecondaryIndex": { "additionalProperties": false, "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "IndexName": { "type": "string" }, @@ -28381,18 +28675,6 @@ ], "type": "object" }, - "AWS::DynamoDB::Table.KinesisStreamSpecification": { - "additionalProperties": false, - "properties": { - "StreamArn": { - "type": "string" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, "AWS::DynamoDB::Table.LocalSecondaryIndex": { "additionalProperties": false, "properties": { @@ -30589,6 +30871,12 @@ }, "LaunchTemplateName": { "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.TagSpecification" + }, + "type": "array" } }, "type": "object" @@ -36508,6 +36796,9 @@ }, "type": "array" }, + "Configuration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ClusterConfiguration" + }, "DefaultCapacityProviderStrategy": { "items": { "$ref": "#/definitions/AWS::ECS::Cluster.CapacityProviderStrategyItem" @@ -36558,6 +36849,15 @@ }, "type": "object" }, + "AWS::ECS::Cluster.ClusterConfiguration": { + "additionalProperties": false, + "properties": { + "ExecuteCommandConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandConfiguration" + } + }, + "type": "object" + }, "AWS::ECS::Cluster.ClusterSettings": { "additionalProperties": false, "properties": { @@ -36570,6 +36870,136 @@ }, "type": "object" }, + "AWS::ECS::Cluster.ExecuteCommandConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandLogConfiguration" + }, + "Logging": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::Cluster.ExecuteCommandLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchEncryptionEnabled": { + "type": "boolean" + }, + "CloudWatchLogGroupName": { + "type": "string" + }, + "S3BucketName": { + "type": "string" + }, + "S3EncryptionEnabled": { + "type": "boolean" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations": { + "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": { + "CapacityProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Cluster": { + "type": "string" + }, + "DefaultCapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy" + }, + "type": "array" + } + }, + "required": [ + "CapacityProviders", + "Cluster", + "DefaultCapacityProviderStrategy" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ECS::ClusterCapacityProviderAssociations" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy": { + "additionalProperties": false, + "properties": { + "Base": { + "type": "number" + }, + "CapacityProvider": { + "type": "string" + }, + "Weight": { + "type": "number" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, "AWS::ECS::PrimaryTaskSet": { "additionalProperties": false, "properties": { @@ -36693,6 +37123,9 @@ "EnableECSManagedTags": { "type": "boolean" }, + "EnableExecuteCommand": { + "type": "boolean" + }, "HealthCheckGracePeriodSeconds": { "type": "number" }, @@ -38044,6 +38477,9 @@ "Properties": { "additionalProperties": false, "properties": { + "AvailabilityZoneName": { + "type": "string" + }, "BackupPolicy": { "$ref": "#/definitions/AWS::EFS::FileSystem.BackupPolicy" }, @@ -44713,7 +45149,7 @@ ], "type": "object" }, - "AWS::FMS::NotificationChannel": { + "AWS::FIS::ExperimentTemplate": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -44745,22 +45181,58 @@ "Properties": { "additionalProperties": false, "properties": { - "SnsRoleName": { + "actions": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateAction" + } + }, + "type": "object" + }, + "description": { "type": "string" }, - "SnsTopicArn": { + "roleArn": { "type": "string" + }, + "stopConditions": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition" + }, + "type": "array" + }, + "tags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, + "type": "object" + }, + "targets": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget" + } + }, + "type": "object" } }, "required": [ - "SnsRoleName", - "SnsTopicArn" + "description", + "roleArn", + "stopConditions", + "tags", + "targets" ], "type": "object" }, "Type": { "enum": [ - "AWS::FMS::NotificationChannel" + "AWS::FIS::ExperimentTemplate" ], "type": "string" }, @@ -44779,7 +45251,213 @@ ], "type": "object" }, - "AWS::FMS::Policy": { + "AWS::FIS::ExperimentTemplate.ExperimentTemplateAction": { + "additionalProperties": false, + "properties": { + "actionId": { + "type": "string" + }, + "description": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap" + }, + "startAfter": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList" + }, + "targets": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateActionItemStartAfterList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition": { + "additionalProperties": false, + "properties": { + "source": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget": { + "additionalProperties": false, + "properties": { + "filters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList" + }, + "resourceArns": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ResourceArnList" + }, + "resourceTags": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.TagMap" + }, + "resourceType": { + "type": "string" + }, + "selectionMode": { + "type": "string" + } + }, + "required": [ + "resourceType", + "selectionMode" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + }, + "values": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues" + } + }, + "required": [ + "path", + "values" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterList": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterValues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ResourceArnList": { + "additionalProperties": false, + "properties": { + "ResourceArnList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.TagMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FMS::NotificationChannel": { + "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": { + "SnsRoleName": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + } + }, + "required": [ + "SnsRoleName", + "SnsTopicArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::FMS::NotificationChannel" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::FMS::Policy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -45222,6 +45900,9 @@ "type": "string" } }, + "required": [ + "Type" + ], "type": "object" }, "AWS::GameLift::Build": { @@ -56108,6 +56789,9 @@ "BucketName": { "type": "string" }, + "CannedAcl": { + "type": "string" + }, "Key": { "type": "string" }, @@ -56226,7 +56910,6 @@ }, "required": [ "Actions", - "RuleDisabled", "Sql" ], "type": "object" @@ -79553,6 +80236,106 @@ }, "type": "object" }, + "AWS::RDS::DBProxyEndpoint": { + "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": { + "DBProxyEndpointName": { + "type": "string" + }, + "DBProxyName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint.TagFormat" + }, + "type": "array" + }, + "TargetRole": { + "type": "string" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcSubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "DBProxyEndpointName", + "DBProxyName", + "VpcSubnetIds" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::RDS::DBProxyEndpoint" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::RDS::DBProxyEndpoint.TagFormat": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, "AWS::RDS::DBProxyTargetGroup": { "additionalProperties": false, "properties": { @@ -83652,22 +84435,342 @@ "Properties": { "additionalProperties": false, "properties": { - "Bucket": { + "Bucket": { + "type": "string" + }, + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::BucketPolicy" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens": { + "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": { + "StorageLensConfiguration": { + "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "StorageLensConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::StorageLens" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens.AccountLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "BucketLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" + } + }, + "required": [ + "BucketLevel" + ], + "type": "object" + }, + "AWS::S3::StorageLens.ActivityMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.AwsOrg": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "AWS::S3::StorageLens.BucketLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "PrefixLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.BucketsAndRegions": { + "additionalProperties": false, + "properties": { + "Buckets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Regions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.DataExport": { + "additionalProperties": false, + "properties": { + "S3BucketDestination": { + "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" + } + }, + "required": [ + "S3BucketDestination" + ], + "type": "object" + }, + "AWS::S3::StorageLens.Encryption": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevel": { + "additionalProperties": false, + "properties": { + "StorageMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" + } + }, + "required": [ + "StorageMetrics" + ], + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + }, + "SelectionCriteria": { + "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.S3BucketDestination": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" + }, + "Format": { + "type": "string" + }, + "OutputSchemaVersion": { + "type": "string" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "AccountId", + "Arn", + "Format", + "OutputSchemaVersion" + ], + "type": "object" + }, + "AWS::S3::StorageLens.SelectionCriteria": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "MaxDepth": { + "type": "number" + }, + "MinStorageBytesPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.StorageLensConfiguration": { + "additionalProperties": false, + "properties": { + "AccountLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" + }, + "AwsOrg": { + "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" + }, + "DataExport": { + "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" + }, + "Exclude": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "Id": { + "type": "string" + }, + "Include": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "IsEnabled": { + "type": "boolean" + }, + "StorageLensArn": { + "type": "string" + } + }, + "required": [ + "AccountLevel", + "Id", + "IsEnabled" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint": { + "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": { + "Name": { "type": "string" }, - "PolicyDocument": { - "type": "object" + "ObjectLambdaConfiguration": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration" } }, "required": [ - "Bucket", - "PolicyDocument" + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::BucketPolicy" + "AWS::S3ObjectLambda::AccessPoint" ], "type": "string" }, @@ -83686,7 +84789,50 @@ ], "type": "object" }, - "AWS::S3::StorageLens": { + "AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedFeatures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "SupportingAccessPoint": { + "type": "string" + }, + "TransformationConfigurations": { + "items": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration" + }, + "type": "array" + } + }, + "required": [ + "SupportingAccessPoint", + "TransformationConfigurations" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ContentTransformation": { + "type": "object" + } + }, + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPointPolicy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -83718,24 +84864,22 @@ "Properties": { "additionalProperties": false, "properties": { - "StorageLensConfiguration": { - "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + "ObjectLambdaAccessPoint": { + "type": "string" }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" + "PolicyDocument": { + "type": "object" } }, "required": [ - "StorageLensConfiguration" + "ObjectLambdaAccessPoint", + "PolicyDocument" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::StorageLens" + "AWS::S3ObjectLambda::AccessPointPolicy" ], "type": "string" }, @@ -83754,193 +84898,6 @@ ], "type": "object" }, - "AWS::S3::StorageLens.AccountLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "BucketLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" - } - }, - "required": [ - "BucketLevel" - ], - "type": "object" - }, - "AWS::S3::StorageLens.ActivityMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.AwsOrg": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "AWS::S3::StorageLens.BucketLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "PrefixLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.BucketsAndRegions": { - "additionalProperties": false, - "properties": { - "Buckets": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Regions": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.DataExport": { - "additionalProperties": false, - "properties": { - "S3BucketDestination": { - "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" - } - }, - "required": [ - "S3BucketDestination" - ], - "type": "object" - }, - "AWS::S3::StorageLens.Encryption": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevel": { - "additionalProperties": false, - "properties": { - "StorageMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" - } - }, - "required": [ - "StorageMetrics" - ], - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - }, - "SelectionCriteria": { - "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.S3BucketDestination": { - "additionalProperties": false, - "properties": { - "AccountId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" - }, - "Format": { - "type": "string" - }, - "OutputSchemaVersion": { - "type": "string" - }, - "Prefix": { - "type": "string" - } - }, - "required": [ - "AccountId", - "Arn", - "Format", - "OutputSchemaVersion" - ], - "type": "object" - }, - "AWS::S3::StorageLens.SelectionCriteria": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "type": "string" - }, - "MaxDepth": { - "type": "number" - }, - "MinStorageBytesPercentage": { - "type": "number" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.StorageLensConfiguration": { - "additionalProperties": false, - "properties": { - "AccountLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" - }, - "AwsOrg": { - "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" - }, - "DataExport": { - "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" - }, - "Exclude": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "Id": { - "type": "string" - }, - "Include": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "IsEnabled": { - "type": "boolean" - }, - "StorageLensArn": { - "type": "string" - } - }, - "required": [ - "AccountLevel", - "Id", - "IsEnabled" - ], - "type": "object" - }, "AWS::S3Outposts::AccessPoint": { "additionalProperties": false, "properties": { @@ -85884,7 +86841,8 @@ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -86118,7 +87076,8 @@ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -92711,7 +93670,7 @@ "additionalProperties": false, "properties": { "Attributes": { - "$ref": "#/definitions/AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes" + "type": "object" }, "Description": { "type": "string" @@ -92756,11 +93715,6 @@ ], "type": "object" }, - "AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation": { "additionalProperties": false, "properties": { @@ -93238,6 +94192,9 @@ "$ref": "#/definitions/Tag" }, "type": "array" + }, + "Type": { + "type": "string" } }, "type": "object" @@ -98395,6 +99352,12 @@ { "$ref": "#/definitions/AWS::Budgets::Budget" }, + { + "$ref": "#/definitions/AWS::CE::AnomalyMonitor" + }, + { + "$ref": "#/definitions/AWS::CE::AnomalySubscription" + }, { "$ref": "#/definitions/AWS::CE::CostCategory" }, @@ -98404,6 +99367,9 @@ { "$ref": "#/definitions/AWS::Cassandra::Table" }, + { + "$ref": "#/definitions/AWS::CertificateManager::Account" + }, { "$ref": "#/definitions/AWS::CertificateManager::Certificate" }, @@ -98938,6 +99904,9 @@ { "$ref": "#/definitions/AWS::ECS::Cluster" }, + { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations" + }, { "$ref": "#/definitions/AWS::ECS::PrimaryTaskSet" }, @@ -99085,6 +100054,9 @@ { "$ref": "#/definitions/AWS::Events::Rule" }, + { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate" + }, { "$ref": "#/definitions/AWS::FMS::NotificationChannel" }, @@ -99790,6 +100762,9 @@ { "$ref": "#/definitions/AWS::RDS::DBProxy" }, + { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint" + }, { "$ref": "#/definitions/AWS::RDS::DBProxyTargetGroup" }, @@ -99895,6 +100870,12 @@ { "$ref": "#/definitions/AWS::S3::StorageLens" }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint" + }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPointPolicy" + }, { "$ref": "#/definitions/AWS::S3Outposts::AccessPoint" }, diff --git a/schema/sam.go b/schema/sam.go index 028a89b5db..da61f7732f 100644 --- a/schema/sam.go +++ b/schema/sam.go @@ -10726,6 +10726,9 @@ var SamSchema = `{ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "LogConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LogConfig" }, @@ -10778,6 +10781,9 @@ var SamSchema = `{ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "OpenIDConnectConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.OpenIDConnectConfig" }, @@ -10810,6 +10816,21 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig": { + "additionalProperties": false, + "properties": { + "AuthorizerResultTtlInSeconds": { + "type": "number" + }, + "AuthorizerUri": { + "type": "string" + }, + "IdentityValidationExpression": { + "type": "string" + } + }, + "type": "object" + }, "AWS::AppSync::GraphQLApi.LogConfig": { "additionalProperties": false, "properties": { @@ -13561,6 +13582,12 @@ var SamSchema = `{ "$ref": "#/definitions/AWS::Backup::BackupPlan.BackupPlanResourceType" }, "BackupPlanTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" } }, @@ -13647,6 +13674,12 @@ var SamSchema = `{ "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, "RecoveryPointTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" }, "RuleName": { @@ -14881,6 +14914,181 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::CE::AnomalyMonitor": { + "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": { + "MonitorDimension": { + "type": "string" + }, + "MonitorName": { + "type": "string" + }, + "MonitorSpecification": { + "type": "string" + }, + "MonitorType": { + "type": "string" + } + }, + "required": [ + "MonitorName", + "MonitorType" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalyMonitor" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription": { + "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": { + "Frequency": { + "type": "string" + }, + "MonitorArnList": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Subscribers": { + "items": { + "$ref": "#/definitions/AWS::CE::AnomalySubscription.Subscriber" + }, + "type": "array" + }, + "SubscriptionName": { + "type": "string" + }, + "Threshold": { + "type": "number" + } + }, + "required": [ + "Frequency", + "MonitorArnList", + "Subscribers", + "SubscriptionName", + "Threshold" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalySubscription" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription.Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Address", + "Type" + ], + "type": "object" + }, "AWS::CE::CostCategory": { "additionalProperties": false, "properties": { @@ -15173,6 +15381,77 @@ var SamSchema = `{ ], "type": "object" }, + "AWS::CertificateManager::Account": { + "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": { + "ExpiryEventsConfiguration": { + "$ref": "#/definitions/AWS::CertificateManager::Account.ExpiryEventsConfiguration" + } + }, + "required": [ + "ExpiryEventsConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CertificateManager::Account" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CertificateManager::Account.ExpiryEventsConfiguration": { + "additionalProperties": false, + "properties": { + "DaysBeforeExpiry": { + "type": "number" + } + }, + "type": "object" + }, "AWS::CertificateManager::Certificate": { "additionalProperties": false, "properties": { @@ -28254,6 +28533,9 @@ var SamSchema = `{ "BillingMode": { "type": "string" }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "GlobalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.GlobalSecondaryIndex" @@ -28266,9 +28548,6 @@ var SamSchema = `{ }, "type": "array" }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/AWS::DynamoDB::Table.KinesisStreamSpecification" - }, "LocalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.LocalSecondaryIndex" @@ -28342,9 +28621,24 @@ var SamSchema = `{ ], "type": "object" }, + "AWS::DynamoDB::Table.ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, "AWS::DynamoDB::Table.GlobalSecondaryIndex": { "additionalProperties": false, "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "IndexName": { "type": "string" }, @@ -28384,18 +28678,6 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::DynamoDB::Table.KinesisStreamSpecification": { - "additionalProperties": false, - "properties": { - "StreamArn": { - "type": "string" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, "AWS::DynamoDB::Table.LocalSecondaryIndex": { "additionalProperties": false, "properties": { @@ -30592,6 +30874,12 @@ var SamSchema = `{ }, "LaunchTemplateName": { "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.TagSpecification" + }, + "type": "array" } }, "type": "object" @@ -36511,6 +36799,9 @@ var SamSchema = `{ }, "type": "array" }, + "Configuration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ClusterConfiguration" + }, "DefaultCapacityProviderStrategy": { "items": { "$ref": "#/definitions/AWS::ECS::Cluster.CapacityProviderStrategyItem" @@ -36561,6 +36852,15 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::ECS::Cluster.ClusterConfiguration": { + "additionalProperties": false, + "properties": { + "ExecuteCommandConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandConfiguration" + } + }, + "type": "object" + }, "AWS::ECS::Cluster.ClusterSettings": { "additionalProperties": false, "properties": { @@ -36573,6 +36873,136 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::ECS::Cluster.ExecuteCommandConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandLogConfiguration" + }, + "Logging": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::Cluster.ExecuteCommandLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchEncryptionEnabled": { + "type": "boolean" + }, + "CloudWatchLogGroupName": { + "type": "string" + }, + "S3BucketName": { + "type": "string" + }, + "S3EncryptionEnabled": { + "type": "boolean" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations": { + "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": { + "CapacityProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Cluster": { + "type": "string" + }, + "DefaultCapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy" + }, + "type": "array" + } + }, + "required": [ + "CapacityProviders", + "Cluster", + "DefaultCapacityProviderStrategy" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ECS::ClusterCapacityProviderAssociations" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy": { + "additionalProperties": false, + "properties": { + "Base": { + "type": "number" + }, + "CapacityProvider": { + "type": "string" + }, + "Weight": { + "type": "number" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, "AWS::ECS::PrimaryTaskSet": { "additionalProperties": false, "properties": { @@ -36696,6 +37126,9 @@ var SamSchema = `{ "EnableECSManagedTags": { "type": "boolean" }, + "EnableExecuteCommand": { + "type": "boolean" + }, "HealthCheckGracePeriodSeconds": { "type": "number" }, @@ -38047,6 +38480,9 @@ var SamSchema = `{ "Properties": { "additionalProperties": false, "properties": { + "AvailabilityZoneName": { + "type": "string" + }, "BackupPolicy": { "$ref": "#/definitions/AWS::EFS::FileSystem.BackupPolicy" }, @@ -44716,7 +45152,7 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::FMS::NotificationChannel": { + "AWS::FIS::ExperimentTemplate": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -44748,22 +45184,58 @@ var SamSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "SnsRoleName": { + "actions": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateAction" + } + }, + "type": "object" + }, + "description": { "type": "string" }, - "SnsTopicArn": { + "roleArn": { "type": "string" + }, + "stopConditions": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition" + }, + "type": "array" + }, + "tags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, + "type": "object" + }, + "targets": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget" + } + }, + "type": "object" } }, "required": [ - "SnsRoleName", - "SnsTopicArn" + "description", + "roleArn", + "stopConditions", + "tags", + "targets" ], "type": "object" }, "Type": { "enum": [ - "AWS::FMS::NotificationChannel" + "AWS::FIS::ExperimentTemplate" ], "type": "string" }, @@ -44782,7 +45254,213 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::FMS::Policy": { + "AWS::FIS::ExperimentTemplate.ExperimentTemplateAction": { + "additionalProperties": false, + "properties": { + "actionId": { + "type": "string" + }, + "description": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap" + }, + "startAfter": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList" + }, + "targets": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateActionItemStartAfterList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition": { + "additionalProperties": false, + "properties": { + "source": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget": { + "additionalProperties": false, + "properties": { + "filters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList" + }, + "resourceArns": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ResourceArnList" + }, + "resourceTags": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.TagMap" + }, + "resourceType": { + "type": "string" + }, + "selectionMode": { + "type": "string" + } + }, + "required": [ + "resourceType", + "selectionMode" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + }, + "values": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues" + } + }, + "required": [ + "path", + "values" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterList": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterValues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ResourceArnList": { + "additionalProperties": false, + "properties": { + "ResourceArnList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.TagMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FMS::NotificationChannel": { + "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": { + "SnsRoleName": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + } + }, + "required": [ + "SnsRoleName", + "SnsTopicArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::FMS::NotificationChannel" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::FMS::Policy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -45225,6 +45903,9 @@ var SamSchema = `{ "type": "string" } }, + "required": [ + "Type" + ], "type": "object" }, "AWS::GameLift::Build": { @@ -56111,6 +56792,9 @@ var SamSchema = `{ "BucketName": { "type": "string" }, + "CannedAcl": { + "type": "string" + }, "Key": { "type": "string" }, @@ -56229,7 +56913,6 @@ var SamSchema = `{ }, "required": [ "Actions", - "RuleDisabled", "Sql" ], "type": "object" @@ -79556,6 +80239,106 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::RDS::DBProxyEndpoint": { + "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": { + "DBProxyEndpointName": { + "type": "string" + }, + "DBProxyName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint.TagFormat" + }, + "type": "array" + }, + "TargetRole": { + "type": "string" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcSubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "DBProxyEndpointName", + "DBProxyName", + "VpcSubnetIds" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::RDS::DBProxyEndpoint" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::RDS::DBProxyEndpoint.TagFormat": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, "AWS::RDS::DBProxyTargetGroup": { "additionalProperties": false, "properties": { @@ -83655,22 +84438,342 @@ var SamSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "Bucket": { + "Bucket": { + "type": "string" + }, + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::BucketPolicy" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens": { + "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": { + "StorageLensConfiguration": { + "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "StorageLensConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::StorageLens" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens.AccountLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "BucketLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" + } + }, + "required": [ + "BucketLevel" + ], + "type": "object" + }, + "AWS::S3::StorageLens.ActivityMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.AwsOrg": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "AWS::S3::StorageLens.BucketLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "PrefixLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.BucketsAndRegions": { + "additionalProperties": false, + "properties": { + "Buckets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Regions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.DataExport": { + "additionalProperties": false, + "properties": { + "S3BucketDestination": { + "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" + } + }, + "required": [ + "S3BucketDestination" + ], + "type": "object" + }, + "AWS::S3::StorageLens.Encryption": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevel": { + "additionalProperties": false, + "properties": { + "StorageMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" + } + }, + "required": [ + "StorageMetrics" + ], + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + }, + "SelectionCriteria": { + "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.S3BucketDestination": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" + }, + "Format": { + "type": "string" + }, + "OutputSchemaVersion": { + "type": "string" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "AccountId", + "Arn", + "Format", + "OutputSchemaVersion" + ], + "type": "object" + }, + "AWS::S3::StorageLens.SelectionCriteria": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "MaxDepth": { + "type": "number" + }, + "MinStorageBytesPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.StorageLensConfiguration": { + "additionalProperties": false, + "properties": { + "AccountLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" + }, + "AwsOrg": { + "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" + }, + "DataExport": { + "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" + }, + "Exclude": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "Id": { + "type": "string" + }, + "Include": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "IsEnabled": { + "type": "boolean" + }, + "StorageLensArn": { + "type": "string" + } + }, + "required": [ + "AccountLevel", + "Id", + "IsEnabled" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint": { + "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": { + "Name": { "type": "string" }, - "PolicyDocument": { - "type": "object" + "ObjectLambdaConfiguration": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration" } }, "required": [ - "Bucket", - "PolicyDocument" + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::BucketPolicy" + "AWS::S3ObjectLambda::AccessPoint" ], "type": "string" }, @@ -83689,7 +84792,50 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::S3::StorageLens": { + "AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedFeatures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "SupportingAccessPoint": { + "type": "string" + }, + "TransformationConfigurations": { + "items": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration" + }, + "type": "array" + } + }, + "required": [ + "SupportingAccessPoint", + "TransformationConfigurations" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ContentTransformation": { + "type": "object" + } + }, + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPointPolicy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -83721,24 +84867,22 @@ var SamSchema = `{ "Properties": { "additionalProperties": false, "properties": { - "StorageLensConfiguration": { - "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + "ObjectLambdaAccessPoint": { + "type": "string" }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" + "PolicyDocument": { + "type": "object" } }, "required": [ - "StorageLensConfiguration" + "ObjectLambdaAccessPoint", + "PolicyDocument" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::StorageLens" + "AWS::S3ObjectLambda::AccessPointPolicy" ], "type": "string" }, @@ -83757,193 +84901,6 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::S3::StorageLens.AccountLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "BucketLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" - } - }, - "required": [ - "BucketLevel" - ], - "type": "object" - }, - "AWS::S3::StorageLens.ActivityMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.AwsOrg": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "AWS::S3::StorageLens.BucketLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "PrefixLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.BucketsAndRegions": { - "additionalProperties": false, - "properties": { - "Buckets": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Regions": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.DataExport": { - "additionalProperties": false, - "properties": { - "S3BucketDestination": { - "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" - } - }, - "required": [ - "S3BucketDestination" - ], - "type": "object" - }, - "AWS::S3::StorageLens.Encryption": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevel": { - "additionalProperties": false, - "properties": { - "StorageMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" - } - }, - "required": [ - "StorageMetrics" - ], - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - }, - "SelectionCriteria": { - "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.S3BucketDestination": { - "additionalProperties": false, - "properties": { - "AccountId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" - }, - "Format": { - "type": "string" - }, - "OutputSchemaVersion": { - "type": "string" - }, - "Prefix": { - "type": "string" - } - }, - "required": [ - "AccountId", - "Arn", - "Format", - "OutputSchemaVersion" - ], - "type": "object" - }, - "AWS::S3::StorageLens.SelectionCriteria": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "type": "string" - }, - "MaxDepth": { - "type": "number" - }, - "MinStorageBytesPercentage": { - "type": "number" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.StorageLensConfiguration": { - "additionalProperties": false, - "properties": { - "AccountLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" - }, - "AwsOrg": { - "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" - }, - "DataExport": { - "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" - }, - "Exclude": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "Id": { - "type": "string" - }, - "Include": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "IsEnabled": { - "type": "boolean" - }, - "StorageLensArn": { - "type": "string" - } - }, - "required": [ - "AccountLevel", - "Id", - "IsEnabled" - ], - "type": "object" - }, "AWS::S3Outposts::AccessPoint": { "additionalProperties": false, "properties": { @@ -85887,7 +86844,8 @@ var SamSchema = `{ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -86121,7 +87079,8 @@ var SamSchema = `{ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -94558,7 +95517,7 @@ var SamSchema = `{ "additionalProperties": false, "properties": { "Attributes": { - "$ref": "#/definitions/AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes" + "type": "object" }, "Description": { "type": "string" @@ -94603,11 +95562,6 @@ var SamSchema = `{ ], "type": "object" }, - "AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation": { "additionalProperties": false, "properties": { @@ -95085,6 +96039,9 @@ var SamSchema = `{ "$ref": "#/definitions/Tag" }, "type": "array" + }, + "Type": { + "type": "string" } }, "type": "object" @@ -100242,6 +101199,12 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::Budgets::Budget" }, + { + "$ref": "#/definitions/AWS::CE::AnomalyMonitor" + }, + { + "$ref": "#/definitions/AWS::CE::AnomalySubscription" + }, { "$ref": "#/definitions/AWS::CE::CostCategory" }, @@ -100251,6 +101214,9 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::Cassandra::Table" }, + { + "$ref": "#/definitions/AWS::CertificateManager::Account" + }, { "$ref": "#/definitions/AWS::CertificateManager::Certificate" }, @@ -100785,6 +101751,9 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::ECS::Cluster" }, + { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations" + }, { "$ref": "#/definitions/AWS::ECS::PrimaryTaskSet" }, @@ -100932,6 +101901,9 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::Events::Rule" }, + { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate" + }, { "$ref": "#/definitions/AWS::FMS::NotificationChannel" }, @@ -101637,6 +102609,9 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::RDS::DBProxy" }, + { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint" + }, { "$ref": "#/definitions/AWS::RDS::DBProxyTargetGroup" }, @@ -101742,6 +102717,12 @@ var SamSchema = `{ { "$ref": "#/definitions/AWS::S3::StorageLens" }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint" + }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPointPolicy" + }, { "$ref": "#/definitions/AWS::S3Outposts::AccessPoint" }, diff --git a/schema/sam.schema.json b/schema/sam.schema.json index 8fbe375086..822a3cc74e 100644 --- a/schema/sam.schema.json +++ b/schema/sam.schema.json @@ -10723,6 +10723,9 @@ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "LogConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LogConfig" }, @@ -10775,6 +10778,9 @@ "AuthenticationType": { "type": "string" }, + "LambdaAuthorizerConfig": { + "$ref": "#/definitions/AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig" + }, "OpenIDConnectConfig": { "$ref": "#/definitions/AWS::AppSync::GraphQLApi.OpenIDConnectConfig" }, @@ -10807,6 +10813,21 @@ }, "type": "object" }, + "AWS::AppSync::GraphQLApi.LambdaAuthorizerConfig": { + "additionalProperties": false, + "properties": { + "AuthorizerResultTtlInSeconds": { + "type": "number" + }, + "AuthorizerUri": { + "type": "string" + }, + "IdentityValidationExpression": { + "type": "string" + } + }, + "type": "object" + }, "AWS::AppSync::GraphQLApi.LogConfig": { "additionalProperties": false, "properties": { @@ -13558,6 +13579,12 @@ "$ref": "#/definitions/AWS::Backup::BackupPlan.BackupPlanResourceType" }, "BackupPlanTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" } }, @@ -13644,6 +13671,12 @@ "$ref": "#/definitions/AWS::Backup::BackupPlan.LifecycleResourceType" }, "RecoveryPointTags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, "type": "object" }, "RuleName": { @@ -14878,6 +14911,181 @@ }, "type": "object" }, + "AWS::CE::AnomalyMonitor": { + "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": { + "MonitorDimension": { + "type": "string" + }, + "MonitorName": { + "type": "string" + }, + "MonitorSpecification": { + "type": "string" + }, + "MonitorType": { + "type": "string" + } + }, + "required": [ + "MonitorName", + "MonitorType" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalyMonitor" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription": { + "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": { + "Frequency": { + "type": "string" + }, + "MonitorArnList": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Subscribers": { + "items": { + "$ref": "#/definitions/AWS::CE::AnomalySubscription.Subscriber" + }, + "type": "array" + }, + "SubscriptionName": { + "type": "string" + }, + "Threshold": { + "type": "number" + } + }, + "required": [ + "Frequency", + "MonitorArnList", + "Subscribers", + "SubscriptionName", + "Threshold" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CE::AnomalySubscription" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CE::AnomalySubscription.Subscriber": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Address", + "Type" + ], + "type": "object" + }, "AWS::CE::CostCategory": { "additionalProperties": false, "properties": { @@ -15170,6 +15378,77 @@ ], "type": "object" }, + "AWS::CertificateManager::Account": { + "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": { + "ExpiryEventsConfiguration": { + "$ref": "#/definitions/AWS::CertificateManager::Account.ExpiryEventsConfiguration" + } + }, + "required": [ + "ExpiryEventsConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::CertificateManager::Account" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::CertificateManager::Account.ExpiryEventsConfiguration": { + "additionalProperties": false, + "properties": { + "DaysBeforeExpiry": { + "type": "number" + } + }, + "type": "object" + }, "AWS::CertificateManager::Certificate": { "additionalProperties": false, "properties": { @@ -28251,6 +28530,9 @@ "BillingMode": { "type": "string" }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "GlobalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.GlobalSecondaryIndex" @@ -28263,9 +28545,6 @@ }, "type": "array" }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/AWS::DynamoDB::Table.KinesisStreamSpecification" - }, "LocalSecondaryIndexes": { "items": { "$ref": "#/definitions/AWS::DynamoDB::Table.LocalSecondaryIndex" @@ -28339,9 +28618,24 @@ ], "type": "object" }, + "AWS::DynamoDB::Table.ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, "AWS::DynamoDB::Table.GlobalSecondaryIndex": { "additionalProperties": false, "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/AWS::DynamoDB::Table.ContributorInsightsSpecification" + }, "IndexName": { "type": "string" }, @@ -28381,18 +28675,6 @@ ], "type": "object" }, - "AWS::DynamoDB::Table.KinesisStreamSpecification": { - "additionalProperties": false, - "properties": { - "StreamArn": { - "type": "string" - } - }, - "required": [ - "StreamArn" - ], - "type": "object" - }, "AWS::DynamoDB::Table.LocalSecondaryIndex": { "additionalProperties": false, "properties": { @@ -30589,6 +30871,12 @@ }, "LaunchTemplateName": { "type": "string" + }, + "TagSpecifications": { + "items": { + "$ref": "#/definitions/AWS::EC2::LaunchTemplate.TagSpecification" + }, + "type": "array" } }, "type": "object" @@ -36508,6 +36796,9 @@ }, "type": "array" }, + "Configuration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ClusterConfiguration" + }, "DefaultCapacityProviderStrategy": { "items": { "$ref": "#/definitions/AWS::ECS::Cluster.CapacityProviderStrategyItem" @@ -36558,6 +36849,15 @@ }, "type": "object" }, + "AWS::ECS::Cluster.ClusterConfiguration": { + "additionalProperties": false, + "properties": { + "ExecuteCommandConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandConfiguration" + } + }, + "type": "object" + }, "AWS::ECS::Cluster.ClusterSettings": { "additionalProperties": false, "properties": { @@ -36570,6 +36870,136 @@ }, "type": "object" }, + "AWS::ECS::Cluster.ExecuteCommandConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + }, + "LogConfiguration": { + "$ref": "#/definitions/AWS::ECS::Cluster.ExecuteCommandLogConfiguration" + }, + "Logging": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::Cluster.ExecuteCommandLogConfiguration": { + "additionalProperties": false, + "properties": { + "CloudWatchEncryptionEnabled": { + "type": "boolean" + }, + "CloudWatchLogGroupName": { + "type": "string" + }, + "S3BucketName": { + "type": "string" + }, + "S3EncryptionEnabled": { + "type": "boolean" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations": { + "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": { + "CapacityProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Cluster": { + "type": "string" + }, + "DefaultCapacityProviderStrategy": { + "items": { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy" + }, + "type": "array" + } + }, + "required": [ + "CapacityProviders", + "Cluster", + "DefaultCapacityProviderStrategy" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ECS::ClusterCapacityProviderAssociations" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ECS::ClusterCapacityProviderAssociations.CapacityProviderStrategy": { + "additionalProperties": false, + "properties": { + "Base": { + "type": "number" + }, + "CapacityProvider": { + "type": "string" + }, + "Weight": { + "type": "number" + } + }, + "required": [ + "CapacityProvider" + ], + "type": "object" + }, "AWS::ECS::PrimaryTaskSet": { "additionalProperties": false, "properties": { @@ -36693,6 +37123,9 @@ "EnableECSManagedTags": { "type": "boolean" }, + "EnableExecuteCommand": { + "type": "boolean" + }, "HealthCheckGracePeriodSeconds": { "type": "number" }, @@ -38044,6 +38477,9 @@ "Properties": { "additionalProperties": false, "properties": { + "AvailabilityZoneName": { + "type": "string" + }, "BackupPolicy": { "$ref": "#/definitions/AWS::EFS::FileSystem.BackupPolicy" }, @@ -44713,7 +45149,7 @@ ], "type": "object" }, - "AWS::FMS::NotificationChannel": { + "AWS::FIS::ExperimentTemplate": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -44745,22 +45181,58 @@ "Properties": { "additionalProperties": false, "properties": { - "SnsRoleName": { + "actions": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateAction" + } + }, + "type": "object" + }, + "description": { "type": "string" }, - "SnsTopicArn": { + "roleArn": { "type": "string" + }, + "stopConditions": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition" + }, + "type": "array" + }, + "tags": { + "additionalProperties": true, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "type": "string" + } + }, + "type": "object" + }, + "targets": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget" + } + }, + "type": "object" } }, "required": [ - "SnsRoleName", - "SnsTopicArn" + "description", + "roleArn", + "stopConditions", + "tags", + "targets" ], "type": "object" }, "Type": { "enum": [ - "AWS::FMS::NotificationChannel" + "AWS::FIS::ExperimentTemplate" ], "type": "string" }, @@ -44779,7 +45251,213 @@ ], "type": "object" }, - "AWS::FMS::Policy": { + "AWS::FIS::ExperimentTemplate.ExperimentTemplateAction": { + "additionalProperties": false, + "properties": { + "actionId": { + "type": "string" + }, + "description": { + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap" + }, + "startAfter": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList" + }, + "targets": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemParameterMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemStartAfterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateActionItemStartAfterList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateActionItemTargetMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateStopCondition": { + "additionalProperties": false, + "properties": { + "source": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTarget": { + "additionalProperties": false, + "properties": { + "filters": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList" + }, + "resourceArns": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ResourceArnList" + }, + "resourceTags": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.TagMap" + }, + "resourceType": { + "type": "string" + }, + "selectionMode": { + "type": "string" + } + }, + "required": [ + "resourceType", + "selectionMode" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + }, + "values": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues" + } + }, + "required": [ + "path", + "values" + ], + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterList": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterList": { + "items": { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ExperimentTemplateTargetFilterValues": { + "additionalProperties": false, + "properties": { + "ExperimentTemplateTargetFilterValues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.ResourceArnList": { + "additionalProperties": false, + "properties": { + "ResourceArnList": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::FIS::ExperimentTemplate.TagMap": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::FMS::NotificationChannel": { + "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": { + "SnsRoleName": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + } + }, + "required": [ + "SnsRoleName", + "SnsTopicArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::FMS::NotificationChannel" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::FMS::Policy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -45222,6 +45900,9 @@ "type": "string" } }, + "required": [ + "Type" + ], "type": "object" }, "AWS::GameLift::Build": { @@ -56108,6 +56789,9 @@ "BucketName": { "type": "string" }, + "CannedAcl": { + "type": "string" + }, "Key": { "type": "string" }, @@ -56226,7 +56910,6 @@ }, "required": [ "Actions", - "RuleDisabled", "Sql" ], "type": "object" @@ -79553,6 +80236,106 @@ }, "type": "object" }, + "AWS::RDS::DBProxyEndpoint": { + "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": { + "DBProxyEndpointName": { + "type": "string" + }, + "DBProxyName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint.TagFormat" + }, + "type": "array" + }, + "TargetRole": { + "type": "string" + }, + "VpcSecurityGroupIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "VpcSubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "DBProxyEndpointName", + "DBProxyName", + "VpcSubnetIds" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::RDS::DBProxyEndpoint" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::RDS::DBProxyEndpoint.TagFormat": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, "AWS::RDS::DBProxyTargetGroup": { "additionalProperties": false, "properties": { @@ -83652,22 +84435,342 @@ "Properties": { "additionalProperties": false, "properties": { - "Bucket": { + "Bucket": { + "type": "string" + }, + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "Bucket", + "PolicyDocument" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::BucketPolicy" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens": { + "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": { + "StorageLensConfiguration": { + "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "required": [ + "StorageLensConfiguration" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::S3::StorageLens" + ], + "type": "string" + }, + "UpdateReplacePolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::S3::StorageLens.AccountLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "BucketLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" + } + }, + "required": [ + "BucketLevel" + ], + "type": "object" + }, + "AWS::S3::StorageLens.ActivityMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.AwsOrg": { + "additionalProperties": false, + "properties": { + "Arn": { + "type": "string" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "AWS::S3::StorageLens.BucketLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" + }, + "PrefixLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.BucketsAndRegions": { + "additionalProperties": false, + "properties": { + "Buckets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "Regions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.DataExport": { + "additionalProperties": false, + "properties": { + "S3BucketDestination": { + "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" + } + }, + "required": [ + "S3BucketDestination" + ], + "type": "object" + }, + "AWS::S3::StorageLens.Encryption": { + "additionalProperties": false, + "properties": {}, + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevel": { + "additionalProperties": false, + "properties": { + "StorageMetrics": { + "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" + } + }, + "required": [ + "StorageMetrics" + ], + "type": "object" + }, + "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + }, + "SelectionCriteria": { + "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.S3BucketDestination": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" + }, + "Format": { + "type": "string" + }, + "OutputSchemaVersion": { + "type": "string" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "AccountId", + "Arn", + "Format", + "OutputSchemaVersion" + ], + "type": "object" + }, + "AWS::S3::StorageLens.SelectionCriteria": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "MaxDepth": { + "type": "number" + }, + "MinStorageBytesPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "AWS::S3::StorageLens.StorageLensConfiguration": { + "additionalProperties": false, + "properties": { + "AccountLevel": { + "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" + }, + "AwsOrg": { + "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" + }, + "DataExport": { + "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" + }, + "Exclude": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "Id": { + "type": "string" + }, + "Include": { + "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" + }, + "IsEnabled": { + "type": "boolean" + }, + "StorageLensArn": { + "type": "string" + } + }, + "required": [ + "AccountLevel", + "Id", + "IsEnabled" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint": { + "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": { + "Name": { "type": "string" }, - "PolicyDocument": { - "type": "object" + "ObjectLambdaConfiguration": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration" } }, "required": [ - "Bucket", - "PolicyDocument" + "Name" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::BucketPolicy" + "AWS::S3ObjectLambda::AccessPoint" ], "type": "string" }, @@ -83686,7 +84789,50 @@ ], "type": "object" }, - "AWS::S3::StorageLens": { + "AWS::S3ObjectLambda::AccessPoint.ObjectLambdaConfiguration": { + "additionalProperties": false, + "properties": { + "AllowedFeatures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "CloudWatchMetricsEnabled": { + "type": "boolean" + }, + "SupportingAccessPoint": { + "type": "string" + }, + "TransformationConfigurations": { + "items": { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration" + }, + "type": "array" + } + }, + "required": [ + "SupportingAccessPoint", + "TransformationConfigurations" + ], + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPoint.TransformationConfiguration": { + "additionalProperties": false, + "properties": { + "Actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ContentTransformation": { + "type": "object" + } + }, + "type": "object" + }, + "AWS::S3ObjectLambda::AccessPointPolicy": { "additionalProperties": false, "properties": { "DeletionPolicy": { @@ -83718,24 +84864,22 @@ "Properties": { "additionalProperties": false, "properties": { - "StorageLensConfiguration": { - "$ref": "#/definitions/AWS::S3::StorageLens.StorageLensConfiguration" + "ObjectLambdaAccessPoint": { + "type": "string" }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" + "PolicyDocument": { + "type": "object" } }, "required": [ - "StorageLensConfiguration" + "ObjectLambdaAccessPoint", + "PolicyDocument" ], "type": "object" }, "Type": { "enum": [ - "AWS::S3::StorageLens" + "AWS::S3ObjectLambda::AccessPointPolicy" ], "type": "string" }, @@ -83754,193 +84898,6 @@ ], "type": "object" }, - "AWS::S3::StorageLens.AccountLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "BucketLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketLevel" - } - }, - "required": [ - "BucketLevel" - ], - "type": "object" - }, - "AWS::S3::StorageLens.ActivityMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.AwsOrg": { - "additionalProperties": false, - "properties": { - "Arn": { - "type": "string" - } - }, - "required": [ - "Arn" - ], - "type": "object" - }, - "AWS::S3::StorageLens.BucketLevel": { - "additionalProperties": false, - "properties": { - "ActivityMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.ActivityMetrics" - }, - "PrefixLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevel" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.BucketsAndRegions": { - "additionalProperties": false, - "properties": { - "Buckets": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Regions": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.DataExport": { - "additionalProperties": false, - "properties": { - "S3BucketDestination": { - "$ref": "#/definitions/AWS::S3::StorageLens.S3BucketDestination" - } - }, - "required": [ - "S3BucketDestination" - ], - "type": "object" - }, - "AWS::S3::StorageLens.Encryption": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevel": { - "additionalProperties": false, - "properties": { - "StorageMetrics": { - "$ref": "#/definitions/AWS::S3::StorageLens.PrefixLevelStorageMetrics" - } - }, - "required": [ - "StorageMetrics" - ], - "type": "object" - }, - "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { - "additionalProperties": false, - "properties": { - "IsEnabled": { - "type": "boolean" - }, - "SelectionCriteria": { - "$ref": "#/definitions/AWS::S3::StorageLens.SelectionCriteria" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.S3BucketDestination": { - "additionalProperties": false, - "properties": { - "AccountId": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "Encryption": { - "$ref": "#/definitions/AWS::S3::StorageLens.Encryption" - }, - "Format": { - "type": "string" - }, - "OutputSchemaVersion": { - "type": "string" - }, - "Prefix": { - "type": "string" - } - }, - "required": [ - "AccountId", - "Arn", - "Format", - "OutputSchemaVersion" - ], - "type": "object" - }, - "AWS::S3::StorageLens.SelectionCriteria": { - "additionalProperties": false, - "properties": { - "Delimiter": { - "type": "string" - }, - "MaxDepth": { - "type": "number" - }, - "MinStorageBytesPercentage": { - "type": "number" - } - }, - "type": "object" - }, - "AWS::S3::StorageLens.StorageLensConfiguration": { - "additionalProperties": false, - "properties": { - "AccountLevel": { - "$ref": "#/definitions/AWS::S3::StorageLens.AccountLevel" - }, - "AwsOrg": { - "$ref": "#/definitions/AWS::S3::StorageLens.AwsOrg" - }, - "DataExport": { - "$ref": "#/definitions/AWS::S3::StorageLens.DataExport" - }, - "Exclude": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "Id": { - "type": "string" - }, - "Include": { - "$ref": "#/definitions/AWS::S3::StorageLens.BucketsAndRegions" - }, - "IsEnabled": { - "type": "boolean" - }, - "StorageLensArn": { - "type": "string" - } - }, - "required": [ - "AccountLevel", - "Id", - "IsEnabled" - ], - "type": "object" - }, "AWS::S3Outposts::AccessPoint": { "additionalProperties": false, "properties": { @@ -85884,7 +86841,8 @@ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -86118,7 +87076,8 @@ } }, "required": [ - "Key" + "Key", + "Values" ], "type": "object" }, @@ -94555,7 +95514,7 @@ "additionalProperties": false, "properties": { "Attributes": { - "$ref": "#/definitions/AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes" + "type": "object" }, "Description": { "type": "string" @@ -94600,11 +95559,6 @@ ], "type": "object" }, - "AWS::ServiceCatalogAppRegistry::AttributeGroup.Attributes": { - "additionalProperties": false, - "properties": {}, - "type": "object" - }, "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation": { "additionalProperties": false, "properties": { @@ -95082,6 +96036,9 @@ "$ref": "#/definitions/Tag" }, "type": "array" + }, + "Type": { + "type": "string" } }, "type": "object" @@ -100239,6 +101196,12 @@ { "$ref": "#/definitions/AWS::Budgets::Budget" }, + { + "$ref": "#/definitions/AWS::CE::AnomalyMonitor" + }, + { + "$ref": "#/definitions/AWS::CE::AnomalySubscription" + }, { "$ref": "#/definitions/AWS::CE::CostCategory" }, @@ -100248,6 +101211,9 @@ { "$ref": "#/definitions/AWS::Cassandra::Table" }, + { + "$ref": "#/definitions/AWS::CertificateManager::Account" + }, { "$ref": "#/definitions/AWS::CertificateManager::Certificate" }, @@ -100782,6 +101748,9 @@ { "$ref": "#/definitions/AWS::ECS::Cluster" }, + { + "$ref": "#/definitions/AWS::ECS::ClusterCapacityProviderAssociations" + }, { "$ref": "#/definitions/AWS::ECS::PrimaryTaskSet" }, @@ -100929,6 +101898,9 @@ { "$ref": "#/definitions/AWS::Events::Rule" }, + { + "$ref": "#/definitions/AWS::FIS::ExperimentTemplate" + }, { "$ref": "#/definitions/AWS::FMS::NotificationChannel" }, @@ -101634,6 +102606,9 @@ { "$ref": "#/definitions/AWS::RDS::DBProxy" }, + { + "$ref": "#/definitions/AWS::RDS::DBProxyEndpoint" + }, { "$ref": "#/definitions/AWS::RDS::DBProxyTargetGroup" }, @@ -101739,6 +102714,12 @@ { "$ref": "#/definitions/AWS::S3::StorageLens" }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPoint" + }, + { + "$ref": "#/definitions/AWS::S3ObjectLambda::AccessPointPolicy" + }, { "$ref": "#/definitions/AWS::S3Outposts::AccessPoint" },