From 028944a61db7b1cbffc245238b50f6b2a3803d58 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Dec 2023 08:59:14 -0800 Subject: [PATCH] CloudFormation Template Schema upgrade (#359) https://github.com/aws-cloudformation/cloudformation-template-schema/tree/main Co-authored-by: kddejong Co-authored-by: Kevin DeJong --- server/schema/resources.schema.json | 38 ++- .../aws-autoscaling-autoscalinggroup.json | 34 +-- .../resources/aws-cloud9-environmentec2.json | 3 +- .../aws-cloudfront-keyvaluestore.json | 109 ++++++++ .../resources/aws-codepipeline-pipeline.json | 250 +++++++++++++----- .../aws-config-configurationrecorder.json | 53 ++++ .../resources/aws-connect-instance.json | 55 +++- .../aws-connect-instancestorageconfig.json | 3 +- .../aws-connect-integrationassociation.json | 38 ++- server/schema/resources/aws-dms-endpoint.json | 28 +- .../aws-ec2-securitygroupegress.json | 125 ++++++--- .../aws-elasticache-serverlesscache.json | 18 +- .../aws-lambda-eventinvokeconfig.json | 148 +++++++---- .../resources/aws-medialive-channel.json | 40 +++ server/schema/resources/aws-memorydb-acl.json | 1 + .../aws-memorydb-parametergroup.json | 1 + .../resources/aws-memorydb-subnetgroup.json | 1 + .../schema/resources/aws-memorydb-user.json | 1 + .../aws-opensearchservice-domain.json | 9 + .../schema/resources/aws-osis-pipeline.json | 66 ++++- .../aws-route53resolver-resolverconfig.json | 19 +- .../aws-s3express-directorybucket.json | 10 +- .../resources/aws-sagemaker-featuregroup.json | 20 ++ .../resources/aws-signer-signingprofile.json | 2 +- .../resources/aws-sns-subscription.json | 4 + 25 files changed, 850 insertions(+), 226 deletions(-) create mode 100644 server/schema/resources/aws-cloudfront-keyvaluestore.json diff --git a/server/schema/resources.schema.json b/server/schema/resources.schema.json index b9ab57eb..90ac8f14 100644 --- a/server/schema/resources.schema.json +++ b/server/schema/resources.schema.json @@ -3299,6 +3299,37 @@ ], "additionalProperties": false }, + "AWS_CloudFront_KeyValueStore": { + "type": "object", + "markdownDescription": "Resource Type definition for AWS::CloudFront::KeyValueStore \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keyvaluestore.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::CloudFront::KeyValueStore" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for AWS::CloudFront::KeyValueStore \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keyvaluestore.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-cloudfront-keyvaluestore.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_DAX_SubnetGroup": { "type": "object", "markdownDescription": "Resource Type definition for AWS::DAX::SubnetGroup \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-subnetgroup.html)", @@ -16100,7 +16131,7 @@ }, "AWS_Lambda_EventInvokeConfig": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::Lambda::EventInvokeConfig \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventinvokeconfig.html)", + "markdownDescription": "The AWS::Lambda::EventInvokeConfig resource configures options for asynchronous invocation on a version or an alias. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventinvokeconfig.html)", "allOf": [ { "type": "object", @@ -16111,7 +16142,7 @@ "AWS::Lambda::EventInvokeConfig" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::Lambda::EventInvokeConfig \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventinvokeconfig.html)" + "The AWS::Lambda::EventInvokeConfig resource configures options for asynchronous invocation on a version or an alias. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventinvokeconfig.html)" ] }, "Properties": { @@ -36843,6 +36874,9 @@ { "$ref": "#/definitions/AWS_CloudFormation_WaitConditionHandle" }, + { + "$ref": "#/definitions/AWS_CloudFront_KeyValueStore" + }, { "$ref": "#/definitions/AWS_DAX_SubnetGroup" }, diff --git a/server/schema/resources/aws-autoscaling-autoscalinggroup.json b/server/schema/resources/aws-autoscaling-autoscalinggroup.json index 3e3838dc..75642d21 100644 --- a/server/schema/resources/aws-autoscaling-autoscalinggroup.json +++ b/server/schema/resources/aws-autoscaling-autoscalinggroup.json @@ -43,20 +43,7 @@ "permissions": [ "autoscaling:*", "cloudwatch:PutMetricAlarm", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeImages", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeInstances", - "ec2:DescribeInstanceTypes", - "ec2:DescribeInstanceTypeOfferings", - "ec2:DescribeKeyPairs", - "ec2:DescribeLaunchTemplateVersions", - "ec2:DescribePlacementGroups", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSpotInstanceRequests", - "ec2:DescribeSubnets", - "ec2:DescribeVpcClassicLink", + "ec2:Describe*", "ec2:GetInstanceTypesFromInstanceRequirements", "ec2:RunInstances", "elasticloadbalancing:DescribeLoadBalancers", @@ -73,20 +60,7 @@ "permissions": [ "autoscaling:*", "cloudwatch:PutMetricAlarm", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeImages", - "ec2:DescribeInstanceAttribute", - "ec2:DescribeInstances", - "ec2:DescribeInstanceTypes", - "ec2:DescribeInstanceTypeOfferings", - "ec2:DescribeKeyPairs", - "ec2:DescribeLaunchTemplateVersions", - "ec2:DescribePlacementGroups", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSpotInstanceRequests", - "ec2:DescribeSubnets", - "ec2:DescribeVpcClassicLink", + "ec2:Describe*", "ec2:GetInstanceTypesFromInstanceRequirements", "ec2:RunInstances", "elasticloadbalancing:DescribeLoadBalancers", @@ -644,6 +618,10 @@ "$ref": "#/definitions/TotalLocalStorageGBRequest" } }, + "required": [ + "MemoryMiB", + "VCpuCount" + ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, diff --git a/server/schema/resources/aws-cloud9-environmentec2.json b/server/schema/resources/aws-cloud9-environmentec2.json index 83d84aa4..6f7e9fca 100644 --- a/server/schema/resources/aws-cloud9-environmentec2.json +++ b/server/schema/resources/aws-cloud9-environmentec2.json @@ -29,7 +29,7 @@ }, "ImageId": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "SubnetId": { "type": "string", @@ -93,6 +93,7 @@ } }, "required": [ + "ImageId", "InstanceType" ], "createOnlyProperties": [ diff --git a/server/schema/resources/aws-cloudfront-keyvaluestore.json b/server/schema/resources/aws-cloudfront-keyvaluestore.json new file mode 100644 index 00000000..4b33358c --- /dev/null +++ b/server/schema/resources/aws-cloudfront-keyvaluestore.json @@ -0,0 +1,109 @@ +{ + "additionalProperties": false, + "definitions": { + "ImportSource": { + "additionalProperties": false, + "properties": { + "SourceType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "SourceArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "SourceType", + "SourceArn" + ], + "type": "object", + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "description": "Resource Type definition for AWS::CloudFront::KeyValueStore", + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateKeyValueStore", + "cloudfront:DescribeKeyValueStore", + "s3:GetObject", + "s3:HeadObject", + "s3:GetBucketLocation" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteKeyValueStore", + "cloudfront:DescribeKeyValueStore" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListKeyValueStores" + ] + }, + "read": { + "permissions": [ + "cloudfront:DescribeKeyValueStore" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateKeyValueStore", + "cloudfront:DescribeKeyValueStore" + ] + } + }, + "properties": { + "Name": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + }, + "Comment": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "ImportSource": { + "$ref": "#/definitions/ImportSource" + } + }, + "primaryIdentifier": [ + "/properties/Name" + ], + "createOnlyProperties": [ + "/properties/Name" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Id", + "/properties/Status" + ], + "writeOnlyProperties": [ + "/properties/ImportSource" + ], + "required": [ + "Name" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::KeyValueStore", + "attributes": { + "Arn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Id": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Status": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-codepipeline-pipeline.json b/server/schema/resources/aws-codepipeline-pipeline.json index 5f7522bb..49f44ed0 100644 --- a/server/schema/resources/aws-codepipeline-pipeline.json +++ b/server/schema/resources/aws-codepipeline-pipeline.json @@ -11,9 +11,6 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "ArtifactStore": { - "$ref": "#/definitions/ArtifactStore" - }, "DisableInboundStageTransitions": { "type": "array", "uniqueItems": true, @@ -34,10 +31,37 @@ "type": "boolean", "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "Triggers": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/PipelineTriggerDeclaration" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, "RoleArn": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, + "Name": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + }, + "Variables": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/VariableDeclaration" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "ArtifactStore": { + "$ref": "#/definitions/ArtifactStore" + }, + "PipelineType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "Tags": { "type": "array", "uniqueItems": false, @@ -45,68 +69,115 @@ "$ref": "#/definitions/Tag" }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Name": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" } }, "definitions": { - "ActionDeclaration": { + "BlockerDeclaration": { "type": "object", "additionalProperties": false, "properties": { - "ActionTypeId": { - "$ref": "#/definitions/ActionTypeId" - }, - "Configuration": { - "type": "object", - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "Type": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "InputArtifacts": { + "Name": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "Type", + "Name" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "GitConfiguration": { + "type": "object", + "additionalProperties": false, + "properties": { + "Push": { "type": "array", "uniqueItems": true, "items": { - "$ref": "#/definitions/InputArtifact" + "$ref": "#/definitions/GitPushFilter" }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "OutputArtifacts": { - "type": "array", - "uniqueItems": true, - "items": { - "$ref": "#/definitions/OutputArtifact" - }, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "SourceActionName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "SourceActionName" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ActionTypeId": { + "type": "object", + "additionalProperties": false, + "properties": { + "Owner": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "Region": { + "Category": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "Namespace": { + "Version": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "RoleArn": { + "Provider": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "Owner", + "Category", + "Version", + "Provider" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ArtifactStoreMap": { + "type": "object", + "additionalProperties": false, + "properties": { + "ArtifactStore": { + "$ref": "#/definitions/ArtifactStore" }, - "RunOrder": { - "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "Region": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "ArtifactStore", + "Region" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PipelineTriggerDeclaration": { + "type": "object", + "additionalProperties": false, + "properties": { + "GitConfiguration": { + "$ref": "#/definitions/GitConfiguration" }, - "Name": { + "ProviderType": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "ActionTypeId", - "Name" + "ProviderType" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "BlockerDeclaration": { + "EncryptionKey": { "type": "object", "additionalProperties": false, "properties": { @@ -114,43 +185,78 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "Name": { + "Id": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ "Type", - "Name" + "Id" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ActionTypeId": { + "GitPushFilter": { "type": "object", "additionalProperties": false, "properties": { - "Owner": { + "Tags": { + "$ref": "#/definitions/GitTagFilterCriteria" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ActionDeclaration": { + "type": "object", + "additionalProperties": false, + "properties": { + "ActionTypeId": { + "$ref": "#/definitions/ActionTypeId" + }, + "Configuration": { + "type": "object", + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "InputArtifacts": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/InputArtifact" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "OutputArtifacts": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/OutputArtifact" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Region": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Category": { + "Namespace": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Version": { + "RoleArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Provider": { + "RunOrder": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Name": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "Owner", - "Category", - "Version", - "Provider" + "ActionTypeId", + "Name" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, @@ -221,21 +327,25 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ArtifactStoreMap": { + "VariableDeclaration": { "type": "object", "additionalProperties": false, "properties": { - "ArtifactStore": { - "$ref": "#/definitions/ArtifactStore" + "DefaultValue": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Region": { + "Description": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Name": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "ArtifactStore", - "Region" + "Name" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, @@ -258,23 +368,29 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "EncryptionKey": { + "GitTagFilterCriteria": { "type": "object", "additionalProperties": false, "properties": { - "Type": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "Includes": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "Id": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "Excludes": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, - "required": [ - "Type", - "Id" - ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Tag": { diff --git a/server/schema/resources/aws-config-configurationrecorder.json b/server/schema/resources/aws-config-configurationrecorder.json index 06b2b5d8..2d0cc177 100644 --- a/server/schema/resources/aws-config-configurationrecorder.json +++ b/server/schema/resources/aws-config-configurationrecorder.json @@ -6,6 +6,9 @@ "RecordingGroup": { "$ref": "#/definitions/RecordingGroup" }, + "RecordingMode": { + "$ref": "#/definitions/RecordingMode" + }, "RoleARN": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" @@ -49,6 +52,34 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "RecordingModeOverride": { + "type": "object", + "additionalProperties": false, + "properties": { + "ResourceTypes": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "RecordingFrequency": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Description": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "ResourceTypes", + "RecordingFrequency" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "RecordingGroup": { "type": "object", "additionalProperties": false, @@ -78,6 +109,28 @@ } }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "RecordingMode": { + "type": "object", + "additionalProperties": false, + "properties": { + "RecordingModeOverrides": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/RecordingModeOverride" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "RecordingFrequency": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "RecordingFrequency" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "required": [ diff --git a/server/schema/resources/aws-connect-instance.json b/server/schema/resources/aws-connect-instance.json index df3d4825..6161ff2c 100644 --- a/server/schema/resources/aws-connect-instance.json +++ b/server/schema/resources/aws-connect-instance.json @@ -69,6 +69,32 @@ "OutboundCalls" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.", + "minLength": 0, + "maxLength": 256, + "markdownDescription": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "A key-value pair to associate with a resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { @@ -100,14 +126,18 @@ "description": "The attributes for the instance.", "$ref": "#/definitions/Attributes", "markdownDescription": "The attributes for the instance.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: No interruption" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "markdownDescription": "An array of key-value pairs to apply to this resource.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, "additionalProperties": false, "required": [ "IdentityManagementType", @@ -131,12 +161,20 @@ "primaryIdentifier": [ "/properties/Arn" ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "handlers": { "create": { "permissions": [ "connect:CreateInstance", "connect:DescribeInstance", "connect:UpdateInstanceAttribute", + "connect:TagResource", "ds:CheckAlias", "ds:CreateAlias", "ds:AuthorizeApplication", @@ -161,13 +199,16 @@ "connect:ListInstanceAttributes", "connect:UpdateInstanceAttribute", "iam:CreateServiceLinkedRole", - "iam:PutRolePolicy" + "iam:PutRolePolicy", + "connect:TagResource", + "connect:UntagResource" ] }, "delete": { "permissions": [ "connect:DeleteInstance", "connect:DescribeInstance", + "connect:UntagResource", "ds:DeleteDirectory", "ds:UnauthorizeApplication", "ds:DescribeDirectories" diff --git a/server/schema/resources/aws-connect-instancestorageconfig.json b/server/schema/resources/aws-connect-instancestorageconfig.json index 6911fdb5..7fed83c6 100644 --- a/server/schema/resources/aws-connect-instancestorageconfig.json +++ b/server/schema/resources/aws-connect-instancestorageconfig.json @@ -131,7 +131,8 @@ }, "required": [ "Prefix", - "RetentionPeriodHours" + "RetentionPeriodHours", + "EncryptionConfig" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, diff --git a/server/schema/resources/aws-connect-integrationassociation.json b/server/schema/resources/aws-connect-integrationassociation.json index c523b126..36ad99bf 100644 --- a/server/schema/resources/aws-connect-integrationassociation.json +++ b/server/schema/resources/aws-connect-integrationassociation.json @@ -15,9 +15,10 @@ "type": "string", "enum": [ "LEX_BOT", - "LAMBDA_FUNCTION" + "LAMBDA_FUNCTION", + "APPLICATION" ], - "markdownDescription": "Specifies the integration type to be associated with the instance\n\n---\n\nRequired: No \nType: String \nAllowed Values: LEX_BOT | LAMBDA_FUNCTION \nUpdate requires: No interruption" + "markdownDescription": "Specifies the integration type to be associated with the instance\n\n---\n\nRequired: No \nType: String \nAllowed Values: LEX_BOT | LAMBDA_FUNCTION | APPLICATION \nUpdate requires: No interruption" }, "InstanceId": { "description": "Amazon Connect instance identifier", @@ -71,10 +72,23 @@ "handlers": { "create": { "permissions": [ + "connect:DescribeInstance", + "ds:DescribeDirectories", + "app-integrations:CreateEventIntegrationAssociation", + "mobiletargeting:GetApp", + "cases:GetDomain", + "wisdom:GetAssistant", + "wisdom:GetKnowledgeBase", + "wisdom:TagResource", + "voiceid:DescribeDomain", + "events:PutTargets", + "events:PutRule", "connect:AssociateBot", "connect:AssociateLambdaFunction", + "connect:CreateIntegrationAssociation", "connect:ListBots", "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations", "lambda:addPermission", "lex:GetBot", "lex:DescribeBotAlias", @@ -82,13 +96,18 @@ "lex:UpdateResourcePolicy", "lex:CreateResourcePolicyStatement", "lambda:AddPermission", + "app-integrations:GetApplication", + "iam:AttachRolePolicy", + "iam:CreateServiceLinkedRole", + "iam:GetRolePolicy", "iam:PutRolePolicy" ] }, "read": { "permissions": [ "connect:ListBots", - "connect:ListLambdaFunctions" + "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations" ] }, "update": { @@ -96,20 +115,31 @@ }, "delete": { "permissions": [ + "connect:DescribeInstance", + "ds:DescribeDirectories", + "app-integrations:DeleteEventIntegrationAssociation", + "events:ListTargetsByRule", + "events:RemoveTargets", + "events:DeleteRule", "connect:DisassociateBot", "connect:DisassociateLambdaFunction", + "connect:DeleteIntegrationAssociation", "connect:ListBots", "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations", "lex:DeleteResourcePolicy", "lex:DeleteResourcePolicyStatement", "lambda:RemovePermission", + "iam:GetRolePolicy", + "iam:DeleteRolePolicy", "iam:PutRolePolicy" ] }, "list": { "permissions": [ "connect:ListBots", - "connect:ListLambdaFunctions" + "connect:ListLambdaFunctions", + "connect:ListIntegrationAssociations" ] } }, diff --git a/server/schema/resources/aws-dms-endpoint.json b/server/schema/resources/aws-dms-endpoint.json index 0f5cb836..0c376b14 100644 --- a/server/schema/resources/aws-dms-endpoint.json +++ b/server/schema/resources/aws-dms-endpoint.json @@ -170,17 +170,21 @@ "type": "object", "additionalProperties": false, "properties": { - "SecretsManagerSecretId": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "LoadTimeout": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, "SetDataCaptureChanges": { "type": "boolean", "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "SecretsManagerAccessRoleArn": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "MaxFileSize": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "KeepCsvFiles": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "CurrentLsn": { "type": "string", @@ -189,6 +193,18 @@ "MaxKBytesPerRead": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "SecretsManagerSecretId": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "WriteBufferSize": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "SecretsManagerAccessRoleArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" diff --git a/server/schema/resources/aws-ec2-securitygroupegress.json b/server/schema/resources/aws-ec2-securitygroupegress.json index bb488bc7..4aa8844c 100644 --- a/server/schema/resources/aws-ec2-securitygroupegress.json +++ b/server/schema/resources/aws-ec2-securitygroupegress.json @@ -1,69 +1,116 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + } + }, "typeName": "AWS::EC2::SecurityGroupEgress", + "readOnlyProperties": [ + "/properties/Id" + ], "description": "Resource Type definition for AWS::EC2::SecurityGroupEgress", + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], "properties": { "CidrIp": { + "description": "The IPv4 ranges", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The IPv4 ranges\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, "CidrIpv6": { + "description": "[VPC only] The IPv6 ranges", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "[VPC only] The IPv6 ranges\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, "Description": { + "description": "Resource Type definition for an egress (outbound) security group rule.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "Resource Type definition for an egress (outbound) security group rule.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "DestinationPrefixListId": { + "FromPort": { + "description": "The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.", + "type": "integer", + "markdownDescription": "The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of -1 indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: Replacement" + }, + "ToPort": { + "description": "The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6 types, you must specify all codes.", + "type": "integer", + "markdownDescription": "The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of -1 indicates all ICMP/ICMPv6 codes. If you specify all ICMP/ICMPv6 types, you must specify all codes.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: Replacement" + }, + "IpProtocol": { + "description": "[VPC only] Use -1 to specify all protocols. When authorizing security group rules, specifying -1 or a protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports, regardless of any port range you specify. For tcp, udp, and icmp, you must specify a port range. For icmpv6, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "[VPC only] Use -1 to specify all protocols. When authorizing security group rules, specifying -1 or a protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports, regardless of any port range you specify. For tcp, udp, and icmp, you must specify a port range. For icmpv6, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "DestinationSecurityGroupId": { + "description": "You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" - }, - "FromPort": { - "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: Replacement" + "markdownDescription": "You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "GroupId": { + "DestinationPrefixListId": { + "description": "[EC2-VPC only] The ID of a prefix list.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "[EC2-VPC only] The ID of a prefix list.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "IpProtocol": { + "GroupId": { + "description": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "ToPort": { - "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: Replacement" + "markdownDescription": "The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" } }, - "required": [ - "IpProtocol", - "GroupId" - ], - "createOnlyProperties": [ - "/properties/IpProtocol", - "/properties/DestinationSecurityGroupId", - "/properties/ToPort", - "/properties/CidrIp", - "/properties/FromPort", - "/properties/GroupId", - "/properties/CidrIpv6", - "/properties/DestinationPrefixListId" - ], - "readOnlyProperties": [ - "/properties/Id" - ], - "primaryIdentifier": [ - "/properties/Id" - ], "attributes": { "Id": { + "description": "The Security Group Rule Id", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The Security Group Rule Id\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-elasticache-serverlesscache.json b/server/schema/resources/aws-elasticache-serverlesscache.json index c6cb7a59..a55241ac 100644 --- a/server/schema/resources/aws-elasticache-serverlesscache.json +++ b/server/schema/resources/aws-elasticache-serverlesscache.json @@ -189,6 +189,12 @@ "type": "string", "markdownDescription": "The daily time range (in UTC) during which the service takes automatic snapshot of the Serverless Cache.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "Endpoint": { + "$ref": "#/definitions/Endpoint" + }, + "ReaderEndpoint": { + "$ref": "#/definitions/Endpoint" + }, "FinalSnapshotName": { "description": "The final snapshot name which is taken before Serverless Cache is deleted.", "type": "string", @@ -207,8 +213,10 @@ "/properties/FullEngineVersion", "/properties/CreateTime", "/properties/Status", - "/properties/Endpoint", - "/properties/ReaderEndpoint", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/ReaderEndpoint/Address", + "/properties/ReaderEndpoint/Port", "/properties/ARN" ], "writeOnlyProperties": [ @@ -288,12 +296,6 @@ "type": "string", "markdownDescription": "The status of the Serverless Cache.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "ReaderEndpoint": { - "$ref": "#/definitions/Endpoint" - }, "ARN": { "description": "The ARN of the Serverless Cache.", "type": "string", diff --git a/server/schema/resources/aws-lambda-eventinvokeconfig.json b/server/schema/resources/aws-lambda-eventinvokeconfig.json index 6341a8c2..d187ba2f 100644 --- a/server/schema/resources/aws-lambda-eventinvokeconfig.json +++ b/server/schema/resources/aws-lambda-eventinvokeconfig.json @@ -1,89 +1,143 @@ { "typeName": "AWS::Lambda::EventInvokeConfig", - "description": "Resource Type definition for AWS::Lambda::EventInvokeConfig", - "additionalProperties": false, - "properties": { - "FunctionName": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "MaximumRetryAttempts": { - "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "Qualifier": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "DestinationConfig": { - "$ref": "#/definitions/DestinationConfig" - }, - "MaximumEventAgeInSeconds": { - "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - } - }, + "description": "The AWS::Lambda::EventInvokeConfig resource configures options for asynchronous invocation on a version or an alias.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "definitions": { "DestinationConfig": { + "description": "A destination for events after they have been sent to a function for processing.", "type": "object", - "additionalProperties": false, "properties": { - "OnSuccess": { - "$ref": "#/definitions/OnSuccess" - }, "OnFailure": { "$ref": "#/definitions/OnFailure" + }, + "OnSuccess": { + "$ref": "#/definitions/OnSuccess" } }, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "additionalProperties": false, + "markdownDescription": "A destination for events after they have been sent to a function for processing.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "OnSuccess": { + "OnFailure": { + "description": "The destination configuration for failed invocations.", "type": "object", - "additionalProperties": false, "properties": { "Destination": { + "description": "The Amazon Resource Name (ARN) of the destination resource.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "minLength": 0, + "maxLength": 350, + "markdownDescription": "The Amazon Resource Name (ARN) of the destination resource.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 350 \nPattern: ^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*) \nUpdate requires: No interruption" } }, "required": [ "Destination" ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "additionalProperties": false, + "markdownDescription": "The destination configuration for failed invocations.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "OnFailure": { + "OnSuccess": { + "description": "The destination configuration for successful invocations.", "type": "object", - "additionalProperties": false, "properties": { "Destination": { + "description": "The Amazon Resource Name (ARN) of the destination resource.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "minLength": 0, + "maxLength": 350, + "markdownDescription": "The Amazon Resource Name (ARN) of the destination resource.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 350 \nPattern: ^$|arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*) \nUpdate requires: No interruption" } }, "required": [ "Destination" ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "additionalProperties": false, + "markdownDescription": "The destination configuration for successful invocations.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, + "properties": { + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "FunctionName": { + "description": "The name of the Lambda function.", + "type": "string", + "markdownDescription": "The name of the Lambda function.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$ \nUpdate requires: Replacement" + }, + "MaximumEventAgeInSeconds": { + "description": "The maximum age of a request that Lambda sends to a function for processing.", + "type": "integer", + "minimum": 60, + "maximum": 21600, + "markdownDescription": "The maximum age of a request that Lambda sends to a function for processing.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "MaximumRetryAttempts": { + "description": "The maximum number of times to retry when the function returns an error.", + "type": "integer", + "minimum": 0, + "maximum": 2, + "markdownDescription": "The maximum number of times to retry when the function returns an error.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Qualifier": { + "description": "The identifier of a version or alias.", + "type": "string", + "markdownDescription": "The identifier of a version or alias.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(|[a-zA-Z0-9$_-]{1,129})$ \nUpdate requires: Replacement" + } + }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "additionalProperties": false, "required": [ "FunctionName", "Qualifier" ], - "createOnlyProperties": [ + "primaryIdentifier": [ "/properties/FunctionName", "/properties/Qualifier" ], - "primaryIdentifier": [ - "/properties/Id" - ], - "readOnlyProperties": [ - "/properties/Id" + "createOnlyProperties": [ + "/properties/FunctionName", + "/properties/Qualifier" ], - "attributes": { - "Id": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "handlers": { + "create": { + "permissions": [ + "lambda:PutFunctionEventInvokeConfig" + ] + }, + "read": { + "permissions": [ + "lambda:GetFunctionEventInvokeConfig" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateFunctionEventInvokeConfig" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteFunctionEventInvokeConfig" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FunctionName": { + "$ref": "resource-schema.json#/properties/FunctionName" + } + }, + "required": [ + "FunctionName" + ] + }, + "permissions": [ + "lambda:ListFunctionEventInvokeConfigs" + ] } - } + }, + "attributes": {} } \ No newline at end of file diff --git a/server/schema/resources/aws-medialive-channel.json b/server/schema/resources/aws-medialive-channel.json index e1dedf91..b587a4f6 100644 --- a/server/schema/resources/aws-medialive-channel.json +++ b/server/schema/resources/aws-medialive-channel.json @@ -426,6 +426,10 @@ "type": "object", "additionalProperties": false, "properties": { + "OutputStaticImageOverlayScheduleActions": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "InputPrepareScheduleActions": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" @@ -536,6 +540,9 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "OutputLockingSettings": { + "$ref": "#/definitions/OutputLockingSettings" + }, "OutputTimingSource": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" @@ -558,6 +565,11 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "PipelineLockingSettings": { + "type": "object", + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "FrameCaptureS3Settings": { "type": "object", "additionalProperties": false, @@ -2449,6 +2461,21 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "EpochLockingSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "JamSyncTime": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "CustomEpoch": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "VideoSelectorPid": { "type": "object", "additionalProperties": false, @@ -3113,6 +3140,19 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "OutputLockingSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "EpochLockingSettings": { + "$ref": "#/definitions/EpochLockingSettings" + }, + "PipelineLockingSettings": { + "$ref": "#/definitions/PipelineLockingSettings" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "CaptionDescription": { "type": "object", "additionalProperties": false, diff --git a/server/schema/resources/aws-memorydb-acl.json b/server/schema/resources/aws-memorydb-acl.json index 7ddfd3dc..fe318f8a 100644 --- a/server/schema/resources/aws-memorydb-acl.json +++ b/server/schema/resources/aws-memorydb-acl.json @@ -79,6 +79,7 @@ "permissions": [ "memorydb:CreateACL", "memorydb:DescribeACLs", + "memorydb:TagResource", "memorydb:ListTags" ] }, diff --git a/server/schema/resources/aws-memorydb-parametergroup.json b/server/schema/resources/aws-memorydb-parametergroup.json index 3884d5ea..cf8439a2 100644 --- a/server/schema/resources/aws-memorydb-parametergroup.json +++ b/server/schema/resources/aws-memorydb-parametergroup.json @@ -88,6 +88,7 @@ "permissions": [ "memorydb:CreateParameterGroup", "memorydb:DescribeParameterGroups", + "memorydb:TagResource", "memorydb:ListTags" ] }, diff --git a/server/schema/resources/aws-memorydb-subnetgroup.json b/server/schema/resources/aws-memorydb-subnetgroup.json index 4405ccba..d930be1c 100644 --- a/server/schema/resources/aws-memorydb-subnetgroup.json +++ b/server/schema/resources/aws-memorydb-subnetgroup.json @@ -84,6 +84,7 @@ "permissions": [ "memorydb:CreateSubnetGroup", "memorydb:DescribeSubnetGroups", + "memorydb:TagResource", "memorydb:ListTags" ] }, diff --git a/server/schema/resources/aws-memorydb-user.json b/server/schema/resources/aws-memorydb-user.json index c7772380..5e12d4f4 100644 --- a/server/schema/resources/aws-memorydb-user.json +++ b/server/schema/resources/aws-memorydb-user.json @@ -106,6 +106,7 @@ "permissions": [ "memorydb:CreateUser", "memorydb:DescribeUsers", + "memorydb:TagResource", "memorydb:ListTags" ] }, diff --git a/server/schema/resources/aws-opensearchservice-domain.json b/server/schema/resources/aws-opensearchservice-domain.json index f2b7c8b5..5be0b5ee 100644 --- a/server/schema/resources/aws-opensearchservice-domain.json +++ b/server/schema/resources/aws-opensearchservice-domain.json @@ -456,6 +456,10 @@ "type": "object", "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "IPAddressType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "EngineVersion": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" @@ -534,6 +538,7 @@ "/properties/Arn", "/properties/DomainArn", "/properties/DomainEndpoint", + "/properties/DomainEndpointV2", "/properties/DomainEndpoints", "/properties/ServiceSoftwareOptions", "/properties/AdvancedSecurityOptions/AnonymousAuthDisableDate" @@ -585,6 +590,10 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "DomainEndpointV2": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "DomainEndpoints": { "type": "object", "additionalProperties": false, diff --git a/server/schema/resources/aws-osis-pipeline.json b/server/schema/resources/aws-osis-pipeline.json index d787ec58..ec239a14 100644 --- a/server/schema/resources/aws-osis-pipeline.json +++ b/server/schema/resources/aws-osis-pipeline.json @@ -3,6 +3,38 @@ "description": "An OpenSearch Ingestion Service Data Prepper pipeline running Data Prepper.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-osis.git", "definitions": { + "BufferOptions": { + "description": "Key-value pairs to configure buffering.", + "type": "object", + "properties": { + "PersistentBufferEnabled": { + "type": "boolean", + "description": "Whether persistent buffering should be enabled.", + "markdownDescription": "Whether persistent buffering should be enabled.\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + } + }, + "required": [ + "PersistentBufferEnabled" + ], + "additionalProperties": false, + "markdownDescription": "Key-value pairs to configure buffering.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "EncryptionAtRestOptions": { + "description": "Key-value pairs to configure encryption at rest.", + "type": "object", + "properties": { + "KmsKeyArn": { + "type": "string", + "description": "The KMS key to use for encrypting data. By default an AWS owned key is used", + "markdownDescription": "The KMS key to use for encrypting data. By default an AWS owned key is used\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "KmsKeyArn" + ], + "additionalProperties": false, + "markdownDescription": "Key-value pairs to configure encryption at rest.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "LogPublishingOptions": { "description": "Key-value pairs to configure log publishing.", "type": "object", @@ -20,9 +52,12 @@ "type": "string", "minLength": 1, "maxLength": 512, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nPattern: \\/aws\\/vendedlogs\\/[\\.\\-_/#A-Za-z0-9]+ \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nPattern: \\/aws\\/vendedlogs\\/[\\.\\-_/#A-Za-z0-9]+ \nUpdate requires: No interruption" } }, + "required": [ + "LogGroup" + ], "additionalProperties": false, "markdownDescription": "The destination for OpenSearch Ingestion Service logs sent to Amazon CloudWatch.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } @@ -82,9 +117,12 @@ "maxLength": 24, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 15 \nMaximum Length: 24 \nPattern: subnet-\\w{8}(\\w{9})? \nUpdate requires: No interruption" }, - "markdownDescription": "A list of subnet IDs associated with the VPC endpoint.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "A list of subnet IDs associated with the VPC endpoint.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" } }, + "required": [ + "SubnetIds" + ], "additionalProperties": false, "markdownDescription": "Container for the values required to configure VPC access for the pipeline. If you don't specify these values, OpenSearch Ingestion Service creates the pipeline with a public endpoint.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, @@ -111,6 +149,12 @@ } }, "properties": { + "BufferOptions": { + "$ref": "#/definitions/BufferOptions" + }, + "EncryptionAtRestOptions": { + "$ref": "#/definitions/EncryptionAtRestOptions" + }, "LogPublishingOptions": { "$ref": "#/definitions/LogPublishingOptions" }, @@ -189,9 +233,12 @@ "permissions": [ "osis:CreatePipeline", "osis:GetPipeline", + "osis:TagResource", "osis:ListTagsForResource", "iam:PassRole", - "iam:CreateServiceLinkedRole" + "iam:CreateServiceLinkedRole", + "logs:CreateLogDelivery", + "kms:DescribeKey" ] }, "read": { @@ -203,15 +250,24 @@ "update": { "permissions": [ "osis:UpdatePipeline", + "osis:GetPipeline", "osis:ListTagsForResource", "osis:TagResource", "osis:UntagResource", - "iam:PassRole" + "iam:PassRole", + "logs:GetLogDelivery", + "logs:UpdateLogDelivery", + "logs:ListLogDeliveries", + "kms:DescribeKey" ] }, "delete": { "permissions": [ - "osis:DeletePipeline" + "osis:DeletePipeline", + "osis:GetPipeline", + "logs:GetLogDelivery", + "logs:DeleteLogDelivery", + "logs:ListLogDeliveries" ] }, "list": { diff --git a/server/schema/resources/aws-route53resolver-resolverconfig.json b/server/schema/resources/aws-route53resolver-resolverconfig.json index 19c8d562..7ce705cd 100644 --- a/server/schema/resources/aws-route53resolver-resolverconfig.json +++ b/server/schema/resources/aws-route53resolver-resolverconfig.json @@ -32,29 +32,38 @@ "/properties/AutodefinedReverseFlag" ], "primaryIdentifier": [ - "/properties/Id" + "/properties/ResourceId" ], "taggable": false, "additionalProperties": false, + "propertyTransform": { + "/properties/AutodefinedReverseFlag": "$join([AutodefinedReverseFlag, \"D\"])" + }, "handlers": { "create": { "permissions": [ - "route53resolver:CreateConfig" + "route53resolver:UpdateResolverConfig", + "route53resolver:GetResolverConfig", + "ec2:DescribeVpcs" ] }, "read": { "permissions": [ - "route53resolver:GetConfig" + "route53resolver:GetResolverConfig", + "ec2:DescribeVpcs" ] }, "delete": { "permissions": [ - "route53resolver:DeleteConfig" + "route53resolver:UpdateResolverConfig", + "route53resolver:ListResolverConfigs", + "ec2:DescribeVpcs" ] }, "list": { "permissions": [ - "route53resolver:ListConfig" + "route53resolver:ListResolverConfigs", + "ec2:DescribeVpcs" ] } }, diff --git a/server/schema/resources/aws-s3express-directorybucket.json b/server/schema/resources/aws-s3express-directorybucket.json index 8350f45c..de77e64d 100644 --- a/server/schema/resources/aws-s3express-directorybucket.json +++ b/server/schema/resources/aws-s3express-directorybucket.json @@ -4,10 +4,10 @@ "additionalProperties": false, "properties": { "BucketName": { - "description": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, dots (.), and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az2--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.", + "description": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.", "maxLength": 63, "type": "string", - "markdownDescription": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, dots (.), and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az2--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 63 \nPattern: ^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$ \nUpdate requires: Replacement" + "markdownDescription": "Specifies a name for the bucket. The bucket name must contain only lowercase letters, numbers, and hyphens (-). A directory bucket name must be unique in the chosen Availability Zone. The bucket name must also follow the format 'bucket_base_name--az_id--x-s3' (for example, 'DOC-EXAMPLE-BUCKET--usw2-az1--x-s3'). If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the bucket name.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 63 \nPattern: ^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$ \nUpdate requires: Replacement" }, "LocationName": { "description": "Specifies the AZ ID of the Availability Zone where the directory bucket will be created. An example AZ ID value is 'use1-az5'.", @@ -15,12 +15,12 @@ "markdownDescription": "Specifies the AZ ID of the Availability Zone where the directory bucket will be created. An example AZ ID value is 'use1-az5'.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "DataRedundancy": { - "description": "Specifies the number of Avilability Zone that's used for redundancy for the bucket.", + "description": "Specifies the number of Availability Zone that's used for redundancy for the bucket.", "type": "string", "enum": [ "SingleAvailabilityZone" ], - "markdownDescription": "Specifies the number of Avilability Zone that's used for redundancy for the bucket.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: SingleAvailabilityZone \nUpdate requires: Replacement" + "markdownDescription": "Specifies the number of Availability Zone that's used for redundancy for the bucket.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: SingleAvailabilityZone \nUpdate requires: Replacement" } }, "definitions": { @@ -80,7 +80,7 @@ "$ref": "#/definitions/Arn", "description": "Returns the Amazon Resource Name (ARN) of the specified bucket.", "examples": [ - "arn:aws:s3express:us-west-2:123456789123:bucket/DOC-EXAMPLE-BUCKET--usw2-az2--x-s3" + "arn:aws:s3express:us-west-2:123456789123:bucket/DOC-EXAMPLE-BUCKET--usw2-az1--x-s3" ], "markdownDescription": "Returns the Amazon Resource Name (ARN) of the specified bucket.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" } diff --git a/server/schema/resources/aws-sagemaker-featuregroup.json b/server/schema/resources/aws-sagemaker-featuregroup.json index 36f66c77..610de213 100644 --- a/server/schema/resources/aws-sagemaker-featuregroup.json +++ b/server/schema/resources/aws-sagemaker-featuregroup.json @@ -28,6 +28,7 @@ "type": "array", "description": "An Array of Feature Definition", "uniqueItems": false, + "insertionOrder": false, "minItems": 1, "maxItems": 2500, "items": { @@ -45,6 +46,9 @@ "EnableOnlineStore": { "type": "boolean", "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "StorageType": { + "$ref": "#/definitions/StorageType" } }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: Replacement" @@ -89,6 +93,7 @@ "type": "array", "description": "An array of key-value pair to apply to this resource.", "uniqueItems": false, + "insertionOrder": false, "maxItems": 50, "items": { "$ref": "#/definitions/Tag" @@ -128,6 +133,14 @@ "maxLength": 2048, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 2048 \nUpdate requires: No interruption" }, + "StorageType": { + "type": "string", + "enum": [ + "Standard", + "InMemory" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: Standard | InMemory \nUpdate requires: No interruption" + }, "OnlineStoreSecurityConfig": { "type": "object", "additionalProperties": false, @@ -282,6 +295,13 @@ ] } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": false, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "attributes": { "CreationTime": { "description": "A timestamp of FeatureGroup creation time.", diff --git a/server/schema/resources/aws-signer-signingprofile.json b/server/schema/resources/aws-signer-signingprofile.json index 33740007..5f938142 100644 --- a/server/schema/resources/aws-signer-signingprofile.json +++ b/server/schema/resources/aws-signer-signingprofile.json @@ -13,7 +13,7 @@ }, "Arn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:aws(-(cn|gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$ \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$ \nUpdate requires: No interruption" }, "ProfileVersion": { "type": "string", diff --git a/server/schema/resources/aws-sns-subscription.json b/server/schema/resources/aws-sns-subscription.json index 8d8edad1..7f3b3111 100644 --- a/server/schema/resources/aws-sns-subscription.json +++ b/server/schema/resources/aws-sns-subscription.json @@ -3,6 +3,10 @@ "description": "Resource Type definition for AWS::SNS::Subscription", "additionalProperties": false, "properties": { + "ReplayPolicy": { + "type": "object", + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "RawMessageDelivery": { "type": "boolean", "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption"