From a91f023f9dd8f08cc775e6594b9a2430e7ab6b5c Mon Sep 17 00:00:00 2001 From: kddejong <36457093+kddejong@users.noreply.github.com> Date: Sat, 11 May 2024 08:03:31 +0000 Subject: [PATCH] CloudFormation Template Schema upgrade https://github.com/aws-cloudformation/cloudformation-template-schema/tree/main --- server/schema/resources.schema.json | 627 +++++-- .../resources/aws-acmpca-certificate.json | 12 +- .../aws-acmpca-certificateauthority.json | 20 +- ...acmpca-certificateauthorityactivation.json | 6 + .../resources/aws-acmpca-permission.json | 7 +- .../resources/aws-apigateway-account.json | 42 +- .../resources/aws-apigateway-deployment.json | 502 +++--- .../resources/aws-apigateway-resource.json | 90 +- .../resources/aws-apigateway-restapi.json | 284 ++-- ...applicationautoscaling-scalabletarget.json | 288 ++-- .../aws-autoscaling-launchconfiguration.json | 290 ++-- .../schema/resources/aws-bedrock-agent.json | 150 +- .../resources/aws-bedrock-datasource.json | 40 +- .../aws-bedrock-guardrailversion.json | 85 + .../resources/aws-bedrock-knowledgebase.json | 5 +- .../schema/resources/aws-budgets-budget.json | 30 +- .../resources/aws-budgets-budgetsaction.json | 44 +- .../aws-connectcampaigns-campaign.json | 5 + .../schema/resources/aws-datasync-task.json | 14 +- .../aws-directoryservice-simplead.json | 4 +- .../resources/aws-dms-dataprovider.json | 266 +-- .../resources/aws-dynamodb-globaltable.json | 950 +++++------ .../schema/resources/aws-dynamodb-table.json | 28 + .../resources/aws-ec2-customergateway.json | 9 - server/schema/resources/aws-ec2-instance.json | 27 +- server/schema/resources/aws-ec2-keypair.json | 42 +- .../resources/aws-ec2-launchtemplate.json | 6 +- ...2-transitgatewayroutetableassociation.json | 60 +- ...2-transitgatewayroutetablepropagation.json | 67 +- .../resources/aws-ecs-taskdefinition.json | 24 +- .../schema/resources/aws-events-eventbus.json | 116 +- server/schema/resources/aws-fms-policy.json | 168 +- ...aws-gamelift-containergroupdefinition.json | 491 ++++++ .../schema/resources/aws-gamelift-fleet.json | 90 +- .../aws-globalaccelerator-accelerator.json | 7 + ...balaccelerator-crossaccountattachment.json | 7 + .../aws-globalaccelerator-endpointgroup.json | 3 + .../aws-globalaccelerator-listener.json | 3 + .../resources/aws-groundstation-config.json | 8 +- ...s-groundstation-dataflowendpointgroup.json | 4 +- .../aws-groundstation-missionprofile.json | 8 +- .../aws-healthlake-fhirdatastore.json | 1 - server/schema/resources/aws-kms-alias.json | 74 +- server/schema/resources/aws-kms-key.json | 26 +- server/schema/resources/aws-lambda-alias.json | 148 +- .../schema/resources/aws-lambda-function.json | 1088 ++++++------- .../schema/resources/aws-location-apikey.json | 2 +- .../aws-location-geofencecollection.json | 3 +- .../resources/aws-mediaconnect-flow.json | 380 ++++- .../aws-mediaconnect-flowoutput.json | 124 +- .../aws-mediaconnect-flowvpcinterface.json | 4 +- .../resources/aws-medialive-channel.json | 119 +- .../aws-neptune-eventsubscription.json | 52 + server/schema/resources/aws-oam-link.json | 6 +- server/schema/resources/aws-oam-sink.json | 6 +- .../resources/aws-qbusiness-application.json | 225 +++ .../resources/aws-qbusiness-datasource.json | 450 ++++++ .../schema/resources/aws-qbusiness-index.json | 272 ++++ .../resources/aws-qbusiness-plugin.json | 383 +++++ .../resources/aws-qbusiness-retriever.json | 245 +++ .../aws-qbusiness-webexperience.json | 201 +++ server/schema/resources/aws-qldb-stream.json | 12 + .../resources/aws-quicksight-analysis.json | 38 +- .../resources/aws-quicksight-dashboard.json | 38 +- .../resources/aws-quicksight-dataset.json | 1084 +++++++------ .../resources/aws-quicksight-datasource.json | 1437 +++++++++-------- .../resources/aws-quicksight-template.json | 38 +- .../resources/aws-quicksight-topic.json | 46 +- .../aws-quicksight-vpcconnection.json | 298 ++-- .../schema/resources/aws-rds-dbinstance.json | 6 + .../resources/aws-redshift-cluster.json | 740 +++++---- .../aws-redshift-clustersubnetgroup.json | 4 + .../aws-redshift-endpointaccess.json | 350 ++-- .../aws-redshift-endpointauthorization.json | 178 +- .../aws-redshift-eventsubscription.json | 248 +-- .../aws-redshift-scheduledaction.json | 252 +-- .../aws-redshiftserverless-workgroup.json | 4 +- .../resources/aws-route53-hostedzone.json | 12 +- ...aws-route53resolver-firewallrulegroup.json | 9 + .../schema/resources/aws-sso-application.json | 213 +++ .../aws-sso-applicationassignment.json | 82 + server/schema/resources/aws-sso-instance.json | 137 ++ .../aws-stepfunctions-statemachinealias.json | 3 +- .../resources/aws-transfer-agreement.json | 4 +- .../resources/aws-transfer-certificate.json | 15 +- .../resources/aws-transfer-connector.json | 25 +- .../resources/aws-transfer-profile.json | 2 +- .../resources/aws-transfer-workflow.json | 6 +- 88 files changed, 9498 insertions(+), 4521 deletions(-) create mode 100644 server/schema/resources/aws-bedrock-guardrailversion.json create mode 100644 server/schema/resources/aws-gamelift-containergroupdefinition.json create mode 100644 server/schema/resources/aws-neptune-eventsubscription.json create mode 100644 server/schema/resources/aws-qbusiness-application.json create mode 100644 server/schema/resources/aws-qbusiness-datasource.json create mode 100644 server/schema/resources/aws-qbusiness-index.json create mode 100644 server/schema/resources/aws-qbusiness-plugin.json create mode 100644 server/schema/resources/aws-qbusiness-retriever.json create mode 100644 server/schema/resources/aws-qbusiness-webexperience.json create mode 100644 server/schema/resources/aws-sso-application.json create mode 100644 server/schema/resources/aws-sso-applicationassignment.json create mode 100644 server/schema/resources/aws-sso-instance.json diff --git a/server/schema/resources.schema.json b/server/schema/resources.schema.json index 8c74c1b3..6128f34f 100644 --- a/server/schema/resources.schema.json +++ b/server/schema/resources.schema.json @@ -3705,6 +3705,37 @@ ], "additionalProperties": false }, + "AWS_QBusiness_Retriever": { + "type": "object", + "markdownDescription": "Definition of AWS::QBusiness::Retriever Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-retriever.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::QBusiness::Retriever" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::QBusiness::Retriever Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-retriever.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-qbusiness-retriever.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_QuickSight_Analysis": { "type": "object", "markdownDescription": "Definition of the AWS::QuickSight::Analysis Resource Type. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-quicksight-analysis.html)", @@ -5342,6 +5373,37 @@ ], "additionalProperties": false }, + "AWS_QBusiness_WebExperience": { + "type": "object", + "markdownDescription": "Definition of AWS::QBusiness::WebExperience Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-webexperience.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::QBusiness::WebExperience" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::QBusiness::WebExperience Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-webexperience.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-qbusiness-webexperience.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_IoTWireless_FuotaTask": { "type": "object", "markdownDescription": "Create and manage FUOTA tasks. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotwireless-fuotatask.html)", @@ -5836,6 +5898,37 @@ ], "additionalProperties": false }, + "AWS_Route53Profiles_Profile": { + "type": "object", + "markdownDescription": "Resource Type definition for AWS::Route53Profiles::Profile \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profile.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Route53Profiles::Profile" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for AWS::Route53Profiles::Profile \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profile.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-route53profiles-profile.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_EC2_VPCCidrBlock": { "type": "object", "markdownDescription": "Resource Type definition for AWS::EC2::VPCCidrBlock \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpccidrblock.html)", @@ -6606,6 +6699,37 @@ ], "additionalProperties": false }, + "AWS_Bedrock_GuardrailVersion": { + "type": "object", + "markdownDescription": "Definition of AWS::Bedrock::GuardrailVersion Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-guardrailversion.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Bedrock::GuardrailVersion" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::Bedrock::GuardrailVersion Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-guardrailversion.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-bedrock-guardrailversion.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_ResourceGroups_Group": { "type": "object", "markdownDescription": "Schema for ResourceGroups::Group \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-resourcegroups-group.html)", @@ -6822,6 +6946,37 @@ ], "additionalProperties": false }, + "AWS_Route53Profiles_ProfileAssociation": { + "type": "object", + "markdownDescription": "Resource Type definition for AWS::Route53Profiles::ProfileAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileassociation.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Route53Profiles::ProfileAssociation" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for AWS::Route53Profiles::ProfileAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileassociation.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-route53profiles-profileassociation.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_NetworkFirewall_RuleGroup": { "type": "object", "markdownDescription": "Resource type definition for AWS::NetworkFirewall::RuleGroup \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html)", @@ -9224,6 +9379,37 @@ ], "additionalProperties": false }, + "AWS_QBusiness_Index": { + "type": "object", + "markdownDescription": "Definition of AWS::QBusiness::Index Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-index.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::QBusiness::Index" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::QBusiness::Index Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-index.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-qbusiness-index.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_ServiceCatalog_ServiceAction": { "type": "object", "markdownDescription": "Resource Schema for AWS::ServiceCatalog::ServiceAction \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-serviceaction.html)", @@ -12186,6 +12372,37 @@ ], "additionalProperties": false }, + "AWS_SSO_ApplicationAssignment": { + "type": "object", + "markdownDescription": "Resource Type definition for SSO application access grant to a user or group. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-applicationassignment.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::SSO::ApplicationAssignment" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for SSO application access grant to a user or group. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-applicationassignment.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-sso-applicationassignment.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_SES_Template": { "type": "object", "markdownDescription": "Resource Type definition for AWS::SES::Template \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-template.html)", @@ -13100,7 +13317,8 @@ } }, "required": [ - "Type" + "Type", + "Properties" ] }, { @@ -14122,7 +14340,7 @@ }, "AWS_EC2_LaunchTemplate": { "type": "object", - "markdownDescription": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You do not need to specify a name for the launch template. If you do not specify a name, CFN creates the name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)", + "markdownDescription": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)", "allOf": [ { "type": "object", @@ -14133,7 +14351,7 @@ "AWS::EC2::LaunchTemplate" ], "markdownEnumDescriptions": [ - "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You do not need to specify a name for the launch template. If you do not specify a name, CFN creates the name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)" + "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)" ] }, "Properties": { @@ -16214,6 +16432,37 @@ ], "additionalProperties": false }, + "AWS_Route53Profiles_ProfileResourceAssociation": { + "type": "object", + "markdownDescription": "Resource Type definition for AWS::Route53Profiles::ProfileResourceAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileresourceassociation.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Route53Profiles::ProfileResourceAssociation" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for AWS::Route53Profiles::ProfileResourceAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileresourceassociation.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-route53profiles-profileresourceassociation.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_ElastiCache_CacheCluster": { "type": "object", "markdownDescription": "Resource Type definition for AWS::ElastiCache::CacheCluster \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-cachecluster.html)", @@ -17882,7 +18131,7 @@ }, "AWS_KMS_Alias": { "type": "object", - "markdownDescription": "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys i \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html)", + "markdownDescription": "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys in different AWS-Regions. For more information, see [Using aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html) in the *Developer Guide*.\n When specifying an alias, observe the following rules.\n + Each alias is associated with one KMS key, but multiple aliases can be associated with the same KMS key.\n + The alias and its associated KMS key must be in the same AWS-account and Region.\n + The alias name must be unique in the AWS-account and Region. However, you can create aliases with the same name in different AWS-Regions. For example, you can have an ``alias/projectKey`` in multiple Regions, each of which is associated with a KMS key in its Region.\n + Each alias name must begin with ``alias/`` followed by a name, such as ``alias/exampleKey``. The alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Alias names cannot begin with ``alias/aws/``. That alias name prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n \n *Regions* \n KMS CloudFormation resources are available in all AWS-Regions in which KMS and CFN are supported. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html)", "allOf": [ { "type": "object", @@ -17893,7 +18142,7 @@ "AWS::KMS::Alias" ], "markdownEnumDescriptions": [ - "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys i \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html)" + "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys in different AWS-Regions. For more information, see [Using aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html) in the *Developer Guide*.\n When specifying an alias, observe the following rules.\n + Each alias is associated with one KMS key, but multiple aliases can be associated with the same KMS key.\n + The alias and its associated KMS key must be in the same AWS-account and Region.\n + The alias name must be unique in the AWS-account and Region. However, you can create aliases with the same name in different AWS-Regions. For example, you can have an ``alias/projectKey`` in multiple Regions, each of which is associated with a KMS key in its Region.\n + Each alias name must begin with ``alias/`` followed by a name, such as ``alias/exampleKey``. The alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Alias names cannot begin with ``alias/aws/``. That alias name prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n \n *Regions* \n KMS CloudFormation resources are available in all AWS-Regions in which KMS and CFN are supported. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html)" ] }, "Properties": { @@ -18221,6 +18470,37 @@ ], "additionalProperties": false }, + "AWS_QBusiness_DataSource": { + "type": "object", + "markdownDescription": "Definition of AWS::QBusiness::DataSource Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-datasource.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::QBusiness::DataSource" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::QBusiness::DataSource Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-datasource.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-qbusiness-datasource.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_ServiceCatalog_ResourceUpdateConstraint": { "type": "object", "markdownDescription": "Resource Type definition for AWS::ServiceCatalog::ResourceUpdateConstraint \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-resourceupdateconstraint.html)", @@ -23619,6 +23899,37 @@ ], "additionalProperties": false }, + "AWS_QBusiness_Plugin": { + "type": "object", + "markdownDescription": "Definition of AWS::QBusiness::Plugin Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-plugin.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::QBusiness::Plugin" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::QBusiness::Plugin Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-plugin.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-qbusiness-plugin.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_VpcLattice_AccessLogSubscription": { "type": "object", "markdownDescription": "Enables access logs to be sent to Amazon CloudWatch, Amazon S3, and Amazon Kinesis Data Firehose. The service network owner can use the access logs to audit the services in the network. The service network owner will only see access logs from clients and services that are associated with their service network. Access log entries represent traffic originated from VPCs associated with that network. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-vpclattice-accesslogsubscription.html)", @@ -24300,7 +24611,7 @@ }, "AWS_ApplicationAutoScaling_ScalableTarget": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::ApplicationAutoScaling::ScalableTarget \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html)", + "markdownDescription": "The ``AWS::ApplicationAutoScaling::ScalableTarget`` resource specifies a resource that Application Auto Scaling can scale, such as an AWS::DynamoDB::Table or AWS::ECS::Service resource.\n For more information, see [Getting started](https://docs.aws.amazon.com/autoscaling/application/userguide/getting-started.html) in the *Application Auto Scaling User Guide*.\n If the resource that you want Application Auto Scaling to scale is not yet created in your account, add a dependency on the resource when registering it as a scalable target using the [DependsOn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) attribute. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html)", "allOf": [ { "type": "object", @@ -24311,7 +24622,7 @@ "AWS::ApplicationAutoScaling::ScalableTarget" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::ApplicationAutoScaling::ScalableTarget \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html)" + "The ``AWS::ApplicationAutoScaling::ScalableTarget`` resource specifies a resource that Application Auto Scaling can scale, such as an AWS::DynamoDB::Table or AWS::ECS::Service resource.\n For more information, see [Getting started](https://docs.aws.amazon.com/autoscaling/application/userguide/getting-started.html) in the *Application Auto Scaling User Guide*.\n If the resource that you want Application Auto Scaling to scale is not yet created in your account, add a dependency on the resource when registering it as a scalable target using the [DependsOn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) attribute. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html)" ] }, "Properties": { @@ -30315,7 +30626,7 @@ }, "AWS_KMS_Key": { "type": "object", - "markdownDescription": "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions*\n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)", + "markdownDescription": "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions* \n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)", "allOf": [ { "type": "object", @@ -30326,7 +30637,7 @@ "AWS::KMS::Key" ], "markdownEnumDescriptions": [ - "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions*\n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)" + "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions* \n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)" ] }, "Properties": { @@ -30865,6 +31176,37 @@ ], "additionalProperties": false }, + "AWS_SSO_Application": { + "type": "object", + "markdownDescription": "Resource Type definition for Identity Center (SSO) Application \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-application.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::SSO::Application" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for Identity Center (SSO) Application \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-application.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-sso-application.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_NetworkManager_TransitGatewayRegistration": { "type": "object", "markdownDescription": "The AWS::NetworkManager::TransitGatewayRegistration type registers a transit gateway in your global network. The transit gateway can be in any AWS Region, but it must be owned by the same AWS account that owns the global network. You cannot register a transit gateway in more than one global network. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-transitgatewayregistration.html)", @@ -31887,6 +32229,37 @@ ], "additionalProperties": false }, + "AWS_GameLift_ContainerGroupDefinition": { + "type": "object", + "markdownDescription": "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-containergroupdefinition.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::GameLift::ContainerGroupDefinition" + ], + "markdownEnumDescriptions": [ + "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-containergroupdefinition.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-gamelift-containergroupdefinition.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_Lightsail_Alarm": { "type": "object", "markdownDescription": "Resource Type definition for AWS::Lightsail::Alarm \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lightsail-alarm.html)", @@ -32414,6 +32787,36 @@ ], "additionalProperties": false }, + "AWS_SSO_Instance": { + "type": "object", + "markdownDescription": "Resource Type definition for Identity Center (SSO) Instance \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instance.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::SSO::Instance" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for Identity Center (SSO) Instance \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instance.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-sso-instance.json" + } + }, + "required": [ + "Type" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_ElastiCache_SecurityGroupIngress": { "type": "object", "markdownDescription": "Resource Type definition for AWS::ElastiCache::SecurityGroupIngress \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-securitygroupingress.html)", @@ -34421,6 +34824,36 @@ ], "additionalProperties": false }, + "AWS_Neptune_EventSubscription": { + "type": "object", + "markdownDescription": "Resource Type definition for AWS::Neptune::EventSubscription \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-eventsubscription.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Neptune::EventSubscription" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for AWS::Neptune::EventSubscription \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-eventsubscription.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-neptune-eventsubscription.json" + } + }, + "required": [ + "Type" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_Transfer_User": { "type": "object", "markdownDescription": "Resource Type definition for AWS::Transfer::User \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html)", @@ -36609,7 +37042,7 @@ }, "AWS_EC2_KeyPair": { "type": "object", - "markdownDescription": "The AWS::EC2::KeyPair creates an SSH key pair \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html)", + "markdownDescription": "Specifies a key pair for use with an EC2long instance as follows:\n + To import an existing key pair, include the ``PublicKeyMaterial`` property.\n + To create a new key pair, omit the ``PublicKeyMaterial`` property.\n \n When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. CFNlong does not create or return the private key material when you import a key pair.\n When you create a new key pair, the private key is saved to SYSlong Parameter Store, using a parameter with the following name: ``/ec2/keypair/{key_pair_id}``. For more information about retrieving private key, and the required permissions, see [Create a key pair using](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *User Guide*.\n When CFN deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html)", "allOf": [ { "type": "object", @@ -36620,7 +37053,7 @@ "AWS::EC2::KeyPair" ], "markdownEnumDescriptions": [ - "The AWS::EC2::KeyPair creates an SSH key pair \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html)" + "Specifies a key pair for use with an EC2long instance as follows:\n + To import an existing key pair, include the ``PublicKeyMaterial`` property.\n + To create a new key pair, omit the ``PublicKeyMaterial`` property.\n \n When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. CFNlong does not create or return the private key material when you import a key pair.\n When you create a new key pair, the private key is saved to SYSlong Parameter Store, using a parameter with the following name: ``/ec2/keypair/{key_pair_id}``. For more information about retrieving private key, and the required permissions, see [Create a key pair using](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *User Guide*.\n When CFN deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html)" ] }, "Properties": { @@ -36917,7 +37350,7 @@ }, "AWS_EC2_TransitGatewayRouteTablePropagation": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::EC2::TransitGatewayRouteTablePropagation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetablepropagation.html)", + "markdownDescription": "AWS::EC2::TransitGatewayRouteTablePropagation Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetablepropagation.html)", "allOf": [ { "type": "object", @@ -36928,7 +37361,7 @@ "AWS::EC2::TransitGatewayRouteTablePropagation" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::EC2::TransitGatewayRouteTablePropagation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetablepropagation.html)" + "AWS::EC2::TransitGatewayRouteTablePropagation Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-transitgatewayroutetablepropagation.html)" ] }, "Properties": { @@ -38303,9 +38736,9 @@ ], "additionalProperties": false }, - "AWS_APS_Workspace": { + "AWS_QBusiness_Application": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::APS::Workspace \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-aps-workspace.html)", + "markdownDescription": "Definition of AWS::QBusiness::Application Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html)", "allOf": [ { "type": "object", @@ -38313,44 +38746,14 @@ "Type": { "type": "string", "enum": [ - "AWS::APS::Workspace" + "AWS::QBusiness::Application" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::APS::Workspace \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-aps-workspace.html)" + "Definition of AWS::QBusiness::Application Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html)" ] }, "Properties": { - "$ref": "resources/aws-aps-workspace.json" - } - }, - "required": [ - "Type" - ] - }, - { - "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" - } - ], - "additionalProperties": false - }, - "AWS_IoTSiteWise_Gateway": { - "type": "object", - "markdownDescription": "Resource schema for AWS::IoTSiteWise::Gateway \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-gateway.html)", - "allOf": [ - { - "type": "object", - "properties": { - "Type": { - "type": "string", - "enum": [ - "AWS::IoTSiteWise::Gateway" - ], - "markdownEnumDescriptions": [ - "Resource schema for AWS::IoTSiteWise::Gateway \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-gateway.html)" - ] - }, - "Properties": { - "$ref": "resources/aws-iotsitewise-gateway.json" + "$ref": "resources/aws-qbusiness-application.json" } }, "required": [ @@ -38364,9 +38767,9 @@ ], "additionalProperties": false }, - "AWS_Glue_Job": { + "AWS_APS_Workspace": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::Glue::Job \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html)", + "markdownDescription": "Resource Type definition for AWS::APS::Workspace \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-aps-workspace.html)", "allOf": [ { "type": "object", @@ -38374,19 +38777,18 @@ "Type": { "type": "string", "enum": [ - "AWS::Glue::Job" + "AWS::APS::Workspace" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::Glue::Job \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html)" + "Resource Type definition for AWS::APS::Workspace \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-aps-workspace.html)" ] }, "Properties": { - "$ref": "resources/aws-glue-job.json" + "$ref": "resources/aws-aps-workspace.json" } }, "required": [ - "Type", - "Properties" + "Type" ] }, { @@ -38395,9 +38797,9 @@ ], "additionalProperties": false }, - "AWS_DeviceFarm_DevicePool": { + "AWS_IoTSiteWise_Gateway": { "type": "object", - "markdownDescription": "AWS::DeviceFarm::DevicePool creates a new Device Pool for a given DF Project \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devicefarm-devicepool.html)", + "markdownDescription": "Resource schema for AWS::IoTSiteWise::Gateway \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-gateway.html)", "allOf": [ { "type": "object", @@ -38405,14 +38807,14 @@ "Type": { "type": "string", "enum": [ - "AWS::DeviceFarm::DevicePool" + "AWS::IoTSiteWise::Gateway" ], "markdownEnumDescriptions": [ - "AWS::DeviceFarm::DevicePool creates a new Device Pool for a given DF Project \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devicefarm-devicepool.html)" + "Resource schema for AWS::IoTSiteWise::Gateway \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotsitewise-gateway.html)" ] }, "Properties": { - "$ref": "resources/aws-devicefarm-devicepool.json" + "$ref": "resources/aws-iotsitewise-gateway.json" } }, "required": [ @@ -38426,9 +38828,9 @@ ], "additionalProperties": false }, - "AWS_Route53Profiles_Profile": { + "AWS_Glue_Job": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::Route53Profiles::Profile \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profile.html)", + "markdownDescription": "Resource Type definition for AWS::Glue::Job \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html)", "allOf": [ { "type": "object", @@ -38436,14 +38838,14 @@ "Type": { "type": "string", "enum": [ - "AWS::Route53Profiles::Profile" + "AWS::Glue::Job" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::Route53Profiles::Profile \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profile.html)" + "Resource Type definition for AWS::Glue::Job \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html)" ] }, "Properties": { - "$ref": "resources/aws-route53profiles-profile.json" + "$ref": "resources/aws-glue-job.json" } }, "required": [ @@ -38457,9 +38859,9 @@ ], "additionalProperties": false }, - "AWS_Route53Profiles_ProfileAssociation": { + "AWS_DeviceFarm_DevicePool": { "type": "object", - "markdownDescription": "Resource Type definition for AWS::Route53Profiles::ProfileAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileassociation.html)", + "markdownDescription": "AWS::DeviceFarm::DevicePool creates a new Device Pool for a given DF Project \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devicefarm-devicepool.html)", "allOf": [ { "type": "object", @@ -38467,14 +38869,14 @@ "Type": { "type": "string", "enum": [ - "AWS::Route53Profiles::ProfileAssociation" + "AWS::DeviceFarm::DevicePool" ], "markdownEnumDescriptions": [ - "Resource Type definition for AWS::Route53Profiles::ProfileAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileassociation.html)" + "AWS::DeviceFarm::DevicePool creates a new Device Pool for a given DF Project \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devicefarm-devicepool.html)" ] }, "Properties": { - "$ref": "resources/aws-route53profiles-profileassociation.json" + "$ref": "resources/aws-devicefarm-devicepool.json" } }, "required": [ @@ -38550,37 +38952,6 @@ ], "additionalProperties": false }, - "AWS_Route53Profiles_ProfileResourceAssociation": { - "type": "object", - "markdownDescription": "Resource Type definition for AWS::Route53Profiles::ProfileResourceAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileresourceassociation.html)", - "allOf": [ - { - "type": "object", - "properties": { - "Type": { - "type": "string", - "enum": [ - "AWS::Route53Profiles::ProfileResourceAssociation" - ], - "markdownEnumDescriptions": [ - "Resource Type definition for AWS::Route53Profiles::ProfileResourceAssociation \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53profiles-profileresourceassociation.html)" - ] - }, - "Properties": { - "$ref": "resources/aws-route53profiles-profileresourceassociation.json" - } - }, - "required": [ - "Type", - "Properties" - ] - }, - { - "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" - } - ], - "additionalProperties": false - }, "AWS_DeviceFarm_TestGridProject": { "type": "object", "markdownDescription": "AWS::DeviceFarm::TestGridProject creates a new TestGrid Project \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-devicefarm-testgridproject.html)", @@ -39043,6 +39414,9 @@ { "$ref": "#/definitions/AWS_DocDBElastic_Cluster" }, + { + "$ref": "#/definitions/AWS_QBusiness_Retriever" + }, { "$ref": "#/definitions/AWS_QuickSight_Analysis" }, @@ -39202,6 +39576,9 @@ { "$ref": "#/definitions/AWS_Bedrock_AgentAlias" }, + { + "$ref": "#/definitions/AWS_QBusiness_WebExperience" + }, { "$ref": "#/definitions/AWS_IoTWireless_FuotaTask" }, @@ -39250,6 +39627,9 @@ { "$ref": "#/definitions/AWS_AppConfig_DeploymentStrategy" }, + { + "$ref": "#/definitions/AWS_Route53Profiles_Profile" + }, { "$ref": "#/definitions/AWS_EC2_VPCCidrBlock" }, @@ -39325,6 +39705,9 @@ { "$ref": "#/definitions/AWS_Athena_WorkGroup" }, + { + "$ref": "#/definitions/AWS_Bedrock_GuardrailVersion" + }, { "$ref": "#/definitions/AWS_ResourceGroups_Group" }, @@ -39346,6 +39729,9 @@ { "$ref": "#/definitions/AWS_CodeBuild_Fleet" }, + { + "$ref": "#/definitions/AWS_Route53Profiles_ProfileAssociation" + }, { "$ref": "#/definitions/AWS_NetworkFirewall_RuleGroup" }, @@ -39580,6 +39966,9 @@ { "$ref": "#/definitions/AWS_RoboMaker_RobotApplicationVersion" }, + { + "$ref": "#/definitions/AWS_QBusiness_Index" + }, { "$ref": "#/definitions/AWS_ServiceCatalog_ServiceAction" }, @@ -39868,6 +40257,9 @@ { "$ref": "#/definitions/AWS_AppStream_Application" }, + { + "$ref": "#/definitions/AWS_SSO_ApplicationAssignment" + }, { "$ref": "#/definitions/AWS_SES_Template" }, @@ -40261,6 +40653,9 @@ { "$ref": "#/definitions/AWS_RDS_DBInstance" }, + { + "$ref": "#/definitions/AWS_Route53Profiles_ProfileResourceAssociation" + }, { "$ref": "#/definitions/AWS_ElastiCache_CacheCluster" }, @@ -40456,6 +40851,9 @@ { "$ref": "#/definitions/AWS_Greengrass_FunctionDefinitionVersion" }, + { + "$ref": "#/definitions/AWS_QBusiness_DataSource" + }, { "$ref": "#/definitions/AWS_ServiceCatalog_ResourceUpdateConstraint" }, @@ -40981,6 +41379,9 @@ { "$ref": "#/definitions/AWS_SSM_ResourceDataSync" }, + { + "$ref": "#/definitions/AWS_QBusiness_Plugin" + }, { "$ref": "#/definitions/AWS_VpcLattice_AccessLogSubscription" }, @@ -41686,6 +42087,9 @@ { "$ref": "#/definitions/AWS_ApiGatewayV2_Stage" }, + { + "$ref": "#/definitions/AWS_SSO_Application" + }, { "$ref": "#/definitions/AWS_NetworkManager_TransitGatewayRegistration" }, @@ -41785,6 +42189,9 @@ { "$ref": "#/definitions/AWS_CodeBuild_SourceCredential" }, + { + "$ref": "#/definitions/AWS_GameLift_ContainerGroupDefinition" + }, { "$ref": "#/definitions/AWS_Lightsail_Alarm" }, @@ -41836,6 +42243,9 @@ { "$ref": "#/definitions/AWS_ServiceCatalog_StackSetConstraint" }, + { + "$ref": "#/definitions/AWS_SSO_Instance" + }, { "$ref": "#/definitions/AWS_ElastiCache_SecurityGroupIngress" }, @@ -42031,6 +42441,9 @@ { "$ref": "#/definitions/AWS_AppFlow_Connector" }, + { + "$ref": "#/definitions/AWS_Neptune_EventSubscription" + }, { "$ref": "#/definitions/AWS_Transfer_User" }, @@ -42409,6 +42822,9 @@ { "$ref": "#/definitions/AWS_M2_Environment" }, + { + "$ref": "#/definitions/AWS_QBusiness_Application" + }, { "$ref": "#/definitions/AWS_APS_Workspace" }, @@ -42421,21 +42837,12 @@ { "$ref": "#/definitions/AWS_DeviceFarm_DevicePool" }, - { - "$ref": "#/definitions/AWS_Route53Profiles_Profile" - }, - { - "$ref": "#/definitions/AWS_Route53Profiles_ProfileAssociation" - }, { "$ref": "#/definitions/AWS_DeviceFarm_InstanceProfile" }, { "$ref": "#/definitions/AWS_DeviceFarm_Project" }, - { - "$ref": "#/definitions/AWS_Route53Profiles_ProfileResourceAssociation" - }, { "$ref": "#/definitions/AWS_DeviceFarm_TestGridProject" }, diff --git a/server/schema/resources/aws-acmpca-certificate.json b/server/schema/resources/aws-acmpca-certificate.json index e6f93ce1..382c8e29 100644 --- a/server/schema/resources/aws-acmpca-certificate.json +++ b/server/schema/resources/aws-acmpca-certificate.json @@ -552,6 +552,12 @@ } }, "additionalProperties": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "required": [ "CertificateAuthorityArn", "CertificateSigningRequest", @@ -573,7 +579,11 @@ ], "writeOnlyProperties": [ "/properties/ApiPassthrough", - "/properties/CertificateSigningRequest" + "/properties/CertificateSigningRequest", + "/properties/SigningAlgorithm", + "/properties/TemplateArn", + "/properties/Validity", + "/properties/ValidityNotBefore" ], "primaryIdentifier": [ "/properties/Arn", diff --git a/server/schema/resources/aws-acmpca-certificateauthority.json b/server/schema/resources/aws-acmpca-certificateauthority.json index 81df4a3b..2326b3d6 100644 --- a/server/schema/resources/aws-acmpca-certificateauthority.json +++ b/server/schema/resources/aws-acmpca-certificateauthority.json @@ -13,13 +13,16 @@ "properties": { "Key": { "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" }, "Value": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, + "required": [ + "Key" + ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Subject": { @@ -138,7 +141,7 @@ "properties": { "Enabled": { "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" }, "ExpirationInDays": { "type": "integer", @@ -160,6 +163,9 @@ "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" } }, + "required": [ + "Enabled" + ], "markdownDescription": "Your certificate authority can create and maintain a certificate revocation list (CRL). A CRL contains information about certificates that have been revoked.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "OcspConfiguration": { @@ -169,13 +175,16 @@ "properties": { "Enabled": { "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" }, "OcspCustomCname": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, + "required": [ + "Enabled" + ], "markdownDescription": "Helps to configure online certificate status protocol (OCSP) responder for your certificate authority\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "RevocationConfiguration": { @@ -309,12 +318,11 @@ }, "NameAssigner": { "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" } }, "required": [ - "PartyName", - "NameAssigner" + "PartyName" ], "markdownDescription": "Structure that contains X.509 EdiPartyName information.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, diff --git a/server/schema/resources/aws-acmpca-certificateauthorityactivation.json b/server/schema/resources/aws-acmpca-certificateauthorityactivation.json index 553cc221..8dd91e0a 100644 --- a/server/schema/resources/aws-acmpca-certificateauthorityactivation.json +++ b/server/schema/resources/aws-acmpca-certificateauthorityactivation.json @@ -24,6 +24,12 @@ "markdownDescription": "The status of the Certificate Authority.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "additionalProperties": false, "required": [ "CertificateAuthorityArn", diff --git a/server/schema/resources/aws-acmpca-permission.json b/server/schema/resources/aws-acmpca-permission.json index 7239dab8..50ef8560 100644 --- a/server/schema/resources/aws-acmpca-permission.json +++ b/server/schema/resources/aws-acmpca-permission.json @@ -30,7 +30,12 @@ } }, "additionalProperties": false, - "taggable": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "required": [ "Actions", "CertificateAuthorityArn", diff --git a/server/schema/resources/aws-apigateway-account.json b/server/schema/resources/aws-apigateway-account.json index c84cc447..2c6010f7 100644 --- a/server/schema/resources/aws-apigateway-account.json +++ b/server/schema/resources/aws-apigateway-account.json @@ -1,22 +1,11 @@ { - "typeName": "AWS::ApiGateway::Account", - "description": "The ``AWS::ApiGateway::Account`` resource specifies the IAM role that Amazon API Gateway uses to write API logs to Amazon CloudWatch Logs. To avoid overwriting other roles, you should only have one ``AWS::ApiGateway::Account`` resource per region per account.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "additionalProperties": false, - "properties": { - "CloudWatchRoleArn": { - "description": "The ARN of an Amazon CloudWatch role for the current Account.", - "type": "string", - "markdownDescription": "The ARN of an Amazon CloudWatch role for the current Account.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "readOnlyProperties": [ - "/properties/Id" - ], "handlers": { + "read": { + "permissions": [ + "apigateway:GET" + ] + }, "create": { "permissions": [ "apigateway:PATCH", @@ -24,11 +13,6 @@ "iam:PassRole" ] }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, "update": { "permissions": [ "apigateway:PATCH", @@ -40,6 +24,22 @@ "permissions": [] } }, + "typeName": "AWS::ApiGateway::Account", + "readOnlyProperties": [ + "/properties/Id" + ], + "description": "The ``AWS::ApiGateway::Account`` resource specifies the IAM role that Amazon API Gateway uses to write API logs to Amazon CloudWatch Logs. To avoid overwriting other roles, you should only have one ``AWS::ApiGateway::Account`` resource per region per account.", + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CloudWatchRoleArn": { + "description": "The ARN of an Amazon CloudWatch role for the current Account.", + "type": "string", + "markdownDescription": "The ARN of an Amazon CloudWatch role for the current Account.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, "attributes": { "Id": { "description": "", diff --git a/server/schema/resources/aws-apigateway-deployment.json b/server/schema/resources/aws-apigateway-deployment.json index e69525d7..96c89af0 100644 --- a/server/schema/resources/aws-apigateway-deployment.json +++ b/server/schema/resources/aws-apigateway-deployment.json @@ -1,383 +1,383 @@ { + "taggable": true, "typeName": "AWS::ApiGateway::Deployment", + "readOnlyProperties": [ + "/properties/DeploymentId" + ], "description": "The ``AWS::ApiGateway::Deployment`` resource deploys an API Gateway ``RestApi`` resource to a stage so that clients can call the API over the internet. The stage acts as an environment.", + "createOnlyProperties": [ + "/properties/DeploymentCanarySettings", + "/properties/RestApiId" + ], + "primaryIdentifier": [ + "/properties/DeploymentId", + "/properties/RestApiId" + ], + "required": [ + "RestApiId" + ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "additionalProperties": false, - "properties": { - "DeploymentCanarySettings": { - "$ref": "#/definitions/DeploymentCanarySettings", - "description": "The input configuration for a canary deployment.", - "markdownDescription": "The input configuration for a canary deployment.\n\n---\n\nRequired: No \nType: \nUpdate requires: Replacement" + "handlers": { + "read": { + "permissions": [ + "apigateway:GET" + ] }, - "Description": { - "type": "string", - "description": "The description for the Deployment resource to create.", - "markdownDescription": "The description for the Deployment resource to create.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "create": { + "permissions": [ + "apigateway:POST", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:GET" + ] }, - "RestApiId": { - "type": "string", - "description": "The string identifier of the associated RestApi.", - "markdownDescription": "The string identifier of the associated RestApi.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "update": { + "permissions": [ + "apigateway:PATCH", + "apigateway:GET", + "apigateway:PUT", + "apigateway:DELETE" + ] }, - "StageDescription": { - "$ref": "#/definitions/StageDescription", - "description": "The description of the Stage resource for the Deployment resource to create. To specify a stage description, you must also provide a stage name.", - "markdownDescription": "The description of the Stage resource for the Deployment resource to create. To specify a stage description, you must also provide a stage name.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "list": { + "permissions": [ + "apigateway:GET" + ], + "handlerSchema": { + "properties": { + "RestApiId": { + "$ref": "resource-schema.json#/properties/RestApiId" + } + }, + "required": [ + "RestApiId" + ] + } }, - "StageName": { - "type": "string", - "description": "The name of the Stage resource for the Deployment resource to create.", - "markdownDescription": "The name of the Stage resource for the Deployment resource to create.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "delete": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE" + ] } }, + "writeOnlyProperties": [ + "/properties/StageName", + "/properties/StageDescription", + "/properties/DeploymentCanarySettings" + ], + "additionalProperties": false, "definitions": { - "StageDescription": { - "type": "object", + "MethodSetting": { + "description": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the [Amazon API Gateway Deployment StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type contains a list of ``MethodSetting`` property types.", "additionalProperties": false, + "type": "object", "properties": { - "AccessLogSetting": { - "description": "Specifies settings for logging access in this stage.", - "$ref": "#/definitions/AccessLogSetting", - "markdownDescription": "Specifies settings for logging access in this stage.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "CacheTtlInSeconds": { + "description": "Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.", + "type": "integer", + "markdownDescription": "Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "CacheClusterEnabled": { - "description": "Specifies whether a cache cluster is enabled for the stage.", - "type": "boolean", - "markdownDescription": "Specifies whether a cache cluster is enabled for the stage.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "LoggingLevel": { + "description": "Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. Valid values are ``OFF``, ``ERROR``, and ``INFO``. Choose ``ERROR`` to write only error-level entries to CloudWatch Logs, or choose ``INFO`` to include all ``ERROR`` events as well as extra informational events.", + "type": "string", + "markdownDescription": "Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. Valid values are ``OFF``, ``ERROR``, and ``INFO``. Choose ``ERROR`` to write only error-level entries to CloudWatch Logs, or choose ``INFO`` to include all ``ERROR`` events as well as extra informational events.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "CacheClusterSize": { - "description": "The size of the stage's cache cluster. For more information, see [cacheClusterSize](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateStage.html#apigw-CreateStage-request-cacheClusterSize) in the *API Gateway API Reference*.", + "ResourcePath": { + "description": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``).", "type": "string", - "markdownDescription": "The size of the stage's cache cluster. For more information, see [cacheClusterSize](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateStage.html#apigw-CreateStage-request-cacheClusterSize) in the *API Gateway API Reference*.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``).\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "CacheDataEncrypted": { - "description": "Indicates whether the cached responses are encrypted.", + "description": "Specifies whether the cached responses are encrypted.", "type": "boolean", - "markdownDescription": "Indicates whether the cached responses are encrypted.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "Specifies whether the cached responses are encrypted.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "DataTraceEnabled": { + "description": "Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. This can be useful to troubleshoot APIs, but can result in logging sensitive data. We recommend that you don't enable this option for production APIs.", + "type": "boolean", + "markdownDescription": "Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. This can be useful to troubleshoot APIs, but can result in logging sensitive data. We recommend that you don't enable this option for production APIs.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "ThrottlingBurstLimit": { + "description": "Specifies the throttling burst limit.", + "type": "integer", + "markdownDescription": "Specifies the throttling burst limit.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "CachingEnabled": { + "description": "Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.", + "type": "boolean", + "markdownDescription": "Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "MetricsEnabled": { + "description": "Specifies whether Amazon CloudWatch metrics are enabled for this method.", + "type": "boolean", + "markdownDescription": "Specifies whether Amazon CloudWatch metrics are enabled for this method.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "HttpMethod": { + "description": "The HTTP method.", + "type": "string", + "markdownDescription": "The HTTP method.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "ThrottlingRateLimit": { + "description": "Specifies the throttling rate limit.", + "type": "number", + "markdownDescription": "Specifies the throttling rate limit.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the [Amazon API Gateway Deployment StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type contains a list of ``MethodSetting`` property types.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "StageDescription": { + "description": "``StageDescription`` is a property of the [AWS::ApiGateway::Deployment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html) resource that configures a deployment stage.", + "additionalProperties": false, + "type": "object", + "properties": { "CacheTtlInSeconds": { "description": "The time-to-live (TTL) period, in seconds, that specifies how long API Gateway caches responses.", "type": "integer", "markdownDescription": "The time-to-live (TTL) period, in seconds, that specifies how long API Gateway caches responses.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "CachingEnabled": { - "description": "Indicates whether responses are cached and returned for requests. You must enable a cache cluster on the stage to cache responses. For more information, see [Enable API Gateway Caching in a Stage to Enhance API Performance](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html) in the *API Gateway Developer Guide*.", - "type": "boolean", - "markdownDescription": "Indicates whether responses are cached and returned for requests. You must enable a cache cluster on the stage to cache responses. For more information, see [Enable API Gateway Caching in a Stage to Enhance API Performance](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "Description": { + "description": "A description of the purpose of the stage.", + "type": "string", + "markdownDescription": "A description of the purpose of the stage.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "LoggingLevel": { + "description": "The logging level for this method. For valid values, see the ``loggingLevel`` property of the [MethodSetting](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodSetting.html) resource in the *Amazon API Gateway API Reference*.", + "type": "string", + "markdownDescription": "The logging level for this method. For valid values, see the ``loggingLevel`` property of the [MethodSetting](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodSetting.html) resource in the *Amazon API Gateway API Reference*.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "CanarySetting": { "description": "Specifies settings for the canary deployment in this stage.", "$ref": "#/definitions/CanarySetting", "markdownDescription": "Specifies settings for the canary deployment in this stage.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, + "ThrottlingRateLimit": { + "description": "The target request steady-state rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", + "type": "number", + "markdownDescription": "The target request steady-state rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, "ClientCertificateId": { "description": "The identifier of the client certificate that API Gateway uses to call your integration endpoints in the stage.", "type": "string", "markdownDescription": "The identifier of the client certificate that API Gateway uses to call your integration endpoints in the stage.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "Variables": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "description": "A map that defines the stage variables. Variable names must consist of alphanumeric characters, and the values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.", + "additionalProperties": false, + "type": "object", + "markdownDescription": "A map that defines the stage variables. Variable names must consist of alphanumeric characters, and the values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DocumentationVersion": { + "description": "The version identifier of the API documentation snapshot.", + "type": "string", + "markdownDescription": "The version identifier of the API documentation snapshot.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "CacheDataEncrypted": { + "description": "Indicates whether the cached responses are encrypted.", + "type": "boolean", + "markdownDescription": "Indicates whether the cached responses are encrypted.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, "DataTraceEnabled": { "description": "Indicates whether data trace logging is enabled for methods in the stage. API Gateway pushes these logs to Amazon CloudWatch Logs.", "type": "boolean", "markdownDescription": "Indicates whether data trace logging is enabled for methods in the stage. API Gateway pushes these logs to Amazon CloudWatch Logs.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "Description": { - "description": "A description of the purpose of the stage.", - "type": "string", - "markdownDescription": "A description of the purpose of the stage.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "ThrottlingBurstLimit": { + "description": "The target request burst rate limit. This allows more requests through for a period of time than the target rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", + "type": "integer", + "markdownDescription": "The target request burst rate limit. This allows more requests through for a period of time than the target rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "DocumentationVersion": { - "description": "The version identifier of the API documentation snapshot.", - "type": "string", - "markdownDescription": "The version identifier of the API documentation snapshot.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "CachingEnabled": { + "description": "Indicates whether responses are cached and returned for requests. You must enable a cache cluster on the stage to cache responses. For more information, see [Enable API Gateway Caching in a Stage to Enhance API Performance](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html) in the *API Gateway Developer Guide*.", + "type": "boolean", + "markdownDescription": "Indicates whether responses are cached and returned for requests. You must enable a cache cluster on the stage to cache responses. For more information, see [Enable API Gateway Caching in a Stage to Enhance API Performance](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "LoggingLevel": { - "description": "The logging level for this method. For valid values, see the ``loggingLevel`` property of the [MethodSetting](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodSetting.html) resource in the *Amazon API Gateway API Reference*.", - "type": "string", - "markdownDescription": "The logging level for this method. For valid values, see the ``loggingLevel`` property of the [MethodSetting](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodSetting.html) resource in the *Amazon API Gateway API Reference*.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "TracingEnabled": { + "description": "Specifies whether active tracing with X-ray is enabled for this stage.\n For more information, see [Trace API Gateway API Execution with X-Ray](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-xray.html) in the *API Gateway Developer Guide*.", + "type": "boolean", + "markdownDescription": "Specifies whether active tracing with X-ray is enabled for this stage.\n For more information, see [Trace API Gateway API Execution with X-Ray](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-xray.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "MethodSettings": { - "description": "Configures settings for all of the stage's methods.", - "type": "array", "uniqueItems": true, + "description": "Configures settings for all of the stage's methods.", "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/MethodSetting" }, "markdownDescription": "Configures settings for all of the stage's methods.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, + "AccessLogSetting": { + "description": "Specifies settings for logging access in this stage.", + "$ref": "#/definitions/AccessLogSetting", + "markdownDescription": "Specifies settings for logging access in this stage.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "CacheClusterSize": { + "description": "The size of the stage's cache cluster. For more information, see [cacheClusterSize](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateStage.html#apigw-CreateStage-request-cacheClusterSize) in the *API Gateway API Reference*.", + "type": "string", + "markdownDescription": "The size of the stage's cache cluster. For more information, see [cacheClusterSize](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateStage.html#apigw-CreateStage-request-cacheClusterSize) in the *API Gateway API Reference*.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "MetricsEnabled": { "description": "Indicates whether Amazon CloudWatch metrics are enabled for methods in the stage.", "type": "boolean", "markdownDescription": "Indicates whether Amazon CloudWatch metrics are enabled for methods in the stage.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "Tags": { - "description": "An array of arbitrary tags (key-value pairs) to associate with the stage.", - "type": "array", "uniqueItems": false, + "description": "An array of arbitrary tags (key-value pairs) to associate with the stage.", "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/Tag" }, "markdownDescription": "An array of arbitrary tags (key-value pairs) to associate with the stage.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "ThrottlingBurstLimit": { - "description": "The target request burst rate limit. This allows more requests through for a period of time than the target rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", - "type": "integer", - "markdownDescription": "The target request burst rate limit. This allows more requests through for a period of time than the target rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "ThrottlingRateLimit": { - "description": "The target request steady-state rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.", - "type": "number", - "markdownDescription": "The target request steady-state rate limit. For more information, see [Manage API Request Throttling](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" - }, - "TracingEnabled": { - "description": "Specifies whether active tracing with X-ray is enabled for this stage.\n For more information, see [Trace API Gateway API Execution with X-Ray](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-xray.html) in the *API Gateway Developer Guide*.", + "CacheClusterEnabled": { + "description": "Specifies whether a cache cluster is enabled for the stage.", "type": "boolean", - "markdownDescription": "Specifies whether active tracing with X-ray is enabled for this stage.\n For more information, see [Trace API Gateway API Execution with X-Ray](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-xray.html) in the *API Gateway Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "Variables": { - "description": "A map that defines the stage variables. Variable names must consist of alphanumeric characters, and the values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.", - "type": "object", - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "markdownDescription": "A map that defines the stage variables. Variable names must consist of alphanumeric characters, and the values must match the following regular expression: ``[A-Za-z0-9-._~:/?#&=,]+``.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "Specifies whether a cache cluster is enabled for the stage.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, - "description": "``StageDescription`` is a property of the [AWS::ApiGateway::Deployment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html) resource that configures a deployment stage.", "markdownDescription": "``StageDescription`` is a property of the [AWS::ApiGateway::Deployment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-deployment.html) resource that configures a deployment stage.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "DeploymentCanarySettings": { - "type": "object", + "CanarySetting": { + "description": "The ``CanarySetting`` property type specifies settings for the canary deployment in this stage.\n ``CanarySetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", "additionalProperties": false, + "type": "object", "properties": { - "PercentTraffic": { - "description": "The percentage (0.0-100.0) of traffic routed to the canary deployment.", - "type": "number", - "markdownDescription": "The percentage (0.0-100.0) of traffic routed to the canary deployment.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" - }, "StageVariableOverrides": { - "description": "A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.", - "type": "object", - "additionalProperties": false, "patternProperties": { "[a-zA-Z0-9]+": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "markdownDescription": "A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "UseStageCache": { - "description": "A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.", - "type": "boolean", - "markdownDescription": "A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - } - }, - "description": "The ``DeploymentCanarySettings`` property type specifies settings for the canary deployment.", - "markdownDescription": "The ``DeploymentCanarySettings`` property type specifies settings for the canary deployment.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "AccessLogSetting": { - "type": "object", - "additionalProperties": false, - "properties": { - "DestinationArn": { - "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``.", - "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "description": "Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.", + "additionalProperties": false, + "type": "object", + "markdownDescription": "Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Format": { - "description": "A single line format of the access logs of data, as specified by selected $context variables. The format must include at least ``$context.requestId``.", - "type": "string", - "markdownDescription": "A single line format of the access logs of data, as specified by selected $context variables. The format must include at least ``$context.requestId``.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "description": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", - "markdownDescription": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "CanarySetting": { - "type": "object", - "additionalProperties": false, - "properties": { "PercentTraffic": { "description": "The percent (0-100) of traffic diverted to a canary deployment.", "type": "number", "markdownDescription": "The percent (0-100) of traffic diverted to a canary deployment.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" }, - "StageVariableOverrides": { - "description": "Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.", - "type": "object", - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "markdownDescription": "Stage variables overridden for a canary release deployment, including new stage variables introduced in the canary. These stage variables are represented as a string-to-string map between stage variable names and their values.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, "UseStageCache": { "description": "A Boolean flag to indicate whether the canary deployment uses the stage cache or not.", "type": "boolean", "markdownDescription": "A Boolean flag to indicate whether the canary deployment uses the stage cache or not.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, - "description": "The ``CanarySetting`` property type specifies settings for the canary deployment in this stage.\n ``CanarySetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", "markdownDescription": "The ``CanarySetting`` property type specifies settings for the canary deployment in this stage.\n ``CanarySetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Tag": { - "type": "object", + "description": "", "additionalProperties": false, + "type": "object", "properties": { - "Key": { - "description": "The key name of the tag", - "type": "string", - "markdownDescription": "The key name of the tag\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" - }, "Value": { "description": "The value for the tag", "type": "string", "markdownDescription": "The value for the tag\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Key": { + "description": "The key name of the tag", + "type": "string", + "markdownDescription": "The key name of the tag\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ "Value", "Key" ], - "description": "", "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "MethodSetting": { - "type": "object", + "DeploymentCanarySettings": { + "description": "The ``DeploymentCanarySettings`` property type specifies settings for the canary deployment.", "additionalProperties": false, + "type": "object", "properties": { - "CacheDataEncrypted": { - "description": "Specifies whether the cached responses are encrypted.", - "type": "boolean", - "markdownDescription": "Specifies whether the cached responses are encrypted.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "CacheTtlInSeconds": { - "description": "Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.", - "type": "integer", - "markdownDescription": "Specifies the time to live (TTL), in seconds, for cached responses. The higher the TTL, the longer the response will be cached.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "StageVariableOverrides": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "description": "A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.", + "additionalProperties": false, + "type": "object", + "markdownDescription": "A stage variable overrides used for the canary release deployment. They can override existing stage variables or add new stage variables for the canary release deployment. These stage variables are represented as a string-to-string map between stage variable names and their values.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "CachingEnabled": { - "description": "Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.", - "type": "boolean", - "markdownDescription": "Specifies whether responses should be cached and returned for requests. A cache cluster must be enabled on the stage for responses to be cached.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "PercentTraffic": { + "description": "The percentage (0.0-100.0) of traffic routed to the canary deployment.", + "type": "number", + "markdownDescription": "The percentage (0.0-100.0) of traffic routed to the canary deployment.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" }, - "DataTraceEnabled": { - "description": "Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. This can be useful to troubleshoot APIs, but can result in logging sensitive data. We recommend that you don't enable this option for production APIs.", + "UseStageCache": { + "description": "A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.", "type": "boolean", - "markdownDescription": "Specifies whether data trace logging is enabled for this method, which affects the log entries pushed to Amazon CloudWatch Logs. This can be useful to troubleshoot APIs, but can result in logging sensitive data. We recommend that you don't enable this option for production APIs.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "HttpMethod": { - "description": "The HTTP method.", - "type": "string", - "markdownDescription": "The HTTP method.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "LoggingLevel": { - "description": "Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. Valid values are ``OFF``, ``ERROR``, and ``INFO``. Choose ``ERROR`` to write only error-level entries to CloudWatch Logs, or choose ``INFO`` to include all ``ERROR`` events as well as extra informational events.", + "markdownDescription": "A Boolean flag to indicate whether the canary release deployment uses the stage cache or not.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The ``DeploymentCanarySettings`` property type specifies settings for the canary deployment.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "AccessLogSetting": { + "description": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.", + "additionalProperties": false, + "type": "object", + "properties": { + "Format": { + "description": "A single line format of the access logs of data, as specified by selected $context variables. The format must include at least ``$context.requestId``.", "type": "string", - "markdownDescription": "Specifies the logging level for this method, which affects the log entries pushed to Amazon CloudWatch Logs. Valid values are ``OFF``, ``ERROR``, and ``INFO``. Choose ``ERROR`` to write only error-level entries to CloudWatch Logs, or choose ``INFO`` to include all ``ERROR`` events as well as extra informational events.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "MetricsEnabled": { - "description": "Specifies whether Amazon CloudWatch metrics are enabled for this method.", - "type": "boolean", - "markdownDescription": "Specifies whether Amazon CloudWatch metrics are enabled for this method.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "A single line format of the access logs of data, as specified by selected $context variables. The format must include at least ``$context.requestId``.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "ResourcePath": { - "description": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``).", + "DestinationArn": { + "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``.", "type": "string", - "markdownDescription": "The resource path for this method. Forward slashes (``/``) are encoded as ``~1`` and the initial slash must include a forward slash. For example, the path value ``/resource/subresource`` must be encoded as ``/~1resource~1subresource``. To specify the root path, use only a slash (``/``).\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "ThrottlingBurstLimit": { - "description": "Specifies the throttling burst limit.", - "type": "integer", - "markdownDescription": "Specifies the throttling burst limit.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "ThrottlingRateLimit": { - "description": "Specifies the throttling rate limit.", - "type": "number", - "markdownDescription": "Specifies the throttling rate limit.\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + "markdownDescription": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data Firehose delivery stream to receive access logs. If you specify a Kinesis Data Firehose delivery stream, the stream name must begin with ``amazon-apigateway-``.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "description": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the [Amazon API Gateway Deployment StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type contains a list of ``MethodSetting`` property types.", - "markdownDescription": "The ``MethodSetting`` property type configures settings for all methods in a stage.\n The ``MethodSettings`` property of the [Amazon API Gateway Deployment StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type contains a list of ``MethodSetting`` property types.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "The ``AccessLogSetting`` property type specifies settings for logging access in this stage.\n ``AccessLogSetting`` is a property of the [StageDescription](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html) property type.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, - "taggable": true, - "required": [ - "RestApiId" - ], - "createOnlyProperties": [ - "/properties/DeploymentCanarySettings", - "/properties/RestApiId" - ], - "primaryIdentifier": [ - "/properties/DeploymentId", - "/properties/RestApiId" - ], - "readOnlyProperties": [ - "/properties/DeploymentId" - ], - "writeOnlyProperties": [ - "/properties/StageName", - "/properties/StageDescription", - "/properties/DeploymentCanarySettings" - ], - "handlers": { - "create": { - "permissions": [ - "apigateway:POST", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:GET" - ] + "properties": { + "Description": { + "description": "The description for the Deployment resource to create.", + "type": "string", + "markdownDescription": "The description for the Deployment resource to create.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "read": { - "permissions": [ - "apigateway:GET" - ] + "StageDescription": { + "description": "The description of the Stage resource for the Deployment resource to create. To specify a stage description, you must also provide a stage name.", + "$ref": "#/definitions/StageDescription", + "markdownDescription": "The description of the Stage resource for the Deployment resource to create. To specify a stage description, you must also provide a stage name.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "update": { - "permissions": [ - "apigateway:PATCH", - "apigateway:GET", - "apigateway:PUT", - "apigateway:DELETE" - ] + "StageName": { + "description": "The name of the Stage resource for the Deployment resource to create.", + "type": "string", + "markdownDescription": "The name of the Stage resource for the Deployment resource to create.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "delete": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE" - ] + "RestApiId": { + "description": "The string identifier of the associated RestApi.", + "type": "string", + "markdownDescription": "The string identifier of the associated RestApi.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, - "list": { - "handlerSchema": { - "properties": { - "RestApiId": { - "$ref": "resource-schema.json#/properties/RestApiId" - } - }, - "required": [ - "RestApiId" - ] - }, - "permissions": [ - "apigateway:GET" - ] + "DeploymentCanarySettings": { + "description": "The input configuration for a canary deployment.", + "$ref": "#/definitions/DeploymentCanarySettings", + "markdownDescription": "The input configuration for a canary deployment.\n\n---\n\nRequired: No \nType: \nUpdate requires: Replacement" } }, "attributes": { "DeploymentId": { - "type": "string", "description": "", + "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } diff --git a/server/schema/resources/aws-apigateway-resource.json b/server/schema/resources/aws-apigateway-resource.json index 5fb03838..0792fa33 100644 --- a/server/schema/resources/aws-apigateway-resource.json +++ b/server/schema/resources/aws-apigateway-resource.json @@ -1,43 +1,5 @@ { - "typeName": "AWS::ApiGateway::Resource", - "description": "The ``AWS::ApiGateway::Resource`` resource creates a resource in an API.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-apigateway", - "additionalProperties": false, - "properties": { - "RestApiId": { - "description": "The string identifier of the associated RestApi.", - "type": "string", - "markdownDescription": "The string identifier of the associated RestApi.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "ParentId": { - "description": "The parent resource's identifier.", - "type": "string", - "markdownDescription": "The parent resource's identifier.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "PathPart": { - "description": "The last path segment for this resource.", - "type": "string", - "markdownDescription": "The last path segment for this resource.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - } - }, - "taggable": false, - "required": [ - "ParentId", - "PathPart", - "RestApiId" - ], - "createOnlyProperties": [ - "/properties/PathPart", - "/properties/ParentId", - "/properties/RestApiId" - ], - "primaryIdentifier": [ - "/properties/RestApiId", - "/properties/ResourceId" - ], - "readOnlyProperties": [ - "/properties/ResourceId" - ], "handlers": { "read": { "permissions": [ @@ -55,12 +17,10 @@ "apigateway:PATCH" ] }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, "list": { + "permissions": [ + "apigateway:GET" + ], "handlerSchema": { "properties": { "RestApiId": { @@ -70,12 +30,52 @@ "required": [ "RestApiId" ] - }, + } + }, + "delete": { "permissions": [ - "apigateway:GET" + "apigateway:DELETE" ] } }, + "taggable": false, + "typeName": "AWS::ApiGateway::Resource", + "readOnlyProperties": [ + "/properties/ResourceId" + ], + "description": "The ``AWS::ApiGateway::Resource`` resource creates a resource in an API.", + "createOnlyProperties": [ + "/properties/PathPart", + "/properties/ParentId", + "/properties/RestApiId" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/RestApiId", + "/properties/ResourceId" + ], + "properties": { + "ParentId": { + "description": "The parent resource's identifier.", + "type": "string", + "markdownDescription": "The parent resource's identifier.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + }, + "PathPart": { + "description": "The last path segment for this resource.", + "type": "string", + "markdownDescription": "The last path segment for this resource.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + }, + "RestApiId": { + "description": "The string identifier of the associated RestApi.", + "type": "string", + "markdownDescription": "The string identifier of the associated RestApi.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + } + }, + "required": [ + "ParentId", + "PathPart", + "RestApiId" + ], "attributes": { "ResourceId": { "description": "", diff --git a/server/schema/resources/aws-apigateway-restapi.json b/server/schema/resources/aws-apigateway-restapi.json index 60551dd4..74e451c5 100644 --- a/server/schema/resources/aws-apigateway-restapi.json +++ b/server/schema/resources/aws-apigateway-restapi.json @@ -1,46 +1,112 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": true + }, + "handlers": { + "read": { + "permissions": [ + "apigateway:GET" + ] + }, + "create": { + "permissions": [ + "apigateway:GET", + "apigateway:POST", + "apigateway:PUT", + "apigateway:PATCH", + "apigateway:UpdateRestApiPolicy", + "s3:GetObject", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "apigateway:GET", + "apigateway:DELETE", + "apigateway:PATCH", + "apigateway:PUT", + "apigateway:UpdateRestApiPolicy", + "s3:GetObject", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "apigateway:GET" + ] + }, + "delete": { + "permissions": [ + "apigateway:DELETE" + ] + } + }, "typeName": "AWS::ApiGateway::RestApi", + "readOnlyProperties": [ + "/properties/RestApiId", + "/properties/RootResourceId" + ], "description": "The ``AWS::ApiGateway::RestApi`` resource creates a REST API. For more information, see [restapi:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateRestApi.html) in the *Amazon API Gateway REST API Reference*.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "writeOnlyProperties": [ + "/properties/Body", + "/properties/BodyS3Location", + "/properties/CloneFrom", + "/properties/FailOnWarnings", + "/properties/Mode", + "/properties/Parameters" + ], "additionalProperties": false, + "primaryIdentifier": [ + "/properties/RestApiId" + ], "definitions": { "EndpointConfiguration": { - "type": "object", + "description": "The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API.\n ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.", "additionalProperties": false, + "type": "object", "properties": { "Types": { - "type": "array", "uniqueItems": true, + "description": "A list of endpoint types of an API (RestApi) or its custom domain name (DomainName). For an edge-optimized API and its custom domain name, the endpoint type is ``\"EDGE\"``. For a regional API and its custom domain name, the endpoint type is ``REGIONAL``. For a private API, the endpoint type is ``PRIVATE``.", + "type": "array", "items": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "description": "A list of endpoint types of an API (RestApi) or its custom domain name (DomainName). For an edge-optimized API and its custom domain name, the endpoint type is ``\"EDGE\"``. For a regional API and its custom domain name, the endpoint type is ``REGIONAL``. For a private API, the endpoint type is ``PRIVATE``.", "markdownDescription": "A list of endpoint types of an API (RestApi) or its custom domain name (DomainName). For an edge-optimized API and its custom domain name, the endpoint type is ``\"EDGE\"``. For a regional API and its custom domain name, the endpoint type is ``REGIONAL``. For a private API, the endpoint type is ``PRIVATE``.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "VpcEndpointIds": { - "type": "array", "uniqueItems": true, + "description": "A list of VpcEndpointIds of an API (RestApi) against which to create Route53 ALIASes. It is only supported for ``PRIVATE`` endpoint type.", + "type": "array", "items": { + "relationshipRef": { + "typeName": "AWS::EC2::VPCEndpoint", + "propertyPath": "/properties/Id" + }, "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "description": "A list of VpcEndpointIds of an API (RestApi) against which to create Route53 ALIASes. It is only supported for ``PRIVATE`` endpoint type.", "markdownDescription": "A list of VpcEndpointIds of an API (RestApi) against which to create Route53 ALIASes. It is only supported for ``PRIVATE`` endpoint type.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, - "description": "The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API.\n ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.", "markdownDescription": "The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API.\n ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Tag": { - "type": "object", + "description": "", "additionalProperties": false, + "type": "object", "properties": { - "Key": { + "Value": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "Value": { + "Key": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } @@ -49,210 +115,152 @@ "Key", "Value" ], - "description": "", "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "S3Location": { - "type": "object", + "description": "``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", "additionalProperties": false, + "type": "object", "properties": { "Bucket": { - "type": "string", + "relationshipRef": { + "typeName": "AWS::S3::Bucket", + "propertyPath": "/properties/BucketName" + }, "description": "The name of the S3 bucket where the OpenAPI file is stored.", + "type": "string", "markdownDescription": "The name of the S3 bucket where the OpenAPI file is stored.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "ETag": { - "type": "string", "description": "The Amazon S3 ETag (a file checksum) of the OpenAPI file. If you don't specify a value, API Gateway skips ETag validation of your OpenAPI file.", + "type": "string", "markdownDescription": "The Amazon S3 ETag (a file checksum) of the OpenAPI file. If you don't specify a value, API Gateway skips ETag validation of your OpenAPI file.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Version": { - "type": "string", "description": "For versioning-enabled buckets, a specific version of the OpenAPI file.", + "type": "string", "markdownDescription": "For versioning-enabled buckets, a specific version of the OpenAPI file.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Key": { - "type": "string", "description": "The file name of the OpenAPI file (Amazon S3 object name).", + "type": "string", "markdownDescription": "The file name of the OpenAPI file (Amazon S3 object name).\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "description": "``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.", "markdownDescription": "``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML.\n On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { - "ApiKeySourceType": { - "type": "string", - "description": "The source of the API key for metering requests according to a usage plan. Valid values are: ``HEADER`` to read the API key from the ``X-API-Key`` header of a request. ``AUTHORIZER`` to read the API key from the ``UsageIdentifierKey`` from a custom authorizer.", - "markdownDescription": "The source of the API key for metering requests according to a usage plan. Valid values are: ``HEADER`` to read the API key from the ``X-API-Key`` header of a request. ``AUTHORIZER`` to read the API key from the ``UsageIdentifierKey`` from a custom authorizer.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "BinaryMediaTypes": { - "type": "array", - "uniqueItems": true, - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "description": "The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.", - "markdownDescription": "The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Body": { + "Policy": { + "description": "A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``\"\"`` as delimiter and values of ``\"execute-api:/\"`` and ``\"*\"``.", "type": [ "object", "string" ], - "description": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.", - "markdownDescription": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" + "markdownDescription": "A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``\"\"`` as delimiter and values of ``\"execute-api:/\"`` and ``\"*\"``.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" }, "BodyS3Location": { - "$ref": "#/definitions/S3Location", "description": "The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format.", + "$ref": "#/definitions/S3Location", "markdownDescription": "The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "CloneFrom": { + "Description": { + "description": "The description of the RestApi.", "type": "string", + "markdownDescription": "The description of the RestApi.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "MinimumCompressionSize": { + "description": "A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.", + "type": "integer", + "markdownDescription": "A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Parameters": { + "patternProperties": { + "[a-zA-Z0-9]+": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "description": "Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.", + "additionalProperties": false, + "type": [ + "object", + "string" + ], + "markdownDescription": "Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" + }, + "CloneFrom": { "description": "The ID of the RestApi that you want to clone from.", + "type": "string", "markdownDescription": "The ID of the RestApi that you want to clone from.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "EndpointConfiguration": { - "$ref": "#/definitions/EndpointConfiguration", - "description": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property.", - "markdownDescription": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "Description": { + "Mode": { + "description": "This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates.\n Valid values are ``overwrite`` or ``merge``. \n For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.\n For ``merge``, the new API definition is merged with the existing API.\n If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API. \n Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.", "type": "string", - "description": "The description of the RestApi.", - "markdownDescription": "The description of the RestApi.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates.\n Valid values are ``overwrite`` or ``merge``. \n For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.\n For ``merge``, the new API definition is merged with the existing API.\n If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API. \n Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "DisableExecuteApiEndpoint": { - "type": "boolean", "description": "Specifies whether clients can invoke your API by using the default ``execute-api`` endpoint. By default, clients can invoke your API with the default ``https://{api_id}.execute-api.{region}.amazonaws.com`` endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint", + "type": "boolean", "markdownDescription": "Specifies whether clients can invoke your API by using the default ``execute-api`` endpoint. By default, clients can invoke your API with the default ``https://{api_id}.execute-api.{region}.amazonaws.com`` endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "FailOnWarnings": { - "type": "boolean", "description": "A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.", + "type": "boolean", "markdownDescription": "A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "BinaryMediaTypes": { + "uniqueItems": true, + "description": "The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.", + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, "Name": { - "type": "string", "description": "The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.", + "type": "string", "markdownDescription": "The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "MinimumCompressionSize": { - "type": "integer", - "description": "A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.", - "markdownDescription": "A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "Mode": { + "ApiKeySourceType": { + "description": "The source of the API key for metering requests according to a usage plan. Valid values are: ``HEADER`` to read the API key from the ``X-API-Key`` header of a request. ``AUTHORIZER`` to read the API key from the ``UsageIdentifierKey`` from a custom authorizer.", "type": "string", - "description": "This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates.\n Valid values are ``overwrite`` or ``merge``. \n For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.\n For ``merge``, the new API definition is merged with the existing API.\n If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API. \n Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.", - "markdownDescription": "This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates.\n Valid values are ``overwrite`` or ``merge``. \n For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.\n For ``merge``, the new API definition is merged with the existing API.\n If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API. \n Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The source of the API key for metering requests according to a usage plan. Valid values are: ``HEADER`` to read the API key from the ``X-API-Key`` header of a request. ``AUTHORIZER`` to read the API key from the ``UsageIdentifierKey`` from a custom authorizer.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Policy": { - "type": [ - "object", - "string" - ], - "description": "A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``\"\"`` as delimiter and values of ``\"execute-api:/\"`` and ``\"*\"``.", - "markdownDescription": "A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``\"\"`` as delimiter and values of ``\"execute-api:/\"`` and ``\"*\"``.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" + "EndpointConfiguration": { + "description": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property.", + "$ref": "#/definitions/EndpointConfiguration", + "markdownDescription": "A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "Parameters": { + "Body": { + "description": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.", "type": [ "object", "string" ], - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "description": "Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.", - "markdownDescription": "Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" + "markdownDescription": "An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" }, "Tags": { - "type": "array", "uniqueItems": false, + "description": "The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.", + "type": "array", "items": { "$ref": "#/definitions/Tag" }, - "description": "The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.", "markdownDescription": "The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" - }, - "primaryIdentifier": [ - "/properties/RestApiId" - ], - "readOnlyProperties": [ - "/properties/RestApiId", - "/properties/RootResourceId" - ], - "writeOnlyProperties": [ - "/properties/Body", - "/properties/BodyS3Location", - "/properties/CloneFrom", - "/properties/FailOnWarnings", - "/properties/Mode", - "/properties/Parameters" - ], - "handlers": { - "create": { - "permissions": [ - "apigateway:GET", - "apigateway:POST", - "apigateway:PUT", - "apigateway:PATCH", - "apigateway:UpdateRestApiPolicy", - "s3:GetObject", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "apigateway:GET" - ] - }, - "update": { - "permissions": [ - "apigateway:GET", - "apigateway:DELETE", - "apigateway:PATCH", - "apigateway:PUT", - "apigateway:UpdateRestApiPolicy", - "s3:GetObject", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "apigateway:DELETE" - ] - }, - "list": { - "permissions": [ - "apigateway:GET" - ] - } - }, "attributes": { "RestApiId": { - "type": "string", "description": "", + "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "RootResourceId": { - "type": "string", "description": "", + "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } diff --git a/server/schema/resources/aws-applicationautoscaling-scalabletarget.json b/server/schema/resources/aws-applicationautoscaling-scalabletarget.json index 211c0164..aa07f9c4 100644 --- a/server/schema/resources/aws-applicationautoscaling-scalabletarget.json +++ b/server/schema/resources/aws-applicationautoscaling-scalabletarget.json @@ -1,211 +1,237 @@ { + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "typeName": "AWS::ApplicationAutoScaling::ScalableTarget", - "description": "Resource Type definition for AWS::ApplicationAutoScaling::ScalableTarget", + "readOnlyProperties": [ + "/properties/Id" + ], + "description": "The ``AWS::ApplicationAutoScaling::ScalableTarget`` resource specifies a resource that Application Auto Scaling can scale, such as an AWS::DynamoDB::Table or AWS::ECS::Service resource.\n For more information, see [Getting started](https://docs.aws.amazon.com/autoscaling/application/userguide/getting-started.html) in the *Application Auto Scaling User Guide*.\n If the resource that you want Application Auto Scaling to scale is not yet created in your account, add a dependency on the resource when registering it as a scalable target using the [DependsOn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) attribute.", + "createOnlyProperties": [ + "/properties/ResourceId", + "/properties/ScalableDimension", + "/properties/ServiceNamespace" + ], + "primaryIdentifier": [ + "/properties/ResourceId", + "/properties/ScalableDimension", + "/properties/ServiceNamespace" + ], + "required": [ + "ResourceId", + "ServiceNamespace", + "ScalableDimension", + "MinCapacity", + "MaxCapacity" + ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "handlers": { + "read": { + "permissions": [ + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScheduledActions" + ] + }, + "create": { + "permissions": [ + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:DescribeScheduledActions", + "application-autoscaling:PutScheduledAction", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "cloudwatch:PutMetricAlarm", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:DeleteProvisionedConcurrencyConfig" + ] + }, + "update": { + "permissions": [ + "application-autoscaling:RegisterScalableTarget", + "application-autoscaling:DescribeScalableTargets", + "application-autoscaling:DescribeScheduledActions", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:PutScheduledAction", + "cloudwatch:PutMetricAlarm", + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms", + "lambda:GetProvisionedConcurrencyConfig", + "lambda:PutProvisionedConcurrencyConfig", + "lambda:DeleteProvisionedConcurrencyConfig" + ] + }, + "list": { + "permissions": [ + "application-autoscaling:DescribeScalableTargets" + ] + }, + "delete": { + "permissions": [ + "application-autoscaling:DeregisterScalableTarget" + ] + } + }, + "writeOnlyProperties": [ + "/properties/RoleARN" + ], "additionalProperties": false, "definitions": { "SuspendedState": { - "type": "object", + "description": "``SuspendedState`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies whether the scaling activities for a scalable target are in a suspended state.\n For more information, see [Suspending and resuming scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html) in the *Application Auto Scaling User Guide*.", "additionalProperties": false, - "description": "specifies whether the scaling activities for a scalable target are in a suspended state", + "type": "object", "properties": { - "ScheduledScalingSuspended": { + "DynamicScalingOutSuspended": { + "description": "Whether scale out by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add capacity when a scaling policy is triggered. The default is ``false``.", "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "Whether scale out by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add capacity when a scaling policy is triggered. The default is ``false``.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "DynamicScalingOutSuspended": { + "ScheduledScalingSuspended": { + "description": "Whether scheduled scaling is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add or remove capacity by initiating scheduled actions. The default is ``false``.", "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "Whether scheduled scaling is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to add or remove capacity by initiating scheduled actions. The default is ``false``.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "DynamicScalingInSuspended": { + "description": "Whether scale in by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to remove capacity when a scaling policy is triggered. The default is ``false``.", "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "Whether scale in by a target tracking scaling policy or a step scaling policy is suspended. Set the value to ``true`` if you don't want Application Auto Scaling to remove capacity when a scaling policy is triggered. The default is ``false``.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, - "markdownDescription": "specifies whether the scaling activities for a scalable target are in a suspended state\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "``SuspendedState`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies whether the scaling activities for a scalable target are in a suspended state.\n For more information, see [Suspending and resuming scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html) in the *Application Auto Scaling User Guide*.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "ScheduledAction": { - "type": "object", + "description": "``ScheduledAction`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies a scheduled action for a scalable target. \n For more information, see [Scheduled scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) in the *Application Auto Scaling User Guide*.", "additionalProperties": false, - "description": "specifies a scheduled action for a scalable target", + "type": "object", "properties": { "Timezone": { + "description": "The time zone used when referring to the date and time of a scheduled action, when the scheduled action uses an at or cron expression.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The time zone used when referring to the date and time of a scheduled action, when the scheduled action uses an at or cron expression.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "ScheduledActionName": { + "description": "The name of the scheduled action. This name must be unique among all other scheduled actions on the specified scalable target.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The name of the scheduled action. This name must be unique among all other scheduled actions on the specified scalable target.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "EndTime": { + "description": "The date and time that the action is scheduled to end, in UTC.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The date and time that the action is scheduled to end, in UTC.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Schedule": { + "description": "The schedule for this action. The following formats are supported:\n + At expressions - \"``at(yyyy-mm-ddThh:mm:ss)``\"\n + Rate expressions - \"``rate(value unit)``\"\n + Cron expressions - \"``cron(fields)``\"\n \n At expressions are useful for one-time schedules. Cron expressions are useful for scheduled actions that run periodically at a specified date and time, and rate expressions are useful for scheduled actions that run at a regular interval.\n At and cron expressions use Universal Coordinated Time (UTC) by default.\n The cron format consists of six fields separated by white spaces: [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year].\n For rate expressions, *value* is a positive integer and *unit* is ``minute`` | ``minutes`` | ``hour`` | ``hours`` | ``day`` | ``days``.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The schedule for this action. The following formats are supported:\n + At expressions - \"``at(yyyy-mm-ddThh:mm:ss)``\"\n + Rate expressions - \"``rate(value unit)``\"\n + Cron expressions - \"``cron(fields)``\"\n \n At expressions are useful for one-time schedules. Cron expressions are useful for scheduled actions that run periodically at a specified date and time, and rate expressions are useful for scheduled actions that run at a regular interval.\n At and cron expressions use Universal Coordinated Time (UTC) by default.\n The cron format consists of six fields separated by white spaces: [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year].\n For rate expressions, *value* is a positive integer and *unit* is ``minute`` | ``minutes`` | ``hour`` | ``hours`` | ``day`` | ``days``.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "StartTime": { + "description": "The date and time that the action is scheduled to begin, in UTC.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The date and time that the action is scheduled to begin, in UTC.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "ScalableTargetAction": { - "$ref": "#/definitions/ScalableTargetAction" + "description": "The new minimum and maximum capacity. You can set both values or just one. At the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity.", + "$ref": "#/definitions/ScalableTargetAction", + "markdownDescription": "The new minimum and maximum capacity. You can set both values or just one. At the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" } }, "required": [ "ScheduledActionName", "Schedule" ], - "markdownDescription": "specifies a scheduled action for a scalable target\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "``ScheduledAction`` is a property of the [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) resource that specifies a scheduled action for a scalable target. \n For more information, see [Scheduled scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) in the *Application Auto Scaling User Guide*.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "ScalableTargetAction": { - "type": "object", + "description": "``ScalableTargetAction`` specifies the minimum and maximum capacity for the ``ScalableTargetAction`` property of the [AWS::ApplicationAutoScaling::ScalableTarget ScheduledAction](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html) property type.", "additionalProperties": false, - "description": "specifies the minimum and maximum capacity", + "type": "object", "properties": { "MinCapacity": { + "description": "The minimum capacity.", "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "markdownDescription": "The minimum capacity.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, "MaxCapacity": { + "description": "The maximum capacity.", "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "markdownDescription": "The maximum capacity.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" } }, - "markdownDescription": "specifies the minimum and maximum capacity\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "``ScalableTargetAction`` specifies the minimum and maximum capacity for the ``ScalableTargetAction`` property of the [AWS::ApplicationAutoScaling::ScalableTarget ScheduledAction](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html) property type.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { - "MaxCapacity": { - "description": "The maximum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand", - "type": "integer", - "markdownDescription": "The maximum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" - }, - "MinCapacity": { - "description": "The minimum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand", - "type": "integer", - "markdownDescription": "The minimum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" - }, - "ResourceId": { - "description": "The identifier of the resource associated with the scalable target", - "type": "string", - "markdownDescription": "The identifier of the resource associated with the scalable target\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "RoleARN": { - "description": "Specify the Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf. ", - "type": "string", - "markdownDescription": "Specify the Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf. \n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "ScalableDimension": { - "description": "The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property", - "type": "string", - "markdownDescription": "The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, "ScheduledActions": { - "description": "The scheduled actions for the scalable target. Duplicates aren't allowed.", - "type": "array", "uniqueItems": true, + "description": "The scheduled actions for the scalable target. Duplicates aren't allowed.", "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/ScheduledAction" }, "markdownDescription": "The scheduled actions for the scalable target. Duplicates aren't allowed.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, + "ResourceId": { + "description": "The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.\n + ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.\n + Spot Fleet - The resource type is ``spot-fleet-request`` and the unique identifier is the Spot Fleet request ID. Example: ``spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE``.\n + EMR cluster - The resource type is ``instancegroup`` and the unique identifier is the cluster ID and instance group ID. Example: ``instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0``.\n + AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.\n + DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.\n + DynamoDB global secondary index - The resource type is ``index`` and the unique identifier is the index name. Example: ``table/my-table/index/my-table-index``.\n + Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.\n + SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + Custom resources are not supported with a resource type. This parameter must specify the ``OutputValue`` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider. More information is available in our [GitHub repository](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).\n + Amazon Comprehend document classification endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE``.\n + Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE``.\n + Lambda provisioned concurrency - The resource type is ``function`` and the unique identifier is the function name with a function version or alias name suffix that is not ``$LATEST``. Example: ``function:my-function:prod`` or ``function:my-function:1``.\n + Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.\n + Amazon MSK cluster - The resource type and unique identifier are specified using the cluster ARN. Example: ``arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5``.\n + Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.\n + Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.\n + SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.", + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::MSK::Cluster", + "propertyPath": "/properties/Arn" + } + }, + { + "relationshipRef": { + "typeName": "AWS::ECS::Service", + "propertyPath": "/properties/ServiceArn" + } + } + ], + "type": "string", + "markdownDescription": "The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.\n + ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.\n + Spot Fleet - The resource type is ``spot-fleet-request`` and the unique identifier is the Spot Fleet request ID. Example: ``spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE``.\n + EMR cluster - The resource type is ``instancegroup`` and the unique identifier is the cluster ID and instance group ID. Example: ``instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0``.\n + AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.\n + DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.\n + DynamoDB global secondary index - The resource type is ``index`` and the unique identifier is the index name. Example: ``table/my-table/index/my-table-index``.\n + Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.\n + SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + Custom resources are not supported with a resource type. This parameter must specify the ``OutputValue`` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider. More information is available in our [GitHub repository](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).\n + Amazon Comprehend document classification endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE``.\n + Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier are specified using the endpoint ARN. Example: ``arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE``.\n + Lambda provisioned concurrency - The resource type is ``function`` and the unique identifier is the function name with a function version or alias name suffix that is not ``$LATEST``. Example: ``function:my-function:prod`` or ``function:my-function:1``.\n + Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.\n + Amazon MSK cluster - The resource type and unique identifier are specified using the cluster ARN. Example: ``arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5``.\n + Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.\n + Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.\n + SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.\n + SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + }, "ServiceNamespace": { - "description": "The namespace of the AWS service that provides the resource, or a custom-resource", + "description": "The namespace of the AWS service that provides the resource, or a ``custom-resource``.", + "type": "string", + "markdownDescription": "The namespace of the AWS service that provides the resource, or a ``custom-resource``.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + }, + "ScalableDimension": { + "description": "The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property.\n + ``ecs:service:DesiredCount`` - The desired task count of an ECS service.\n + ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.\n + ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.\n + ``appstream:fleet:DesiredCapacity`` - The desired capacity of an AppStream 2.0 fleet.\n + ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.\n + ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.\n + ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.\n + ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.\n + ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.\n + ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.\n + ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.\n + ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.\n + ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.\n + ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.\n + ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.\n + ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.\n + ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.\n + ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.\n + ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.\n + ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.\n + ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.\n + ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.", "type": "string", - "markdownDescription": "The namespace of the AWS service that provides the resource, or a custom-resource\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property.\n + ``ecs:service:DesiredCount`` - The desired task count of an ECS service.\n + ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.\n + ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.\n + ``appstream:fleet:DesiredCapacity`` - The desired capacity of an AppStream 2.0 fleet.\n + ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.\n + ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.\n + ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.\n + ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.\n + ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.\n + ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.\n + ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.\n + ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.\n + ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.\n + ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.\n + ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.\n + ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.\n + ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.\n + ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.\n + ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.\n + ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.\n + ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.\n + ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "SuspendedState": { - "description": "An embedded object that contains attributes and attribute values that are used to suspend and resume automatic scaling. Setting the value of an attribute to true suspends the specified scaling activities. Setting it to false (default) resumes the specified scaling activities.", + "description": "An embedded object that contains attributes and attribute values that are used to suspend and resume automatic scaling. Setting the value of an attribute to ``true`` suspends the specified scaling activities. Setting it to ``false`` (default) resumes the specified scaling activities. \n *Suspension Outcomes* \n + For ``DynamicScalingInSuspended``, while a suspension is in effect, all scale-in activities that are triggered by a scaling policy are suspended.\n + For ``DynamicScalingOutSuspended``, while a suspension is in effect, all scale-out activities that are triggered by a scaling policy are suspended.\n + For ``ScheduledScalingSuspended``, while a suspension is in effect, all scaling activities that involve scheduled actions are suspended.", "$ref": "#/definitions/SuspendedState", - "markdownDescription": "An embedded object that contains attributes and attribute values that are used to suspend and resume automatic scaling. Setting the value of an attribute to true suspends the specified scaling activities. Setting it to false (default) resumes the specified scaling activities.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - } - }, - "required": [ - "ResourceId", - "ServiceNamespace", - "ScalableDimension", - "MinCapacity", - "MaxCapacity" - ], - "createOnlyProperties": [ - "/properties/ResourceId", - "/properties/ScalableDimension", - "/properties/ServiceNamespace" - ], - "primaryIdentifier": [ - "/properties/ResourceId", - "/properties/ScalableDimension", - "/properties/ServiceNamespace" - ], - "readOnlyProperties": [ - "/properties/Id" - ], - "writeOnlyProperties": [ - "/properties/RoleARN" - ], - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, - "handlers": { - "create": { - "permissions": [ - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:DescribeScheduledActions", - "application-autoscaling:PutScheduledAction", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "cloudwatch:PutMetricAlarm", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:DeleteProvisionedConcurrencyConfig" - ] - }, - "read": { - "permissions": [ - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScheduledActions" - ] + "markdownDescription": "An embedded object that contains attributes and attribute values that are used to suspend and resume automatic scaling. Setting the value of an attribute to ``true`` suspends the specified scaling activities. Setting it to ``false`` (default) resumes the specified scaling activities. \n *Suspension Outcomes* \n + For ``DynamicScalingInSuspended``, while a suspension is in effect, all scale-in activities that are triggered by a scaling policy are suspended.\n + For ``DynamicScalingOutSuspended``, while a suspension is in effect, all scale-out activities that are triggered by a scaling policy are suspended.\n + For ``ScheduledScalingSuspended``, while a suspension is in effect, all scaling activities that involve scheduled actions are suspended.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "list": { - "permissions": [ - "application-autoscaling:DescribeScalableTargets" - ] + "MinCapacity": { + "description": "The minimum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand.", + "type": "integer", + "markdownDescription": "The minimum value that you plan to scale in to. When a scaling policy is in effect, Application Auto Scaling can scale in (contract) as needed to the minimum capacity limit in response to changing demand.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" }, - "update": { - "permissions": [ - "application-autoscaling:RegisterScalableTarget", - "application-autoscaling:DescribeScalableTargets", - "application-autoscaling:DescribeScheduledActions", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:PutScheduledAction", - "cloudwatch:PutMetricAlarm", - "cloudwatch:DeleteAlarms", - "cloudwatch:DescribeAlarms", - "lambda:GetProvisionedConcurrencyConfig", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:DeleteProvisionedConcurrencyConfig" - ] + "RoleARN": { + "description": "Specify the Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf. This can be either an IAM service role that Application Auto Scaling can assume to make calls to other AWS resources on your behalf, or a service-linked role for the specified service. For more information, see [How Application Auto Scaling works with IAM](https://docs.aws.amazon.com/autoscaling/application/userguide/security_iam_service-with-iam.html) in the *Application Auto Scaling User Guide*.\n To automatically create a service-linked role (recommended), specify the full ARN of the service-linked role in your stack template. To find the exact ARN of the service-linked role for your AWS or custom resource, see the [Service-linked roles](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) topic in the *Application Auto Scaling User Guide*. Look for the ARN in the table at the bottom of the page.", + "type": "string", + "markdownDescription": "Specify the Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that allows Application Auto Scaling to modify the scalable target on your behalf. This can be either an IAM service role that Application Auto Scaling can assume to make calls to other AWS resources on your behalf, or a service-linked role for the specified service. For more information, see [How Application Auto Scaling works with IAM](https://docs.aws.amazon.com/autoscaling/application/userguide/security_iam_service-with-iam.html) in the *Application Auto Scaling User Guide*.\n To automatically create a service-linked role (recommended), specify the full ARN of the service-linked role in your stack template. To find the exact ARN of the service-linked role for your AWS or custom resource, see the [Service-linked roles](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html) topic in the *Application Auto Scaling User Guide*. Look for the ARN in the table at the bottom of the page.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "delete": { - "permissions": [ - "application-autoscaling:DeregisterScalableTarget" - ] + "MaxCapacity": { + "description": "The maximum value that you plan to scale out to. When a scaling policy is in effect, Application Auto Scaling can scale out (expand) as needed to the maximum capacity limit in response to changing demand.", + "type": "integer", + "markdownDescription": "The maximum value that you plan to scale out to. When a scaling policy is in effect, Application Auto Scaling can scale out (expand) as needed to the maximum capacity limit in response to changing demand.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" } }, "attributes": { "Id": { - "description": "This value can be returned by using the Ref function. Ref returns the Cloudformation generated ID of the resource in format - ResourceId|ScalableDimension|ServiceNamespace", + "description": "", "type": "string", - "markdownDescription": "This value can be returned by using the Ref function. Ref returns the Cloudformation generated ID of the resource in format - ResourceId|ScalableDimension|ServiceNamespace\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "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-autoscaling-launchconfiguration.json b/server/schema/resources/aws-autoscaling-launchconfiguration.json index c7c2beca..fd8bde97 100644 --- a/server/schema/resources/aws-autoscaling-launchconfiguration.json +++ b/server/schema/resources/aws-autoscaling-launchconfiguration.json @@ -1,12 +1,68 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", + "tagging": { + "taggable": false + }, + "handlers": { + "read": { + "permissions": [ + "autoscaling:DescribeLaunchConfigurations" + ] + }, + "create": { + "permissions": [ + "autoscaling:CreateLaunchConfiguration", + "autoscaling:DescribeLaunchConfigurations", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "autoscaling:DescribeLaunchConfigurations" + ] + }, + "delete": { + "permissions": [ + "autoscaling:DeleteLaunchConfiguration", + "autoscaling:DescribeLaunchConfigurations" + ] + } + }, "typeName": "AWS::AutoScaling::LaunchConfiguration", "description": "The AWS::AutoScaling::LaunchConfiguration resource specifies the launch configuration that can be used by an Auto Scaling group to configure Amazon EC2 instances.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git", + "writeOnlyProperties": [ + "/properties/InstanceId" + ], + "createOnlyProperties": [ + "/properties/AssociatePublicIpAddress", + "/properties/BlockDeviceMappings", + "/properties/ClassicLinkVPCId", + "/properties/ClassicLinkVPCSecurityGroups", + "/properties/EbsOptimized", + "/properties/IamInstanceProfile", + "/properties/ImageId", + "/properties/InstanceId", + "/properties/InstanceMonitoring", + "/properties/InstanceType", + "/properties/KernelId", + "/properties/KeyName", + "/properties/LaunchConfigurationName", + "/properties/MetadataOptions", + "/properties/PlacementTenancy", + "/properties/RamDiskId", + "/properties/SecurityGroups", + "/properties/SpotPrice", + "/properties/UserData" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/LaunchConfigurationName" + ], "definitions": { "MetadataOptions": { "description": "MetadataOptions is a property of AWS::AutoScaling::LaunchConfiguration that describes metadata options for the instances.", - "type": "object", "additionalProperties": false, + "type": "object", "properties": { "HttpPutResponseHopLimit": { "description": "The desired HTTP PUT response hop limit for instance metadata requests.", @@ -28,9 +84,14 @@ }, "BlockDeviceMapping": { "description": "BlockDeviceMapping is a property of AWS::AutoScaling::LaunchConfiguration that describes a block device mapping for an Auto Scaling group.", - "type": "object", "additionalProperties": false, + "type": "object", "properties": { + "Ebs": { + "description": "Parameters used to automatically set up EBS volumes when an instance is launched.", + "$ref": "#/definitions/BlockDevice", + "markdownDescription": "Parameters used to automatically set up EBS volumes when an instance is launched.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, "NoDevice": { "description": "Setting this value to true suppresses the specified device included in the block device mapping of the AMI.", "type": "boolean", @@ -41,11 +102,6 @@ "type": "string", "markdownDescription": "The name of the virtual device.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Ebs": { - "description": "Parameters used to automatically set up EBS volumes when an instance is launched.", - "$ref": "#/definitions/BlockDevice", - "markdownDescription": "Parameters used to automatically set up EBS volumes when an instance is launched.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, "DeviceName": { "description": "The device name exposed to the EC2 instance (for example, /dev/sdh or xvdh). ", "type": "string", @@ -59,8 +115,8 @@ }, "BlockDevice": { "description": "BlockDevice is a subproperty of BlockDeviceMapping that describes an Amazon EBS volume.", - "type": "object", "additionalProperties": false, + "type": "object", "properties": { "SnapshotId": { "description": "The snapshot ID of the volume to use.", @@ -77,6 +133,11 @@ "type": "boolean", "markdownDescription": "Specifies whether the volume should be encrypted. \n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "Throughput": { + "description": "The throughput (MiBps) to provision for a gp3 volume.", + "type": "integer", + "markdownDescription": "The throughput (MiBps) to provision for a gp3 volume.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, "Iops": { "description": "The number of input/output (I/O) operations per second (IOPS) to provision for the volume. ", "type": "integer", @@ -91,190 +152,143 @@ "description": "Indicates whether the volume is deleted on instance termination. ", "type": "boolean", "markdownDescription": "Indicates whether the volume is deleted on instance termination. \n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "Throughput": { - "description": "The throughput (MiBps) to provision for a gp3 volume.", - "type": "integer", - "markdownDescription": "The throughput (MiBps) to provision for a gp3 volume.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" } }, "markdownDescription": "BlockDevice is a subproperty of BlockDeviceMapping that describes an Amazon EBS volume.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { - "AssociatePublicIpAddress": { - "description": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.", - "type": "boolean", - "markdownDescription": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: Replacement" + "PlacementTenancy": { + "description": "The tenancy of the instance, either default or dedicated.", + "type": "string", + "markdownDescription": "The tenancy of the instance, either default or dedicated.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "BlockDeviceMappings": { - "description": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.", - "type": "array", - "uniqueItems": true, + "SecurityGroups": { + "description": "A list that contains the security groups to assign to the instances in the Auto Scaling group.", "insertionOrder": false, + "type": "array", "items": { - "$ref": "#/definitions/BlockDeviceMapping" + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::EC2::SecurityGroup", + "propertyPath": "/properties/GroupId" + } + }, + { + "relationshipRef": { + "typeName": "AWS::EC2::SecurityGroup", + "propertyPath": "/properties/Id" + } + } + ], + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "markdownDescription": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" + "markdownDescription": "A list that contains the security groups to assign to the instances in the Auto Scaling group.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" }, - "ClassicLinkVPCId": { - "description": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.", + "LaunchConfigurationName": { + "minLength": 1, + "description": "The name of the launch configuration. This name must be unique per Region per account.", "type": "string", - "markdownDescription": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "maxLength": 255, + "markdownDescription": "The name of the launch configuration. This name must be unique per Region per account.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nUpdate requires: Replacement" + }, + "MetadataOptions": { + "description": "The metadata options for the instances.", + "$ref": "#/definitions/MetadataOptions", + "markdownDescription": "The metadata options for the instances.\n\n---\n\nRequired: No \nType: \nUpdate requires: Replacement" + }, + "InstanceId": { + "description": "The ID of the Amazon EC2 instance you want to use to create the launch configuration.", + "type": "string", + "markdownDescription": "The ID of the Amazon EC2 instance you want to use to create the launch configuration.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + }, + "UserData": { + "description": "The Base64-encoded user data to make available to the launched EC2 instances.", + "type": "string", + "maxLength": 21847, + "markdownDescription": "The Base64-encoded user data to make available to the launched EC2 instances.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 21847 \nUpdate requires: Replacement" }, "ClassicLinkVPCSecurityGroups": { "description": "The IDs of one or more security groups for the VPC that you specified in the ClassicLinkVPCId property.", - "type": "array", "insertionOrder": false, + "type": "array", "items": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "markdownDescription": "The IDs of one or more security groups for the VPC that you specified in the ClassicLinkVPCId property.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" }, - "EbsOptimized": { - "description": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).", - "type": "boolean", - "markdownDescription": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: Replacement" + "BlockDeviceMappings": { + "uniqueItems": true, + "description": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/BlockDeviceMapping" + }, + "markdownDescription": "Specifies how block devices are exposed to the instance. You can specify virtual devices and EBS volumes.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" }, "IamInstanceProfile": { "description": "Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.", "type": "string", "markdownDescription": "Provides the name or the Amazon Resource Name (ARN) of the instance profile associated with the IAM role for the instance. The instance profile contains the IAM role.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "ImageId": { - "description": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.", - "type": "string", - "markdownDescription": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "InstanceId": { - "description": "The ID of the Amazon EC2 instance you want to use to create the launch configuration.", + "KernelId": { + "description": "Provides the ID of the kernel associated with the EC2 AMI.", "type": "string", - "markdownDescription": "The ID of the Amazon EC2 instance you want to use to create the launch configuration.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "Provides the ID of the kernel associated with the EC2 AMI.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "InstanceMonitoring": { - "description": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.", + "AssociatePublicIpAddress": { + "description": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.", "type": "boolean", - "markdownDescription": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: Replacement" + "markdownDescription": "For Auto Scaling groups that are running in a virtual private cloud (VPC), specifies whether to assign a public IP address to the group's instances.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: Replacement" }, - "InstanceType": { - "description": "Specifies the instance type of the EC2 instance.", + "ClassicLinkVPCId": { + "description": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.", "type": "string", - "markdownDescription": "Specifies the instance type of the EC2 instance.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances to.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "KernelId": { - "description": "Provides the ID of the kernel associated with the EC2 AMI.", - "type": "string", - "markdownDescription": "Provides the ID of the kernel associated with the EC2 AMI.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "EbsOptimized": { + "description": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).", + "type": "boolean", + "markdownDescription": "Specifies whether the launch configuration is optimized for EBS I/O (true) or not (false).\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: Replacement" }, "KeyName": { "description": "Provides the name of the EC2 key pair.", "type": "string", "markdownDescription": "Provides the name of the EC2 key pair.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "LaunchConfigurationName": { - "description": "The name of the launch configuration. This name must be unique per Region per account.", + "SpotPrice": { + "description": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request.", "type": "string", - "minLength": 1, - "maxLength": 255, - "markdownDescription": "The name of the launch configuration. This name must be unique per Region per account.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nUpdate requires: Replacement" + "markdownDescription": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "MetadataOptions": { - "description": "The metadata options for the instances.", - "$ref": "#/definitions/MetadataOptions", - "markdownDescription": "The metadata options for the instances.\n\n---\n\nRequired: No \nType: \nUpdate requires: Replacement" + "ImageId": { + "description": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.", + "type": "string", + "markdownDescription": "Provides the unique ID of the Amazon Machine Image (AMI) that was assigned during registration.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, - "PlacementTenancy": { - "description": "The tenancy of the instance, either default or dedicated.", + "InstanceType": { + "description": "Specifies the instance type of the EC2 instance.", "type": "string", - "markdownDescription": "The tenancy of the instance, either default or dedicated.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "Specifies the instance type of the EC2 instance.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "RamDiskId": { "description": "The ID of the RAM disk to select.", "type": "string", "markdownDescription": "The ID of the RAM disk to select.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "SecurityGroups": { - "description": "A list that contains the security groups to assign to the instances in the Auto Scaling group.", - "type": "array", - "insertionOrder": false, - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list that contains the security groups to assign to the instances in the Auto Scaling group.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" - }, - "SpotPrice": { - "description": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request.", - "type": "string", - "markdownDescription": "The maximum hourly price you are willing to pay for any Spot Instances launched to fulfill the request.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" - }, - "UserData": { - "description": "The Base64-encoded user data to make available to the launched EC2 instances.", - "type": "string", - "maxLength": 21847, - "markdownDescription": "The Base64-encoded user data to make available to the launched EC2 instances.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 21847 \nUpdate requires: Replacement" + "InstanceMonitoring": { + "description": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.", + "type": "boolean", + "markdownDescription": "Controls whether instances in this group are launched with detailed (true) or basic (false) monitoring.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: Replacement" } }, - "additionalProperties": false, "required": [ "ImageId", "InstanceType" ], - "createOnlyProperties": [ - "/properties/AssociatePublicIpAddress", - "/properties/BlockDeviceMappings", - "/properties/ClassicLinkVPCId", - "/properties/ClassicLinkVPCSecurityGroups", - "/properties/EbsOptimized", - "/properties/IamInstanceProfile", - "/properties/ImageId", - "/properties/InstanceId", - "/properties/InstanceMonitoring", - "/properties/InstanceType", - "/properties/KernelId", - "/properties/KeyName", - "/properties/LaunchConfigurationName", - "/properties/MetadataOptions", - "/properties/PlacementTenancy", - "/properties/RamDiskId", - "/properties/SecurityGroups", - "/properties/SpotPrice", - "/properties/UserData" - ], - "tagging": { - "taggable": false - }, - "primaryIdentifier": [ - "/properties/LaunchConfigurationName" - ], - "writeOnlyProperties": [ - "/properties/InstanceId" - ], - "handlers": { - "create": { - "permissions": [ - "autoscaling:CreateLaunchConfiguration", - "autoscaling:DescribeLaunchConfigurations", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "autoscaling:DescribeLaunchConfigurations" - ] - }, - "delete": { - "permissions": [ - "autoscaling:DeleteLaunchConfiguration", - "autoscaling:DescribeLaunchConfigurations" - ] - }, - "list": { - "permissions": [ - "autoscaling:DescribeLaunchConfigurations" - ] - } - }, "attributes": {} } \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-agent.json b/server/schema/resources/aws-bedrock-agent.json index eccd3f94..5d4cbea9 100644 --- a/server/schema/resources/aws-bedrock-agent.json +++ b/server/schema/resources/aws-bedrock-agent.json @@ -36,21 +36,39 @@ "markdownDescription": "Contains information about the API Schema for the Action Group\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, "ActionGroupExecutor": { - "type": "object", - "title": "Lambda", - "properties": { - "Lambda": { - "type": "string", - "maxLength": 2048, - "description": "ARN of a Lambda.", - "markdownDescription": "ARN of a Lambda.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 2048 \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: No interruption" + "description": "Type of Executors for an Action Group", + "oneOf": [ + { + "type": "object", + "title": "Lambda", + "properties": { + "Lambda": { + "type": "string", + "maxLength": 2048, + "pattern": "^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-_]+))?$", + "description": "ARN of a Lambda." + } + }, + "required": [ + "Lambda" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "CustomControl", + "properties": { + "CustomControl": { + "$ref": "#/definitions/CustomControlMethod" + } + }, + "required": [ + "CustomControl" + ], + "additionalProperties": false } - }, - "required": [ - "Lambda" ], - "additionalProperties": false, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "Type of Executors for an Action Group\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, "ActionGroupSignature": { "type": "string", @@ -97,6 +115,9 @@ "ActionGroupState": { "$ref": "#/definitions/ActionGroupState" }, + "FunctionSchema": { + "$ref": "#/definitions/FunctionSchema" + }, "SkipResourceInUseCheckOnDelete": { "description": "Specifies whether to allow deleting action group while it is in use.", "type": "boolean", @@ -161,6 +182,60 @@ ], "markdownDescription": "Creation Mode for Prompt Configuration.\n\n---\n\nRequired: No \nType: String \nAllowed Values: DEFAULT | OVERRIDDEN \nUpdate requires: No interruption" }, + "CustomControlMethod": { + "type": "string", + "description": "Custom control of action execution", + "enum": [ + "RETURN_CONTROL" + ], + "markdownDescription": "Custom control of action execution\n\n---\n\nRequired: No \nType: String \nAllowed Values: RETURN_CONTROL \nUpdate requires: No interruption" + }, + "Function": { + "type": "object", + "description": "Function definition", + "properties": { + "Name": { + "type": "string", + "description": "Name for a resource.", + "markdownDescription": "Name for a resource.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "Description": { + "type": "string", + "maxLength": 1200, + "minLength": 1, + "description": "Description of function", + "markdownDescription": "Description of function\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1200 \nUpdate requires: No interruption" + }, + "Parameters": { + "$ref": "#/definitions/ParameterMap" + } + }, + "required": [ + "Name" + ], + "additionalProperties": false, + "markdownDescription": "Function definition\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FunctionSchema": { + "description": "Schema of Functions", + "type": "object", + "title": "Functions", + "properties": { + "Functions": { + "type": "array", + "items": { + "$ref": "#/definitions/Function" + }, + "description": "List of Function definitions", + "markdownDescription": "List of Function definitions\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Functions" + ], + "additionalProperties": false, + "markdownDescription": "Schema of Functions\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "InferenceConfiguration": { "type": "object", "description": "Configuration for inference in prompt configuration", @@ -218,6 +293,43 @@ ], "markdownDescription": "State of the knowledge base; whether it is enabled or disabled\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" }, + "ParameterDetail": { + "type": "object", + "description": "Parameter detail", + "properties": { + "Description": { + "type": "string", + "maxLength": 500, + "minLength": 1, + "description": "Description of function parameter.", + "markdownDescription": "Description of function parameter.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 500 \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/Type" + }, + "Required": { + "type": "boolean", + "description": "Information about if a parameter is required for function call. Default to false.", + "markdownDescription": "Information about if a parameter is required for function call. Default to false.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + } + }, + "required": [ + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Parameter detail\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ParameterMap": { + "type": "object", + "description": "A map of parameter name and detail", + "patternProperties": { + "^([0-9a-zA-Z][_-]?){1,100}$": { + "$ref": "#/definitions/ParameterDetail" + } + }, + "additionalProperties": false, + "markdownDescription": "A map of parameter name and detail\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "PromptConfiguration": { "type": "object", "description": "BasePromptConfiguration per Prompt Type.", @@ -331,6 +443,18 @@ }, "additionalProperties": false, "markdownDescription": "A map of tag keys and values\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Type": { + "type": "string", + "description": "Parameter Type", + "enum": [ + "string", + "number", + "integer", + "boolean", + "array" + ], + "markdownDescription": "Parameter Type\n\n---\n\nRequired: No \nType: String \nAllowed Values: string | number | integer | boolean | array \nUpdate requires: No interruption" } }, "properties": { diff --git a/server/schema/resources/aws-bedrock-datasource.json b/server/schema/resources/aws-bedrock-datasource.json index 2af01960..c9c51f6f 100644 --- a/server/schema/resources/aws-bedrock-datasource.json +++ b/server/schema/resources/aws-bedrock-datasource.json @@ -52,9 +52,10 @@ "description": "The status of a data source.", "enum": [ "AVAILABLE", - "DELETING" + "DELETING", + "DELETE_UNSUCCESSFUL" ], - "markdownDescription": "The status of a data source.\n\n---\n\nRequired: No \nType: String \nAllowed Values: AVAILABLE | DELETING \nUpdate requires: No interruption" + "markdownDescription": "The status of a data source.\n\n---\n\nRequired: No \nType: String \nAllowed Values: AVAILABLE | DELETING | DELETE_UNSUCCESSFUL \nUpdate requires: No interruption" }, "DataSourceType": { "type": "string", @@ -64,6 +65,15 @@ ], "markdownDescription": "The type of the data source location.\n\n---\n\nRequired: No \nType: String \nAllowed Values: S3 \nUpdate requires: No interruption" }, + "DataDeletionPolicy": { + "type": "string", + "description": "The deletion policy for the data source.", + "enum": [ + "RETAIN", + "DELETE" + ], + "markdownDescription": "The deletion policy for the data source.\n\n---\n\nRequired: No \nType: String \nAllowed Values: RETAIN | DELETE \nUpdate requires: No interruption" + }, "FixedSizeChunkingConfiguration": { "type": "object", "description": "Configurations for when you choose fixed-size chunking. If you set the chunkingStrategy as NONE, exclude this field.", @@ -114,6 +124,13 @@ "description": "A list of S3 prefixes that define the object containing the data sources.", "insertionOrder": false, "markdownDescription": "A list of S3 prefixes that define the object containing the data sources.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "BucketOwnerAccountId": { + "type": "string", + "maxLength": 12, + "minLength": 12, + "description": "The account ID for the owner of the S3 bucket.", + "markdownDescription": "The account ID for the owner of the S3 bucket.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 12 \nMaximum Length: 12 \nPattern: ^[0-9]{12}$ \nUpdate requires: No interruption" } }, "required": [ @@ -175,6 +192,9 @@ }, "VectorIngestionConfiguration": { "$ref": "#/definitions/VectorIngestionConfiguration" + }, + "DataDeletionPolicy": { + "$ref": "#/definitions/DataDeletionPolicy" } }, "required": [ @@ -186,7 +206,8 @@ "/properties/DataSourceId", "/properties/DataSourceStatus", "/properties/CreatedAt", - "/properties/UpdatedAt" + "/properties/UpdatedAt", + "/properties/FailureReasons" ], "createOnlyProperties": [ "/properties/KnowledgeBaseId", @@ -260,6 +281,19 @@ "type": "string", "description": "The time at which the knowledge base was last updated.", "markdownDescription": "The time at which the knowledge base was last updated.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "FailureReasons": { + "type": "array", + "items": { + "type": "string", + "maxLength": 2048, + "description": "Failure Reason for Error.", + "markdownDescription": "Failure Reason for Error.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 2048 \nUpdate requires: No interruption" + }, + "maxItems": 2048, + "description": "The details of the failure reasons related to the data source.", + "insertionOrder": false, + "markdownDescription": "The details of the failure reasons related to the data source.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-guardrailversion.json b/server/schema/resources/aws-bedrock-guardrailversion.json new file mode 100644 index 00000000..e5926fd3 --- /dev/null +++ b/server/schema/resources/aws-bedrock-guardrailversion.json @@ -0,0 +1,85 @@ +{ + "typeName": "AWS::Bedrock::GuardrailVersion", + "description": "Definition of AWS::Bedrock::GuardrailVersion Resource Type", + "definitions": {}, + "properties": { + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "description": "Description of the Guardrail version", + "markdownDescription": "Description of the Guardrail version\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: Replacement" + }, + "GuardrailIdentifier": { + "type": "string", + "maxLength": 2048, + "description": "Identifier (GuardrailId or GuardrailArn) for the guardrail", + "markdownDescription": "Identifier (GuardrailId or GuardrailArn) for the guardrail\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 2048 \nPattern: ^(([a-z0-9]+)|(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+))$ \nUpdate requires: Replacement" + } + }, + "required": [ + "GuardrailIdentifier" + ], + "readOnlyProperties": [ + "/properties/GuardrailArn", + "/properties/GuardrailId", + "/properties/Version" + ], + "createOnlyProperties": [ + "/properties/Description", + "/properties/GuardrailIdentifier" + ], + "writeOnlyProperties": [ + "/properties/GuardrailIdentifier" + ], + "primaryIdentifier": [ + "/properties/GuardrailId", + "/properties/Version" + ], + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateGuardrailVersion", + "bedrock:GetGuardrail", + "kms:CreateGrant", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "bedrock:GetGuardrail", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteGuardrail", + "bedrock:GetGuardrail", + "kms:RetireGrant" + ] + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false, + "attributes": { + "GuardrailArn": { + "type": "string", + "maxLength": 2048, + "description": "Arn representation for the guardrail", + "markdownDescription": "Arn representation for the guardrail\n\n---\n\nRequired: No \nType: String \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:guardrail/[a-z0-9]+$ \nUpdate requires: No interruption" + }, + "GuardrailId": { + "type": "string", + "maxLength": 64, + "description": "Unique id for the guardrail", + "markdownDescription": "Unique id for the guardrail\n\n---\n\nRequired: No \nType: String \nMaximum Length: 64 \nPattern: ^[a-z0-9]+$ \nUpdate requires: No interruption" + }, + "Version": { + "type": "string", + "description": "Guardrail version", + "markdownDescription": "Guardrail version\n\n---\n\nRequired: No \nType: String \nPattern: ^[1-9][0-9]{0,7}$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-knowledgebase.json b/server/schema/resources/aws-bedrock-knowledgebase.json index 46c6f794..2692770d 100644 --- a/server/schema/resources/aws-bedrock-knowledgebase.json +++ b/server/schema/resources/aws-bedrock-knowledgebase.json @@ -28,9 +28,10 @@ "ACTIVE", "DELETING", "UPDATING", - "FAILED" + "FAILED", + "DELETE_UNSUCCESSFUL" ], - "markdownDescription": "The status of a knowledge base.\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | ACTIVE | DELETING | UPDATING | FAILED \nUpdate requires: No interruption" + "markdownDescription": "The status of a knowledge base.\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | ACTIVE | DELETING | UPDATING | FAILED | DELETE_UNSUCCESSFUL \nUpdate requires: No interruption" }, "KnowledgeBaseStorageType": { "type": "string", diff --git a/server/schema/resources/aws-budgets-budget.json b/server/schema/resources/aws-budgets-budget.json index aa3f01a6..e839f2f2 100644 --- a/server/schema/resources/aws-budgets-budget.json +++ b/server/schema/resources/aws-budgets-budget.json @@ -3,6 +3,9 @@ "description": "Resource Type definition for AWS::Budgets::Budget", "additionalProperties": false, "properties": { + "Budget": { + "$ref": "#/definitions/BudgetData" + }, "NotificationsWithSubscribers": { "type": "array", "uniqueItems": false, @@ -11,8 +14,13 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" }, - "Budget": { - "$ref": "#/definitions/BudgetData" + "ResourceTags": { + "type": "array", + "uniqueItems": false, + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "definitions": { @@ -30,6 +38,24 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "ResourceTag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Value": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Key": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "Key" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "Subscriber": { "type": "object", "additionalProperties": false, diff --git a/server/schema/resources/aws-budgets-budgetsaction.json b/server/schema/resources/aws-budgets-budgetsaction.json index e540a0a9..d80d3a81 100644 --- a/server/schema/resources/aws-budgets-budgetsaction.json +++ b/server/schema/resources/aws-budgets-budgetsaction.json @@ -167,6 +167,25 @@ }, "additionalProperties": false, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ResourceTag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { @@ -217,6 +236,13 @@ }, "Definition": { "$ref": "#/definitions/Definition" + }, + "ResourceTags": { + "type": "array", + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, @@ -244,18 +270,23 @@ "create": { "permissions": [ "budgets:CreateBudgetAction", - "iam:PassRole" + "iam:PassRole", + "budgets:TagResource" ] }, "read": { "permissions": [ - "budgets:DescribeBudgetAction" + "budgets:DescribeBudgetAction", + "budgets:ListTagsForResource" ] }, "update": { "permissions": [ "budgets:UpdateBudgetAction", - "iam:PassRole" + "iam:PassRole", + "budgets:TagResource", + "budgets:UntagResource", + "budgets:ListTagsForResource" ] }, "delete": { @@ -270,6 +301,13 @@ ] } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/ResourceTags" + }, "attributes": { "ActionId": { "type": "string", diff --git a/server/schema/resources/aws-connectcampaigns-campaign.json b/server/schema/resources/aws-connectcampaigns-campaign.json index 6fb7e798..c05bf7b4 100644 --- a/server/schema/resources/aws-connectcampaigns-campaign.json +++ b/server/schema/resources/aws-connectcampaigns-campaign.json @@ -142,6 +142,11 @@ "type": "boolean", "description": "Flag to decided whether outbound calls should have answering machine detection enabled or not", "markdownDescription": "Flag to decided whether outbound calls should have answering machine detection enabled or not\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + }, + "AwaitAnswerMachinePrompt": { + "type": "boolean", + "description": "Enables detection of prompts (e.g., beep after after a voicemail greeting)", + "markdownDescription": "Enables detection of prompts (e.g., beep after after a voicemail greeting)\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, "required": [ diff --git a/server/schema/resources/aws-datasync-task.json b/server/schema/resources/aws-datasync-task.json index ce67a87b..c2715ce9 100644 --- a/server/schema/resources/aws-datasync-task.json +++ b/server/schema/resources/aws-datasync-task.json @@ -283,12 +283,18 @@ "description": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location", "type": "string", "maxLength": 256, - "markdownDescription": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nPattern: ^[a-zA-Z0-9\\ \\_\\*\\?\\,\\|\\^\\-\\/\\#\\s\\(\\)\\+]*$ \nUpdate requires: No interruption" + "markdownDescription": "A cron expression that specifies when AWS DataSync initiates a scheduled transfer from a source to a destination location\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^[a-zA-Z0-9\\ \\_\\*\\?\\,\\|\\^\\-\\/\\#\\s\\(\\)\\+]*$ \nUpdate requires: No interruption" + }, + "Status": { + "description": "Specifies status of a schedule.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "Specifies status of a schedule.\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" } }, - "required": [ - "ScheduleExpression" - ], "markdownDescription": "Specifies the schedule you want your task to use for repeated executions.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Options": { diff --git a/server/schema/resources/aws-directoryservice-simplead.json b/server/schema/resources/aws-directoryservice-simplead.json index 31d6783d..39205c10 100644 --- a/server/schema/resources/aws-directoryservice-simplead.json +++ b/server/schema/resources/aws-directoryservice-simplead.json @@ -120,7 +120,9 @@ "ec2:DescribeNetworkInterfaces", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", - "ec2:CreateTags" + "ec2:CreateTags", + "ec2:RevokeSecurityGroupIngress", + "ec2:RevokeSecurityGroupEgress" ], "timeoutInMinutes": 60 }, diff --git a/server/schema/resources/aws-dms-dataprovider.json b/server/schema/resources/aws-dms-dataprovider.json index 71c3b628..5e8781a5 100644 --- a/server/schema/resources/aws-dms-dataprovider.json +++ b/server/schema/resources/aws-dms-dataprovider.json @@ -37,10 +37,10 @@ "enum": [ "none", "require", - "verify_ca", - "verify_full" + "verify-ca", + "verify-full" ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: none | require | verify_ca | verify_full \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: none | require | verify-ca | verify-full \nUpdate requires: No interruption" } }, "properties": { @@ -87,136 +87,186 @@ "Settings": { "description": "The property identifies the exact type of settings for the data provider.", "type": "object", - "anyOf": [ - { + "properties": { + "PostgreSqlSettings": { "description": "PostgreSqlSettings property identifier.", "type": "object", - "additionalProperties": false, "properties": { - "PostgreSqlSettings": { + "ServerName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Port": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "DatabaseName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "SslMode": { "type": "object", - "additionalProperties": false, - "properties": { - "ServerName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "DatabaseName": { - "type": "string" - }, - "SslMode": { - "type": "object", - "$ref": "#/definitions/DmsSslModeValue" - }, - "CertificateArn": { - "type": "string" - } - } + "$ref": "#/definitions/DmsSslModeValue", + "markdownDescription": "\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" + }, + "CertificateArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } - } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "additionalProperties": false, + "markdownDescription": "PostgreSqlSettings property identifier.\n\n---\n\nRequired: Conditional \nUpdate requires: No interruption" }, - { + "MySqlSettings": { "description": "MySqlSettings property identifier.", "type": "object", - "additionalProperties": false, "properties": { - "MySqlSettings": { + "ServerName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Port": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "SslMode": { "type": "object", - "additionalProperties": false, - "properties": { - "ServerName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "SslMode": { - "type": "object", - "$ref": "#/definitions/DmsSslModeValue" - }, - "CertificateArn": { - "type": "string" - } - } + "$ref": "#/definitions/DmsSslModeValue", + "markdownDescription": "\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" + }, + "CertificateArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } - } + }, + "required": [ + "ServerName", + "Port", + "SslMode" + ], + "additionalProperties": false, + "markdownDescription": "MySqlSettings property identifier.\n\n---\n\nRequired: Conditional \nUpdate requires: No interruption" }, - { + "OracleSettings": { "description": "OracleSettings property identifier.", "type": "object", - "additionalProperties": false, "properties": { - "OracleSettings": { + "ServerName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Port": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "DatabaseName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "SslMode": { "type": "object", - "additionalProperties": false, - "properties": { - "ServerName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "DatabaseName": { - "type": "string" - }, - "SslMode": { - "type": "object", - "$ref": "#/definitions/DmsSslModeValue" - }, - "CertificateArn": { - "type": "string" - }, - "AsmServer": { - "type": "string" - }, - "SecretsManagerOracleAsmSecretId": { - "type": "string" - }, - "SecretsManagerOracleAsmAccessRoleArn": { - "type": "string" - }, - "SecretsManagerSecurityDbEncryptionSecretId": { - "type": "string" - }, - "SecretsManagerSecurityDbEncryptionAccessRoleArn": { - "type": "string" - } - } + "$ref": "#/definitions/DmsSslModeValue", + "markdownDescription": "\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" + }, + "CertificateArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "AsmServer": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SecretsManagerOracleAsmSecretId": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SecretsManagerOracleAsmAccessRoleArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SecretsManagerSecurityDbEncryptionSecretId": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SecretsManagerSecurityDbEncryptionAccessRoleArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } - } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "additionalProperties": false, + "markdownDescription": "OracleSettings property identifier.\n\n---\n\nRequired: Conditional \nUpdate requires: No interruption" }, - { + "MicrosoftSqlServerSettings": { "description": "MicrosoftSqlServerSettings property identifier.", "type": "object", - "additionalProperties": false, "properties": { - "MicrosoftSqlServerSettings": { + "ServerName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Port": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "DatabaseName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "SslMode": { "type": "object", - "additionalProperties": false, - "properties": { - "ServerName": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "DatabaseName": { - "type": "string" - }, - "SslMode": { - "type": "object", - "$ref": "#/definitions/DmsSslModeValue" - }, - "CertificateArn": { - "type": "string" - } - } + "$ref": "#/definitions/DmsSslModeValue", + "markdownDescription": "\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" + }, + "CertificateArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } - } + }, + "required": [ + "ServerName", + "Port", + "SslMode", + "DatabaseName" + ], + "additionalProperties": false, + "markdownDescription": "MicrosoftSqlServerSettings property identifier.\n\n---\n\nRequired: Conditional \nUpdate requires: No interruption" + } + }, + "anyOf": [ + { + "required": [ + "PostgreSqlSettings" + ] + }, + { + "required": [ + "MySqlSettings" + ] + }, + { + "required": [ + "OracleSettings" + ] + }, + { + "required": [ + "MicrosoftSqlServerSettings" + ] } ], + "additionalProperties": false, "markdownDescription": "The property identifies the exact type of settings for the data provider.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Tags": { diff --git a/server/schema/resources/aws-dynamodb-globaltable.json b/server/schema/resources/aws-dynamodb-globaltable.json index 8fac526c..4166ccdc 100644 --- a/server/schema/resources/aws-dynamodb-globaltable.json +++ b/server/schema/resources/aws-dynamodb-globaltable.json @@ -1,206 +1,134 @@ { - "handlers": { - "read": { - "permissions": [ - "dynamodb:Describe*", - "dynamodb:GetResourcePolicy", - "application-autoscaling:Describe*", - "cloudwatch:PutMetricData", - "dynamodb:ListTagsOfResource", - "kms:DescribeKey" - ] + "typeName": "AWS::DynamoDB::GlobalTable", + "description": "Version: None. Resource Type definition for AWS::DynamoDB::GlobalTable", + "additionalProperties": false, + "properties": { + "AttributeDefinitions": { + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" }, - "create": { - "permissions": [ - "dynamodb:CreateTable", - "dynamodb:CreateTableReplica", - "dynamodb:Describe*", - "dynamodb:UpdateTimeToLive", - "dynamodb:UpdateContributorInsights", - "dynamodb:UpdateContinuousBackups", - "dynamodb:ListTagsOfResource", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:UpdateItem", - "dynamodb:PutItem", - "dynamodb:GetItem", - "dynamodb:DeleteItem", - "dynamodb:BatchWriteItem", - "dynamodb:TagResource", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:UpdateTableReplicaAutoScaling", - "dynamodb:TagResource", - "dynamodb:GetResourcePolicy", - "dynamodb:PutResourcePolicy", - "application-autoscaling:DeleteScalingPolicy", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:Describe*", - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:PutScheduledAction", - "application-autoscaling:RegisterScalableTarget", - "kinesis:ListStreams", - "kinesis:DescribeStream", - "kinesis:PutRecords", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:Decrypt", - "kms:RevokeGrant", - "cloudwatch:PutMetricData", - "iam:CreateServiceLinkedRole" - ] + "BillingMode": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "update": { - "permissions": [ - "dynamodb:Describe*", - "dynamodb:CreateTableReplica", - "dynamodb:UpdateTable", - "dynamodb:UpdateTimeToLive", - "dynamodb:UpdateContinuousBackups", - "dynamodb:UpdateContributorInsights", - "dynamodb:ListTagsOfResource", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:UpdateItem", - "dynamodb:PutItem", - "dynamodb:GetItem", - "dynamodb:DeleteItem", - "dynamodb:BatchWriteItem", - "dynamodb:DeleteTable", - "dynamodb:DeleteTableReplica", - "dynamodb:UpdateItem", - "dynamodb:TagResource", - "dynamodb:UntagResource", - "dynamodb:EnableKinesisStreamingDestination", - "dynamodb:DisableKinesisStreamingDestination", - "dynamodb:UpdateTableReplicaAutoScaling", - "dynamodb:UpdateKinesisStreamingDestination", - "dynamodb:GetResourcePolicy", - "dynamodb:PutResourcePolicy", - "dynamodb:DeleteResourcePolicy", - "application-autoscaling:DeleteScalingPolicy", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:Describe*", - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:PutScheduledAction", - "application-autoscaling:RegisterScalableTarget", - "kinesis:ListStreams", - "kinesis:DescribeStream", - "kinesis:PutRecords", - "kms:CreateGrant", - "kms:DescribeKey", - "kms:ListAliases", - "kms:RevokeGrant", - "cloudwatch:PutMetricData" - ], - "timeoutInMinutes": 1200 + "GlobalSecondaryIndexes": { + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "list": { - "permissions": [ - "dynamodb:ListTables", - "cloudwatch:PutMetricData" - ] + "KeySchema": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/KeySchema" + }, + "minItems": 1, + "maxItems": 2, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: Replacement" }, - "delete": { - "permissions": [ - "dynamodb:Describe*", - "dynamodb:DeleteTable", - "application-autoscaling:DeleteScalingPolicy", - "application-autoscaling:DeleteScheduledAction", - "application-autoscaling:DeregisterScalableTarget", - "application-autoscaling:Describe*", - "application-autoscaling:PutScalingPolicy", - "application-autoscaling:PutScheduledAction", - "application-autoscaling:RegisterScalableTarget" - ] + "LocalSecondaryIndexes": { + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + }, + "WriteOnDemandThroughputSettings": { + "$ref": "#/definitions/WriteOnDemandThroughputSettings" + }, + "Replicas": { + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" } }, - "typeName": "AWS::DynamoDB::GlobalTable", - "readOnlyProperties": [ - "/properties/Arn", - "/properties/StreamArn", - "/properties/TableId" - ], - "description": "Version: None. Resource Type definition for AWS::DynamoDB::GlobalTable", - "additionalIdentifiers": [ - [ - "/properties/Arn" - ], - [ - "/properties/StreamArn" - ] - ], - "writeOnlyProperties": [ - "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", - "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", - "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", - "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" - ], - "createOnlyProperties": [ - "/properties/LocalSecondaryIndexes", - "/properties/TableName", - "/properties/KeySchema" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/TableName" - ], "definitions": { - "LocalSecondaryIndex": { - "additionalProperties": false, + "StreamSpecification": { "type": "object", + "additionalProperties": false, "properties": { - "IndexName": { - "minLength": 3, + "StreamViewType": { "type": "string", - "maxLength": 255, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \nMaximum Length: 255 \nUpdate requires: No interruption" - }, - "Projection": { - "$ref": "#/definitions/Projection" - }, - "KeySchema": { - "maxItems": 2, - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/KeySchema" - }, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "IndexName", - "Projection", - "KeySchema" + "StreamViewType" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "SSESpecification": { + "ResourcePolicy": { + "type": "object", "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object", + "markdownDescription": "\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" + } + }, + "required": [ + "PolicyDocument" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ReplicaStreamSpecification": { "type": "object", + "additionalProperties": false, "properties": { - "SSEEnabled": { - "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" - }, - "SSEType": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" } }, "required": [ - "SSEEnabled" + "ResourcePolicy" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "KinesisStreamSpecification": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { + "StreamArn": { + "type": "string", + "relationshipRef": { + "typeName": "AWS::Kinesis::Stream", + "propertyPath": "/properties/Arn" + }, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, "ApproximateCreationDateTimePrecision": { "type": "string", "enum": [ @@ -208,14 +136,6 @@ "MILLISECOND" ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: MICROSECOND | MILLISECOND \nUpdate requires: No interruption" - }, - "StreamArn": { - "relationshipRef": { - "typeName": "AWS::Kinesis::Stream", - "propertyPath": "/properties/Arn" - }, - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ @@ -223,71 +143,60 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "StreamSpecification": { - "additionalProperties": false, + "KeySchema": { "type": "object", + "additionalProperties": false, "properties": { - "StreamViewType": { + "AttributeName": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nUpdate requires: No interruption" + }, + "KeyType": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "StreamViewType" + "KeyType", + "AttributeName" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ContributorInsightsSpecification": { - "additionalProperties": false, + "PointInTimeRecoverySpecification": { "type": "object", + "additionalProperties": false, "properties": { - "Enabled": { + "PointInTimeRecoveryEnabled": { "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, - "required": [ - "Enabled" - ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "ReplicaSpecification": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { - "SSESpecification": { - "$ref": "#/definitions/ReplicaSSESpecification" - }, - "KinesisStreamSpecification": { - "$ref": "#/definitions/KinesisStreamSpecification" - }, - "ContributorInsightsSpecification": { - "$ref": "#/definitions/ContributorInsightsSpecification" - }, - "PointInTimeRecoverySpecification": { - "$ref": "#/definitions/PointInTimeRecoverySpecification" - }, - "ReplicaStreamSpecification": { - "$ref": "#/definitions/ReplicaStreamSpecification" + "Region": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "GlobalSecondaryIndexes": { + "type": "array", "uniqueItems": true, "insertionOrder": false, - "type": "array", "items": { "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" }, "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" - }, - "ResourcePolicy": { - "$ref": "#/definitions/ResourcePolicy" + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" }, - "ReadProvisionedThroughputSettings": { - "$ref": "#/definitions/ReadProvisionedThroughputSettings" + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" }, "TableClass": { "type": "string", @@ -297,181 +206,115 @@ "type": "boolean", "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, "Tags": { - "uniqueItems": true, - "insertionOrder": false, "type": "array", + "insertionOrder": false, + "uniqueItems": true, "items": { "$ref": "#/definitions/Tag" }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - } - }, - "required": [ - "Region" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "CapacityAutoScalingSettings": { - "additionalProperties": false, - "type": "object", - "properties": { - "MinCapacity": { - "type": "integer", - "minimum": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" }, - "SeedCapacity": { - "type": "integer", - "minimum": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "TargetTrackingScalingPolicyConfiguration": { - "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" }, - "MaxCapacity": { - "type": "integer", - "minimum": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" - } - }, - "required": [ - "MinCapacity", - "MaxCapacity", - "TargetTrackingScalingPolicyConfiguration" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "AttributeDefinition": { - "additionalProperties": false, - "type": "object", - "properties": { - "AttributeType": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "ReadOnDemandThroughputSettings": { + "$ref": "#/definitions/ReadOnDemandThroughputSettings" }, - "AttributeName": { - "minLength": 1, - "type": "string", - "maxLength": 255, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nUpdate requires: No interruption" - } - }, - "required": [ - "AttributeName", - "AttributeType" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "Projection": { - "additionalProperties": false, - "type": "object", - "properties": { - "NonKeyAttributes": { - "maxItems": 20, - "uniqueItems": true, - "insertionOrder": false, - "type": "array", - "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" + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" }, - "ProjectionType": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" } }, + "required": [ + "Region" + ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "PointInTimeRecoverySpecification": { - "additionalProperties": false, + "TimeToLiveSpecification": { "type": "object", - "properties": { - "PointInTimeRecoveryEnabled": { - "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - } - }, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "ReplicaGlobalSecondaryIndexSpecification": { "additionalProperties": false, - "type": "object", "properties": { - "IndexName": { - "minLength": 3, + "AttributeName": { "type": "string", - "maxLength": 255, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \nMaximum Length: 255 \nUpdate requires: No interruption" - }, - "ContributorInsightsSpecification": { - "$ref": "#/definitions/ContributorInsightsSpecification" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "ReadProvisionedThroughputSettings": { - "$ref": "#/definitions/ReadProvisionedThroughputSettings" + "Enabled": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" } }, "required": [ - "IndexName" + "Enabled" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "TargetTrackingScalingPolicyConfiguration": { - "additionalProperties": false, + "LocalSecondaryIndex": { "type": "object", + "additionalProperties": false, "properties": { - "ScaleOutCooldown": { - "type": "integer", - "minimum": 0, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "TargetValue": { - "format": "double", - "type": "number", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + "IndexName": { + "type": "string", + "minLength": 3, + "maxLength": 255, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \nMaximum Length: 255 \nUpdate requires: No interruption" }, - "DisableScaleIn": { - "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "KeySchema": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/definitions/KeySchema" + }, + "maxItems": 2, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" }, - "ScaleInCooldown": { - "type": "integer", - "minimum": 0, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "Projection": { + "$ref": "#/definitions/Projection" } }, "required": [ - "TargetValue" + "IndexName", + "Projection", + "KeySchema" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "GlobalSecondaryIndex": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "IndexName": { - "minLength": 3, "type": "string", + "minLength": 3, "maxLength": 255, "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \nMaximum Length: 255 \nUpdate requires: No interruption" }, - "Projection": { - "$ref": "#/definitions/Projection" - }, "KeySchema": { - "minItems": 1, - "maxItems": 2, - "uniqueItems": true, "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/KeySchema" }, + "minItems": 1, + "maxItems": 2, "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" }, + "Projection": { + "$ref": "#/definitions/Projection" + }, "WriteProvisionedThroughputSettings": { "$ref": "#/definitions/WriteProvisionedThroughputSettings" + }, + "WriteOnDemandThroughputSettings": { + "$ref": "#/definitions/WriteOnDemandThroughputSettings" } }, "required": [ @@ -481,34 +324,30 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "WriteProvisionedThroughputSettings": { - "additionalProperties": false, + "SSESpecification": { "type": "object", - "properties": { - "WriteCapacityAutoScalingSettings": { - "$ref": "#/definitions/CapacityAutoScalingSettings" - } - }, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "ReplicaStreamSpecification": { "additionalProperties": false, - "type": "object", "properties": { - "ResourcePolicy": { - "$ref": "#/definitions/ResourcePolicy" + "SSEEnabled": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + }, + "SSEType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, "required": [ - "ResourcePolicy" + "SSEEnabled" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "ReplicaSSESpecification": { - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "KMSMasterKeyId": { + "type": "string", "anyOf": [ { "relationshipRef": { @@ -529,7 +368,6 @@ } } ], - "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, @@ -538,90 +376,212 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ResourcePolicy": { - "additionalProperties": false, + "AttributeDefinition": { "type": "object", + "additionalProperties": false, "properties": { - "PolicyDocument": { - "type": "object", - "markdownDescription": "\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" + "AttributeName": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nUpdate requires: No interruption" + }, + "AttributeType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "PolicyDocument" + "AttributeName", + "AttributeType" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "KeySchema": { - "additionalProperties": false, + "Tag": { "type": "object", + "additionalProperties": false, "properties": { - "KeyType": { + "Key": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "AttributeName": { - "minLength": 1, + "Value": { "type": "string", - "maxLength": 255, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "KeyType", - "AttributeName" + "Value", + "Key" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Tag": { + "Projection": { + "type": "object", "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 20, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "ProjectionType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ReplicaGlobalSecondaryIndexSpecification": { "type": "object", + "additionalProperties": false, "properties": { - "Value": { + "IndexName": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "minLength": 3, + "maxLength": 255, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \nMaximum Length: 255 \nUpdate requires: No interruption" }, - "Key": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "ReadOnDemandThroughputSettings": { + "$ref": "#/definitions/ReadOnDemandThroughputSettings" } }, "required": [ - "Value", - "Key" + "IndexName" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ReadProvisionedThroughputSettings": { + "ContributorInsightsSpecification": { + "type": "object", "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + } + }, + "required": [ + "Enabled" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ReadProvisionedThroughputSettings": { "type": "object", + "additionalProperties": false, "properties": { "ReadCapacityUnits": { "type": "integer", "minimum": 1, "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "ReadCapacityAutoScalingSettings": { - "$ref": "#/definitions/CapacityAutoScalingSettings" + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "WriteProvisionedThroughputSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ReadOnDemandThroughputSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxReadRequestUnits": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "WriteOnDemandThroughputSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "MaxWriteRequestUnits": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "CapacityAutoScalingSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "MinCapacity": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "MaxCapacity": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "SeedCapacity": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" } }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "TimeToLiveSpecification": { - "additionalProperties": false, + "TargetTrackingScalingPolicyConfiguration": { "type": "object", + "additionalProperties": false, "properties": { - "Enabled": { + "DisableScaleIn": { "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "AttributeName": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "ScaleInCooldown": { + "type": "integer", + "minimum": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "ScaleOutCooldown": { + "type": "integer", + "minimum": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "TargetValue": { + "type": "number", + "format": "double", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" } }, "required": [ - "Enabled" + "TargetValue" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } @@ -631,86 +591,162 @@ "AttributeDefinitions", "Replicas" ], - "properties": { - "SSESpecification": { - "$ref": "#/definitions/SSESpecification" - }, - "StreamSpecification": { - "$ref": "#/definitions/StreamSpecification" - }, - "Replicas": { - "minItems": 1, - "uniqueItems": true, - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/ReplicaSpecification" - }, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "WriteProvisionedThroughputSettings": { - "$ref": "#/definitions/WriteProvisionedThroughputSettings" - }, - "TableName": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" - }, - "AttributeDefinitions": { - "minItems": 1, - "uniqueItems": true, - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/AttributeDefinition" - }, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "BillingMode": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "primaryIdentifier": [ + "/properties/TableName" + ], + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ], + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] }, - "GlobalSecondaryIndexes": { - "uniqueItems": true, - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/GlobalSecondaryIndex" - }, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] }, - "KeySchema": { - "minItems": 1, - "maxItems": 2, - "uniqueItems": true, - "type": "array", - "items": { - "$ref": "#/definitions/KeySchema" - }, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: Replacement" + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 }, - "LocalSecondaryIndexes": { - "uniqueItems": true, - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/LocalSecondaryIndex" - }, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] }, - "TimeToLiveSpecification": { - "$ref": "#/definitions/TimeToLiveSpecification" + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] } }, "attributes": { - "TableId": { + "Arn": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Arn": { + "StreamArn": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "StreamArn": { + "TableId": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } diff --git a/server/schema/resources/aws-dynamodb-table.json b/server/schema/resources/aws-dynamodb-table.json index d6cc502d..7959f517 100644 --- a/server/schema/resources/aws-dynamodb-table.json +++ b/server/schema/resources/aws-dynamodb-table.json @@ -125,6 +125,24 @@ ], "additionalProperties": false, "definitions": { + "OnDemandThroughput": { + "description": "", + "additionalProperties": false, + "type": "object", + "properties": { + "MaxReadRequestUnits": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "MaxWriteRequestUnits": { + "type": "integer", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "LocalSecondaryIndex": { "description": "Represents the properties of a local secondary index. A local secondary index can only be created when its parent table is created.", "additionalProperties": false, @@ -427,6 +445,11 @@ "type": "string", "markdownDescription": "The name of the global secondary index. The name must be unique among all other indexes on this table.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, + "OnDemandThroughput": { + "description": "", + "$ref": "#/definitions/OnDemandThroughput", + "markdownDescription": "\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, "ContributorInsightsSpecification": { "description": "The settings used to enable or disable CloudWatch Contributor Insights for the specified global secondary index.", "$ref": "#/definitions/ContributorInsightsSpecification", @@ -606,6 +629,11 @@ } }, "properties": { + "OnDemandThroughput": { + "description": "", + "$ref": "#/definitions/OnDemandThroughput", + "markdownDescription": "\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, "SSESpecification": { "description": "Specifies the settings to enable server-side encryption.", "$ref": "#/definitions/SSESpecification", diff --git a/server/schema/resources/aws-ec2-customergateway.json b/server/schema/resources/aws-ec2-customergateway.json index 6711b1cb..22af03a0 100644 --- a/server/schema/resources/aws-ec2-customergateway.json +++ b/server/schema/resources/aws-ec2-customergateway.json @@ -47,7 +47,6 @@ "createOnlyProperties": [ "/properties/CertificateArn", "/properties/BgpAsn", - "/properties/BgpAsnExtended", "/properties/Type", "/properties/IpAddress", "/properties/DeviceName" @@ -91,14 +90,6 @@ "type": "string", "markdownDescription": "IPv4 address for the customer gateway device's outside interface. The address must be static.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, - "BgpAsnExtended": { - "multipleOf": 1, - "maximum": 4294967294, - "description": "", - "type": "number", - "minimum": 2147483648, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Number \nUpdate requires: Replacement" - }, "BgpAsn": { "default": 65000, "description": "For devices that support BGP, the customer gateway's BGP ASN.\n Default: 65000", diff --git a/server/schema/resources/aws-ec2-instance.json b/server/schema/resources/aws-ec2-instance.json index 35295987..714607d7 100644 --- a/server/schema/resources/aws-ec2-instance.json +++ b/server/schema/resources/aws-ec2-instance.json @@ -14,7 +14,8 @@ "/properties/PublicDnsName", "/properties/PublicIp", "/properties/PrivateDnsName", - "/properties/VpcId" + "/properties/VpcId", + "/properties/State" ], "description": "Resource Type definition for AWS::EC2::Instance", "createOnlyProperties": [ @@ -487,6 +488,24 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "State": { + "description": "The current state of the instance", + "additionalProperties": false, + "type": "object", + "properties": { + "Code": { + "description": "The state of the instance as a 16-bit unsigned integer.", + "type": "string", + "markdownDescription": "The state of the instance as a 16-bit unsigned integer.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Name": { + "description": "The current state of the instance.", + "type": "string", + "markdownDescription": "The current state of the instance.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The current state of the instance\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "Ebs": { "additionalProperties": false, "type": "object", @@ -908,6 +927,12 @@ "description": "The ID of the VPC that the instance is running in.", "type": "string", "markdownDescription": "The ID of the VPC that the instance is running in.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "State": { + "description": "The current state of the instance.", + "type": "object", + "$ref": "#/definitions/State", + "markdownDescription": "The current state of the instance.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-ec2-keypair.json b/server/schema/resources/aws-ec2-keypair.json index 3f925ca5..4ebcff11 100644 --- a/server/schema/resources/aws-ec2-keypair.json +++ b/server/schema/resources/aws-ec2-keypair.json @@ -1,25 +1,25 @@ { "typeName": "AWS::EC2::KeyPair", - "description": "The AWS::EC2::KeyPair creates an SSH key pair", + "description": "Specifies a key pair for use with an EC2long instance as follows:\n + To import an existing key pair, include the ``PublicKeyMaterial`` property.\n + To create a new key pair, omit the ``PublicKeyMaterial`` property.\n \n When you import an existing key pair, you specify the public key material for the key. We assume that you have the private key material for the key. CFNlong does not create or return the private key material when you import a key pair.\n When you create a new key pair, the private key is saved to SYSlong Parameter Store, using a parameter with the following name: ``/ec2/keypair/{key_pair_id}``. For more information about retrieving private key, and the required permissions, see [Create a key pair using](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-key-pairs.html#create-key-pair-cloudformation) in the *User Guide*.\n When CFN deletes a key pair that was created or imported by a stack, it also deletes the parameter that was used to store the private key material in Parameter Store.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "definitions": { "Tag": { - "description": "A key-value pair to associate with a resource.", + "description": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).", "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 -.", + "description": "The tag key.", "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" + "markdownDescription": "The tag key.\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 -.", + "description": "The tag value.", "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" + "markdownDescription": "The tag value.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ @@ -27,49 +27,49 @@ "Value" ], "additionalProperties": false, - "markdownDescription": "A key-value pair to associate with a resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "Specifies a tag. For more information, see [Add tags to a resource](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#cloudformation-add-tag-specifications).\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { "KeyName": { - "description": "The name of the SSH key pair", + "description": "A unique name for the key pair.\n Constraints: Up to 255 ASCII characters", "type": "string", - "markdownDescription": "The name of the SSH key pair\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "A unique name for the key pair.\n Constraints: Up to 255 ASCII characters\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "KeyType": { - "description": "The crypto-system used to generate a key pair.", + "description": "The type of key pair. Note that ED25519 keys are not supported for Windows instances.\n If the ``PublicKeyMaterial`` property is specified, the ``KeyType`` property is ignored, and the key type is inferred from the ``PublicKeyMaterial`` value.\n Default: ``rsa``", "type": "string", "default": "rsa", "enum": [ "rsa", "ed25519" ], - "markdownDescription": "The crypto-system used to generate a key pair.\n\n---\n\nRequired: No \nType: String \nAllowed Values: rsa | ed25519 \nUpdate requires: Replacement" + "markdownDescription": "The type of key pair. Note that ED25519 keys are not supported for Windows instances.\n If the ``PublicKeyMaterial`` property is specified, the ``KeyType`` property is ignored, and the key type is inferred from the ``PublicKeyMaterial`` value.\n Default: ``rsa``\n\n---\n\nRequired: No \nType: String \nAllowed Values: rsa | ed25519 \nUpdate requires: Replacement" }, "KeyFormat": { - "description": "The format of the private key", + "description": "The format of the key pair.\n Default: ``pem``", "type": "string", "default": "pem", "enum": [ "pem", "ppk" ], - "markdownDescription": "The format of the private key\n\n---\n\nRequired: No \nType: String \nAllowed Values: pem | ppk \nUpdate requires: Replacement" + "markdownDescription": "The format of the key pair.\n Default: ``pem``\n\n---\n\nRequired: No \nType: String \nAllowed Values: pem | ppk \nUpdate requires: Replacement" }, "PublicKeyMaterial": { - "description": "Plain text public key to import", + "description": "The public key material. The ``PublicKeyMaterial`` property is used to import a key pair. If this property is not specified, then a new key pair will be created.", "type": "string", - "markdownDescription": "Plain text public key to import\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The public key material. The ``PublicKeyMaterial`` property is used to import a key pair. If this property is not specified, then a new key pair will be created.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, "Tags": { - "description": "An array of key-value pairs to apply to this resource.", + "description": "The tags to apply to the key pair.", "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: Replacement" + "markdownDescription": "The tags to apply to the key pair.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: Replacement" } }, "additionalProperties": false, @@ -132,14 +132,14 @@ }, "attributes": { "KeyFingerprint": { - "description": "A short sequence of bytes used for public key verification", + "description": "", "type": "string", - "markdownDescription": "A short sequence of bytes used for public key verification\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "KeyPairId": { - "description": "An AWS generated ID for the key pair", + "description": "", "type": "string", - "markdownDescription": "An AWS generated ID for the key pair\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "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-ec2-launchtemplate.json b/server/schema/resources/aws-ec2-launchtemplate.json index e67aecb3..13ac5629 100644 --- a/server/schema/resources/aws-ec2-launchtemplate.json +++ b/server/schema/resources/aws-ec2-launchtemplate.json @@ -41,7 +41,7 @@ "/properties/LaunchTemplateId", "/properties/LatestVersionNumber" ], - "description": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You do not need to specify a name for the launch template. If you do not specify a name, CFN creates the name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*.", + "description": "Specifies the properties for creating a launch template.\n The minimum required properties for specifying a launch template are as follows:\n + You must specify at least one property for the launch template data.\n + You can optionally specify a name for the launch template. If you do not specify a name, CFN creates a name for you.\n \n A launch template can contain some or all of the configuration information to launch an instance. When you launch an instance using a launch template, instance properties that are not specified in the launch template use default values, except the ``ImageId`` property, which has no default value. If you do not specify an AMI ID for the launch template ``ImageId`` property, you must specify an AMI ID for the instance ``ImageId`` property.\n For more information, see [Launch an instance from a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) in the *Amazon EC2 User Guide*.", "writeOnlyProperties": [ "/properties/LaunchTemplateData", "/properties/VersionDescription", @@ -730,9 +730,9 @@ "markdownDescription": "One or more IPv4 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv4PrefixCount`` option.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "DeviceIndex": { - "description": "The device index for the network interface attachment.", + "description": "The device index for the network interface attachment. Each network interface requires a device index. If you create a launch template that includes secondary network interfaces but not a primary network interface, then you must add a primary network interface as a launch parameter when you launch an instance from the template.", "type": "integer", - "markdownDescription": "The device index for the network interface attachment.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "markdownDescription": "The device index for the network interface attachment. Each network interface requires a device index. If you create a launch template that includes secondary network interfaces but not a primary network interface, then you must add a primary network interface as a launch parameter when you launch an instance from the template.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, "PrimaryIpv6": { "description": "The primary IPv6 address of the network interface. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. For more information about primary IPv6 addresses, see [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html).", diff --git a/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json b/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json index e5b7c29a..35f4b417 100644 --- a/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json +++ b/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json @@ -1,17 +1,22 @@ { "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation", "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTableAssociation", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", "additionalProperties": false, "properties": { "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The ID of transit gateway route table.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The ID of transit gateway attachment.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" } }, + "definitions": {}, + "replacementStrategy": "delete_then_create", "required": [ "TransitGatewayRouteTableId", "TransitGatewayAttachmentId" @@ -20,16 +25,49 @@ "/properties/TransitGatewayRouteTableId", "/properties/TransitGatewayAttachmentId" ], - "readOnlyProperties": [ - "/properties/Id" - ], "primaryIdentifier": [ - "/properties/Id" + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" ], - "attributes": { - "Id": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateTransitGatewayRouteTable", + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] } - } + }, + "attributes": {} } \ No newline at end of file diff --git a/server/schema/resources/aws-ec2-transitgatewayroutetablepropagation.json b/server/schema/resources/aws-ec2-transitgatewayroutetablepropagation.json index 797eba76..71dd09e9 100644 --- a/server/schema/resources/aws-ec2-transitgatewayroutetablepropagation.json +++ b/server/schema/resources/aws-ec2-transitgatewayroutetablepropagation.json @@ -1,35 +1,72 @@ { "typeName": "AWS::EC2::TransitGatewayRouteTablePropagation", - "description": "Resource Type definition for AWS::EC2::TransitGatewayRouteTablePropagation", - "additionalProperties": false, + "description": "AWS::EC2::TransitGatewayRouteTablePropagation Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway/aws-ec2-transitgatewayroutetablepropagation", "properties": { "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The ID of transit gateway route table.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, "TransitGatewayAttachmentId": { + "description": "The ID of transit gateway attachment.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The ID of transit gateway attachment.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" } }, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, + "definitions": {}, + "additionalProperties": false, "required": [ "TransitGatewayRouteTableId", "TransitGatewayAttachmentId" ], "createOnlyProperties": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "readOnlyProperties": [ - "/properties/Id" + "/properties/TransitGatewayAttachmentId", + "/properties/TransitGatewayRouteTableId" ], "primaryIdentifier": [ - "/properties/Id" + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" ], - "attributes": { - "Id": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "handlers": { + "create": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:EnableTransitGatewayRouteTablePropagation" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations", + "ec2:DisableTransitGatewayRouteTablePropagation" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTablePropagations" + ] } - } + }, + "attributes": {} } \ No newline at end of file diff --git a/server/schema/resources/aws-ecs-taskdefinition.json b/server/schema/resources/aws-ecs-taskdefinition.json index 6f732a7d..aef3b986 100644 --- a/server/schema/resources/aws-ecs-taskdefinition.json +++ b/server/schema/resources/aws-ecs-taskdefinition.json @@ -520,10 +520,12 @@ "properties": { "CredentialsParameter": { "type": "string", + "description": "", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "Domain": { "type": "string", + "description": "", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, @@ -540,19 +542,23 @@ "properties": { "FileSystemId": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "description": "The Amazon FSx for Windows File Server file system ID to use.", + "markdownDescription": "The Amazon FSx for Windows File Server file system ID to use.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "RootDirectory": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "description": "The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host.", + "markdownDescription": "The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "AuthorizationConfig": { - "$ref": "#/definitions/FSxAuthorizationConfig" + "$ref": "#/definitions/FSxAuthorizationConfig", + "description": "The authorization configuration details for the Amazon FSx for Windows File Server file system.", + "markdownDescription": "The authorization configuration details for the Amazon FSx for Windows File Server file system.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" } }, "additionalProperties": false, - "description": "", - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "description": "This parameter is specified when you're using [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) file system for task storage.\n For more information and the input format, see [Amazon FSx for Windows File Server volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.", + "markdownDescription": "This parameter is specified when you're using [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) file system for task storage.\n For more information and the input format, see [Amazon FSx for Windows File Server volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html) in the *Amazon Elastic Container Service Developer Guide*.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "FirelensConfiguration": { "type": "object", @@ -1072,8 +1078,8 @@ }, "FSxWindowsFileServerVolumeConfiguration": { "$ref": "#/definitions/FSxWindowsFileServerVolumeConfiguration", - "description": "", - "markdownDescription": "\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "description": "This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage.", + "markdownDescription": "This parameter is specified when you use Amazon FSx for Windows File Server file system for task storage.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, "Host": { "$ref": "#/definitions/HostVolumeProperties", @@ -1227,8 +1233,8 @@ }, "RuntimePlatform": { "$ref": "#/definitions/RuntimePlatform", - "description": "The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type. \n When you specify a task definition in a service, this value must match the ``runtimePlatform`` value of the service.", - "markdownDescription": "The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type. \n When you specify a task definition in a service, this value must match the ``runtimePlatform`` value of the service.\n\n---\n\nRequired: No \nType: \nUpdate requires: Replacement" + "description": "The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type.", + "markdownDescription": "The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type.\n\n---\n\nRequired: No \nType: \nUpdate requires: Replacement" }, "IpcMode": { "type": "string", diff --git a/server/schema/resources/aws-events-eventbus.json b/server/schema/resources/aws-events-eventbus.json index ce91220f..e997ba9f 100644 --- a/server/schema/resources/aws-events-eventbus.json +++ b/server/schema/resources/aws-events-eventbus.json @@ -1,60 +1,33 @@ { - "typeName": "AWS::Events::EventBus", - "description": "Resource type definition for AWS::Events::EventBus", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-events", - "properties": { - "EventSourceName": { - "description": "If you are creating a partner event bus, this specifies the partner event source that the new event bus will be matched with.", - "type": "string", - "markdownDescription": "If you are creating a partner event bus, this specifies the partner event source that the new event bus will be matched with.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "Name": { - "description": "The name of the event bus.", - "type": "string", - "markdownDescription": "The name of the event bus.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "Tags": { - "description": "Any tags assigned to the event bus.", - "type": "array", - "uniqueItems": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "markdownDescription": "Any tags assigned to the event bus.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Policy": { - "description": "A JSON string that describes the permission policy statement for the event bus.", - "type": [ - "object", - "string" - ], - "markdownDescription": "A JSON string that describes the permission policy statement for the event bus.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" - } - }, "tagging": { "taggable": true, "tagOnCreate": true, "tagUpdatable": true, - "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "cloudFormationSystemTags": true }, - "additionalProperties": false, - "required": [ - "Name" + "typeName": "AWS::Events::EventBus", + "readOnlyProperties": [ + "/properties/Arn" ], + "description": "Resource type definition for AWS::Events::EventBus", "createOnlyProperties": [ "/properties/Name" ], - "writeOnlyProperties": [ - "/properties/EventSourceName" - ], - "readOnlyProperties": [ - "/properties/Arn" - ], "primaryIdentifier": [ "/properties/Name" ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-events", "handlers": { + "read": { + "permissions": [ + "events:DescribeEventBus", + "events:ListTagsForResource" + ] + }, "create": { "permissions": [ "events:CreateEventBus", @@ -64,12 +37,6 @@ "events:TagResource" ] }, - "read": { - "permissions": [ - "events:DescribeEventBus", - "events:ListTagsForResource" - ] - }, "update": { "permissions": [ "events:TagResource", @@ -78,29 +45,33 @@ "events:DescribeEventBus" ] }, - "delete": { - "permissions": [ - "events:DescribeEventBus", - "events:DeleteEventBus" - ] - }, "list": { "permissions": [ "events:ListEventBuses", "events:ListTagsForResource" ] + }, + "delete": { + "permissions": [ + "events:DescribeEventBus", + "events:DeleteEventBus" + ] } }, + "writeOnlyProperties": [ + "/properties/EventSourceName" + ], + "additionalProperties": false, "definitions": { "Tag": { - "type": "object", "additionalProperties": false, + "type": "object", "properties": { - "Key": { + "Value": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "Value": { + "Key": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } @@ -112,6 +83,35 @@ "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, + "properties": { + "Policy": { + "description": "A JSON string that describes the permission policy statement for the event bus.", + "type": [ + "object", + "string" + ], + "markdownDescription": "A JSON string that describes the permission policy statement for the event bus.\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" + }, + "EventSourceName": { + "description": "If you are creating a partner event bus, this specifies the partner event source that the new event bus will be matched with.", + "type": "string", + "markdownDescription": "If you are creating a partner event bus, this specifies the partner event source that the new event bus will be matched with.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Tags": { + "uniqueItems": false, + "description": "Any tags assigned to the event bus.", + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "markdownDescription": "Any tags assigned to the event bus.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Name": { + "description": "The name of the event bus.", + "type": "string", + "markdownDescription": "The name of the event bus.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + } + }, "attributes": { "Arn": { "description": "The Amazon Resource Name (ARN) for the event bus.", diff --git a/server/schema/resources/aws-fms-policy.json b/server/schema/resources/aws-fms-policy.json index f21e8197..3a7004d2 100644 --- a/server/schema/resources/aws-fms-policy.json +++ b/server/schema/resources/aws-fms-policy.json @@ -136,6 +136,147 @@ ], "markdownDescription": "Firewall deployment mode.\n\n---\n\nRequired: No \nType: String \nAllowed Values: DISTRIBUTED | CENTRALIZED \nUpdate requires: No interruption" }, + "NetworkAclEntry": { + "description": "Network ACL entry.", + "type": "object", + "properties": { + "CidrBlock": { + "description": "CIDR block.", + "type": "string", + "markdownDescription": "CIDR block.\n\n---\n\nRequired: No \nType: String \nPattern: ^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$ \nUpdate requires: No interruption" + }, + "Egress": { + "description": "Whether the entry is an egress entry.", + "type": "boolean", + "markdownDescription": "Whether the entry is an egress entry.\n\n---\n\nRequired: Yes \nType: Boolean \nUpdate requires: No interruption" + }, + "IcmpTypeCode": { + "description": "ICMP type and code.", + "type": "object", + "properties": { + "Code": { + "description": "Code.", + "type": "integer", + "minimum": 0, + "maximum": 255, + "markdownDescription": "Code.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "Type": { + "description": "Type.", + "type": "integer", + "minimum": 0, + "maximum": 255, + "markdownDescription": "Type.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "Code", + "Type" + ], + "markdownDescription": "ICMP type and code.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Ipv6CidrBlock": { + "type": "string", + "description": "IPv6 CIDR block.", + "markdownDescription": "IPv6 CIDR block.\n\n---\n\nRequired: No \nType: String \nPattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(/(1[0-2]|[0-9]))?$ \nUpdate requires: No interruption" + }, + "PortRange": { + "type": "object", + "description": "Port range.", + "properties": { + "From": { + "description": "From Port.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "markdownDescription": "From Port.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "To": { + "description": "To Port.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "markdownDescription": "To Port.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "From", + "To" + ], + "markdownDescription": "Port range.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Protocol": { + "description": "Protocol.", + "type": "string", + "markdownDescription": "Protocol.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(tcp|udp|icmp|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$ \nUpdate requires: No interruption" + }, + "RuleAction": { + "description": "Rule Action.", + "type": "string", + "enum": [ + "allow", + "deny" + ], + "markdownDescription": "Rule Action.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: allow | deny \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "Egress", + "Protocol", + "RuleAction" + ], + "markdownDescription": "Network ACL entry.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "NetworkAclEntryList": { + "description": "NetworkAcl entry list.", + "type": "array", + "items": { + "$ref": "#/definitions/NetworkAclEntry" + }, + "insertionOrder": true, + "markdownDescription": "NetworkAcl entry list.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "NetworkAclEntrySet": { + "description": "Network ACL entry set.", + "type": "object", + "properties": { + "FirstEntries": { + "$ref": "#/definitions/NetworkAclEntryList" + }, + "ForceRemediateForFirstEntries": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: Conditional \nType: Boolean \nUpdate requires: No interruption" + }, + "LastEntries": { + "$ref": "#/definitions/NetworkAclEntryList" + }, + "ForceRemediateForLastEntries": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: Conditional \nType: Boolean \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "ForceRemediateForFirstEntries", + "ForceRemediateForLastEntries" + ], + "anyOf": [ + { + "required": [ + "FirstEntries" + ] + }, + { + "required": [ + "LastEntries" + ] + } + ], + "markdownDescription": "Network ACL entry set.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "ManagedServiceData": { "description": "Firewall managed service data.", "type": "string", @@ -156,9 +297,10 @@ "NETWORK_FIREWALL", "THIRD_PARTY_FIREWALL", "DNS_FIREWALL", - "IMPORT_NETWORK_FIREWALL" + "IMPORT_NETWORK_FIREWALL", + "NETWORK_ACL_COMMON" ], - "markdownDescription": "Firewall policy type.\n\n---\n\nRequired: No \nType: String \nAllowed Values: WAF | WAFV2 | SHIELD_ADVANCED | SECURITY_GROUPS_COMMON | SECURITY_GROUPS_CONTENT_AUDIT | SECURITY_GROUPS_USAGE_AUDIT | NETWORK_FIREWALL | THIRD_PARTY_FIREWALL | DNS_FIREWALL | IMPORT_NETWORK_FIREWALL \nUpdate requires: No interruption" + "markdownDescription": "Firewall policy type.\n\n---\n\nRequired: No \nType: String \nAllowed Values: WAF | WAFV2 | SHIELD_ADVANCED | SECURITY_GROUPS_COMMON | SECURITY_GROUPS_CONTENT_AUDIT | SECURITY_GROUPS_USAGE_AUDIT | NETWORK_FIREWALL | THIRD_PARTY_FIREWALL | DNS_FIREWALL | IMPORT_NETWORK_FIREWALL | NETWORK_ACL_COMMON \nUpdate requires: No interruption" }, "NetworkFirewallPolicy": { "description": "Network firewall policy.", @@ -188,6 +330,20 @@ ], "markdownDescription": "Third party firewall policy.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "NetworkAclCommonPolicy": { + "description": "Network ACL common policy.", + "type": "object", + "properties": { + "NetworkAclEntrySet": { + "$ref": "#/definitions/NetworkAclEntrySet" + } + }, + "additionalProperties": false, + "required": [ + "NetworkAclEntrySet" + ], + "markdownDescription": "Network ACL common policy.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "PolicyOption": { "description": "Firewall policy option.", "type": "object", @@ -197,6 +353,9 @@ }, "ThirdPartyFirewallPolicy": { "$ref": "#/definitions/ThirdPartyFirewallPolicy" + }, + "NetworkAclCommonPolicy": { + "$ref": "#/definitions/NetworkAclCommonPolicy" } }, "additionalProperties": false, @@ -210,6 +369,11 @@ "required": [ "ThirdPartyFirewallPolicy" ] + }, + { + "required": [ + "NetworkAclCommonPolicy" + ] } ], "markdownDescription": "Firewall policy option.\n\n---\n\nRequired: No \nUpdate requires: No interruption" diff --git a/server/schema/resources/aws-gamelift-containergroupdefinition.json b/server/schema/resources/aws-gamelift-containergroupdefinition.json new file mode 100644 index 00000000..d0a9520f --- /dev/null +++ b/server/schema/resources/aws-gamelift-containergroupdefinition.json @@ -0,0 +1,491 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "typeName": "AWS::GameLift::ContainerGroupDefinition", + "description": "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "tagging": { + "taggable": true, + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags" + }, + "definitions": { + "ContainerDefinition": { + "description": "Details about a container that is used in a container fleet", + "type": "object", + "properties": { + "ContainerName": { + "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.", + "type": "string", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" + }, + "ImageUri": { + "description": "Specifies the image URI of this container.", + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "Specifies the image URI of this container.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^[a-zA-Z0-9-_\\.@\\/:]+$ \nUpdate requires: No interruption" + }, + "ResolvedImageDigest": { + "description": "The digest of the container image.", + "type": "string", + "markdownDescription": "The digest of the container image.\n\n---\n\nRequired: No \nType: String \nPattern: ^sha256:[a-fA-F0-9]{64}$ \nUpdate requires: No interruption" + }, + "MemoryLimits": { + "description": "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.", + "$ref": "#/definitions/MemoryLimits", + "markdownDescription": "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PortConfiguration": { + "description": "Defines the ports on the container.", + "$ref": "#/definitions/PortConfiguration", + "markdownDescription": "Defines the ports on the container.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "Cpu": { + "description": "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units", + "type": "integer", + "minimum": 1, + "maximum": 10240, + "markdownDescription": "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "HealthCheck": { + "description": "Specifies how the health of the containers will be checked.", + "$ref": "#/definitions/ContainerHealthCheck", + "markdownDescription": "Specifies how the health of the containers will be checked.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "Command": { + "description": "The command that's passed to the container.", + "type": "array", + "uniqueItems": false, + "insertionOrder": true, + "minItems": 1, + "maxItems": 20, + "items": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^.*$ \nUpdate requires: No interruption" + }, + "markdownDescription": "The command that's passed to the container.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Essential": { + "description": "Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.", + "type": "boolean", + "markdownDescription": "Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "EntryPoint": { + "description": "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.", + "type": "array", + "uniqueItems": false, + "insertionOrder": true, + "minItems": 1, + "maxItems": 20, + "items": { + "type": "string", + "minLength": 1, + "maxLength": 1024, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" + }, + "markdownDescription": "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "WorkingDirectory": { + "description": "The working directory to run commands inside the container in.", + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "The working directory to run commands inside the container in.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^.*$ \nUpdate requires: No interruption" + }, + "Environment": { + "description": "The environment variables to pass to a container.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "minItems": 1, + "maxItems": 20, + "items": { + "$ref": "#/definitions/ContainerEnvironment" + }, + "markdownDescription": "The environment variables to pass to a container.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "DependsOn": { + "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.", + "type": "array", + "uniqueItems": true, + "insertionOrder": true, + "minItems": 1, + "maxItems": 10, + "items": { + "$ref": "#/definitions/ContainerDependency" + }, + "markdownDescription": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "ContainerName", + "ImageUri" + ], + "additionalProperties": false, + "markdownDescription": "Details about a container that is used in a container fleet\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "MemoryLimits": { + "description": "Specifies how much memory is available to the container.", + "type": "object", + "properties": { + "SoftLimit": { + "description": "The amount of memory that is reserved for the container.", + "type": "integer", + "minimum": 4, + "maximum": 1024000, + "markdownDescription": "The amount of memory that is reserved for the container.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "HardLimit": { + "description": "The hard limit of memory to reserve for the container.", + "type": "integer", + "minimum": 4, + "maximum": 1024000, + "markdownDescription": "The hard limit of memory to reserve for the container.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Specifies how much memory is available to the container.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PortConfiguration": { + "description": "Defines the ports on a container.", + "type": "object", + "properties": { + "ContainerPortRanges": { + "description": "Specifies one or more ranges of ports on a container.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "minItems": 1, + "maxItems": 100, + "items": { + "$ref": "#/definitions/ContainerPortRange" + }, + "markdownDescription": "Specifies one or more ranges of ports on a container.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "ContainerPortRanges" + ], + "additionalProperties": false, + "markdownDescription": "Defines the ports on a container.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ContainerPortRange": { + "description": "A set of one or more port numbers that can be opened on the container.", + "type": "object", + "properties": { + "FromPort": { + "description": "A starting value for the range of allowed port numbers.", + "type": "integer", + "minimum": 1, + "maximum": 60000, + "markdownDescription": "A starting value for the range of allowed port numbers.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "Protocol": { + "description": "Defines the protocol of these ports.", + "type": "string", + "enum": [ + "TCP", + "UDP" + ], + "markdownDescription": "Defines the protocol of these ports.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: TCP | UDP \nUpdate requires: No interruption" + }, + "ToPort": { + "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.", + "type": "integer", + "minimum": 1, + "maximum": 60000, + "markdownDescription": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + } + }, + "required": [ + "FromPort", + "Protocol", + "ToPort" + ], + "additionalProperties": false, + "markdownDescription": "A set of one or more port numbers that can be opened on the container.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ContainerHealthCheck": { + "description": "Specifies how the process manager checks the health of containers.", + "type": "object", + "properties": { + "Command": { + "description": "A string array representing the command that the container runs to determine if it is healthy.", + "type": "array", + "uniqueItems": false, + "insertionOrder": true, + "minItems": 1, + "maxItems": 20, + "items": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^.*$ \nUpdate requires: No interruption" + }, + "markdownDescription": "A string array representing the command that the container runs to determine if it is healthy.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "Interval": { + "description": "How often (in seconds) the health is checked.", + "type": "integer", + "minimum": 60, + "maximum": 300, + "markdownDescription": "How often (in seconds) the health is checked.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Timeout": { + "description": "How many seconds the process manager allows the command to run before canceling it.", + "type": "integer", + "minimum": 30, + "maximum": 60, + "markdownDescription": "How many seconds the process manager allows the command to run before canceling it.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Retries": { + "description": "How many times the process manager will retry the command after a timeout. (The first run of the command does not count as a retry.)", + "type": "integer", + "minimum": 5, + "maximum": 10, + "markdownDescription": "How many times the process manager will retry the command after a timeout. (The first run of the command does not count as a retry.)\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "StartPeriod": { + "description": "The optional grace period (in seconds) to give a container time to boostrap before teh health check is declared failed.", + "type": "integer", + "minimum": 0, + "maximum": 300, + "markdownDescription": "The optional grace period (in seconds) to give a container time to boostrap before teh health check is declared failed.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "required": [ + "Command" + ], + "additionalProperties": false, + "markdownDescription": "Specifies how the process manager checks the health of containers.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ContainerEnvironment": { + "description": "An environment variable to set inside a container, in the form of a key-value pair.", + "type": "object", + "properties": { + "Name": { + "description": "The environment variable name.", + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "The environment variable name.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^.*$ \nUpdate requires: No interruption" + }, + "Value": { + "description": "The environment variable value.", + "type": "string", + "minLength": 1, + "maxLength": 255, + "markdownDescription": "The environment variable value.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^.*$ \nUpdate requires: No interruption" + } + }, + "required": [ + "Name", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "An environment variable to set inside a container, in the form of a key-value pair.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ContainerDependency": { + "description": "A dependency that impacts a container's startup and shutdown.", + "type": "object", + "properties": { + "ContainerName": { + "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.", + "type": "string", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "A descriptive label for the container definition. The container being defined depends on this container's condition.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" + }, + "Condition": { + "description": "The type of dependency.", + "type": "string", + "enum": [ + "START", + "COMPLETE", + "SUCCESS", + "HEALTHY" + ], + "markdownDescription": "The type of dependency.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: START | COMPLETE | SUCCESS | HEALTHY \nUpdate requires: No interruption" + } + }, + "required": [ + "ContainerName", + "Condition" + ], + "additionalProperties": false, + "markdownDescription": "A dependency that impacts a container's startup and shutdown.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "description": "A key-value pair to associate with a resource.", + "type": "object", + "properties": { + "Key": { + "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.", + "type": "string", + "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.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^.*$ \nUpdate requires: No interruption" + }, + "Value": { + "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.", + "type": "string", + "minLength": 0, + "maxLength": 256, + "markdownDescription": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nPattern: ^.*$ \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": { + "Name": { + "description": "A descriptive label for the container group definition.", + "type": "string", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "A descriptive label for the container group definition.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: Replacement" + }, + "SchedulingStrategy": { + "description": "Specifies whether the container group includes replica or daemon containers.", + "type": "string", + "enum": [ + "REPLICA", + "DAEMON" + ], + "markdownDescription": "Specifies whether the container group includes replica or daemon containers.\n\n---\n\nRequired: No \nType: String \nAllowed Values: REPLICA | DAEMON \nUpdate requires: Replacement" + }, + "TotalMemoryLimit": { + "description": "The maximum amount of memory (in MiB) to allocate for this container group.", + "type": "integer", + "minimum": 4, + "maximum": 1024000, + "markdownDescription": "The maximum amount of memory (in MiB) to allocate for this container group.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: Replacement" + }, + "TotalCpuLimit": { + "description": "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)", + "type": "integer", + "minimum": 128, + "maximum": 10240, + "markdownDescription": "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: Replacement" + }, + "ContainerDefinitions": { + "description": "A collection of container definitions that define the containers in this group.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "minItems": 1, + "maxItems": 10, + "items": { + "$ref": "#/definitions/ContainerDefinition" + }, + "markdownDescription": "A collection of container definitions that define the containers in this group.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: Replacement" + }, + "Tags": { + "description": "An array of key-value pairs to apply to this resource.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "minItems": 0, + "maxItems": 200, + "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" + }, + "OperatingSystem": { + "description": "The operating system of the container group", + "type": "string", + "enum": [ + "AMAZON_LINUX_2023" + ], + "markdownDescription": "The operating system of the container group\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: AMAZON_LINUX_2023 \nUpdate requires: Replacement" + } + }, + "additionalProperties": false, + "required": [ + "Name", + "TotalMemoryLimit", + "TotalCpuLimit", + "ContainerDefinitions", + "OperatingSystem" + ], + "createOnlyProperties": [ + "/properties/Name", + "/properties/SchedulingStrategy", + "/properties/TotalMemoryLimit", + "/properties/TotalCpuLimit", + "/properties/ContainerDefinitions", + "/properties/OperatingSystem" + ], + "readOnlyProperties": [ + "/properties/ContainerGroupDefinitionArn", + "/properties/CreationTime", + "/properties/ContainerDefinitions/*/ResolvedImageDigest" + ], + "primaryIdentifier": [ + "/properties/Name" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateContainerGroupDefinition", + "gamelift:DescribeContainerGroupDefinition", + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "ecr:BatchCheckLayerAvailability", + "ecr:BatchGetImage", + "ecr:GetDownloadUrlForLayer", + "ecr:DescribeImages" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeContainerGroupDefinition", + "gamelift:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "gamelift:ListTagsForResource", + "gamelift:TagResource", + "gamelift:UntagResource" + ] + }, + "delete": { + "permissions": [ + "gamelift:DescribeContainerGroupDefinition", + "gamelift:DeleteContainerGroupDefinition" + ] + }, + "list": { + "permissions": [ + "gamelift:ListContainerGroupDefinitions" + ] + } + }, + "attributes": { + "ContainerGroupDefinitionArn": { + "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.", + "type": "string", + "minLength": 1, + "maxLength": 512, + "markdownDescription": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nPattern: ^arn:.*:containergroupdefinition/containergroupdefinition-[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" + }, + "CreationTime": { + "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").", + "type": "string", + "markdownDescription": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-gamelift-fleet.json b/server/schema/resources/aws-gamelift-fleet.json index 6b4fd6d7..98d6cc6d 100644 --- a/server/schema/resources/aws-gamelift-fleet.json +++ b/server/schema/resources/aws-gamelift-fleet.json @@ -8,6 +8,7 @@ "taggable": true, "typeName": "AWS::GameLift::Fleet", "readOnlyProperties": [ + "/properties/ContainerGroupsConfiguration/ContainerGroupsPerInstance/MaxReplicaContainerGroupsPerInstance", "/properties/FleetId" ], "description": "The AWS::GameLift::Fleet resource creates an Amazon GameLift (GameLift) fleet to host game servers. A fleet is a set of EC2 or Anywhere instances, each of which can host multiple game sessions.", @@ -15,6 +16,7 @@ "/properties/ApplyCapacity", "/properties/BuildId", "/properties/CertificateConfiguration", + "/properties/ContainerGroupsConfiguration", "/properties/EC2InstanceType", "/properties/FleetType", "/properties/InstanceRoleARN", @@ -208,6 +210,32 @@ ], "markdownDescription": "Rule that controls how a fleet is scaled. Scaling policies are uniquely identified by the combination of name and fleet ID.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "ConnectionPortRange": { + "description": "Defines the range of ports on the instance that allow inbound traffic to connect with containers in a fleet.", + "additionalProperties": false, + "type": "object", + "properties": { + "FromPort": { + "description": "A starting value for a range of allowed port numbers.", + "maximum": 60000, + "type": "integer", + "minimum": 1, + "markdownDescription": "A starting value for a range of allowed port numbers.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "ToPort": { + "description": "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.", + "maximum": 60000, + "type": "integer", + "minimum": 1, + "markdownDescription": "An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than FromPort.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + } + }, + "required": [ + "FromPort", + "ToPort" + ], + "markdownDescription": "Defines the range of ports on the instance that allow inbound traffic to connect with containers in a fleet.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "ServerProcess": { "description": "A set of instructions for launching server processes on each instance in a fleet. Each instruction set identifies the location of the server executable, optional launch parameters, and the number of server processes with this configuration to maintain concurrently on the instance. Server process configurations make up a fleet's RuntimeConfiguration.", "additionalProperties": false, @@ -256,6 +284,38 @@ ], "markdownDescription": "Settings for a target-based scaling policy. A target-based policy tracks a particular fleet metric specifies a target value for the metric. As player usage changes, the policy triggers Amazon GameLift to adjust capacity so that the metric returns to the target value. The target configuration specifies settings as needed for the target based policy, including the target value.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "ContainerGroupsConfiguration": { + "description": "Specifies container groups that this instance will hold. You must specify exactly one replica group. Optionally, you may specify exactly one daemon group. You can't change this property after you create the fleet.", + "additionalProperties": false, + "type": "object", + "properties": { + "ConnectionPortRange": { + "$ref": "#/definitions/ConnectionPortRange" + }, + "ContainerGroupDefinitionNames": { + "minItems": 1, + "maxItems": 2, + "description": "The names of the container group definitions that will be created in an instance. You must specify exactly one REPLICA container group. You have the option to also specify one DAEMON container group.", + "insertionOrder": false, + "type": "array", + "items": { + "minLength": 1, + "type": "string", + "maxLength": 128, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9\\-]+$ \nUpdate requires: No interruption" + }, + "markdownDescription": "The names of the container group definitions that will be created in an instance. You must specify exactly one REPLICA container group. You have the option to also specify one DAEMON container group.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "ContainerGroupsPerInstance": { + "$ref": "#/definitions/ContainerGroupsPerInstance" + } + }, + "required": [ + "ContainerGroupDefinitionNames", + "ConnectionPortRange" + ], + "markdownDescription": "Specifies container groups that this instance will hold. You must specify exactly one replica group. Optionally, you may specify exactly one daemon group. You can't change this property after you create the fleet.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "RuntimeConfiguration": { "description": "A collection of server process configurations that describe the processes to run on each instance in a fleet. All fleets must have a runtime configuration. Each instance in the fleet maintains server processes as specified in the runtime configuration, launching new ones as existing processes end. Each instance regularly checks for an updated runtime configuration makes adjustments as called for.\n\nThe runtime configuration enables the instances in a fleet to run multiple processes simultaneously. Potential scenarios are as follows: (1) Run multiple processes of a single game server executable to maximize usage of your hosting resources. (2) Run one or more processes of different executables, such as your game server and a metrics tracking program. (3) Run multiple processes of a single game server but with different launch parameters, for example to run one process on each instance in debug mode.\n\nAn Amazon GameLift instance is limited to 50 processes running simultaneously. A runtime configuration must specify fewer than this limit. To calculate the total number of processes specified in a runtime configuration, add the values of the ConcurrentExecutions parameter for each ServerProcess object in the runtime configuration.", "additionalProperties": false, @@ -392,6 +452,28 @@ ], "markdownDescription": "Information about the use of a TLS/SSL certificate for a fleet. TLS certificate generation is enabled at the fleet level, with one certificate generated for the fleet. When this feature is enabled, the certificate can be retrieved using the GameLift Server SDK call GetInstanceCertificate. All instances in a fleet share the same certificate.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "ContainerGroupsPerInstance": { + "description": "The number of container groups per instance.", + "additionalProperties": false, + "type": "object", + "properties": { + "MaxReplicaContainerGroupsPerInstance": { + "description": "GameLift calculates the maximum number of replica container groups it can launch per instance based on instance properties such as CPU, memory, and connection ports.", + "maximum": 5000, + "type": "integer", + "minimum": 1, + "markdownDescription": "GameLift calculates the maximum number of replica container groups it can launch per instance based on instance properties such as CPU, memory, and connection ports.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "DesiredReplicaContainerGroupsPerInstance": { + "description": "Use this parameter to override the number of replica container groups GameLift will launch per instance with a number that is lower than that calculated maximum.", + "maximum": 5000, + "type": "integer", + "minimum": 1, + "markdownDescription": "Use this parameter to override the number of replica container groups GameLift will launch per instance with a number that is lower than that calculated maximum.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The number of container groups per instance.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "IpPermission": { "description": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift hosting resource. New game sessions that are started on the fleet are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. For fleets created with a custom game server, the ranges reflect the server's game session assignments. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP, for use by the Realtime servers.", "additionalProperties": false, @@ -485,14 +567,18 @@ }, "markdownDescription": "A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift server.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, + "ContainerGroupsConfiguration": { + "$ref": "#/definitions/ContainerGroupsConfiguration" + }, "ComputeType": { "description": "ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.", "type": "string", "enum": [ "EC2", - "ANYWHERE" + "ANYWHERE", + "CONTAINER" ], - "markdownDescription": "ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.\n\n---\n\nRequired: No \nType: String \nAllowed Values: EC2 | ANYWHERE \nUpdate requires: Replacement" + "markdownDescription": "ComputeType to differentiate EC2 hardware managed by GameLift and Anywhere hardware managed by the customer.\n\n---\n\nRequired: No \nType: String \nAllowed Values: EC2 | ANYWHERE | CONTAINER \nUpdate requires: Replacement" }, "Name": { "minLength": 1, diff --git a/server/schema/resources/aws-globalaccelerator-accelerator.json b/server/schema/resources/aws-globalaccelerator-accelerator.json index c2fecc82..7957f3c6 100644 --- a/server/schema/resources/aws-globalaccelerator-accelerator.json +++ b/server/schema/resources/aws-globalaccelerator-accelerator.json @@ -78,6 +78,13 @@ "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, "required": [ "Name" ], diff --git a/server/schema/resources/aws-globalaccelerator-crossaccountattachment.json b/server/schema/resources/aws-globalaccelerator-crossaccountattachment.json index cdf8e906..7bea0a17 100644 --- a/server/schema/resources/aws-globalaccelerator-crossaccountattachment.json +++ b/server/schema/resources/aws-globalaccelerator-crossaccountattachment.json @@ -82,6 +82,13 @@ "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags" + }, "required": [ "Name" ], diff --git a/server/schema/resources/aws-globalaccelerator-endpointgroup.json b/server/schema/resources/aws-globalaccelerator-endpointgroup.json index 38e0c852..0b169afe 100644 --- a/server/schema/resources/aws-globalaccelerator-endpointgroup.json +++ b/server/schema/resources/aws-globalaccelerator-endpointgroup.json @@ -136,6 +136,9 @@ "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, + "tagging": { + "taggable": false + }, "required": [ "ListenerArn", "EndpointGroupRegion" diff --git a/server/schema/resources/aws-globalaccelerator-listener.json b/server/schema/resources/aws-globalaccelerator-listener.json index 3c4d2d6b..e6418b8b 100644 --- a/server/schema/resources/aws-globalaccelerator-listener.json +++ b/server/schema/resources/aws-globalaccelerator-listener.json @@ -63,6 +63,9 @@ "markdownDescription": "Client affinity lets you direct all requests from a user to the same endpoint.\n\n---\n\nRequired: No \nType: String \nAllowed Values: NONE | SOURCE_IP \nUpdate requires: No interruption" } }, + "tagging": { + "taggable": false + }, "required": [ "AcceleratorArn", "PortRanges", diff --git a/server/schema/resources/aws-groundstation-config.json b/server/schema/resources/aws-groundstation-config.json index f0f9b28e..363b34bc 100644 --- a/server/schema/resources/aws-groundstation-config.json +++ b/server/schema/resources/aws-groundstation-config.json @@ -119,11 +119,11 @@ }, "BucketArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:aws[A-Za-z0-9-]{0,64}:s3:::[A-Za-z0-9-]{1,64}$ \nUpdate requires: No interruption" }, "RoleArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:[^:\\n]+:iam::[^:\\n]+:role\\/.+$ \nUpdate requires: No interruption" }, "UplinkSpectrumConfig": { "type": "object", @@ -257,7 +257,7 @@ }, "AntennaUplinkConfigArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" } }, "additionalProperties": false, @@ -365,7 +365,7 @@ }, "Arn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" }, "Id": { "type": "string", diff --git a/server/schema/resources/aws-groundstation-dataflowendpointgroup.json b/server/schema/resources/aws-groundstation-dataflowendpointgroup.json index 5505f097..7785c4f1 100644 --- a/server/schema/resources/aws-groundstation-dataflowendpointgroup.json +++ b/server/schema/resources/aws-groundstation-dataflowendpointgroup.json @@ -169,7 +169,7 @@ }, "RoleArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" } }, "additionalProperties": false, @@ -299,7 +299,7 @@ }, "Arn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-groundstation-missionprofile.json b/server/schema/resources/aws-groundstation-missionprofile.json index c5e4e925..a54ce5e5 100644 --- a/server/schema/resources/aws-groundstation-missionprofile.json +++ b/server/schema/resources/aws-groundstation-missionprofile.json @@ -42,11 +42,11 @@ "properties": { "KmsKeyArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Conditional \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Conditional \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" }, "KmsAliasArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Conditional \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Conditional \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" } }, "oneOf": [ @@ -107,7 +107,7 @@ }, "TrackingConfigArn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" }, "Tags": { "type": "array", @@ -183,7 +183,7 @@ }, "Arn": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" }, "Region": { "type": "string", diff --git a/server/schema/resources/aws-healthlake-fhirdatastore.json b/server/schema/resources/aws-healthlake-fhirdatastore.json index 918ae8bb..c0722c0f 100644 --- a/server/schema/resources/aws-healthlake-fhirdatastore.json +++ b/server/schema/resources/aws-healthlake-fhirdatastore.json @@ -238,7 +238,6 @@ "/properties/DatastoreTypeVersion", "/properties/PreloadDataConfig", "/properties/SseConfiguration", - "/properties/KmsEncryptionConfig", "/properties/IdentityProviderConfiguration" ], "handlers": { diff --git a/server/schema/resources/aws-kms-alias.json b/server/schema/resources/aws-kms-alias.json index 147a54af..ba08160e 100644 --- a/server/schema/resources/aws-kms-alias.json +++ b/server/schema/resources/aws-kms-alias.json @@ -1,63 +1,63 @@ { + "typeName": "AWS::KMS::Alias", + "description": "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys in different AWS-Regions. For more information, see [Using aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html) in the *Developer Guide*.\n When specifying an alias, observe the following rules.\n + Each alias is associated with one KMS key, but multiple aliases can be associated with the same KMS key.\n + The alias and its associated KMS key must be in the same AWS-account and Region.\n + The alias name must be unique in the AWS-account and Region. However, you can create aliases with the same name in different AWS-Regions. For example, you can have an ``alias/projectKey`` in multiple Regions, each of which is associated with a KMS key in its Region.\n + Each alias name must begin with ``alias/`` followed by a name, such as ``alias/exampleKey``. The alias name can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Alias names cannot begin with ``alias/aws/``. That alias name prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n \n *Regions* \n KMS CloudFormation resources are available in all AWS-Regions in which KMS and CFN are supported.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "properties": { + "AliasName": { + "description": "Specifies the alias name. This value must begin with ``alias/`` followed by a name, such as ``alias/ExampleAlias``. \n If you change the value of the ``AliasName`` property, the existing alias is deleted and a new alias is created for the specified KMS key. This change can disrupt applications that use the alias. It can also allow or deny access to a KMS key affected by attribute-based access control (ABAC).\n The alias must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with ``alias/aws/``. The ``alias/aws/`` prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", + "type": "string", + "minLength": 1, + "maxLength": 256, + "markdownDescription": "Specifies the alias name. This value must begin with ``alias/`` followed by a name, such as ``alias/ExampleAlias``. \n If you change the value of the ``AliasName`` property, the existing alias is deleted and a new alias is created for the specified KMS key. This change can disrupt applications that use the alias. It can also allow or deny access to a KMS key affected by attribute-based access control (ABAC).\n The alias must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with ``alias/aws/``. The ``alias/aws/`` prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nPattern: ^(alias/)[a-zA-Z0-9:/_-]+$ \nUpdate requires: Replacement" + }, + "TargetKeyId": { + "description": "Associates the alias with the specified [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). The KMS key must be in the same AWS-account and Region.\n A valid key ID is required. If you supply a null or empty string value, this operation returns an error.\n For help finding the key ID and ARN, see [Finding the key ID and ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) in the *Developer Guide*.\n Specify the key ID or the key ARN of the KMS key.\n For example:\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n \n To get the key ID and key ARN for a KMS key, use [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) or [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html).", + "type": "string", + "minLength": 1, + "maxLength": 256, + "markdownDescription": "Associates the alias with the specified [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). The KMS key must be in the same AWS-account and Region.\n A valid key ID is required. If you supply a null or empty string value, this operation returns an error.\n For help finding the key ID and ARN, see [Finding the key ID and ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) in the *Developer Guide*.\n Specify the key ID or the key ARN of the KMS key.\n For example:\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n \n To get the key ID and key ARN for a KMS key, use [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) or [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html).\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "AliasName", + "TargetKeyId" + ], + "createOnlyProperties": [ + "/properties/AliasName" + ], + "primaryIdentifier": [ + "/properties/AliasName" + ], "tagging": { "taggable": false }, "handlers": { - "read": { - "permissions": [ - "kms:ListAliases" - ] - }, "create": { "permissions": [ "kms:CreateAlias" ] }, - "update": { + "read": { "permissions": [ - "kms:UpdateAlias" + "kms:ListAliases" ] }, - "list": { + "update": { "permissions": [ - "kms:ListAliases" + "kms:UpdateAlias" ] }, "delete": { "permissions": [ "kms:DeleteAlias" ] - } - }, - "typeName": "AWS::KMS::Alias", - "description": "The ``AWS::KMS::Alias`` resource specifies a display name for a [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). You can use an alias to identify a KMS key in the KMS console, in the [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) operation, and in [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), such as [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) and [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).\n Adding, deleting, or updating an alias can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n Using an alias to refer to a KMS key can help you simplify key management. For example, an alias in your code can be associated with different KMS keys i", - "createOnlyProperties": [ - "/properties/AliasName" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/AliasName" - ], - "properties": { - "TargetKeyId": { - "minLength": 1, - "description": "Associates the alias with the specified [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). The KMS key must be in the same AWS-account and Region.\n A valid key ID is required. If you supply a null or empty string value, this operation returns an error.\n For help finding the key ID and ARN, see [Finding the key ID and ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) in the *Developer Guide*.\n Specify the key ID or the key ARN of the KMS key.\n For example:\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n \n To get the key ID and key ARN for a KMS key, use [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) or [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html).", - "type": "string", - "maxLength": 256, - "markdownDescription": "Associates the alias with the specified [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). The KMS key must be in the same AWS-account and Region.\n A valid key ID is required. If you supply a null or empty string value, this operation returns an error.\n For help finding the key ID and ARN, see [Finding the key ID and ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) in the *Developer Guide*.\n Specify the key ID or the key ARN of the KMS key.\n For example:\n + Key ID: ``1234abcd-12ab-34cd-56ef-1234567890ab`` \n + Key ARN: ``arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`` \n \n To get the key ID and key ARN for a KMS key, use [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) or [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html).\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" }, - "AliasName": { - "minLength": 1, - "description": "Specifies the alias name. This value must begin with ``alias/`` followed by a name, such as ``alias/ExampleAlias``. \n If you change the value of the ``AliasName`` property, the existing alias is deleted and a new alias is created for the specified KMS key. This change can disrupt applications that use the alias. It can also allow or deny access to a KMS key affected by attribute-based access control (ABAC).\n The alias must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with ``alias/aws/``. The ``alias/aws/`` prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).", - "type": "string", - "maxLength": 256, - "markdownDescription": "Specifies the alias name. This value must begin with ``alias/`` followed by a name, such as ``alias/ExampleAlias``. \n If you change the value of the ``AliasName`` property, the existing alias is deleted and a new alias is created for the specified KMS key. This change can disrupt applications that use the alias. It can also allow or deny access to a KMS key affected by attribute-based access control (ABAC).\n The alias must be string of 1-256 characters. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). The alias name cannot begin with ``alias/aws/``. The ``alias/aws/`` prefix is reserved for [](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk).\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nPattern: ^(alias/)[a-zA-Z0-9:/_-]+$ \nUpdate requires: Replacement" + "list": { + "permissions": [ + "kms:ListAliases" + ] } }, - "required": [ - "AliasName", - "TargetKeyId" - ], "attributes": {} } \ No newline at end of file diff --git a/server/schema/resources/aws-kms-key.json b/server/schema/resources/aws-kms-key.json index 9bc960f6..467700e6 100644 --- a/server/schema/resources/aws-kms-key.json +++ b/server/schema/resources/aws-kms-key.json @@ -1,6 +1,6 @@ { "typeName": "AWS::KMS::Key", - "description": "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions*\n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region.", + "description": "The ``AWS::KMS::Key`` resource specifies an [KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) in KMSlong. You can use this resource to create symmetric encryption KMS keys, asymmetric KMS keys for encryption or signing, and symmetric HMAC KMS keys. You can use ``AWS::KMS::Key`` to create [multi-Region primary keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-primary-key) of all supported types. To replicate a multi-Region key, use the ``AWS::KMS::ReplicaKey`` resource.\n If you change the value of the ``KeySpec``, ``KeyUsage``, ``Origin``, or ``MultiRegion`` properties of an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing any of its immutable property values.\n KMS replaced the term *customer master key (CMK)* with ** and *KMS key*. The concept has not changed. To prevent breaking changes, KMS is keeping some variations of this term.\n You can use symmetric encryption KMS keys to encrypt and decrypt small amounts of data, but they are more commonly used to generate data keys and data key pairs. You can also use a symmetric encryption KMS key to encrypt data stored in AWS services that are [integrated with](https://docs.aws.amazon.com//kms/features/#AWS_Service_Integration). For more information, see [Symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) in the *Developer Guide*.\n You can use asymmetric KMS keys to encrypt and decrypt data or sign messages and verify signatures. To create an asymmetric key, you must specify an asymmetric ``KeySpec`` value and a ``KeyUsage`` value. For details, see [Asymmetric keys in](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the *Developer Guide*.\n You can use HMAC KMS keys (which are also symmetric keys) to generate and verify hash-based message authentication codes. To create an HMAC key, you must specify an HMAC ``KeySpec`` value and a ``KeyUsage`` value of ``GENERATE_VERIFY_MAC``. For details, see [HMAC keys in](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the *Developer Guide*.\n You can also create symmetric encryption, asymmetric, and HMAC multi-Region primary keys. To create a multi-Region primary key, set the ``MultiRegion`` property to ``true``. For information about multi-Region keys, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You cannot use the ``AWS::KMS::Key`` resource to specify a KMS key with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) or a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).\n *Regions* \n KMS CloudFormation resources are available in all Regions in which KMS and CFN are supported. You can use the ``AWS::KMS::Key`` resource to create and manage all KMS key types that are supported in a Region.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kms", "definitions": { "Tag": { @@ -44,18 +44,18 @@ "markdownDescription": "Specifies whether the KMS key is enabled. Disabled KMS keys cannot be used in cryptographic operations.\n When ``Enabled`` is ``true``, the *key state* of the KMS key is ``Enabled``. When ``Enabled`` is ``false``, the key state of the KMS key is ``Disabled``. The default value is ``true``.\n The actual key state of the KMS key might be affected by actions taken outside of CloudFormation, such as running the [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html), [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html), or [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operations.\n For information about the key states of a KMS key, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "EnableKeyRotation": { - "description": "Enables automatic rotation of the key material for the specified KMS key. By default, automatic key rotation is not enabled.\n KMS supports automatic rotation only for symmetric encryption KMS keys (``KeySpec`` = ``SYMMETRIC_DEFAULT``). For asymmetric KMS keys, HMAC KMS keys, and KMS keys with Origin ``EXTERNAL``, omit the ``EnableKeyRotation`` property or set it to ``false``.\n To enable automatic key rotation of the key material for a multi-Region KMS key, set ``EnableKeyRotation`` to ``true`` on the primary key (created by using ``AWS::KMS::Key``). KMS copies the rotation status to all replica keys. For details, see [Rotating multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate) in the *Developer Guide*.\n When you enable automatic rotation, KMS automatically creates new key material for the KMS key one year after the enable date and every year thereafter. KMS retains all key material until you delete the KMS key. For detailed information about automatic key rotation, see [Rotating KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.", + "description": "Enables automatic rotation of the key material for the specified KMS key. By default, automatic key rotation is not enabled.\n KMS supports automatic rotation only for symmetric encryption KMS keys (``KeySpec`` = ``SYMMETRIC_DEFAULT``). For asymmetric KMS keys, HMAC KMS keys, and KMS keys with Origin ``EXTERNAL``, omit the ``EnableKeyRotation`` property or set it to ``false``.\n To enable automatic key rotation of the key material for a multi-Region KMS key, set ``EnableKeyRotation`` to ``true`` on the primary key (created by using ``AWS::KMS::Key``). KMS copies the rotation status to all replica keys. For details, see [Rotating multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate) in the *Developer Guide*.\n When you enable automatic rotation, KMS automatically creates new key material for the KMS key one year after the enable date and every year thereafter. KMS retains all key material until you delete the KMS key. For detailed information about automatic key rotation, see [Rotating KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.", "type": "boolean", - "markdownDescription": "Enables automatic rotation of the key material for the specified KMS key. By default, automatic key rotation is not enabled.\n KMS supports automatic rotation only for symmetric encryption KMS keys (``KeySpec`` = ``SYMMETRIC_DEFAULT``). For asymmetric KMS keys, HMAC KMS keys, and KMS keys with Origin ``EXTERNAL``, omit the ``EnableKeyRotation`` property or set it to ``false``.\n To enable automatic key rotation of the key material for a multi-Region KMS key, set ``EnableKeyRotation`` to ``true`` on the primary key (created by using ``AWS::KMS::Key``). KMS copies the rotation status to all replica keys. For details, see [Rotating multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate) in the *Developer Guide*.\n When you enable automatic rotation, KMS automatically creates new key material for the KMS key one year after the enable date and every year thereafter. KMS retains all key material until you delete the KMS key. For detailed information about automatic key rotation, see [Rotating KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "Enables automatic rotation of the key material for the specified KMS key. By default, automatic key rotation is not enabled.\n KMS supports automatic rotation only for symmetric encryption KMS keys (``KeySpec`` = ``SYMMETRIC_DEFAULT``). For asymmetric KMS keys, HMAC KMS keys, and KMS keys with Origin ``EXTERNAL``, omit the ``EnableKeyRotation`` property or set it to ``false``.\n To enable automatic key rotation of the key material for a multi-Region KMS key, set ``EnableKeyRotation`` to ``true`` on the primary key (created by using ``AWS::KMS::Key``). KMS copies the rotation status to all replica keys. For details, see [Rotating multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate) in the *Developer Guide*.\n When you enable automatic rotation, KMS automatically creates new key material for the KMS key one year after the enable date and every year thereafter. KMS retains all key material until you delete the KMS key. For detailed information about automatic key rotation, see [Rotating KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) in the *Developer Guide*.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "KeyPolicy": { - "description": "The key policy to attach to the KMS key.\n If you provide a key policy, it must meet the following criteria:\n + The key policy must allow the caller to make a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. This reduces the risk that the KMS key becomes unmanageable. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) in the *Developer Guide*. (To omit this condition, set ``BypassPolicyLockoutSafetyCheck`` to true.)\n + Each statement in the key policy must contain one or more principals. The principals in the key policy must exist and be visible to KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before including the new principal in a key policy because the new principal might not be immediately visible to KMS. For more information, see [Changes that I make are not always immediately visible](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) in the *User Guide*.\n \n If you do not provide a key policy, KMS attaches a default key policy to the KMS key. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) in the *Developer Guide*.\n A key policy document can include only the following characters:\n + Printable ASCII characters\n + Printable characters in the Basic Latin and Latin-1 Supplement character set\n + The tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``) special characters\n \n *Minimum*: ``1``\n *Maximum*: ``32768``", + "description": "The key policy to attach to the KMS key.\n If you provide a key policy, it must meet the following criteria:\n + The key policy must allow the caller to make a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. This reduces the risk that the KMS key becomes unmanageable. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) in the *Developer Guide*. (To omit this condition, set ``BypassPolicyLockoutSafetyCheck`` to true.)\n + Each statement in the key policy must contain one or more principals. The principals in the key policy must exist and be visible to KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before including the new principal in a key policy because the new principal might not be immediately visible to KMS. For more information, see [Changes that I make are not always immediately visible](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) in the *User Guide*.\n \n If you do not provide a key policy, KMS attaches a default key policy to the KMS key. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) in the *Developer Guide*.\n A key policy document can include only the following characters:\n + Printable ASCII characters\n + Printable characters in the Basic Latin and Latin-1 Supplement character set\n + The tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``) special characters\n \n *Minimum*: ``1`` \n *Maximum*: ``32768``", "type": [ "object", "string" ], "default": "{\n \"Version\": \"2012-10-17\",\n \"Id\": \"key-default\",\n \"Statement\": [\n {\n \"Sid\": \"Enable IAM User Permissions\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"arn::iam:::root\"\n },\n \"Action\": \"kms:*\",\n \"Resource\": \"*\"\n }\n ]\n}", - "markdownDescription": "The key policy to attach to the KMS key.\n If you provide a key policy, it must meet the following criteria:\n + The key policy must allow the caller to make a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. This reduces the risk that the KMS key becomes unmanageable. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) in the *Developer Guide*. (To omit this condition, set ``BypassPolicyLockoutSafetyCheck`` to true.)\n + Each statement in the key policy must contain one or more principals. The principals in the key policy must exist and be visible to KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before including the new principal in a key policy because the new principal might not be immediately visible to KMS. For more information, see [Changes that I make are not always immediately visible](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) in the *User Guide*.\n \n If you do not provide a key policy, KMS attaches a default key policy to the KMS key. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) in the *Developer Guide*.\n A key policy document can include only the following characters:\n + Printable ASCII characters\n + Printable characters in the Basic Latin and Latin-1 Supplement character set\n + The tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``) special characters\n \n *Minimum*: ``1``\n *Maximum*: ``32768``\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" + "markdownDescription": "The key policy to attach to the KMS key.\n If you provide a key policy, it must meet the following criteria:\n + The key policy must allow the caller to make a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. This reduces the risk that the KMS key becomes unmanageable. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam) in the *Developer Guide*. (To omit this condition, set ``BypassPolicyLockoutSafetyCheck`` to true.)\n + Each statement in the key policy must contain one or more principals. The principals in the key policy must exist and be visible to KMS. When you create a new AWS principal (for example, an IAM user or role), you might need to enforce a delay before including the new principal in a key policy because the new principal might not be immediately visible to KMS. For more information, see [Changes that I make are not always immediately visible](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#troubleshoot_general_eventual-consistency) in the *User Guide*.\n \n If you do not provide a key policy, KMS attaches a default key policy to the KMS key. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default) in the *Developer Guide*.\n A key policy document can include only the following characters:\n + Printable ASCII characters\n + Printable characters in the Basic Latin and Latin-1 Supplement character set\n + The tab (``\\u0009``), line feed (``\\u000A``), and carriage return (``\\u000D``) special characters\n \n *Minimum*: ``1`` \n *Maximum*: ``32768``\n\n---\n\nRequired: No \nType: ['object', 'string'] \nUpdate requires: No interruption" }, "KeyUsage": { "description": "Determines the [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations) for which you can use the KMS key. The default value is ``ENCRYPT_DECRYPT``. This property is required for asymmetric KMS keys and HMAC KMS keys. You can't change the ``KeyUsage`` value after the KMS key is created.\n If you change the value of the ``KeyUsage`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n Select only one valid value.\n + For symmetric encryption KMS keys, omit the property or specify ``ENCRYPT_DECRYPT``.\n + For asymmetric KMS keys with RSA key material, specify ``ENCRYPT_DECRYPT`` or ``SIGN_VERIFY``.\n + For asymmetric KMS keys with ECC key material, specify ``SIGN_VERIFY``.\n + For asymmetric KMS keys with SM2 (China Regions only) key material, specify ``ENCRYPT_DECRYPT`` or ``SIGN_VERIFY``.\n + For HMAC KMS keys, specify ``GENERATE_VERIFY_MAC``.", @@ -69,17 +69,17 @@ "markdownDescription": "Determines the [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations) for which you can use the KMS key. The default value is ``ENCRYPT_DECRYPT``. This property is required for asymmetric KMS keys and HMAC KMS keys. You can't change the ``KeyUsage`` value after the KMS key is created.\n If you change the value of the ``KeyUsage`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n Select only one valid value.\n + For symmetric encryption KMS keys, omit the property or specify ``ENCRYPT_DECRYPT``.\n + For asymmetric KMS keys with RSA key material, specify ``ENCRYPT_DECRYPT`` or ``SIGN_VERIFY``.\n + For asymmetric KMS keys with ECC key material, specify ``SIGN_VERIFY``.\n + For asymmetric KMS keys with SM2 (China Regions only) key material, specify ``ENCRYPT_DECRYPT`` or ``SIGN_VERIFY``.\n + For HMAC KMS keys, specify ``GENERATE_VERIFY_MAC``.\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENCRYPT_DECRYPT | SIGN_VERIFY | GENERATE_VERIFY_MAC \nUpdate requires: No interruption" }, "Origin": { - "description": "The source of the key material for the KMS key. You cannot change the origin after you create the KMS key. The default is ``AWS_KMS``, which means that KMS creates the key material.\n To [create a KMS key with no key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-create-cmk.html) (for imported key material), set this value to ``EXTERNAL``. For more information about importing key material into KMS, see [Importing Key Material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the *Developer Guide*.\n You can ignore ``ENABLED`` when Origin is ``EXTERNAL``. When a KMS key with Origin ``EXTERNAL`` is created, the key state is ``PENDING_IMPORT`` and ``ENABLED`` is ``false``. After you import the key material, ``ENABLED`` updated to ``true``. The KMS key can then be used for Cryptographic Operations. \n CFN doesn't support creating an ``Origin`` parameter of the ``AWS_CLOUDHSM`` or ``EXTERNAL_KEY_STORE`` values.", + "description": "The source of the key material for the KMS key. You cannot change the origin after you create the KMS key. The default is ``AWS_KMS``, which means that KMS creates the key material.\n To [create a KMS key with no key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-create-cmk.html) (for imported key material), set this value to ``EXTERNAL``. For more information about importing key material into KMS, see [Importing Key Material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the *Developer Guide*.\n You can ignore ``ENABLED`` when Origin is ``EXTERNAL``. When a KMS key with Origin ``EXTERNAL`` is created, the key state is ``PENDING_IMPORT`` and ``ENABLED`` is ``false``. After you import the key material, ``ENABLED`` updated to ``true``. The KMS key can then be used for Cryptographic Operations. \n CFN doesn't support creating an ``Origin`` parameter of the ``AWS_CLOUDHSM`` or ``EXTERNAL_KEY_STORE`` values.", "type": "string", "default": "AWS_KMS", "enum": [ "AWS_KMS", "EXTERNAL" ], - "markdownDescription": "The source of the key material for the KMS key. You cannot change the origin after you create the KMS key. The default is ``AWS_KMS``, which means that KMS creates the key material.\n To [create a KMS key with no key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-create-cmk.html) (for imported key material), set this value to ``EXTERNAL``. For more information about importing key material into KMS, see [Importing Key Material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the *Developer Guide*.\n You can ignore ``ENABLED`` when Origin is ``EXTERNAL``. When a KMS key with Origin ``EXTERNAL`` is created, the key state is ``PENDING_IMPORT`` and ``ENABLED`` is ``false``. After you import the key material, ``ENABLED`` updated to ``true``. The KMS key can then be used for Cryptographic Operations. \n CFN doesn't support creating an ``Origin`` parameter of the ``AWS_CLOUDHSM`` or ``EXTERNAL_KEY_STORE`` values.\n\n---\n\nRequired: No \nType: String \nAllowed Values: AWS_KMS | EXTERNAL \nUpdate requires: No interruption" + "markdownDescription": "The source of the key material for the KMS key. You cannot change the origin after you create the KMS key. The default is ``AWS_KMS``, which means that KMS creates the key material.\n To [create a KMS key with no key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-create-cmk.html) (for imported key material), set this value to ``EXTERNAL``. For more information about importing key material into KMS, see [Importing Key Material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the *Developer Guide*.\n You can ignore ``ENABLED`` when Origin is ``EXTERNAL``. When a KMS key with Origin ``EXTERNAL`` is created, the key state is ``PENDING_IMPORT`` and ``ENABLED`` is ``false``. After you import the key material, ``ENABLED`` updated to ``true``. The KMS key can then be used for Cryptographic Operations. \n CFN doesn't support creating an ``Origin`` parameter of the ``AWS_CLOUDHSM`` or ``EXTERNAL_KEY_STORE`` values.\n\n---\n\nRequired: No \nType: String \nAllowed Values: AWS_KMS | EXTERNAL \nUpdate requires: No interruption" }, "KeySpec": { - "description": "Specifies the type of KMS key to create. The default value, ``SYMMETRIC_DEFAULT``, creates a KMS key with a 256-bit symmetric key for encryption and decryption. In China Regions, ``SYMMETRIC_DEFAULT`` creates a 128-bit symmetric key that uses SM4 encryption. You can't change the ``KeySpec`` value after the KMS key is created. For help choosing a key spec for your KMS key, see [Choosing a KMS key type](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html) in the *Developer Guide*.\n The ``KeySpec`` property determines the type of key material in the KMS key and the algorithms that the KMS key supports. To further restrict the algorithms that can be used with the KMS key, use a condition key in its key policy or IAM policy. For more information, see [condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms) in the *Developer Guide*.\n If you change the value of the ``KeySpec`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n [services that are integrated with](https://docs.aws.amazon.com/kms/features/#AWS_Service_Integration) use symmetric encryption KMS keys to protect your data. These services do not support encryption with asymmetric KMS keys. For help determining whether a KMS key is asymmetric, see [Identifying asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html) in the *Developer Guide*.\n KMS supports the following key specs for KMS keys:\n + Symmetric encryption key (default)\n + ``SYMMETRIC_DEFAULT`` (AES-256-GCM)\n \n + HMAC keys (symmetric)\n + ``HMAC_224`` \n + ``HMAC_256`` \n + ``HMAC_384`` \n + ``HMAC_512`` \n \n + Asymmetric RSA key pairs\n + ``RSA_2048`` \n + ``RSA_3072`` \n + ``RSA_4096`` \n \n + Asymmetric NIST-recommended elliptic curve key pairs\n + ``ECC_NIST_P256`` (secp256r1)\n + ``ECC_NIST_P384`` (secp384r1)\n + ``ECC_NIST_P521`` (secp521r1)\n \n + Other asymmetric elliptic curve key pairs\n + ``ECC_SECG_P256K1`` (secp256k1), commonly used for cryptocurrencies.\n \n + SM2 key pairs (China Regions only)\n + ``SM2``", + "description": "Specifies the type of KMS key to create. The default value, ``SYMMETRIC_DEFAULT``, creates a KMS key with a 256-bit symmetric key for encryption and decryption. In China Regions, ``SYMMETRIC_DEFAULT`` creates a 128-bit symmetric key that uses SM4 encryption. You can't change the ``KeySpec`` value after the KMS key is created. For help choosing a key spec for your KMS key, see [Choosing a KMS key type](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html) in the *Developer Guide*.\n The ``KeySpec`` property determines the type of key material in the KMS key and the algorithms that the KMS key supports. To further restrict the algorithms that can be used with the KMS key, use a condition key in its key policy or IAM policy. For more information, see [condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms) in the *Developer Guide*.\n If you change the value of the ``KeySpec`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n [services that are integrated with](https://docs.aws.amazon.com/kms/features/#AWS_Service_Integration) use symmetric encryption KMS keys to protect your data. These services do not support encryption with asymmetric KMS keys. For help determining whether a KMS key is asymmetric, see [Identifying asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html) in the *Developer Guide*.\n KMS supports the following key specs for KMS keys:\n + Symmetric encryption key (default)\n + ``SYMMETRIC_DEFAULT`` (AES-256-GCM)\n \n + HMAC keys (symmetric)\n + ``HMAC_224`` \n + ``HMAC_256`` \n + ``HMAC_384`` \n + ``HMAC_512`` \n \n + Asymmetric RSA key pairs\n + ``RSA_2048`` \n + ``RSA_3072`` \n + ``RSA_4096`` \n \n + Asymmetric NIST-recommended elliptic curve key pairs\n + ``ECC_NIST_P256`` (secp256r1)\n + ``ECC_NIST_P384`` (secp384r1)\n + ``ECC_NIST_P521`` (secp521r1)\n \n + Other asymmetric elliptic curve key pairs\n + ``ECC_SECG_P256K1`` (secp256k1), commonly used for cryptocurrencies.\n \n + SM2 key pairs (China Regions only)\n + ``SM2``", "type": "string", "default": "SYMMETRIC_DEFAULT", "enum": [ @@ -97,20 +97,20 @@ "HMAC_512", "SM2" ], - "markdownDescription": "Specifies the type of KMS key to create. The default value, ``SYMMETRIC_DEFAULT``, creates a KMS key with a 256-bit symmetric key for encryption and decryption. In China Regions, ``SYMMETRIC_DEFAULT`` creates a 128-bit symmetric key that uses SM4 encryption. You can't change the ``KeySpec`` value after the KMS key is created. For help choosing a key spec for your KMS key, see [Choosing a KMS key type](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html) in the *Developer Guide*.\n The ``KeySpec`` property determines the type of key material in the KMS key and the algorithms that the KMS key supports. To further restrict the algorithms that can be used with the KMS key, use a condition key in its key policy or IAM policy. For more information, see [condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms) in the *Developer Guide*.\n If you change the value of the ``KeySpec`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n [services that are integrated with](https://docs.aws.amazon.com/kms/features/#AWS_Service_Integration) use symmetric encryption KMS keys to protect your data. These services do not support encryption with asymmetric KMS keys. For help determining whether a KMS key is asymmetric, see [Identifying asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html) in the *Developer Guide*.\n KMS supports the following key specs for KMS keys:\n + Symmetric encryption key (default)\n + ``SYMMETRIC_DEFAULT`` (AES-256-GCM)\n \n + HMAC keys (symmetric)\n + ``HMAC_224`` \n + ``HMAC_256`` \n + ``HMAC_384`` \n + ``HMAC_512`` \n \n + Asymmetric RSA key pairs\n + ``RSA_2048`` \n + ``RSA_3072`` \n + ``RSA_4096`` \n \n + Asymmetric NIST-recommended elliptic curve key pairs\n + ``ECC_NIST_P256`` (secp256r1)\n + ``ECC_NIST_P384`` (secp384r1)\n + ``ECC_NIST_P521`` (secp521r1)\n \n + Other asymmetric elliptic curve key pairs\n + ``ECC_SECG_P256K1`` (secp256k1), commonly used for cryptocurrencies.\n \n + SM2 key pairs (China Regions only)\n + ``SM2``\n\n---\n\nRequired: No \nType: String \nAllowed Values: SYMMETRIC_DEFAULT | RSA_2048 | RSA_3072 | RSA_4096 | ECC_NIST_P256 | ECC_NIST_P384 | ECC_NIST_P521 | ECC_SECG_P256K1 | HMAC_224 | HMAC_256 | HMAC_384 | HMAC_512 | SM2 \nUpdate requires: No interruption" + "markdownDescription": "Specifies the type of KMS key to create. The default value, ``SYMMETRIC_DEFAULT``, creates a KMS key with a 256-bit symmetric key for encryption and decryption. In China Regions, ``SYMMETRIC_DEFAULT`` creates a 128-bit symmetric key that uses SM4 encryption. You can't change the ``KeySpec`` value after the KMS key is created. For help choosing a key spec for your KMS key, see [Choosing a KMS key type](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose.html) in the *Developer Guide*.\n The ``KeySpec`` property determines the type of key material in the KMS key and the algorithms that the KMS key supports. To further restrict the algorithms that can be used with the KMS key, use a condition key in its key policy or IAM policy. For more information, see [condition keys](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms) in the *Developer Guide*.\n If you change the value of the ``KeySpec`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n [services that are integrated with](https://docs.aws.amazon.com/kms/features/#AWS_Service_Integration) use symmetric encryption KMS keys to protect your data. These services do not support encryption with asymmetric KMS keys. For help determining whether a KMS key is asymmetric, see [Identifying asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html) in the *Developer Guide*.\n KMS supports the following key specs for KMS keys:\n + Symmetric encryption key (default)\n + ``SYMMETRIC_DEFAULT`` (AES-256-GCM)\n \n + HMAC keys (symmetric)\n + ``HMAC_224`` \n + ``HMAC_256`` \n + ``HMAC_384`` \n + ``HMAC_512`` \n \n + Asymmetric RSA key pairs\n + ``RSA_2048`` \n + ``RSA_3072`` \n + ``RSA_4096`` \n \n + Asymmetric NIST-recommended elliptic curve key pairs\n + ``ECC_NIST_P256`` (secp256r1)\n + ``ECC_NIST_P384`` (secp384r1)\n + ``ECC_NIST_P521`` (secp521r1)\n \n + Other asymmetric elliptic curve key pairs\n + ``ECC_SECG_P256K1`` (secp256k1), commonly used for cryptocurrencies.\n \n + SM2 key pairs (China Regions only)\n + ``SM2``\n\n---\n\nRequired: No \nType: String \nAllowed Values: SYMMETRIC_DEFAULT | RSA_2048 | RSA_3072 | RSA_4096 | ECC_NIST_P256 | ECC_NIST_P384 | ECC_NIST_P521 | ECC_SECG_P256K1 | HMAC_224 | HMAC_256 | HMAC_384 | HMAC_512 | SM2 \nUpdate requires: No interruption" }, "MultiRegion": { - "description": "Creates a multi-Region primary key that you can replicate in other AWS-Regions. You can't change the ``MultiRegion`` value after the KMS key is created.\n For a list of AWS-Regions in which multi-Region keys are supported, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the **.\n If you change the value of the ``MultiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n For a multi-Region key, set to this property to ``true``. For a single-Region key, omit this property or set it to ``false``. The default value is ``false``.\n *Multi-Region keys* are an KMS feature that lets you create multiple interoperable KMS keys in different AWS-Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them to encrypt data in one AWS-Region and decrypt it in a different AWS-Region without making a cross-Region call or exposing the plaintext data. For more information, see [Multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You can create a symmetric encryption, HMAC, or asymmetric multi-Region KMS key, and you can create a multi-Region key with imported key material. However, you cannot create a multi-Region key in a custom key store.\n To create a replica of this primary key in a different AWS-Region , create an [AWS::KMS::ReplicaKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-replicakey.html) resource in a CloudFormation stack in the replica Region. Specify the key ARN of this primary key.", + "description": "Creates a multi-Region primary key that you can replicate in other AWS-Regions. You can't change the ``MultiRegion`` value after the KMS key is created.\n For a list of AWS-Regions in which multi-Region keys are supported, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the **.\n If you change the value of the ``MultiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n For a multi-Region key, set to this property to ``true``. For a single-Region key, omit this property or set it to ``false``. The default value is ``false``.\n *Multi-Region keys* are an KMS feature that lets you create multiple interoperable KMS keys in different AWS-Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them to encrypt data in one AWS-Region and decrypt it in a different AWS-Region without making a cross-Region call or exposing the plaintext data. For more information, see [Multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You can create a symmetric encryption, HMAC, or asymmetric multi-Region KMS key, and you can create a multi-Region key with imported key material. However, you cannot create a multi-Region key in a custom key store.\n To create a replica of this primary key in a different AWS-Region , create an [AWS::KMS::ReplicaKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-replicakey.html) resource in a CloudFormation stack in the replica Region. Specify the key ARN of this primary key.", "type": "boolean", "default": false, - "markdownDescription": "Creates a multi-Region primary key that you can replicate in other AWS-Regions. You can't change the ``MultiRegion`` value after the KMS key is created.\n For a list of AWS-Regions in which multi-Region keys are supported, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the **.\n If you change the value of the ``MultiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n For a multi-Region key, set to this property to ``true``. For a single-Region key, omit this property or set it to ``false``. The default value is ``false``.\n *Multi-Region keys* are an KMS feature that lets you create multiple interoperable KMS keys in different AWS-Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them to encrypt data in one AWS-Region and decrypt it in a different AWS-Region without making a cross-Region call or exposing the plaintext data. For more information, see [Multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You can create a symmetric encryption, HMAC, or asymmetric multi-Region KMS key, and you can create a multi-Region key with imported key material. However, you cannot create a multi-Region key in a custom key store.\n To create a replica of this primary key in a different AWS-Region , create an [AWS::KMS::ReplicaKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-replicakey.html) resource in a CloudFormation stack in the replica Region. Specify the key ARN of this primary key.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "Creates a multi-Region primary key that you can replicate in other AWS-Regions. You can't change the ``MultiRegion`` value after the KMS key is created.\n For a list of AWS-Regions in which multi-Region keys are supported, see [Multi-Region keys in](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the **.\n If you change the value of the ``MultiRegion`` property on an existing KMS key, the update request fails, regardless of the value of the [UpdateReplacePolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html). This prevents you from accidentally deleting a KMS key by changing an immutable property value.\n For a multi-Region key, set to this property to ``true``. For a single-Region key, omit this property or set it to ``false``. The default value is ``false``.\n *Multi-Region keys* are an KMS feature that lets you create multiple interoperable KMS keys in different AWS-Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them to encrypt data in one AWS-Region and decrypt it in a different AWS-Region without making a cross-Region call or exposing the plaintext data. For more information, see [Multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the *Developer Guide*.\n You can create a symmetric encryption, HMAC, or asymmetric multi-Region KMS key, and you can create a multi-Region key with imported key material. However, you cannot create a multi-Region key in a custom key store.\n To create a replica of this primary key in a different AWS-Region , create an [AWS::KMS::ReplicaKey](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-replicakey.html) resource in a CloudFormation stack in the replica Region. Specify the key ARN of this primary key.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "PendingWindowInDays": { - "description": "Specifies the number of days in the waiting period before KMS deletes a KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.\n When you remove a KMS key from a CloudFormation stack, KMS schedules the KMS key for deletion and starts the mandatory waiting period. The ``PendingWindowInDays`` property determines the length of waiting period. During the waiting period, the key state of KMS key is ``Pending Deletion`` or ``Pending Replica Deletion``, which prevents the KMS key from being used in cryptographic operations. When the waiting period expires, KMS permanently deletes the KMS key.\n KMS will not delete a [multi-Region primary key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) that has replica keys. If you remove a multi-Region primary key from a CloudFormation stack, its key state changes to ``PendingReplicaDeletion`` so it cannot be replicated or used in cryptographic operations. This state can persist indefinitely. When the last of its replica keys is deleted, the key state of the primary key changes to ``PendingDeletion`` and the waiting period specified by ``PendingWindowInDays`` begins. When this waiting period expires, KMS deletes the primary key. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the *Developer Guide*.\n You cannot use a CloudFormation template to cancel deletion of the KMS key after you remove it from the stack, regardless of the waiting period. If you specify a KMS key in your template, even one with the same name, CloudFormation creates a new KMS key. To cancel deletion of a KMS key, use the KMS console or the [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) operation.\n For information about the ``Pending Deletion`` and ``Pending Replica Deletion`` key states, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*. For more information about deleting KMS keys, see the [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operation in the *API Reference* and [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the *Developer Guide*.", + "description": "Specifies the number of days in the waiting period before KMS deletes a KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.\n When you remove a KMS key from a CloudFormation stack, KMS schedules the KMS key for deletion and starts the mandatory waiting period. The ``PendingWindowInDays`` property determines the length of waiting period. During the waiting period, the key state of KMS key is ``Pending Deletion`` or ``Pending Replica Deletion``, which prevents the KMS key from being used in cryptographic operations. When the waiting period expires, KMS permanently deletes the KMS key.\n KMS will not delete a [multi-Region primary key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) that has replica keys. If you remove a multi-Region primary key from a CloudFormation stack, its key state changes to ``PendingReplicaDeletion`` so it cannot be replicated or used in cryptographic operations. This state can persist indefinitely. When the last of its replica keys is deleted, the key state of the primary key changes to ``PendingDeletion`` and the waiting period specified by ``PendingWindowInDays`` begins. When this waiting period expires, KMS deletes the primary key. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the *Developer Guide*.\n You cannot use a CloudFormation template to cancel deletion of the KMS key after you remove it from the stack, regardless of the waiting period. If you specify a KMS key in your template, even one with the same name, CloudFormation creates a new KMS key. To cancel deletion of a KMS key, use the KMS console or the [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) operation.\n For information about the ``Pending Deletion`` and ``Pending Replica Deletion`` key states, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*. For more information about deleting KMS keys, see the [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operation in the *API Reference* and [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the *Developer Guide*.", "type": "integer", "minimum": 7, "maximum": 30, - "markdownDescription": "Specifies the number of days in the waiting period before KMS deletes a KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.\n When you remove a KMS key from a CloudFormation stack, KMS schedules the KMS key for deletion and starts the mandatory waiting period. The ``PendingWindowInDays`` property determines the length of waiting period. During the waiting period, the key state of KMS key is ``Pending Deletion`` or ``Pending Replica Deletion``, which prevents the KMS key from being used in cryptographic operations. When the waiting period expires, KMS permanently deletes the KMS key.\n KMS will not delete a [multi-Region primary key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) that has replica keys. If you remove a multi-Region primary key from a CloudFormation stack, its key state changes to ``PendingReplicaDeletion`` so it cannot be replicated or used in cryptographic operations. This state can persist indefinitely. When the last of its replica keys is deleted, the key state of the primary key changes to ``PendingDeletion`` and the waiting period specified by ``PendingWindowInDays`` begins. When this waiting period expires, KMS deletes the primary key. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the *Developer Guide*.\n You cannot use a CloudFormation template to cancel deletion of the KMS key after you remove it from the stack, regardless of the waiting period. If you specify a KMS key in your template, even one with the same name, CloudFormation creates a new KMS key. To cancel deletion of a KMS key, use the KMS console or the [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) operation.\n For information about the ``Pending Deletion`` and ``Pending Replica Deletion`` key states, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*. For more information about deleting KMS keys, see the [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operation in the *API Reference* and [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the *Developer Guide*.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "markdownDescription": "Specifies the number of days in the waiting period before KMS deletes a KMS key that has been removed from a CloudFormation stack. Enter a value between 7 and 30 days. The default value is 30 days.\n When you remove a KMS key from a CloudFormation stack, KMS schedules the KMS key for deletion and starts the mandatory waiting period. The ``PendingWindowInDays`` property determines the length of waiting period. During the waiting period, the key state of KMS key is ``Pending Deletion`` or ``Pending Replica Deletion``, which prevents the KMS key from being used in cryptographic operations. When the waiting period expires, KMS permanently deletes the KMS key.\n KMS will not delete a [multi-Region primary key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) that has replica keys. If you remove a multi-Region primary key from a CloudFormation stack, its key state changes to ``PendingReplicaDeletion`` so it cannot be replicated or used in cryptographic operations. This state can persist indefinitely. When the last of its replica keys is deleted, the key state of the primary key changes to ``PendingDeletion`` and the waiting period specified by ``PendingWindowInDays`` begins. When this waiting period expires, KMS deletes the primary key. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the *Developer Guide*.\n You cannot use a CloudFormation template to cancel deletion of the KMS key after you remove it from the stack, regardless of the waiting period. If you specify a KMS key in your template, even one with the same name, CloudFormation creates a new KMS key. To cancel deletion of a KMS key, use the KMS console or the [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) operation.\n For information about the ``Pending Deletion`` and ``Pending Replica Deletion`` key states, see [Key state: Effect on your KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the *Developer Guide*. For more information about deleting KMS keys, see the [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) operation in the *API Reference* and [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the *Developer Guide*.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, "Tags": { "description": "Assigns one or more tags to the replica key.\n Tagging or untagging a KMS key can allow or deny permission to the KMS key. For details, see [ABAC for](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) in the *Developer Guide*.\n For information about tags in KMS, see [Tagging keys](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html) in the *Developer Guide*. For information about tags in CloudFormation, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).", diff --git a/server/schema/resources/aws-lambda-alias.json b/server/schema/resources/aws-lambda-alias.json index 8b12fdde..b26a430b 100644 --- a/server/schema/resources/aws-lambda-alias.json +++ b/server/schema/resources/aws-lambda-alias.json @@ -1,101 +1,84 @@ { "typeName": "AWS::Lambda::Alias", "description": "Resource Type definition for AWS::Lambda::Alias", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda", + "additionalProperties": false, + "properties": { + "FunctionName": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + }, + "ProvisionedConcurrencyConfig": { + "$ref": "#/definitions/ProvisionedConcurrencyConfiguration" + }, + "Description": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "FunctionVersion": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "RoutingConfig": { + "$ref": "#/definitions/AliasRoutingConfiguration" + }, + "Name": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + } + }, "definitions": { "ProvisionedConcurrencyConfiguration": { "type": "object", - "description": "A provisioned concurrency configuration for a function's alias.", "additionalProperties": false, "properties": { "ProvisionedConcurrentExecutions": { "type": "integer", - "description": "The amount of provisioned concurrency to allocate for the alias.", - "markdownDescription": "The amount of provisioned concurrency to allocate for the alias.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" } }, "required": [ "ProvisionedConcurrentExecutions" ], - "markdownDescription": "A provisioned concurrency configuration for a function's alias.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "VersionWeight": { "type": "object", - "description": "The traffic-shifting configuration of a Lambda function alias.", "additionalProperties": false, "properties": { "FunctionWeight": { "type": "number", - "description": "The percentage of traffic that the alias routes to the second version.", - "markdownDescription": "The percentage of traffic that the alias routes to the second version.\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, "FunctionVersion": { "type": "string", - "description": "The qualifier of the second version.", - "markdownDescription": "The qualifier of the second version.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ "FunctionVersion", "FunctionWeight" ], - "markdownDescription": "The traffic-shifting configuration of a Lambda function alias.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "AliasRoutingConfiguration": { "type": "object", - "description": "The traffic-shifting configuration of a Lambda function alias.", "additionalProperties": false, "properties": { "AdditionalVersionWeights": { "type": "array", - "description": "The second version, and the percentage of traffic that's routed to it.", "uniqueItems": true, - "insertionOrder": false, "items": { "$ref": "#/definitions/VersionWeight" }, - "markdownDescription": "The second version, and the percentage of traffic that's routed to it.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" } }, - "markdownDescription": "The traffic-shifting configuration of a Lambda function alias.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - } - }, - "properties": { - "FunctionName": { - "description": "The name of the Lambda function.", - "type": "string", - "markdownDescription": "The name of the Lambda function.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "ProvisionedConcurrencyConfig": { - "description": "Specifies a provisioned concurrency configuration for a function's alias.", - "$ref": "#/definitions/ProvisionedConcurrencyConfiguration", - "markdownDescription": "Specifies a provisioned concurrency configuration for a function's alias.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "Description": { - "description": "A description of the alias.", - "type": "string", - "markdownDescription": "A description of the alias.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "FunctionVersion": { - "description": "The function version that the alias invokes.", - "type": "string", - "markdownDescription": "The function version that the alias invokes.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" - }, - "RoutingConfig": { - "description": "The routing configuration of the alias.", - "$ref": "#/definitions/AliasRoutingConfiguration", - "markdownDescription": "The routing configuration of the alias.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "Name": { - "description": "The name of the alias.", - "type": "string", - "markdownDescription": "The name of the alias.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + "required": [ + "AdditionalVersionWeights" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, - "tagging": { - "taggable": false - }, - "additionalProperties": false, "required": [ "FunctionName", "FunctionVersion", @@ -106,68 +89,15 @@ "/properties/FunctionName" ], "primaryIdentifier": [ - "/properties/AliasArn" + "/properties/Id" ], "readOnlyProperties": [ - "/properties/AliasArn" + "/properties/Id" ], - "handlers": { - "create": { - "permissions": [ - "lambda:CreateAlias", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:GetProvisionedConcurrencyConfig" - ], - "timeoutInMinutes": 45 - }, - "read": { - "permissions": [ - "lambda:GetAlias", - "lambda:GetProvisionedConcurrencyConfig" - ] - }, - "delete": { - "permissions": [ - "lambda:DeleteAlias", - "lambda:GetAlias" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "FunctionName": { - "$ref": "resource-schema.json#/properties/FunctionName" - } - }, - "required": [ - "FunctionName" - ] - }, - "permissions": [ - "lambda:ListAliases" - ] - }, - "update": { - "permissions": [ - "lambda:UpdateAlias", - "lambda:GetAlias", - "lambda:PutProvisionedConcurrencyConfig", - "lambda:DeleteProvisionedConcurrencyConfig", - "lambda:GetProvisionedConcurrencyConfig", - "codedeploy:CreateDeployment", - "codedeploy:GetDeployment", - "codedeploy:GetDeploymentGroup", - "codedeploy:GetDeploymentConfig", - "codedeploy:StopDeployment" - ], - "timeoutInMinutes": 120 - } - }, "attributes": { - "AliasArn": { - "description": "Lambda Alias ARN generated by the service.", + "Id": { "type": "string", - "markdownDescription": "Lambda Alias ARN generated by the service.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "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-lambda-function.json b/server/schema/resources/aws-lambda-function.json index e8c691be..db27c580 100644 --- a/server/schema/resources/aws-lambda-function.json +++ b/server/schema/resources/aws-lambda-function.json @@ -1,454 +1,272 @@ { - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "tagProperty": "/properties/Tags", - "cloudFormationSystemTags": true - }, - "handlers": { - "read": { - "permissions": [ - "lambda:GetFunction", - "lambda:GetFunctionCodeSigningConfig" - ] + "typeName": "AWS::Lambda::Function", + "description": "The ``AWS::Lambda::Function`` resource creates a Lambda function. To create a function, you need a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) and an [execution role](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). The deployment package is a .zip file archive or container image that contains your function code. The execution role grants the function permission to use AWS services, such as Amazon CloudWatch Logs for log streaming and AWS X-Ray for request tracing.\n You set the package type to ``Image`` if the deployment package is a [container image](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html). For a container image, the code property must include the URI of a container image in the Amazon ECR registry. You do not need to specify the handler and runtime properties. \n You set the package type to ``Zip`` if the deployment package is a [.zip file archive](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html#gettingstarted-package-zip). For a .zip file archive, the code property specifies the location of the .zip file. You must also specify the handler and runtime properties. For a Python example, see [Deploy Python Lambda functions with .zip file archives](https://docs.aws.amazon.com/lambda/latest/dg/python-package.html).\n You can use [code signing](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html) if your deployment package is a .zip file archive. To enable code signing for this function, specify the ARN of a code-signing configuration. When a user attempts to deploy a code package with ``UpdateFunctionCode``, Lambda checks that the code package has a valid signature from a trusted publisher. The code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.\n Note that you configure [provisioned concurrency](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) on a ``AWS::Lambda::Version`` or a ``AWS::Lambda::Alias``.\n For a complete introduction to Lambda functions, see [What is Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/lambda-welcome.html) in the *Lambda developer guide.*", + "additionalProperties": false, + "properties": { + "Code": { + "description": "The code for the function.", + "$ref": "#/definitions/Code", + "markdownDescription": "The code for the function.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: No interruption" }, - "create": { - "permissions": [ - "lambda:CreateFunction", - "lambda:GetFunction", - "lambda:PutFunctionConcurrency", - "iam:PassRole", - "s3:GetObject", - "s3:GetObjectVersion", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "elasticfilesystem:DescribeMountTargets", - "kms:CreateGrant", - "kms:Decrypt", - "kms:Encrypt", - "kms:GenerateDataKey", - "lambda:GetCodeSigningConfig", - "lambda:GetFunctionCodeSigningConfig", - "lambda:GetLayerVersion", - "lambda:GetRuntimeManagementConfig", - "lambda:PutRuntimeManagementConfig", - "lambda:TagResource", - "lambda:GetPolicy", - "lambda:AddPermission", - "lambda:RemovePermission", - "lambda:GetResourcePolicy", - "lambda:PutResourcePolicy" - ] + "DeadLetterConfig": { + "description": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see [Dead-letter queues](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq).", + "$ref": "#/definitions/DeadLetterConfig", + "markdownDescription": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see [Dead-letter queues](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "update": { - "permissions": [ - "lambda:DeleteFunctionConcurrency", - "lambda:GetFunction", - "lambda:PutFunctionConcurrency", - "lambda:ListTags", - "lambda:TagResource", - "lambda:UntagResource", - "lambda:UpdateFunctionConfiguration", - "lambda:UpdateFunctionCode", - "iam:PassRole", - "s3:GetObject", - "s3:GetObjectVersion", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs", - "elasticfilesystem:DescribeMountTargets", - "kms:CreateGrant", - "kms:Decrypt", - "kms:GenerateDataKey", - "lambda:GetRuntimeManagementConfig", - "lambda:PutRuntimeManagementConfig", - "lambda:PutFunctionCodeSigningConfig", - "lambda:DeleteFunctionCodeSigningConfig", - "lambda:GetCodeSigningConfig", - "lambda:GetFunctionCodeSigningConfig", - "lambda:GetPolicy", - "lambda:AddPermission", - "lambda:RemovePermission", - "lambda:GetResourcePolicy", - "lambda:PutResourcePolicy", - "lambda:DeleteResourcePolicy" - ] + "Description": { + "description": "A description of the function.", + "type": "string", + "maxLength": 256, + "markdownDescription": "A description of the function.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" }, - "list": { - "permissions": [ - "lambda:ListFunctions" - ] + "Environment": { + "description": "Environment variables that are accessible from function code during execution.", + "$ref": "#/definitions/Environment", + "markdownDescription": "Environment variables that are accessible from function code during execution.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "delete": { - "permissions": [ - "lambda:DeleteFunction", - "lambda:GetFunction", - "ec2:DescribeNetworkInterfaces" - ] - } - }, - "typeName": "AWS::Lambda::Function", - "readOnlyProperties": [ - "/properties/SnapStartResponse", - "/properties/SnapStartResponse/ApplyOn", - "/properties/SnapStartResponse/OptimizationStatus", - "/properties/Arn" - ], - "description": "The ``AWS::Lambda::Function`` resource creates a Lambda function. To create a function, you need a [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) and an [execution role](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). The deployment package is a .zip file archive or container image that contains your function code. The execution role grants the function permission to use AWS services, such as Amazon CloudWatch Logs for log streaming and AWS X-Ray for request tracing.\n You set the package type to ``Image`` if the deployment package is a [container image](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html). For a container image, the code property must include the URI of a container image in the Amazon ECR registry. You do not need to specify the handler and runtime properties. \n You set the package type to ``Zip`` if the deployment package is a [.zip file archive](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html#gettingstarted-package-zip). For a .zip file archive, the code property specifies the location of the .zip file. You must also specify the handler and runtime properties. For a Python example, see [Deploy Python Lambda functions with .zip file archives](https://docs.aws.amazon.com/lambda/latest/dg/python-package.html).\n You can use [code signing](https://docs.aws.amazon.com/lambda/latest/dg/configuration-codesigning.html) if your deployment package is a .zip file archive. To enable code signing for this function, specify the ARN of a code-signing configuration. When a user attempts to deploy a code package with ``UpdateFunctionCode``, Lambda checks that the code package has a valid signature from a trusted publisher. The code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.\n Note that you configure [provisioned concurrency](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) on a ``AWS::Lambda::Version`` or a ``AWS::Lambda::Alias``.\n For a complete introduction to Lambda functions, see [What is Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/lambda-welcome.html) in the *Lambda developer guide.*", - "writeOnlyProperties": [ - "/properties/SnapStart", - "/properties/SnapStart/ApplyOn", - "/properties/Code", - "/properties/Code/ImageUri", - "/properties/Code/S3Bucket", - "/properties/Code/S3Key", - "/properties/Code/S3ObjectVersion", - "/properties/Code/ZipFile" - ], - "createOnlyProperties": [ - "/properties/FunctionName" - ], - "additionalProperties": false, - "primaryIdentifier": [ - "/properties/FunctionName" - ], - "definitions": { - "ImageConfig": { - "description": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).", - "additionalProperties": false, - "type": "object", - "properties": { - "WorkingDirectory": { - "description": "Specifies the working directory. The length of the directory string cannot exceed 1,000 characters.", - "type": "string", - "markdownDescription": "Specifies the working directory. The length of the directory string cannot exceed 1,000 characters.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "Command": { - "maxItems": 1500, - "uniqueItems": true, - "description": "Specifies parameters that you want to pass in with ENTRYPOINT. You can specify a maximum of 1,500 parameters in the list.", - "type": "array", - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "Specifies parameters that you want to pass in with ENTRYPOINT. You can specify a maximum of 1,500 parameters in the list.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "EntryPoint": { - "maxItems": 1500, - "uniqueItems": true, - "description": "Specifies the entry point to their application, which is typically the location of the runtime executable. You can specify a maximum of 1,500 string entries in the list.", - "type": "array", - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "Specifies the entry point to their application, which is typically the location of the runtime executable. You can specify a maximum of 1,500 string entries in the list.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - } + "EphemeralStorage": { + "description": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.", + "$ref": "#/definitions/EphemeralStorage", + "markdownDescription": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "FileSystemConfigs": { + "description": "Connection settings for an Amazon EFS file system. To connect a function to a file system, a mount target must be available in every Availability Zone that your function connects to. If your template contains an [AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) resource, you must also specify a ``DependsOn`` attribute to ensure that the mount target is created or updated before the function.\n For more information about using the ``DependsOn`` attribute, see [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html).", + "maxItems": 1, + "type": "array", + "items": { + "$ref": "#/definitions/FileSystemConfig" }, - "markdownDescription": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "Connection settings for an Amazon EFS file system. To connect a function to a file system, a mount target must be available in every Availability Zone that your function connects to. If your template contains an [AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) resource, you must also specify a ``DependsOn`` attribute to ensure that the mount target is created or updated before the function.\n For more information about using the ``DependsOn`` attribute, see [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html).\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "TracingConfig": { - "description": "The function's [](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) tracing configuration. To sample and record incoming requests, set ``Mode`` to ``Active``.", - "additionalProperties": false, - "type": "object", - "properties": { - "Mode": { - "description": "The tracing mode.", - "type": "string", - "enum": [ - "Active", - "PassThrough" - ], - "markdownDescription": "The tracing mode.\n\n---\n\nRequired: No \nType: String \nAllowed Values: Active | PassThrough \nUpdate requires: No interruption" - } + "FunctionName": { + "description": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, CFN generates one.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", + "type": "string", + "minLength": 1, + "markdownDescription": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, CFN generates one.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nUpdate requires: Replacement" + }, + "Handler": { + "description": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html).", + "type": "string", + "maxLength": 128, + "markdownDescription": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html).\n\n---\n\nRequired: No \nType: String \nMaximum Length: 128 \nPattern: ^[^\\s]+$ \nUpdate requires: No interruption" + }, + "Architectures": { + "type": "array", + "uniqueItems": true, + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "enum": [ + "x86_64", + "arm64" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: x86_64 | arm64 \nUpdate requires: No interruption" }, - "markdownDescription": "The function's [](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) tracing configuration. To sample and record incoming requests, set ``Mode`` to ``Active``.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "description": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is ``x86_64``.", + "markdownDescription": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is ``x86_64``.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "KmsKeyArn": { + "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, Lambda also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, Lambda also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). If you don't provide a customer managed key, Lambda uses a default service key.", + "type": "string", + "markdownDescription": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, Lambda also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, Lambda also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). If you don't provide a customer managed key, Lambda uses a default service key.\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" + }, + "Layers": { + "description": "A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.", + "type": "array", + "uniqueItems": false, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "MemorySize": { + "description": "The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase.", + "type": "integer", + "markdownDescription": "The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "ReservedConcurrentExecutions": { + "description": "The number of simultaneous executions to reserve for the function.", + "type": "integer", + "minimum": 0, + "markdownDescription": "The number of simultaneous executions to reserve for the function.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Role": { + "description": "The Amazon Resource Name (ARN) of the function's execution role.", + "type": "string", + "markdownDescription": "The Amazon Resource Name (ARN) of the function's execution role.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$ \nUpdate requires: No interruption" + }, + "Runtime": { + "description": "The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive.\n The following list includes deprecated runtimes. For more information, see [Runtime deprecation policy](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy).", + "type": "string", + "markdownDescription": "The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive.\n The following list includes deprecated runtimes. For more information, see [Runtime deprecation policy](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy).\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Tags": { + "description": "A list of [tags](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.", + "type": "array", + "uniqueItems": true, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "markdownDescription": "A list of [tags](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Timeout": { + "description": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).", + "type": "integer", + "minimum": 1, + "markdownDescription": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "TracingConfig": { + "description": "Set ``Mode`` to ``Active`` to sample and trace a subset of incoming requests with [X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html).", + "$ref": "#/definitions/TracingConfig", + "markdownDescription": "Set ``Mode`` to ``Active`` to sample and trace a subset of incoming requests with [X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, "VpcConfig": { - "description": "The VPC security groups and subnets that are attached to a Lambda function. When you connect a function to a VPC, Lambda creates an elastic network interface for each combination of security group and subnet in the function's VPC configuration. The function can only access resources and the internet through that VPC. For more information, see [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n When you delete a function, CFN monitors the state of its network interfaces and waits for Lambda to delete them before proceeding. If the VPC is defined in the same stack, the network interfaces need to be deleted by Lambda before CFN can delete the VPC's resources.\n To monitor network interfaces, CFN needs the ``ec2:DescribeNetworkInterfaces`` permission. It obtains this from the user or role that modifies the stack. If you don't provide this permission, CFN does not wait for network interfaces to be deleted.", - "additionalProperties": false, - "type": "object", - "properties": { - "Ipv6AllowedForDualStack": { - "description": "Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.", - "type": "boolean", - "markdownDescription": "Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "SecurityGroupIds": { - "maxItems": 5, - "uniqueItems": false, - "description": "A list of VPC security group IDs.", - "type": "array", - "items": { - "anyOf": [ - { - "relationshipRef": { - "typeName": "AWS::EC2::SecurityGroup", - "propertyPath": "/properties/GroupId" - } - }, - { - "relationshipRef": { - "typeName": "AWS::EC2::SecurityGroup", - "propertyPath": "/properties/Id" - } - }, - { - "relationshipRef": { - "typeName": "AWS::EC2::VPC", - "propertyPath": "/properties/DefaultSecurityGroup" - } - } - ], - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of VPC security group IDs.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "SubnetIds": { - "maxItems": 16, - "uniqueItems": false, - "description": "A list of VPC subnet IDs.", - "type": "array", - "items": { - "relationshipRef": { - "typeName": "AWS::EC2::Subnet", - "propertyPath": "/properties/SubnetId" - }, - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of VPC subnet IDs.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - } - }, - "markdownDescription": "The VPC security groups and subnets that are attached to a Lambda function. When you connect a function to a VPC, Lambda creates an elastic network interface for each combination of security group and subnet in the function's VPC configuration. The function can only access resources and the internet through that VPC. For more information, see [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n When you delete a function, CFN monitors the state of its network interfaces and waits for Lambda to delete them before proceeding. If the VPC is defined in the same stack, the network interfaces need to be deleted by Lambda before CFN can delete the VPC's resources.\n To monitor network interfaces, CFN needs the ``ec2:DescribeNetworkInterfaces`` permission. It obtains this from the user or role that modifies the stack. If you don't provide this permission, CFN does not wait for network interfaces to be deleted.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "description": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).", + "$ref": "#/definitions/VpcConfig", + "markdownDescription": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "DeadLetterConfig": { - "description": "The [dead-letter queue](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq) for failed asynchronous invocations.", - "additionalProperties": false, - "type": "object", - "properties": { - "TargetArn": { - "description": "The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic.", - "anyOf": [ - { - "relationshipRef": { - "typeName": "AWS::SQS::Queue", - "propertyPath": "/properties/Arn" - } - }, - { - "relationshipRef": { - "typeName": "AWS::SNS::Topic", - "propertyPath": "/properties/TopicArn" - } - } - ], - "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic.\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" - } - }, - "markdownDescription": "The [dead-letter queue](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq) for failed asynchronous invocations.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "CodeSigningConfigArn": { + "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", + "type": "string", + "markdownDescription": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.\n\n---\n\nRequired: No \nType: String \nPattern: arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17} \nUpdate requires: No interruption" }, - "RuntimeManagementConfig": { - "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).", - "additionalProperties": false, - "type": "object", - "properties": { - "UpdateRuntimeOn": { - "description": "Specify the runtime update mode.\n + *Auto (default)* - Automatically update to the most recent and secure runtime version using a [Two-phase runtime version rollout](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-two-phase). This is the best choice for most customers to ensure they always benefit from runtime updates.\n + *FunctionUpdate* - LAM updates the runtime of you function to the most recent and secure runtime version when you update your function. This approach synchronizes runtime updates with function deployments, giving you control over when runtime updates are applied and allowing you to detect and mitigate rare runtime update incompatibilities early. When using this setting, you need to regularly update your functions to keep their runtime up-to-date.\n + *Manual* - You specify a runtime version in your function configuration. The function will use this runtime version indefinitely. In the rare case where a new runtime version is incompatible with an existing function, this allows you to roll back your function to an earlier runtime version. For more information, see [Roll back a runtime version](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-rollback).\n \n *Valid Values*: ``Auto`` | ``FunctionUpdate`` | ``Manual``", - "type": "string", - "enum": [ - "Auto", - "FunctionUpdate", - "Manual" - ], - "markdownDescription": "Specify the runtime update mode.\n + *Auto (default)* - Automatically update to the most recent and secure runtime version using a [Two-phase runtime version rollout](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-two-phase). This is the best choice for most customers to ensure they always benefit from runtime updates.\n + *FunctionUpdate* - LAM updates the runtime of you function to the most recent and secure runtime version when you update your function. This approach synchronizes runtime updates with function deployments, giving you control over when runtime updates are applied and allowing you to detect and mitigate rare runtime update incompatibilities early. When using this setting, you need to regularly update your functions to keep their runtime up-to-date.\n + *Manual* - You specify a runtime version in your function configuration. The function will use this runtime version indefinitely. In the rare case where a new runtime version is incompatible with an existing function, this allows you to roll back your function to an earlier runtime version. For more information, see [Roll back a runtime version](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-rollback).\n \n *Valid Values*: ``Auto`` | ``FunctionUpdate`` | ``Manual``\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: Auto | FunctionUpdate | Manual \nUpdate requires: No interruption" - }, - "RuntimeVersionArn": { - "description": "The ARN of the runtime version you want the function to use.\n This is only required if you're using the *Manual* runtime update mode.", - "type": "string", - "markdownDescription": "The ARN of the runtime version you want the function to use.\n This is only required if you're using the *Manual* runtime update mode.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "required": [ - "UpdateRuntimeOn" + "ImageConfig": { + "description": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).", + "$ref": "#/definitions/ImageConfig", + "markdownDescription": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PackageType": { + "description": "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.", + "type": "string", + "enum": [ + "Image", + "Zip" ], - "markdownDescription": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.\n\n---\n\nRequired: No \nType: String \nAllowed Values: Image | Zip \nUpdate requires: No interruption" }, "SnapStart": { "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", - "additionalProperties": false, - "type": "object", - "properties": { - "ApplyOn": { - "description": "Set ``ApplyOn`` to ``PublishedVersions`` to create a snapshot of the initialized execution environment when you publish a function version.", - "type": "string", - "enum": [ - "PublishedVersions", - "None" - ], - "markdownDescription": "Set ``ApplyOn`` to ``PublishedVersions`` to create a snapshot of the initialized execution environment when you publish a function version.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: PublishedVersions | None \nUpdate requires: No interruption" - } - }, - "required": [ - "ApplyOn" - ], - "markdownDescription": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "$ref": "#/definitions/SnapStart", + "markdownDescription": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "SnapStartResponse": { - "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", - "additionalProperties": false, - "type": "object", - "properties": { - "OptimizationStatus": { - "description": "When you provide a [qualified Amazon Resource Name (ARN)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using), this response element indicates whether SnapStart is activated for the specified function version.", - "type": "string", - "enum": [ - "On", - "Off" - ], - "markdownDescription": "When you provide a [qualified Amazon Resource Name (ARN)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using), this response element indicates whether SnapStart is activated for the specified function version.\n\n---\n\nRequired: No \nType: String \nAllowed Values: On | Off \nUpdate requires: No interruption" - }, - "ApplyOn": { - "description": "When set to ``PublishedVersions``, Lambda creates a snapshot of the execution environment when you publish a function version.", - "type": "string", - "enum": [ - "PublishedVersions", - "None" - ], - "markdownDescription": "When set to ``PublishedVersions``, Lambda creates a snapshot of the execution environment when you publish a function version.\n\n---\n\nRequired: No \nType: String \nAllowed Values: PublishedVersions | None \nUpdate requires: No interruption" - } - }, - "markdownDescription": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "RuntimeManagementConfig": { + "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).", + "$ref": "#/definitions/RuntimeManagementConfig", + "markdownDescription": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, + "LoggingConfig": { + "description": "The function's Amazon CloudWatch Logs configuration settings.", + "$ref": "#/definitions/LoggingConfig", + "markdownDescription": "The function's Amazon CloudWatch Logs configuration settings.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + } + }, + "definitions": { "Code": { - "description": "The [deployment package](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html) for a Lambda function. To deploy a function defined as a container image, you specify the location of a container image in the Amazon ECR registry. For a .zip file deployment package, you can specify the location of an object in Amazon S3. For Node.js and Python functions, you can specify the function code inline in the template.\n Changes to a deployment package in Amazon S3 or a container image in ECR are not detected automatically during stack updates. To update the function code, change the object key or version in the template.", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { - "S3ObjectVersion": { - "minLength": 1, - "description": "For versioned objects, the version of the deployment package object to use.", - "type": "string", - "maxLength": 1024, - "markdownDescription": "For versioned objects, the version of the deployment package object to use.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" - }, "S3Bucket": { - "relationshipRef": { - "typeName": "AWS::S3::Bucket", - "propertyPath": "/properties/BucketName" - }, - "minLength": 3, - "description": "An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account.", "type": "string", + "description": "An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account.", + "minLength": 3, "maxLength": 63, "markdownDescription": "An Amazon S3 bucket in the same AWS-Region as your function. The bucket can be in a different AWS-account.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 3 \nMaximum Length: 63 \nPattern: ^[0-9A-Za-z\\.\\-_]*(?``. To use a different log group, enter an existing log group or enter a new log group name.", - "type": "string", - "maxLength": 512, - "markdownDescription": "The name of the Amazon CloudWatch log group the function sends logs to. By default, Lambda functions send logs to a default log group named ``/aws/lambda/``. To use a different log group, enter an existing log group or enter a new log group name.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nPattern: [\\.\\-_/#A-Za-z0-9]+ \nUpdate requires: No interruption" - }, - "SystemLogLevel": { - "description": "Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where ``DEBUG`` is the highest level and ``WARN`` is the lowest.", + "TargetArn": { "type": "string", - "enum": [ - "DEBUG", - "INFO", - "WARN" - ], - "markdownDescription": "Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where ``DEBUG`` is the highest level and ``WARN`` is the lowest.\n\n---\n\nRequired: No \nType: String \nAllowed Values: DEBUG | INFO | WARN \nUpdate requires: No interruption" + "description": "The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic.", + "markdownDescription": "The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic.\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" } }, - "markdownDescription": "The function's Amazon CloudWatch Logs configuration settings.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "The [dead-letter queue](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq) for failed asynchronous invocations.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Environment": { - "description": "A function's environment variable settings. You can use environment variables to adjust your function's behavior without updating code. An environment variable is a pair of strings that are stored in a function's version-specific configuration.", - "additionalProperties": false, "type": "object", + "additionalProperties": false, + "description": "A function's environment variable settings. You can use environment variables to adjust your function's behavior without updating code. An environment variable is a pair of strings that are stored in a function's version-specific configuration.", "properties": { "Variables": { + "type": "object", + "additionalProperties": false, + "description": "Environment variable key-value pairs. For more information, see [Using Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html).", "patternProperties": { "[a-zA-Z][a-zA-Z0-9_]+": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "description": "Environment variable key-value pairs. For more information, see [Using Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html).", - "additionalProperties": false, - "type": "object", "markdownDescription": "Environment variable key-value pairs. For more information, see [Using Lambda environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html).\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, - "markdownDescription": "A function's environment variable settings. You can use environment variables to adjust your function's behavior without updating code. An environment variable is a pair of strings that are stored in a function's version-specific configuration.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "A function's environment variable settings. You can use environment variables to adjust your function's behavior without updating code. An environment variable is a pair of strings that are stored in a function's version-specific configuration.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "EphemeralStorage": { + "type": "object", + "additionalProperties": false, + "description": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.", + "properties": { + "Size": { + "type": "integer", + "description": "The size of the function's ``/tmp`` directory.", + "minimum": 512, + "maximum": 10240, + "markdownDescription": "The size of the function's ``/tmp`` directory.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + } + }, + "required": [ + "Size" + ], + "markdownDescription": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "FileSystemConfig": { - "description": "Details about the connection between a Lambda function and an [Amazon EFS file system](https://docs.aws.amazon.com/lambda/latest/dg/configuration-filesystem.html).", - "additionalProperties": false, "type": "object", + "additionalProperties": false, "properties": { "Arn": { - "description": "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.", "type": "string", + "description": "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.", "maxLength": 200, "markdownDescription": "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 200 \nPattern: ^arn:aws[a-zA-Z-]*:elasticfilesystem:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$ \nUpdate requires: No interruption" }, "LocalMountPath": { - "description": "The path where the function can access the file system, starting with ``/mnt/``.", "type": "string", + "description": "The path where the function can access the file system, starting with ``/mnt/``.", "maxLength": 160, "markdownDescription": "The path where the function can access the file system, starting with ``/mnt/``.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 160 \nPattern: ^/mnt/[a-zA-Z0-9-_.]+$ \nUpdate requires: No interruption" } @@ -457,231 +275,367 @@ "Arn", "LocalMountPath" ], + "description": "Details about the connection between a Lambda function and an [Amazon EFS file system](https://docs.aws.amazon.com/lambda/latest/dg/configuration-filesystem.html).", "markdownDescription": "Details about the connection between a Lambda function and an [Amazon EFS file system](https://docs.aws.amazon.com/lambda/latest/dg/configuration-filesystem.html).\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Tag": { - "description": "", - "additionalProperties": false, + "TracingConfig": { "type": "object", + "additionalProperties": false, + "description": "The function's [](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) tracing configuration. To sample and record incoming requests, set ``Mode`` to ``Active``.", "properties": { - "Value": { - "minLength": 0, - "description": "", + "Mode": { "type": "string", - "maxLength": 256, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + "description": "The tracing mode.", + "enum": [ + "Active", + "PassThrough" + ], + "markdownDescription": "The tracing mode.\n\n---\n\nRequired: No \nType: String \nAllowed Values: Active | PassThrough \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The function's [](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html) tracing configuration. To sample and record incoming requests, set ``Mode`` to ``Active``.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "VpcConfig": { + "type": "object", + "additionalProperties": false, + "description": "The VPC security groups and subnets that are attached to a Lambda function. When you connect a function to a VPC, Lambda creates an elastic network interface for each combination of security group and subnet in the function's VPC configuration. The function can only access resources and the internet through that VPC. For more information, see [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n When you delete a function, CFN monitors the state of its network interfaces and waits for Lambda to delete them before proceeding. If the VPC is defined in the same stack, the network interfaces need to be deleted by Lambda before CFN can delete the VPC's resources.\n To monitor network interfaces, CFN needs the ``ec2:DescribeNetworkInterfaces`` permission. It obtains this from the user or role that modifies the stack. If you don't provide this permission, CFN does not wait for network interfaces to be deleted.", + "properties": { + "SecurityGroupIds": { + "type": "array", + "description": "A list of VPC security group IDs.", + "uniqueItems": false, + "maxItems": 5, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "A list of VPC security group IDs.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "SubnetIds": { + "type": "array", + "description": "A list of VPC subnet IDs.", + "uniqueItems": false, + "maxItems": 16, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "A list of VPC subnet IDs.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, + "Ipv6AllowedForDualStack": { + "type": "boolean", + "description": "Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.", + "markdownDescription": "Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The VPC security groups and subnets that are attached to a Lambda function. When you connect a function to a VPC, Lambda creates an elastic network interface for each combination of security group and subnet in the function's VPC configuration. The function can only access resources and the internet through that VPC. For more information, see [VPC Settings](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n When you delete a function, CFN monitors the state of its network interfaces and waits for Lambda to delete them before proceeding. If the VPC is defined in the same stack, the network interfaces need to be deleted by Lambda before CFN can delete the VPC's resources.\n To monitor network interfaces, CFN needs the ``ec2:DescribeNetworkInterfaces`` permission. It obtains this from the user or role that modifies the stack. If you don't provide this permission, CFN does not wait for network interfaces to be deleted.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { "Key": { - "minLength": 1, - "description": "", "type": "string", + "description": "", + "minLength": 1, "maxLength": 128, "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "description": "", + "minLength": 0, + "maxLength": 256, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ "Key" ], + "description": "", "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "EphemeralStorage": { - "description": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.", - "additionalProperties": false, + "ImageConfig": { "type": "object", + "additionalProperties": false, "properties": { - "Size": { - "description": "The size of the function's ``/tmp`` directory.", - "maximum": 10240, - "type": "integer", - "minimum": 512, - "markdownDescription": "The size of the function's ``/tmp`` directory.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + "EntryPoint": { + "type": "array", + "description": "Specifies the entry point to their application, which is typically the location of the runtime executable. You can specify a maximum of 1,500 string entries in the list.", + "uniqueItems": true, + "maxItems": 1500, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "Specifies the entry point to their application, which is typically the location of the runtime executable. You can specify a maximum of 1,500 string entries in the list.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Command": { + "type": "array", + "description": "Specifies parameters that you want to pass in with ENTRYPOINT. You can specify a maximum of 1,500 parameters in the list.", + "uniqueItems": true, + "maxItems": 1500, + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "Specifies parameters that you want to pass in with ENTRYPOINT. You can specify a maximum of 1,500 parameters in the list.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "WorkingDirectory": { + "type": "string", + "description": "Specifies the working directory. The length of the directory string cannot exceed 1,000 characters.", + "markdownDescription": "Specifies the working directory. The length of the directory string cannot exceed 1,000 characters.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "required": [ - "Size" - ], - "markdownDescription": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - } - }, - "properties": { - "Description": { - "description": "A description of the function.", - "type": "string", - "maxLength": 256, - "markdownDescription": "A description of the function.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" - }, - "TracingConfig": { - "description": "Set ``Mode`` to ``Active`` to sample and trace a subset of incoming requests with [X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html).", - "$ref": "#/definitions/TracingConfig", - "markdownDescription": "Set ``Mode`` to ``Active`` to sample and trace a subset of incoming requests with [X-Ray](https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "VpcConfig": { - "description": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).", - "$ref": "#/definitions/VpcConfig", - "markdownDescription": "For network connectivity to AWS resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see [Configuring a Lambda function to access resources in a VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "RuntimeManagementConfig": { - "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).", - "$ref": "#/definitions/RuntimeManagementConfig", - "markdownDescription": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "ReservedConcurrentExecutions": { - "description": "The number of simultaneous executions to reserve for the function.", - "type": "integer", - "minimum": 0, - "markdownDescription": "The number of simultaneous executions to reserve for the function.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "description": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).", + "markdownDescription": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "SnapStart": { + "type": "object", + "additionalProperties": false, "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", - "$ref": "#/definitions/SnapStart", - "markdownDescription": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "FileSystemConfigs": { - "maxItems": 1, - "description": "Connection settings for an Amazon EFS file system. To connect a function to a file system, a mount target must be available in every Availability Zone that your function connects to. If your template contains an [AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) resource, you must also specify a ``DependsOn`` attribute to ensure that the mount target is created or updated before the function.\n For more information about using the ``DependsOn`` attribute, see [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html).", - "type": "array", - "items": { - "$ref": "#/definitions/FileSystemConfig" - }, - "markdownDescription": "Connection settings for an Amazon EFS file system. To connect a function to a file system, a mount target must be available in every Availability Zone that your function connects to. If your template contains an [AWS::EFS::MountTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) resource, you must also specify a ``DependsOn`` attribute to ensure that the mount target is created or updated before the function.\n For more information about using the ``DependsOn`` attribute, see [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html).\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "FunctionName": { - "minLength": 1, - "description": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, CFN generates one.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.", - "type": "string", - "markdownDescription": "The name of the Lambda function, up to 64 characters in length. If you don't specify a name, CFN generates one.\n If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nUpdate requires: Replacement" - }, - "Runtime": { - "description": "The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive.\n The following list includes deprecated runtimes. For more information, see [Runtime deprecation policy](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy).", - "type": "string", - "markdownDescription": "The identifier of the function's [runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). Runtime is required if the deployment package is a .zip file archive.\n The following list includes deprecated runtimes. For more information, see [Runtime deprecation policy](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy).\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "KmsKeyArn": { - "description": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, Lambda also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, Lambda also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). If you don't provide a customer managed key, Lambda uses a default service key.", - "type": "string", - "markdownDescription": "The ARN of the KMSlong (KMS) customer managed key that's used to encrypt your function's [environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption). When [Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html) is activated, Lambda also uses this key is to encrypt your function's snapshot. If you deploy your function using a container image, Lambda also uses this key to encrypt your function when it's deployed. Note that this is not the same key that's used to protect your container image in the Amazon Elastic Container Registry (Amazon ECR). If you don't provide a customer managed key, Lambda uses a default service key.\n\n---\n\nRequired: No \nType: String \nPattern: ^(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()$ \nUpdate requires: No interruption" - }, - "PackageType": { - "description": "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.", - "type": "string", - "enum": [ - "Image", - "Zip" - ], - "markdownDescription": "The type of deployment package. Set to ``Image`` for container image and set ``Zip`` for .zip file archive.\n\n---\n\nRequired: No \nType: String \nAllowed Values: Image | Zip \nUpdate requires: No interruption" - }, - "CodeSigningConfigArn": { - "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.", - "type": "string", - "markdownDescription": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function.\n\n---\n\nRequired: No \nType: String \nPattern: arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:code-signing-config:csc-[a-z0-9]{17} \nUpdate requires: No interruption" - }, - "Layers": { - "uniqueItems": false, - "description": "A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.", - "type": "array", - "items": { - "relationshipRef": { - "typeName": "AWS::Lambda::LayerVersion", - "propertyPath": "/properties/LayerVersionArn" - }, - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of [function layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) to add to the function's execution environment. Specify each layer by its ARN, including the version.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Tags": { - "uniqueItems": true, - "description": "A list of [tags](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.", - "insertionOrder": false, - "type": "array", - "items": { - "$ref": "#/definitions/Tag" - }, - "markdownDescription": "A list of [tags](https://docs.aws.amazon.com/lambda/latest/dg/tagging.html) to apply to the function.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "ImageConfig": { - "description": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).", - "$ref": "#/definitions/ImageConfig", - "markdownDescription": "Configuration values that override the container image Dockerfile settings. For more information, see [Container image settings](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-parms).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "MemorySize": { - "description": "The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase.", - "type": "integer", - "markdownDescription": "The amount of [memory available to the function](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB. Note that new AWS accounts have reduced concurrency and memory quotas. AWS raises these quotas automatically based on your usage. You can also request a quota increase.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "DeadLetterConfig": { - "description": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see [Dead-letter queues](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq).", - "$ref": "#/definitions/DeadLetterConfig", - "markdownDescription": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see [Dead-letter queues](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq).\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "Timeout": { - "description": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).", - "type": "integer", - "minimum": 1, - "markdownDescription": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html).\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "Handler": { - "description": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html).", - "type": "string", - "maxLength": 128, - "markdownDescription": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see [Lambda programming model](https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html).\n\n---\n\nRequired: No \nType: String \nMaximum Length: 128 \nPattern: ^[^\\s]+$ \nUpdate requires: No interruption" + "properties": { + "ApplyOn": { + "type": "string", + "description": "Set ``ApplyOn`` to ``PublishedVersions`` to create a snapshot of the initialized execution environment when you publish a function version.", + "enum": [ + "PublishedVersions", + "None" + ], + "markdownDescription": "Set ``ApplyOn`` to ``PublishedVersions`` to create a snapshot of the initialized execution environment when you publish a function version.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: PublishedVersions | None \nUpdate requires: No interruption" + } + }, + "required": [ + "ApplyOn" + ], + "markdownDescription": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Code": { - "description": "The code for the function.", - "$ref": "#/definitions/Code", - "markdownDescription": "The code for the function.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: No interruption" + "SnapStartResponse": { + "type": "object", + "additionalProperties": false, + "description": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.", + "properties": { + "ApplyOn": { + "type": "string", + "description": "When set to ``PublishedVersions``, Lambda creates a snapshot of the execution environment when you publish a function version.", + "enum": [ + "PublishedVersions", + "None" + ], + "markdownDescription": "When set to ``PublishedVersions``, Lambda creates a snapshot of the execution environment when you publish a function version.\n\n---\n\nRequired: No \nType: String \nAllowed Values: PublishedVersions | None \nUpdate requires: No interruption" + }, + "OptimizationStatus": { + "type": "string", + "description": "When you provide a [qualified Amazon Resource Name (ARN)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using), this response element indicates whether SnapStart is activated for the specified function version.", + "enum": [ + "On", + "Off" + ], + "markdownDescription": "When you provide a [qualified Amazon Resource Name (ARN)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using), this response element indicates whether SnapStart is activated for the specified function version.\n\n---\n\nRequired: No \nType: String \nAllowed Values: On | Off \nUpdate requires: No interruption" + } + }, + "markdownDescription": "The function's [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) setting.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Role": { - "description": "The Amazon Resource Name (ARN) of the function's execution role.", - "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of the function's execution role.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$ \nUpdate requires: No interruption" + "RuntimeManagementConfig": { + "type": "object", + "additionalProperties": false, + "properties": { + "UpdateRuntimeOn": { + "type": "string", + "description": "Specify the runtime update mode.\n + *Auto (default)* - Automatically update to the most recent and secure runtime version using a [Two-phase runtime version rollout](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-two-phase). This is the best choice for most customers to ensure they always benefit from runtime updates.\n + *FunctionUpdate* - LAM updates the runtime of you function to the most recent and secure runtime version when you update your function. This approach synchronizes runtime updates with function deployments, giving you control over when runtime updates are applied and allowing you to detect and mitigate rare runtime update incompatibilities early. When using this setting, you need to regularly update your functions to keep their runtime up-to-date.\n + *Manual* - You specify a runtime version in your function configuration. The function will use this runtime version indefinitely. In the rare case where a new runtime version is incompatible with an existing function, this allows you to roll back your function to an earlier runtime version. For more information, see [Roll back a runtime version](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-rollback).\n \n *Valid Values*: ``Auto`` | ``FunctionUpdate`` | ``Manual``", + "enum": [ + "Auto", + "FunctionUpdate", + "Manual" + ], + "markdownDescription": "Specify the runtime update mode.\n + *Auto (default)* - Automatically update to the most recent and secure runtime version using a [Two-phase runtime version rollout](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-two-phase). This is the best choice for most customers to ensure they always benefit from runtime updates.\n + *FunctionUpdate* - LAM updates the runtime of you function to the most recent and secure runtime version when you update your function. This approach synchronizes runtime updates with function deployments, giving you control over when runtime updates are applied and allowing you to detect and mitigate rare runtime update incompatibilities early. When using this setting, you need to regularly update your functions to keep their runtime up-to-date.\n + *Manual* - You specify a runtime version in your function configuration. The function will use this runtime version indefinitely. In the rare case where a new runtime version is incompatible with an existing function, this allows you to roll back your function to an earlier runtime version. For more information, see [Roll back a runtime version](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-rollback).\n \n *Valid Values*: ``Auto`` | ``FunctionUpdate`` | ``Manual``\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: Auto | FunctionUpdate | Manual \nUpdate requires: No interruption" + }, + "RuntimeVersionArn": { + "type": "string", + "description": "The ARN of the runtime version you want the function to use.\n This is only required if you're using the *Manual* runtime update mode.", + "markdownDescription": "The ARN of the runtime version you want the function to use.\n This is only required if you're using the *Manual* runtime update mode.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "UpdateRuntimeOn" + ], + "description": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).", + "markdownDescription": "Sets the runtime management configuration for a function's version. For more information, see [Runtime updates](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html).\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "LoggingConfig": { + "type": "object", + "additionalProperties": false, "description": "The function's Amazon CloudWatch Logs configuration settings.", - "$ref": "#/definitions/LoggingConfig", - "markdownDescription": "The function's Amazon CloudWatch Logs configuration settings.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "Environment": { - "description": "Environment variables that are accessible from function code during execution.", - "$ref": "#/definitions/Environment", - "markdownDescription": "Environment variables that are accessible from function code during execution.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "EphemeralStorage": { - "description": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.", - "$ref": "#/definitions/EphemeralStorage", - "markdownDescription": "The size of the function's ``/tmp`` directory in MB. The default value is 512, but it can be any whole number between 512 and 10,240 MB.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, - "Architectures": { - "minItems": 1, - "maxItems": 1, - "uniqueItems": true, - "description": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is ``x86_64``.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "x86_64", - "arm64" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: x86_64 | arm64 \nUpdate requires: No interruption" + "properties": { + "LogGroup": { + "type": "string", + "description": "The name of the Amazon CloudWatch log group the function sends logs to. By default, Lambda functions send logs to a default log group named ``/aws/lambda/``. To use a different log group, enter an existing log group or enter a new log group name.", + "minLength": 1, + "maxLength": 512, + "markdownDescription": "The name of the Amazon CloudWatch log group the function sends logs to. By default, Lambda functions send logs to a default log group named ``/aws/lambda/``. To use a different log group, enter an existing log group or enter a new log group name.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nPattern: [\\.\\-_/#A-Za-z0-9]+ \nUpdate requires: No interruption" + }, + "LogFormat": { + "type": "string", + "description": "The format in which Lambda sends your function's application and system logs to CloudWatch. Select between plain text and structured JSON.", + "enum": [ + "Text", + "JSON" + ], + "markdownDescription": "The format in which Lambda sends your function's application and system logs to CloudWatch. Select between plain text and structured JSON.\n\n---\n\nRequired: No \nType: String \nAllowed Values: Text | JSON \nUpdate requires: No interruption" + }, + "ApplicationLogLevel": { + "type": "string", + "description": "Set this property to filter the application logs for your function that Lambda sends to CloudWatch. Lambda only sends application logs at the selected level of detail and lower, where ``TRACE`` is the highest level and ``FATAL`` is the lowest.", + "enum": [ + "TRACE", + "DEBUG", + "INFO", + "WARN", + "ERROR", + "FATAL" + ], + "markdownDescription": "Set this property to filter the application logs for your function that Lambda sends to CloudWatch. Lambda only sends application logs at the selected level of detail and lower, where ``TRACE`` is the highest level and ``FATAL`` is the lowest.\n\n---\n\nRequired: No \nType: String \nAllowed Values: TRACE | DEBUG | INFO | WARN | ERROR | FATAL \nUpdate requires: No interruption" + }, + "SystemLogLevel": { + "type": "string", + "description": "Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where ``DEBUG`` is the highest level and ``WARN`` is the lowest.", + "enum": [ + "DEBUG", + "INFO", + "WARN" + ], + "markdownDescription": "Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where ``DEBUG`` is the highest level and ``WARN`` is the lowest.\n\n---\n\nRequired: No \nType: String \nAllowed Values: DEBUG | INFO | WARN \nUpdate requires: No interruption" + } }, - "markdownDescription": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is ``x86_64``.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "The function's Amazon CloudWatch Logs configuration settings.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, + "readOnlyProperties": [ + "/properties/SnapStartResponse", + "/properties/SnapStartResponse/ApplyOn", + "/properties/SnapStartResponse/OptimizationStatus", + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/FunctionName" + ], + "writeOnlyProperties": [ + "/properties/SnapStart", + "/properties/SnapStart/ApplyOn", + "/properties/Code", + "/properties/Code/ImageUri", + "/properties/Code/S3Bucket", + "/properties/Code/S3Key", + "/properties/Code/S3ObjectVersion", + "/properties/Code/ZipFile" + ], "required": [ "Code", "Role" ], - "attributes": { - "SnapStartResponse": { - "description": "", - "$ref": "#/definitions/SnapStartResponse", - "markdownDescription": "\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "primaryIdentifier": [ + "/properties/FunctionName" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateFunction", + "lambda:GetFunction", + "lambda:PutFunctionConcurrency", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "elasticfilesystem:DescribeMountTargets", + "kms:CreateGrant", + "kms:Decrypt", + "kms:Encrypt", + "kms:GenerateDataKey", + "lambda:GetCodeSigningConfig", + "lambda:GetFunctionCodeSigningConfig", + "lambda:GetLayerVersion", + "lambda:GetRuntimeManagementConfig", + "lambda:PutRuntimeManagementConfig", + "lambda:TagResource", + "lambda:GetPolicy", + "lambda:AddPermission", + "lambda:RemovePermission", + "lambda:GetResourcePolicy", + "lambda:PutResourcePolicy" + ] + }, + "update": { + "permissions": [ + "lambda:DeleteFunctionConcurrency", + "lambda:GetFunction", + "lambda:PutFunctionConcurrency", + "lambda:ListTags", + "lambda:TagResource", + "lambda:UntagResource", + "lambda:UpdateFunctionConfiguration", + "lambda:UpdateFunctionCode", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVpcs", + "elasticfilesystem:DescribeMountTargets", + "kms:CreateGrant", + "kms:Decrypt", + "kms:GenerateDataKey", + "lambda:GetRuntimeManagementConfig", + "lambda:PutRuntimeManagementConfig", + "lambda:PutFunctionCodeSigningConfig", + "lambda:DeleteFunctionCodeSigningConfig", + "lambda:GetCodeSigningConfig", + "lambda:GetFunctionCodeSigningConfig", + "lambda:GetPolicy", + "lambda:AddPermission", + "lambda:RemovePermission", + "lambda:GetResourcePolicy", + "lambda:PutResourcePolicy", + "lambda:DeleteResourcePolicy" + ] + }, + "read": { + "permissions": [ + "lambda:GetFunction", + "lambda:GetFunctionCodeSigningConfig" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteFunction", + "lambda:GetFunction", + "ec2:DescribeNetworkInterfaces" + ] }, + "list": { + "permissions": [ + "lambda:ListFunctions" + ] + } + }, + "attributes": { "Arn": { "description": "", "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SnapStartResponse": { + "description": "", + "$ref": "#/definitions/SnapStartResponse", + "markdownDescription": "\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-location-apikey.json b/server/schema/resources/aws-location-apikey.json index 1353ae6e..e368a3c8 100644 --- a/server/schema/resources/aws-location-apikey.json +++ b/server/schema/resources/aws-location-apikey.json @@ -23,7 +23,7 @@ "items": { "type": "string", "maxLength": 1600, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1600 \nPattern: ^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$ \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1600 \nPattern: (^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps):::((provider[\\/][*-._\\w]+))$) \nUpdate requires: No interruption" }, "maxItems": 5, "minItems": 1, diff --git a/server/schema/resources/aws-location-geofencecollection.json b/server/schema/resources/aws-location-geofencecollection.json index a3a5da8e..10c478f1 100644 --- a/server/schema/resources/aws-location-geofencecollection.json +++ b/server/schema/resources/aws-location-geofencecollection.json @@ -79,7 +79,8 @@ }, "PricingPlanDataSource": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "description": "This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.", + "markdownDescription": "This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Tags": { "description": "An array of key-value pairs to apply to this resource.", diff --git a/server/schema/resources/aws-mediaconnect-flow.json b/server/schema/resources/aws-mediaconnect-flow.json index ddaf4c75..e5944685 100644 --- a/server/schema/resources/aws-mediaconnect-flow.json +++ b/server/schema/resources/aws-mediaconnect-flow.json @@ -22,6 +22,27 @@ "description": "The source failover config of the flow.", "$ref": "#/definitions/FailoverConfig", "markdownDescription": "The source failover config of the flow.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "VpcInterfaces": { + "type": "array", + "description": "The VPC interfaces that you added to this flow.", + "items": { + "$ref": "#/definitions/VpcInterface" + }, + "markdownDescription": "The VPC interfaces that you added to this flow.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "MediaStreams": { + "type": "array", + "description": "The media streams associated with the flow. You can associate any of these media streams with sources and outputs on the flow.", + "items": { + "$ref": "#/definitions/MediaStream" + }, + "markdownDescription": "The media streams associated with the flow. You can associate any of these media streams with sources and outputs on the flow.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Maintenance": { + "description": "The maintenance settings you want to use for the flow. ", + "$ref": "#/definitions/Maintenance", + "markdownDescription": "The maintenance settings you want to use for the flow. \n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" } }, "definitions": { @@ -95,10 +116,12 @@ "rist", "fujitsu-qos", "srt-listener", - "srt-caller" + "srt-caller", + "st2110-jpegxs", + "cdi" ], "description": "The protocol that is used by the source.", - "markdownDescription": "The protocol that is used by the source.\n\n---\n\nRequired: No \nType: String \nAllowed Values: zixi-push | rtp-fec | rtp | rist | fujitsu-qos | srt-listener | srt-caller \nUpdate requires: No interruption" + "markdownDescription": "The protocol that is used by the source.\n\n---\n\nRequired: No \nType: String \nAllowed Values: zixi-push | rtp-fec | rtp | rist | fujitsu-qos | srt-listener | srt-caller | st2110-jpegxs | cdi \nUpdate requires: No interruption" }, "SenderIpAddress": { "type": "string", @@ -139,6 +162,19 @@ "type": "string", "description": "The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.", "markdownDescription": "The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "MaxSyncBuffer": { + "type": "integer", + "description": "The size of the buffer (in milliseconds) to use to sync incoming source data.", + "markdownDescription": "The size of the buffer (in milliseconds) to use to sync incoming source data.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "MediaStreamSourceConfigurations": { + "type": "array", + "description": "The media stream that is associated with the source, and the parameters for that association.", + "items": { + "$ref": "#/definitions/MediaStreamSourceConfiguration" + }, + "markdownDescription": "The media stream that is associated with the source, and the parameters for that association.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, @@ -290,6 +326,323 @@ }, "additionalProperties": false, "markdownDescription": "The settings for attaching a VPC interface to an resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "VpcInterface": { + "type": "object", + "description": "The details of a VPC interface.", + "properties": { + "Name": { + "type": "string", + "description": "Immutable and has to be a unique against other VpcInterfaces in this Flow.", + "markdownDescription": "Immutable and has to be a unique against other VpcInterfaces in this Flow.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "NetworkInterfaceType": { + "type": "string", + "description": "The type of network adapter that you want MediaConnect to use on this interface. If you don't set this value, it defaults to ENA.", + "enum": [ + "ena", + "efa" + ], + "markdownDescription": "The type of network adapter that you want MediaConnect to use on this interface. If you don't set this value, it defaults to ENA.\n\n---\n\nRequired: No \nType: String \nAllowed Values: ena | efa \nUpdate requires: No interruption" + }, + "RoleArn": { + "type": "string", + "description": "Role Arn MediaConnect can assume to create ENIs in customer's account.", + "markdownDescription": "Role Arn MediaConnect can assume to create ENIs in customer's account.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "SecurityGroupIds": { + "type": "array", + "description": "Security Group IDs to be used on ENI.", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "Security Group IDs to be used on ENI.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "SubnetId": { + "type": "string", + "description": "Subnet must be in the AZ of the Flow", + "markdownDescription": "Subnet must be in the AZ of the Flow\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "NetworkInterfaceIds": { + "type": "array", + "description": "IDs of the network interfaces created in customer's account by MediaConnect.", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "IDs of the network interfaces created in customer's account by MediaConnect.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "Name", + "RoleArn", + "SecurityGroupIds", + "SubnetId" + ], + "markdownDescription": "The details of a VPC interface.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Maintenance": { + "type": "object", + "description": "The maintenance setting of a flow.", + "properties": { + "MaintenanceDay": { + "type": "string", + "description": "A day of a week when the maintenance will happen. Use Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.", + "enum": [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "markdownDescription": "A day of a week when the maintenance will happen. Use Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday \nUpdate requires: No interruption" + }, + "MaintenanceStartHour": { + "type": "string", + "description": "UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes must be 00. Example: 13:00. The default value is 02:00.", + "markdownDescription": "UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes must be 00. Example: 13:00. The default value is 02:00.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "MaintenanceDay", + "MaintenanceStartHour" + ], + "markdownDescription": "The maintenance setting of a flow.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "MediaStream": { + "type": "object", + "description": "A single track or stream of media that contains video, audio, or ancillary data. After you add a media stream to a flow, you can associate it with sources and outputs on that flow, as long as they use the CDI protocol or the ST 2110 JPEG XS protocol. Each source or output can consist of one or many media streams.", + "properties": { + "MediaStreamId": { + "type": "integer", + "description": "A unique identifier for the media stream.", + "markdownDescription": "A unique identifier for the media stream.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "MediaStreamType": { + "type": "string", + "description": "The type of media stream.", + "enum": [ + "video", + "audio", + "ancillary-data" + ], + "markdownDescription": "The type of media stream.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: video | audio | ancillary-data \nUpdate requires: No interruption" + }, + "VideoFormat": { + "type": "string", + "description": "The resolution of the video.", + "enum": [ + "2160p", + "1080p", + "1080i", + "720p", + "480p" + ], + "markdownDescription": "The resolution of the video.\n\n---\n\nRequired: No \nType: String \nAllowed Values: 2160p | 1080p | 1080i | 720p | 480p \nUpdate requires: No interruption" + }, + "MediaStreamName": { + "type": "string", + "description": "A name that helps you distinguish one media stream from another.", + "markdownDescription": "A name that helps you distinguish one media stream from another.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Description": { + "type": "string", + "description": "A description that can help you quickly identify what your media stream is used for.", + "markdownDescription": "A description that can help you quickly identify what your media stream is used for.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Attributes": { + "$ref": "#/definitions/MediaStreamAttributes", + "description": "Attributes that are related to the media stream.", + "markdownDescription": "Attributes that are related to the media stream.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "ClockRate": { + "type": "integer", + "description": "The sample rate for the stream. This value in measured in kHz.", + "markdownDescription": "The sample rate for the stream. This value in measured in kHz.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Fmt": { + "type": "integer", + "description": "The format type number (sometimes referred to as RTP payload type) of the media stream. MediaConnect assigns this value to the media stream. For ST 2110 JPEG XS outputs, you need to provide this value to the receiver.", + "markdownDescription": "The format type number (sometimes referred to as RTP payload type) of the media stream. MediaConnect assigns this value to the media stream. For ST 2110 JPEG XS outputs, you need to provide this value to the receiver.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "MediaStreamId", + "MediaStreamType", + "MediaStreamName" + ], + "markdownDescription": "A single track or stream of media that contains video, audio, or ancillary data. After you add a media stream to a flow, you can associate it with sources and outputs on that flow, as long as they use the CDI protocol or the ST 2110 JPEG XS protocol. Each source or output can consist of one or many media streams.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "MediaStreamAttributes": { + "type": "object", + "description": "Attributes that are related to the media stream.", + "properties": { + "Fmtp": { + "$ref": "#/definitions/Fmtp", + "description": "A set of parameters that define the media stream.", + "markdownDescription": "A set of parameters that define the media stream.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "Lang": { + "type": "string", + "description": "The audio language, in a format that is recognized by the receiver.", + "markdownDescription": "The audio language, in a format that is recognized by the receiver.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Attributes that are related to the media stream.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Fmtp": { + "type": "object", + "description": "A set of parameters that define the media stream.", + "properties": { + "ExactFramerate": { + "type": "string", + "description": "The frame rate for the video stream, in frames/second. For example: 60000/1001.", + "markdownDescription": "The frame rate for the video stream, in frames/second. For example: 60000/1001.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Colorimetry": { + "type": "string", + "description": "The format used for the representation of color.", + "enum": [ + "BT601", + "BT709", + "BT2020", + "BT2100", + "ST2065-1", + "ST2065-3", + "XYZ" + ], + "markdownDescription": "The format used for the representation of color.\n\n---\n\nRequired: No \nType: String \nAllowed Values: BT601 | BT709 | BT2020 | BT2100 | ST2065-1 | ST2065-3 | XYZ \nUpdate requires: No interruption" + }, + "ScanMode": { + "type": "string", + "description": "The type of compression that was used to smooth the video's appearance.", + "enum": [ + "progressive", + "interlace", + "progressive-segmented-frame" + ], + "markdownDescription": "The type of compression that was used to smooth the video's appearance.\n\n---\n\nRequired: No \nType: String \nAllowed Values: progressive | interlace | progressive-segmented-frame \nUpdate requires: No interruption" + }, + "Tcs": { + "type": "string", + "description": "The transfer characteristic system (TCS) that is used in the video.", + "enum": [ + "SDR", + "PQ", + "HLG", + "LINEAR", + "BT2100LINPQ", + "BT2100LINHLG", + "ST2065-1", + "ST428-1", + "DENSITY" + ], + "markdownDescription": "The transfer characteristic system (TCS) that is used in the video.\n\n---\n\nRequired: No \nType: String \nAllowed Values: SDR | PQ | HLG | LINEAR | BT2100LINPQ | BT2100LINHLG | ST2065-1 | ST428-1 | DENSITY \nUpdate requires: No interruption" + }, + "Range": { + "type": "string", + "description": "The encoding range of the video.", + "enum": [ + "NARROW", + "FULL", + "FULLPROTECT" + ], + "markdownDescription": "The encoding range of the video.\n\n---\n\nRequired: No \nType: String \nAllowed Values: NARROW | FULL | FULLPROTECT \nUpdate requires: No interruption" + }, + "Par": { + "type": "string", + "description": "The pixel aspect ratio (PAR) of the video.", + "markdownDescription": "The pixel aspect ratio (PAR) of the video.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "ChannelOrder": { + "type": "string", + "description": "The format of the audio channel.", + "markdownDescription": "The format of the audio channel.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "A set of parameters that define the media stream.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "MediaStreamSourceConfiguration": { + "type": "object", + "description": "The media stream that is associated with the source, and the parameters for that association.", + "properties": { + "EncodingName": { + "type": "string", + "description": "The format that was used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video, 2110 streams, set the encoding name to raw. For video, JPEG XS streams, set the encoding name to jxsv.", + "enum": [ + "jxsv", + "raw", + "smpte291", + "pcm" + ], + "markdownDescription": "The format that was used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video, 2110 streams, set the encoding name to raw. For video, JPEG XS streams, set the encoding name to jxsv.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: jxsv | raw | smpte291 | pcm \nUpdate requires: No interruption" + }, + "InputConfigurations": { + "type": "array", + "description": "The media streams that you want to associate with the source.", + "items": { + "$ref": "#/definitions/InputConfiguration" + }, + "markdownDescription": "The media streams that you want to associate with the source.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "MediaStreamName": { + "type": "string", + "description": "A name that helps you distinguish one media stream from another.", + "markdownDescription": "A name that helps you distinguish one media stream from another.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "EncodingName", + "MediaStreamName" + ], + "markdownDescription": "The media stream that is associated with the source, and the parameters for that association.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "InputConfiguration": { + "type": "object", + "description": "The transport parameters associated with an incoming media stream.", + "properties": { + "InputPort": { + "type": "integer", + "description": "The port that the flow listens on for an incoming media stream.", + "markdownDescription": "The port that the flow listens on for an incoming media stream.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "Interface": { + "$ref": "#/definitions/Interface", + "description": "The VPC interface where the media stream comes in from.", + "markdownDescription": "The VPC interface where the media stream comes in from.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "InputPort", + "Interface" + ], + "markdownDescription": "The transport parameters associated with an incoming media stream.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Interface": { + "type": "object", + "description": "The VPC interface that you want to use for the media stream associated with the output.", + "properties": { + "Name": { + "type": "string", + "description": "The name of the VPC interface that you want to use for the media stream associated with the output.", + "markdownDescription": "The name of the VPC interface that you want to use for the media stream associated with the output.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "Name" + ], + "markdownDescription": "The VPC interface that you want to use for the media stream associated with the output.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "required": [ @@ -307,11 +660,20 @@ "/properties/FlowAvailabilityZone", "/properties/Source/SourceArn", "/properties/Source/IngestIp", - "/properties/Source/SourceIngestPort" + "/properties/Source/SourceIngestPort", + "/properties/VpcInterfaces/*/NetworkInterfaceIds", + "/properties/MediaStreams/*/Fmt", + "/properties/EgressIp" ], "primaryIdentifier": [ "/properties/FlowArn" ], + "resourceLink": { + "templateUri": "/mediaconnect/home?region=${awsRegion}#/flows/${flowArn}", + "mappings": { + "flowArn": "/FlowArn" + } + }, "handlers": { "create": { "permissions": [ @@ -328,7 +690,12 @@ "permissions": [ "mediaconnect:DescribeFlow", "mediaconnect:UpdateFlow", - "mediaconnect:UpdateFlowSource" + "mediaconnect:UpdateFlowSource", + "mediaconnect:UpdateFlowMediaStream", + "mediaconnect:AddFlowMediaStreams", + "mediaconnect:RemoveFlowMediaStream", + "mediaconnect:AddFlowVpcInterfaces", + "mediaconnect:RemoveFlowVpcInterface" ] }, "delete": { @@ -349,6 +716,11 @@ "type": "string", "markdownDescription": "The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the flow.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "EgressIp": { + "description": "The IP address from which video will be sent to output destinations.", + "type": "string", + "markdownDescription": "The IP address from which video will be sent to output destinations.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "FlowAvailabilityZone": { "description": "The Availability Zone that you want to create the flow in. These options are limited to the Availability Zones within the current AWS.(ReadOnly)", "type": "string", diff --git a/server/schema/resources/aws-mediaconnect-flowoutput.json b/server/schema/resources/aws-mediaconnect-flowoutput.json index 12f72af4..0d4517e7 100644 --- a/server/schema/resources/aws-mediaconnect-flowoutput.json +++ b/server/schema/resources/aws-mediaconnect-flowoutput.json @@ -57,6 +57,116 @@ }, "additionalProperties": false, "markdownDescription": "The settings for attaching a VPC interface to an output.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "MediaStreamOutputConfiguration": { + "type": "object", + "description": "The media stream that is associated with the output, and the parameters for that association.", + "properties": { + "EncodingName": { + "type": "string", + "description": "The format that will be used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video streams on sources or outputs that use the CDI protocol, set the encoding name to raw. For video streams on sources or outputs that use the ST 2110 JPEG XS protocol, set the encoding name to jxsv.", + "enum": [ + "jxsv", + "raw", + "smpte291", + "pcm" + ], + "markdownDescription": "The format that will be used to encode the data. For ancillary data streams, set the encoding name to smpte291. For audio streams, set the encoding name to pcm. For video streams on sources or outputs that use the CDI protocol, set the encoding name to raw. For video streams on sources or outputs that use the ST 2110 JPEG XS protocol, set the encoding name to jxsv.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: jxsv | raw | smpte291 | pcm \nUpdate requires: No interruption" + }, + "DestinationConfigurations": { + "type": "array", + "description": "The media streams that you want to associate with the output.", + "items": { + "$ref": "#/definitions/DestinationConfiguration" + }, + "markdownDescription": "The media streams that you want to associate with the output.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "MediaStreamName": { + "type": "string", + "description": "A name that helps you distinguish one media stream from another.", + "markdownDescription": "A name that helps you distinguish one media stream from another.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "EncodingParameters": { + "$ref": "#/definitions/EncodingParameters", + "description": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source.", + "markdownDescription": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "EncodingName", + "MediaStreamName" + ], + "markdownDescription": "The media stream that is associated with the output, and the parameters for that association.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DestinationConfiguration": { + "type": "object", + "description": "The definition of a media stream that is associated with the output.", + "properties": { + "DestinationIp": { + "type": "string", + "description": "The IP address where contents of the media stream will be sent.", + "markdownDescription": "The IP address where contents of the media stream will be sent.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "DestinationPort": { + "type": "integer", + "description": "The port to use when the content of the media stream is distributed to the output.", + "markdownDescription": "The port to use when the content of the media stream is distributed to the output.\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + }, + "Interface": { + "$ref": "#/definitions/Interface", + "description": "The VPC interface that is used for the media stream associated with the output.", + "markdownDescription": "The VPC interface that is used for the media stream associated with the output.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "DestinationIp", + "DestinationPort", + "Interface" + ], + "markdownDescription": "The definition of a media stream that is associated with the output.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Interface": { + "type": "object", + "description": "The VPC interface that you want to use for the media stream associated with the output.", + "properties": { + "Name": { + "type": "string", + "description": "The name of the VPC interface that you want to use for the media stream associated with the output.", + "markdownDescription": "The name of the VPC interface that you want to use for the media stream associated with the output.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "Name" + ], + "markdownDescription": "The VPC interface that you want to use for the media stream associated with the output.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "EncodingParameters": { + "type": "object", + "description": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source.", + "properties": { + "CompressionFactor": { + "type": "number", + "description": "A value that is used to calculate compression for an output. The bitrate of the output is calculated as follows: Output bitrate = (1 / compressionFactor) * (source bitrate) This property only applies to outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol. Valid values are in the range of 3.0 to 10.0, inclusive.", + "markdownDescription": "A value that is used to calculate compression for an output. The bitrate of the output is calculated as follows: Output bitrate = (1 / compressionFactor) * (source bitrate) This property only applies to outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol. Valid values are in the range of 3.0 to 10.0, inclusive.\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + }, + "EncoderProfile": { + "type": "string", + "description": "A setting on the encoder that drives compression settings. This property only applies to video media streams associated with outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol.", + "enum": [ + "main", + "high" + ], + "markdownDescription": "A setting on the encoder that drives compression settings. This property only applies to video media streams associated with outputs that use the ST 2110 JPEG XS protocol, with a flow source that uses the CDI protocol.\n\n---\n\nRequired: No \nType: String \nAllowed Values: main | high \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "CompressionFactor" + ], + "markdownDescription": "A collection of parameters that determine how MediaConnect will convert the content. These fields only apply to outputs on flows that have a CDI source.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { @@ -119,10 +229,12 @@ "rist", "fujitsu-qos", "srt-listener", - "srt-caller" + "srt-caller", + "st2110-jpegxs", + "cdi" ], "description": "The protocol that is used by the source or output.", - "markdownDescription": "The protocol that is used by the source or output.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: zixi-push | rtp-fec | rtp | zixi-pull | rist | fujitsu-qos | srt-listener | srt-caller \nUpdate requires: No interruption" + "markdownDescription": "The protocol that is used by the source or output.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: zixi-push | rtp-fec | rtp | zixi-pull | rist | fujitsu-qos | srt-listener | srt-caller | st2110-jpegxs | cdi \nUpdate requires: No interruption" }, "RemoteId": { "type": "string", @@ -143,6 +255,14 @@ "$ref": "#/definitions/VpcInterfaceAttachment", "description": "The name of the VPC interface attachment to use for this output.", "markdownDescription": "The name of the VPC interface attachment to use for this output.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "MediaStreamOutputConfigurations": { + "type": "array", + "description": "The definition for each media stream that is associated with the output.", + "items": { + "$ref": "#/definitions/MediaStreamOutputConfiguration" + }, + "markdownDescription": "The definition for each media stream that is associated with the output.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, diff --git a/server/schema/resources/aws-mediaconnect-flowvpcinterface.json b/server/schema/resources/aws-mediaconnect-flowvpcinterface.json index eb95e85d..addc2d22 100644 --- a/server/schema/resources/aws-mediaconnect-flowvpcinterface.json +++ b/server/schema/resources/aws-mediaconnect-flowvpcinterface.json @@ -15,8 +15,8 @@ }, "RoleArn": { "type": "string", - "description": "Role Arn MediaConnect can assumes to create ENIs in customer's account.", - "markdownDescription": "Role Arn MediaConnect can assumes to create ENIs in customer's account.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "description": "Role Arn MediaConnect can assume to create ENIs in customer's account.", + "markdownDescription": "Role Arn MediaConnect can assume to create ENIs in customer's account.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "SecurityGroupIds": { "type": "array", diff --git a/server/schema/resources/aws-medialive-channel.json b/server/schema/resources/aws-medialive-channel.json index 2a7bd0be..264a36d1 100644 --- a/server/schema/resources/aws-medialive-channel.json +++ b/server/schema/resources/aws-medialive-channel.json @@ -499,6 +499,36 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "CmafIngestGroupSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "Destination": { + "$ref": "#/definitions/OutputLocationRef" + }, + "Scte35Type": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SegmentLengthUnits": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "NielsenId3Behavior": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SegmentLength": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "SendDelayMs": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "AribDestinationSettings": { "type": "object", "additionalProperties": false, @@ -675,6 +705,29 @@ "type": "object", "additionalProperties": false, "properties": { + "AudioDashRoles": { + "type": "array", + "uniqueItems": false, + "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" + }, + "LanguageCodeControl": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "CodecSettings": { + "$ref": "#/definitions/AudioCodecSettings" + }, + "Name": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "AudioWatermarkingSettings": { + "$ref": "#/definitions/AudioWatermarkSettings" + }, "AudioNormalizationSettings": { "$ref": "#/definitions/AudioNormalizationSettings" }, @@ -693,7 +746,7 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "LanguageCodeControl": { + "DvbDashAccessibility": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, @@ -704,16 +757,6 @@ "AudioTypeControl": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "CodecSettings": { - "$ref": "#/definitions/AudioCodecSettings" - }, - "Name": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "AudioWatermarkingSettings": { - "$ref": "#/definitions/AudioWatermarkSettings" } }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" @@ -1506,6 +1549,9 @@ }, "RtmpGroupSettings": { "$ref": "#/definitions/RtmpGroupSettings" + }, + "CmafIngestGroupSettings": { + "$ref": "#/definitions/CmafIngestGroupSettings" } }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" @@ -1529,6 +1575,17 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "CmafIngestOutputSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "NameModifier": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "NetworkInputSettings": { "type": "object", "additionalProperties": false, @@ -2630,6 +2687,9 @@ "MultiplexOutputSettings": { "$ref": "#/definitions/MultiplexOutputSettings" }, + "CmafIngestOutputSettings": { + "$ref": "#/definitions/CmafIngestOutputSettings" + }, "ArchiveOutputSettings": { "$ref": "#/definitions/ArchiveOutputSettings" } @@ -2925,6 +2985,10 @@ "type": "object", "additionalProperties": false, "properties": { + "MvOverPictureBoundaries": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "TimecodeBurninSettings": { "$ref": "#/definitions/TimecodeBurninSettings" }, @@ -2936,6 +3000,10 @@ "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, + "TileHeight": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, "FramerateNumerator": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" @@ -2952,6 +3020,10 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "MvTemporalPredictor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "MinIInterval": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" @@ -2972,6 +3044,10 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "TileWidth": { + "type": "integer", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, "FilterSettings": { "$ref": "#/definitions/H265FilterSettings" }, @@ -2998,6 +3074,10 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "TilePadding": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "AfdSignaling": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" @@ -3041,6 +3121,10 @@ "MaxBitrate": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "TreeblockSize": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" @@ -3209,10 +3293,23 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "DvbDashAccessibility": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "CaptionSelectorName": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "CaptionDashRoles": { + "type": "array", + "uniqueItems": false, + "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" + }, "Name": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" diff --git a/server/schema/resources/aws-neptune-eventsubscription.json b/server/schema/resources/aws-neptune-eventsubscription.json new file mode 100644 index 00000000..4db9ad9d --- /dev/null +++ b/server/schema/resources/aws-neptune-eventsubscription.json @@ -0,0 +1,52 @@ +{ + "typeName": "AWS::Neptune::EventSubscription", + "description": "Resource Type definition for AWS::Neptune::EventSubscription", + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "EventCategories": { + "type": "array", + "uniqueItems": false, + "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" + }, + "SnsTopicArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + }, + "SourceIds": { + "type": "array", + "uniqueItems": false, + "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" + }, + "SourceType": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "createOnlyProperties": [ + "/properties/SnsTopicArn" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "readOnlyProperties": [ + "/properties/Id" + ], + "attributes": { + "Id": { + "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-oam-link.json b/server/schema/resources/aws-oam-link.json index 6a5c66a9..d00f9de3 100644 --- a/server/schema/resources/aws-oam-link.json +++ b/server/schema/resources/aws-oam-link.json @@ -75,12 +75,12 @@ "type": "object", "additionalProperties": false, "patternProperties": { - "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-]{1,128}$": { + "^(?!aws:.*).{1,128}$": { "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 -.", + "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:.", "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: No \nType: String \nMaximum Length: 256 \nPattern: ^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-]{0,256}$ \nUpdate requires: No interruption" + "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:.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^(?!aws:.*).{0,256}$ \nUpdate requires: No interruption" } }, "markdownDescription": "Tags to apply to the link\n\n---\n\nRequired: No \nUpdate requires: No interruption" diff --git a/server/schema/resources/aws-oam-sink.json b/server/schema/resources/aws-oam-sink.json index 158098e0..f1b0b20b 100644 --- a/server/schema/resources/aws-oam-sink.json +++ b/server/schema/resources/aws-oam-sink.json @@ -19,12 +19,12 @@ "type": "object", "additionalProperties": false, "patternProperties": { - "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-]{1,128}$": { + "^(?!aws:.*).{1,128}$": { "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 -.", + "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:.", "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: No \nType: String \nMaximum Length: 256 \nPattern: ^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-]{0,256}$ \nUpdate requires: No interruption" + "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:.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^(?!aws:.*).{0,256}$ \nUpdate requires: No interruption" } }, "markdownDescription": "Tags to apply to the sink\n\n---\n\nRequired: No \nUpdate requires: No interruption" diff --git a/server/schema/resources/aws-qbusiness-application.json b/server/schema/resources/aws-qbusiness-application.json new file mode 100644 index 00000000..1206a385 --- /dev/null +++ b/server/schema/resources/aws-qbusiness-application.json @@ -0,0 +1,225 @@ +{ + "typeName": "AWS::QBusiness::Application", + "description": "Definition of AWS::QBusiness::Application Resource Type", + "definitions": { + "ApplicationStatus": { + "type": "string", + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | ACTIVE | DELETING | FAILED | UPDATING \nUpdate requires: No interruption" + }, + "AttachmentsConfiguration": { + "type": "object", + "properties": { + "AttachmentsControlMode": { + "$ref": "#/definitions/AttachmentsControlMode" + } + }, + "required": [ + "AttachmentsControlMode" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "AttachmentsControlMode": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "EncryptionConfiguration": { + "type": "object", + "properties": { + "KmsKeyId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "AttachmentsConfiguration": { + "$ref": "#/definitions/AttachmentsConfiguration" + }, + "Description": { + "type": "string", + "maxLength": 1000, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1000 \nPattern: ^[\\s\\S]*$ \nUpdate requires: No interruption" + }, + "DisplayName": { + "type": "string", + "maxLength": 1000, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1000 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "IdentityCenterInstanceArn": { + "type": "string", + "maxLength": 1224, + "minLength": 10, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: ^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$ \nUpdate requires: No interruption" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "DisplayName" + ], + "readOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/ApplicationId", + "/properties/CreatedAt", + "/properties/IdentityCenterApplicationArn", + "/properties/Status", + "/properties/UpdatedAt" + ], + "writeOnlyProperties": [ + "/properties/IdentityCenterInstanceArn" + ], + "createOnlyProperties": [ + "/properties/EncryptionConfiguration" + ], + "primaryIdentifier": [ + "/properties/ApplicationId" + ], + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "kms:CreateGrant", + "kms:DescribeKey", + "qbusiness:CreateApplication", + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetApplication", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateApplication", + "sso:CreateApplication", + "sso:DeleteApplication", + "sso:PutApplicationAccessScope", + "sso:PutApplicationAuthenticationMethod", + "sso:PutApplicationGrant" + ] + }, + "delete": { + "permissions": [ + "kms:RetireGrant", + "qbusiness:DeleteApplication", + "qbusiness:GetApplication", + "sso:DeleteApplication" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListApplications" + ] + } + }, + "tagging": { + "taggable": true + }, + "additionalProperties": false, + "attributes": { + "ApplicationArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "ApplicationId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: No interruption" + }, + "CreatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "IdentityCenterApplicationArn": { + "type": "string", + "maxLength": 1224, + "minLength": 10, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: ^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$ \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/ApplicationStatus" + }, + "UpdatedAt": { + "type": "string", + "format": "date-time", + "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-qbusiness-datasource.json b/server/schema/resources/aws-qbusiness-datasource.json new file mode 100644 index 00000000..84bc0c14 --- /dev/null +++ b/server/schema/resources/aws-qbusiness-datasource.json @@ -0,0 +1,450 @@ +{ + "typeName": "AWS::QBusiness::DataSource", + "description": "Definition of AWS::QBusiness::DataSource Resource Type", + "definitions": { + "AttributeValueOperator": { + "type": "string", + "enum": [ + "DELETE" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: DELETE \nUpdate requires: No interruption" + }, + "DataSourceStatus": { + "type": "string", + "enum": [ + "PENDING_CREATION", + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: PENDING_CREATION | CREATING | ACTIVE | DELETING | FAILED | UPDATING \nUpdate requires: No interruption" + }, + "DataSourceVpcConfiguration": { + "type": "object", + "properties": { + "SubnetIds": { + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[-0-9a-zA-Z]+$ \nUpdate requires: No interruption" + }, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "SecurityGroupIds": { + "type": "array", + "insertionOrder": false, + "items": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[-0-9a-zA-Z]+$ \nUpdate requires: No interruption" + }, + "maxItems": 10, + "minItems": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "SecurityGroupIds", + "SubnetIds" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DocumentAttributeCondition": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[a-zA-Z0-9_][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "Operator": { + "$ref": "#/definitions/DocumentEnrichmentConditionOperator" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + } + }, + "required": [ + "Key", + "Operator" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DocumentAttributeTarget": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[a-zA-Z0-9_][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "Value": { + "$ref": "#/definitions/DocumentAttributeValue" + }, + "AttributeValueOperator": { + "$ref": "#/definitions/AttributeValueOperator" + } + }, + "required": [ + "Key" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DocumentAttributeValue": { + "oneOf": [ + { + "type": "object", + "title": "StringValue", + "properties": { + "StringValue": { + "type": "string", + "maxLength": 2048 + } + }, + "required": [ + "StringValue" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "StringListValue", + "properties": { + "StringListValue": { + "type": "array", + "insertionOrder": true, + "items": { + "type": "string", + "maxLength": 2048, + "minLength": 1 + } + } + }, + "required": [ + "StringListValue" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "LongValue", + "properties": { + "LongValue": { + "type": "number" + } + }, + "required": [ + "LongValue" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "DateValue", + "properties": { + "DateValue": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "DateValue" + ], + "additionalProperties": false + } + ] + }, + "DocumentContentOperator": { + "type": "string", + "enum": [ + "DELETE" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: DELETE \nUpdate requires: No interruption" + }, + "DocumentEnrichmentConditionOperator": { + "type": "string", + "enum": [ + "GREATER_THAN", + "GREATER_THAN_OR_EQUALS", + "LESS_THAN", + "LESS_THAN_OR_EQUALS", + "EQUALS", + "NOT_EQUALS", + "CONTAINS", + "NOT_CONTAINS", + "EXISTS", + "NOT_EXISTS", + "BEGINS_WITH" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: GREATER_THAN | GREATER_THAN_OR_EQUALS | LESS_THAN | LESS_THAN_OR_EQUALS | EQUALS | NOT_EQUALS | CONTAINS | NOT_CONTAINS | EXISTS | NOT_EXISTS | BEGINS_WITH \nUpdate requires: No interruption" + }, + "DocumentEnrichmentConfiguration": { + "type": "object", + "properties": { + "InlineConfigurations": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InlineDocumentEnrichmentConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "PreExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + }, + "PostExtractionHookConfiguration": { + "$ref": "#/definitions/HookConfiguration" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "HookConfiguration": { + "type": "object", + "properties": { + "InvocationCondition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "LambdaArn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:aws[a-zA-Z-]*:lambda:[a-z-]*-[0-9]:[0-9]{12}:function:[a-zA-Z0-9-_]+(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?(:[a-zA-Z0-9-_]+)?$ \nUpdate requires: No interruption" + }, + "S3BucketName": { + "type": "string", + "maxLength": 63, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 63 \nPattern: ^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$ \nUpdate requires: No interruption" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "InlineDocumentEnrichmentConfiguration": { + "type": "object", + "properties": { + "Condition": { + "$ref": "#/definitions/DocumentAttributeCondition" + }, + "Target": { + "$ref": "#/definitions/DocumentAttributeTarget" + }, + "DocumentContentOperator": { + "$ref": "#/definitions/DocumentContentOperator" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "ApplicationId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: Replacement" + }, + "Configuration": {}, + "Description": { + "type": "string", + "maxLength": 1000, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1000 \nPattern: ^[\\s\\S]*$ \nUpdate requires: No interruption" + }, + "DisplayName": { + "type": "string", + "maxLength": 1000, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1000 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "DocumentEnrichmentConfiguration": { + "$ref": "#/definitions/DocumentEnrichmentConfiguration" + }, + "IndexId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: Replacement" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "SyncSchedule": { + "type": "string", + "maxLength": 998, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 998 \nPattern: ^[\\s\\S]*$ \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "VpcConfiguration": { + "$ref": "#/definitions/DataSourceVpcConfiguration" + } + }, + "required": [ + "ApplicationId", + "IndexId", + "Configuration", + "DisplayName" + ], + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DataSourceArn", + "/properties/DataSourceId", + "/properties/Status", + "/properties/Type", + "/properties/UpdatedAt" + ], + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/IndexId" + ], + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/DataSourceId", + "/properties/IndexId" + ], + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateDataSource", + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetDataSource", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateDataSource" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteDataSource", + "qbusiness:GetDataSource" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListDataSources" + ], + "handlerSchema": { + "properties": { + "IndexId": { + "$ref": "resource-schema.json#/properties/IndexId" + }, + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "IndexId", + "ApplicationId" + ] + } + } + }, + "tagging": { + "taggable": true + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "additionalProperties": false, + "attributes": { + "CreatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "DataSourceArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "DataSourceId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/DataSourceStatus" + }, + "Type": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nUpdate requires: No interruption" + }, + "UpdatedAt": { + "type": "string", + "format": "date-time", + "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-qbusiness-index.json b/server/schema/resources/aws-qbusiness-index.json new file mode 100644 index 00000000..8b69665b --- /dev/null +++ b/server/schema/resources/aws-qbusiness-index.json @@ -0,0 +1,272 @@ +{ + "typeName": "AWS::QBusiness::Index", + "description": "Definition of AWS::QBusiness::Index Resource Type", + "definitions": { + "AttributeType": { + "type": "string", + "enum": [ + "STRING", + "STRING_LIST", + "NUMBER", + "DATE" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: STRING | STRING_LIST | NUMBER | DATE \nUpdate requires: No interruption" + }, + "DocumentAttributeConfiguration": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "maxLength": 30, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 30 \nPattern: ^[a-zA-Z0-9_][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/AttributeType" + }, + "Search": { + "$ref": "#/definitions/Status" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "IndexCapacityConfiguration": { + "type": "object", + "properties": { + "Units": { + "type": "number", + "minimum": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "IndexStatistics": { + "type": "object", + "properties": { + "TextDocumentStatistics": { + "$ref": "#/definitions/TextDocumentStatistics" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "IndexStatus": { + "type": "string", + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "UPDATING" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | ACTIVE | DELETING | FAILED | UPDATING \nUpdate requires: No interruption" + }, + "IndexType": { + "type": "string", + "enum": [ + "ENTERPRISE", + "STARTER" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENTERPRISE | STARTER \nUpdate requires: No interruption" + }, + "Status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TextDocumentStatistics": { + "type": "object", + "properties": { + "IndexedTextBytes": { + "type": "number", + "minimum": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "IndexedTextDocumentCount": { + "type": "number", + "minimum": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "ApplicationId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: Replacement" + }, + "CapacityConfiguration": { + "$ref": "#/definitions/IndexCapacityConfiguration" + }, + "Description": { + "type": "string", + "maxLength": 1000, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1000 \nPattern: ^[\\s\\S]*$ \nUpdate requires: No interruption" + }, + "DisplayName": { + "type": "string", + "maxLength": 1000, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1000 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "DocumentAttributeConfigurations": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DocumentAttributeConfiguration" + }, + "maxItems": 500, + "minItems": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/IndexType" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "ApplicationId", + "DisplayName" + ], + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/IndexArn", + "/properties/IndexId", + "/properties/IndexStatistics", + "/properties/Status", + "/properties/UpdatedAt" + ], + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/IndexId" + ], + "handlers": { + "create": { + "permissions": [ + "qbusiness:CreateIndex", + "qbusiness:UpdateIndex", + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "qbusiness:GetIndex", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateIndex" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteIndex", + "qbusiness:GetIndex" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListIndices" + ], + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + } + } + }, + "tagging": { + "taggable": true + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "additionalProperties": false, + "attributes": { + "CreatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "IndexArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "IndexId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: No interruption" + }, + "IndexStatistics": { + "$ref": "#/definitions/IndexStatistics" + }, + "Status": { + "$ref": "#/definitions/IndexStatus" + }, + "UpdatedAt": { + "type": "string", + "format": "date-time", + "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-qbusiness-plugin.json b/server/schema/resources/aws-qbusiness-plugin.json new file mode 100644 index 00000000..44c6a3ac --- /dev/null +++ b/server/schema/resources/aws-qbusiness-plugin.json @@ -0,0 +1,383 @@ +{ + "typeName": "AWS::QBusiness::Plugin", + "description": "Definition of AWS::QBusiness::Plugin Resource Type", + "definitions": { + "APISchema": { + "oneOf": [ + { + "type": "object", + "title": "Payload", + "properties": { + "Payload": { + "type": "string" + } + }, + "required": [ + "Payload" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "S3", + "properties": { + "S3": { + "$ref": "#/definitions/S3" + } + }, + "required": [ + "S3" + ], + "additionalProperties": false + } + ] + }, + "APISchemaType": { + "type": "string", + "enum": [ + "OPEN_API_V3" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: OPEN_API_V3 \nUpdate requires: No interruption" + }, + "BasicAuthConfiguration": { + "type": "object", + "properties": { + "SecretArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "CustomPluginConfiguration": { + "type": "object", + "properties": { + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: No interruption" + }, + "ApiSchemaType": { + "$ref": "#/definitions/APISchemaType" + }, + "ApiSchema": { + "$ref": "#/definitions/APISchema" + } + }, + "required": [ + "ApiSchema", + "ApiSchemaType", + "Description" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "NoAuthConfiguration": { + "type": "object", + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "OAuth2ClientCredentialConfiguration": { + "type": "object", + "properties": { + "SecretArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "RoleArn", + "SecretArn" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PluginAuthConfiguration": { + "oneOf": [ + { + "type": "object", + "title": "BasicAuthConfiguration", + "properties": { + "BasicAuthConfiguration": { + "$ref": "#/definitions/BasicAuthConfiguration" + } + }, + "required": [ + "BasicAuthConfiguration" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "OAuth2ClientCredentialConfiguration", + "properties": { + "OAuth2ClientCredentialConfiguration": { + "$ref": "#/definitions/OAuth2ClientCredentialConfiguration" + } + }, + "required": [ + "OAuth2ClientCredentialConfiguration" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "NoAuthConfiguration", + "properties": { + "NoAuthConfiguration": { + "$ref": "#/definitions/NoAuthConfiguration" + } + }, + "required": [ + "NoAuthConfiguration" + ], + "additionalProperties": false + } + ] + }, + "PluginBuildStatus": { + "type": "string", + "enum": [ + "READY", + "CREATE_IN_PROGRESS", + "CREATE_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_FAILED", + "DELETE_IN_PROGRESS", + "DELETE_FAILED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: READY | CREATE_IN_PROGRESS | CREATE_FAILED | UPDATE_IN_PROGRESS | UPDATE_FAILED | DELETE_IN_PROGRESS | DELETE_FAILED \nUpdate requires: No interruption" + }, + "PluginState": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "PluginType": { + "type": "string", + "enum": [ + "SERVICE_NOW", + "SALESFORCE", + "JIRA", + "ZENDESK", + "CUSTOM" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: SERVICE_NOW | SALESFORCE | JIRA | ZENDESK | CUSTOM \nUpdate requires: No interruption" + }, + "S3": { + "type": "object", + "properties": { + "Bucket": { + "type": "string", + "maxLength": 63, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 63 \nPattern: ^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$ \nUpdate requires: No interruption" + }, + "Key": { + "type": "string", + "maxLength": 1024, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" + } + }, + "required": [ + "Bucket", + "Key" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "ApplicationId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: Replacement" + }, + "AuthConfiguration": { + "$ref": "#/definitions/PluginAuthConfiguration" + }, + "CustomPluginConfiguration": { + "$ref": "#/definitions/CustomPluginConfiguration" + }, + "DisplayName": { + "type": "string", + "maxLength": 100, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 100 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "ServerUrl": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(https?|ftp|file)://([^\\s]*)$ \nUpdate requires: No interruption" + }, + "State": { + "$ref": "#/definitions/PluginState" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/PluginType" + } + }, + "required": [ + "ApplicationId", + "AuthConfiguration", + "DisplayName", + "Type" + ], + "readOnlyProperties": [ + "/properties/BuildStatus", + "/properties/CreatedAt", + "/properties/PluginArn", + "/properties/PluginId", + "/properties/UpdatedAt" + ], + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/PluginId" + ], + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreatePlugin", + "qbusiness:UpdatePlugin", + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetPlugin", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdatePlugin" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeletePlugin", + "qbusiness:GetPlugin" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListPlugins" + ], + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + } + } + }, + "tagging": { + "taggable": true + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "additionalProperties": false, + "attributes": { + "BuildStatus": { + "$ref": "#/definitions/PluginBuildStatus" + }, + "CreatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "PluginArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "PluginId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$ \nUpdate requires: No interruption" + }, + "UpdatedAt": { + "type": "string", + "format": "date-time", + "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-qbusiness-retriever.json b/server/schema/resources/aws-qbusiness-retriever.json new file mode 100644 index 00000000..33e0bbb6 --- /dev/null +++ b/server/schema/resources/aws-qbusiness-retriever.json @@ -0,0 +1,245 @@ +{ + "typeName": "AWS::QBusiness::Retriever", + "description": "Definition of AWS::QBusiness::Retriever Resource Type", + "definitions": { + "KendraIndexConfiguration": { + "type": "object", + "properties": { + "IndexId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "IndexId" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "NativeIndexConfiguration": { + "type": "object", + "properties": { + "IndexId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "IndexId" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "RetrieverConfiguration": { + "oneOf": [ + { + "type": "object", + "title": "NativeIndexConfiguration", + "properties": { + "NativeIndexConfiguration": { + "$ref": "#/definitions/NativeIndexConfiguration" + } + }, + "required": [ + "NativeIndexConfiguration" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "KendraIndexConfiguration", + "properties": { + "KendraIndexConfiguration": { + "$ref": "#/definitions/KendraIndexConfiguration" + } + }, + "required": [ + "KendraIndexConfiguration" + ], + "additionalProperties": false + } + ] + }, + "RetrieverStatus": { + "type": "string", + "enum": [ + "CREATING", + "ACTIVE", + "FAILED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | ACTIVE | FAILED \nUpdate requires: No interruption" + }, + "RetrieverType": { + "type": "string", + "enum": [ + "NATIVE_INDEX", + "KENDRA_INDEX" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: NATIVE_INDEX | KENDRA_INDEX \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "ApplicationId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: Replacement" + }, + "Configuration": { + "$ref": "#/definitions/RetrieverConfiguration" + }, + "DisplayName": { + "type": "string", + "maxLength": 1000, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1000 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ \nUpdate requires: No interruption" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/RetrieverType" + } + }, + "required": [ + "ApplicationId", + "Configuration", + "DisplayName", + "Type" + ], + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/RetrieverArn", + "/properties/RetrieverId", + "/properties/Status", + "/properties/UpdatedAt" + ], + "createOnlyProperties": [ + "/properties/ApplicationId", + "/properties/Type" + ], + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/RetrieverId" + ], + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateRetriever", + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetRetriever", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateRetriever" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteRetriever", + "qbusiness:GetRetriever" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListRetrievers" + ], + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + } + } + }, + "tagging": { + "taggable": true + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "additionalProperties": false, + "attributes": { + "CreatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "RetrieverArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "RetrieverId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/RetrieverStatus" + }, + "UpdatedAt": { + "type": "string", + "format": "date-time", + "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-qbusiness-webexperience.json b/server/schema/resources/aws-qbusiness-webexperience.json new file mode 100644 index 00000000..386db60f --- /dev/null +++ b/server/schema/resources/aws-qbusiness-webexperience.json @@ -0,0 +1,201 @@ +{ + "typeName": "AWS::QBusiness::WebExperience", + "description": "Definition of AWS::QBusiness::WebExperience Resource Type", + "definitions": { + "Tag": { + "type": "object", + "properties": { + "Key": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "WebExperienceSamplePromptsControlMode": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "WebExperienceStatus": { + "type": "string", + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "FAILED", + "PENDING_AUTH_CONFIG" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | ACTIVE | DELETING | FAILED | PENDING_AUTH_CONFIG \nUpdate requires: No interruption" + } + }, + "properties": { + "ApplicationId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{35}$ \nUpdate requires: Replacement" + }, + "RoleArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "SamplePromptsControlMode": { + "$ref": "#/definitions/WebExperienceSamplePromptsControlMode" + }, + "Subtitle": { + "type": "string", + "maxLength": 500, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 500 \nPattern: ^[\\s\\S]*$ \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Title": { + "type": "string", + "maxLength": 500, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 500 \nPattern: ^[\\s\\S]*$ \nUpdate requires: No interruption" + }, + "WelcomeMessage": { + "type": "string", + "maxLength": 300, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 300 \nUpdate requires: No interruption" + } + }, + "required": [ + "ApplicationId" + ], + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/DefaultEndpoint", + "/properties/Status", + "/properties/UpdatedAt", + "/properties/WebExperienceArn", + "/properties/WebExperienceId" + ], + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/WebExperienceId" + ], + "handlers": { + "create": { + "permissions": [ + "iam:PassRole", + "qbusiness:CreateWebExperience", + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + }, + "read": { + "permissions": [ + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "qbusiness:GetWebExperience", + "qbusiness:ListTagsForResource", + "qbusiness:TagResource", + "qbusiness:UntagResource", + "qbusiness:UpdateWebExperience", + "sso:PutApplicationGrant", + "sso:UpdateApplication" + ] + }, + "delete": { + "permissions": [ + "qbusiness:DeleteWebExperience", + "qbusiness:GetWebExperience" + ] + }, + "list": { + "permissions": [ + "qbusiness:ListWebExperiences" + ], + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + } + } + }, + "tagging": { + "taggable": true + }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-qbusiness", + "additionalProperties": false, + "attributes": { + "CreatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "DefaultEndpoint": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(https?|ftp|file)://([^\\s]*)$ \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/WebExperienceStatus" + }, + "UpdatedAt": { + "type": "string", + "format": "date-time", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "WebExperienceArn": { + "type": "string", + "maxLength": 1284, + "minLength": 0, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1284 \nPattern: ^arn:[a-z0-9-\\.]{1,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[a-z0-9-\\.]{0,63}:[^/].{0,1023}$ \nUpdate requires: No interruption" + }, + "WebExperienceId": { + "type": "string", + "maxLength": 36, + "minLength": 36, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 36 \nMaximum Length: 36 \nPattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-qldb-stream.json b/server/schema/resources/aws-qldb-stream.json index d7a9be52..307e0e1a 100644 --- a/server/schema/resources/aws-qldb-stream.json +++ b/server/schema/resources/aws-qldb-stream.json @@ -50,6 +50,18 @@ "markdownDescription": "A key-value pair to associate with a resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "qldb:TagResource", + "qldb:UntagResource", + "qldb:ListTagsForResource" + ] + }, "properties": { "LedgerName": { "type": "string", diff --git a/server/schema/resources/aws-quicksight-analysis.json b/server/schema/resources/aws-quicksight-analysis.json index 06df175d..b67c1ffb 100644 --- a/server/schema/resources/aws-quicksight-analysis.json +++ b/server/schema/resources/aws-quicksight-analysis.json @@ -954,7 +954,7 @@ }, "Series": { "minItems": 0, - "maxItems": 10, + "maxItems": 2000, "type": "array", "items": { "$ref": "#/definitions/SeriesItem" @@ -2394,6 +2394,25 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "WaterfallChartGroupColorConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "NegativeBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + }, + "TotalBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + }, + "PositiveBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "FunnelChartFieldWells": { "additionalProperties": false, "type": "object", @@ -5868,6 +5887,16 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "WaterfallChartColorConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "GroupColorConfiguration": { + "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "ParameterListControl": { "additionalProperties": false, "type": "object", @@ -6806,6 +6835,9 @@ "WaterfallChartOptions": { "$ref": "#/definitions/WaterfallChartOptions" }, + "ColorConfiguration": { + "$ref": "#/definitions/WaterfallChartColorConfiguration" + }, "CategoryAxisDisplayOptions": { "$ref": "#/definitions/AxisDisplayOptions" }, @@ -9272,7 +9304,7 @@ "properties": { "ConditionalFormattingOptions": { "minItems": 0, - "maxItems": 100, + "maxItems": 500, "type": "array", "items": { "$ref": "#/definitions/TableConditionalFormattingOption" @@ -9618,7 +9650,7 @@ "properties": { "ConditionalFormattingOptions": { "minItems": 0, - "maxItems": 100, + "maxItems": 500, "type": "array", "items": { "$ref": "#/definitions/PivotTableConditionalFormattingOption" diff --git a/server/schema/resources/aws-quicksight-dashboard.json b/server/schema/resources/aws-quicksight-dashboard.json index f8b14834..3ccdcd51 100644 --- a/server/schema/resources/aws-quicksight-dashboard.json +++ b/server/schema/resources/aws-quicksight-dashboard.json @@ -956,7 +956,7 @@ }, "Series": { "minItems": 0, - "maxItems": 10, + "maxItems": 2000, "type": "array", "items": { "$ref": "#/definitions/SeriesItem" @@ -2484,6 +2484,25 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "WaterfallChartGroupColorConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "NegativeBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + }, + "TotalBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + }, + "PositiveBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "FunnelChartFieldWells": { "additionalProperties": false, "type": "object", @@ -6096,6 +6115,16 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "WaterfallChartColorConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "GroupColorConfiguration": { + "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "ParameterListControl": { "additionalProperties": false, "type": "object", @@ -7081,6 +7110,9 @@ "WaterfallChartOptions": { "$ref": "#/definitions/WaterfallChartOptions" }, + "ColorConfiguration": { + "$ref": "#/definitions/WaterfallChartColorConfiguration" + }, "CategoryAxisDisplayOptions": { "$ref": "#/definitions/AxisDisplayOptions" }, @@ -9588,7 +9620,7 @@ "properties": { "ConditionalFormattingOptions": { "minItems": 0, - "maxItems": 100, + "maxItems": 500, "type": "array", "items": { "$ref": "#/definitions/TableConditionalFormattingOption" @@ -9934,7 +9966,7 @@ "properties": { "ConditionalFormattingOptions": { "minItems": 0, - "maxItems": 100, + "maxItems": 500, "type": "array", "items": { "$ref": "#/definitions/PivotTableConditionalFormattingOption" diff --git a/server/schema/resources/aws-quicksight-dataset.json b/server/schema/resources/aws-quicksight-dataset.json index da47d7e2..37fb084e 100644 --- a/server/schema/resources/aws-quicksight-dataset.json +++ b/server/schema/resources/aws-quicksight-dataset.json @@ -6,6 +6,13 @@ "type": "object", "description": "

A calculated column for a dataset.

", "properties": { + "ColumnName": { + "type": "string", + "maxLength": 127, + "minLength": 1, + "description": "

Column name.

", + "markdownDescription": "

Column name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" + }, "ColumnId": { "type": "string", "maxLength": 64, @@ -13,13 +20,6 @@ "description": "

A unique ID to identify a calculated column. During a dataset update, if the column ID\n of a calculated column matches that of an existing calculated column, Amazon QuickSight\n preserves the existing calculated column.

", "markdownDescription": "

A unique ID to identify a calculated column. During a dataset update, if the column ID\n of a calculated column matches that of an existing calculated column, Amazon QuickSight\n preserves the existing calculated column.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" }, - "ColumnName": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

Column name.

", - "markdownDescription": "

Column name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" - }, "Expression": { "type": "string", "maxLength": 4096, @@ -42,10 +42,16 @@ "properties": { "ColumnName": { "type": "string", - "maxLength": 128, + "maxLength": 127, "minLength": 1, "description": "

Column name.

", - "markdownDescription": "

Column name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "

Column name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" + }, + "NewColumnType": { + "$ref": "#/definitions/ColumnDataType" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" }, "Format": { "type": "string", @@ -53,12 +59,6 @@ "minLength": 0, "description": "

When casting a column from string to datetime type, you can supply a string in a\n format supported by Amazon QuickSight to denote the source data format.

", "markdownDescription": "

When casting a column from string to datetime type, you can supply a string in a\n format supported by Amazon QuickSight to denote the source data format.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 32 \nUpdate requires: No interruption" - }, - "NewColumnType": { - "$ref": "#/definitions/ColumnDataType" - }, - "SubType": { - "$ref": "#/definitions/ColumnSubDataType" } }, "required": [ @@ -68,6 +68,14 @@ "additionalProperties": false, "markdownDescription": "

A transform operation that casts a column to a different type.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "ColumnDataSubType": { + "type": "string", + "enum": [ + "FLOAT", + "FIXED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: FLOAT | FIXED \nUpdate requires: No interruption" + }, "ColumnDataType": { "type": "string", "enum": [ @@ -78,14 +86,6 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: STRING | INTEGER | DECIMAL | DATETIME \nUpdate requires: No interruption" }, - "ColumnSubDataType": { - "type": "string", - "enum": [ - "FIXED", - "FLOAT" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: FIXED | FLOAT \nUpdate requires: No interruption" - }, "ColumnDescription": { "type": "object", "description": "

Metadata that contains a description for a column.

", @@ -114,33 +114,36 @@ }, "ColumnLevelPermissionRule": { "type": "object", + "description": "

A rule defined to grant access on one or more restricted columns.\n Each dataset can have multiple rules.\n To create a restricted column, you add it to one or more rules.\n Each rule must contain at least one column and at least one user or group.\n To be able to see a restricted column, a user or group needs to be added\n to a rule for that column.

", "properties": { - "ColumnNames": { + "Principals": { "type": "array", "items": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "maxItems": 100, "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "description": "

An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or groups.

", + "markdownDescription": "

An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or groups.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "Principals": { + "ColumnNames": { "type": "array", "items": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "maxItems": 100, "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "description": "

An array of column names.

", + "markdownDescription": "

An array of column names.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A rule defined to grant access on one or more restricted columns.\n Each dataset can have multiple rules.\n To create a restricted column, you add it to one or more rules.\n Each rule must contain at least one column and at least one user or group.\n To be able to see a restricted column, a user or group needs to be added\n to a rule for that column.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "ColumnTag": { "type": "object", - "description": "

A tag for a column in a TagColumnOperation structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

", + "description": "

A tag for a column in a\n \n TagColumnOperation\n \n structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

", "properties": { "ColumnGeographicRole": { "$ref": "#/definitions/GeoSpatialDataRole" @@ -150,7 +153,15 @@ } }, "additionalProperties": false, - "markdownDescription": "

A tag for a column in a TagColumnOperation structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A tag for a column in a\n \n TagColumnOperation\n \n structure. This is a\n variant type structure. For this structure to be valid, only one of the attributes can\n be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "ColumnTagName": { + "type": "string", + "enum": [ + "COLUMN_GEOGRAPHIC_ROLE", + "COLUMN_DESCRIPTION" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: COLUMN_GEOGRAPHIC_ROLE | COLUMN_DESCRIPTION \nUpdate requires: No interruption" }, "CreateColumnsOperation": { "type": "object", @@ -182,12 +193,19 @@ "description": "

The Amazon Resource Name (ARN) of the data source.

", "markdownDescription": "

The Amazon Resource Name (ARN) of the data source.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, + "Name": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "description": "

A display name for the SQL query result.

", + "markdownDescription": "

A display name for the SQL query result.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, "SqlQuery": { "type": "string", - "maxLength": 65536, + "maxLength": 168000, "minLength": 1, "description": "

The SQL query.

", - "markdownDescription": "

The SQL query.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 65536 \nUpdate requires: No interruption" + "markdownDescription": "

The SQL query.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 168000 \nUpdate requires: No interruption" }, "Columns": { "type": "array", @@ -198,13 +216,6 @@ "minItems": 1, "description": "

The column schema from the SQL query result set.

", "markdownDescription": "

The column schema from the SQL query result set.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "Name": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

A display name for the SQL query result.

", - "markdownDescription": "

A display name for the SQL query result.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" } }, "required": [ @@ -224,9 +235,43 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: SPICE | DIRECT_QUERY \nUpdate requires: No interruption" }, + "DataSetRefreshProperties": { + "type": "object", + "description": "

The refresh properties of a dataset.

", + "properties": { + "RefreshConfiguration": { + "$ref": "#/definitions/RefreshConfiguration" + } + }, + "required": [ + "RefreshConfiguration" + ], + "additionalProperties": false, + "markdownDescription": "

The refresh properties of a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DataSetUsageConfiguration": { + "type": "object", + "description": "

The usage configuration to apply to child datasets that reference this dataset as a source.

", + "properties": { + "DisableUseAsDirectQuerySource": { + "type": "boolean", + "default": false, + "description": "

An option that controls whether a child dataset of a direct query can use this dataset as a source.

", + "markdownDescription": "

An option that controls whether a child dataset of a direct query can use this dataset as a source.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "DisableUseAsImportedSource": { + "type": "boolean", + "default": false, + "description": "

An option that controls whether a child dataset that's stored in QuickSight can use this dataset as a source.

", + "markdownDescription": "

An option that controls whether a child dataset that's stored in QuickSight can use this dataset as a source.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "

The usage configuration to apply to child datasets that reference this dataset as a source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "DatasetParameter": { "type": "object", - "description": "

A parameter created in the dataset that could be of any one data type such as string, integer, decimal or datetime.

", + "description": "

A dataset parameter.

", "properties": { "StringDatasetParameter": { "$ref": "#/definitions/StringDatasetParameter" @@ -242,21 +287,7 @@ } }, "additionalProperties": false, - "markdownDescription": "

A parameter created in the dataset that could be of any one data type such as string, integer, decimal or datetime.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DatasetParameterId": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

Identifier of the parameter created in the dataset.

", - "markdownDescription": "

Identifier of the parameter created in the dataset.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" - }, - "DatasetParameterName": { - "type": "string", - "maxLength": 2048, - "minLength": 1, - "description": "

Name of the parameter created in the dataset.

", - "markdownDescription": "

Name of the parameter created in the dataset.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" + "markdownDescription": "

A dataset parameter.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "DatasetParameterValueType": { "type": "string", @@ -264,18 +295,25 @@ "MULTI_VALUED", "SINGLE_VALUED" ], - "description": "

Every parameter value could be either a single value or multi value which helps to validate before evaluation.

", - "markdownDescription": "

Every parameter value could be either a single value or multi value which helps to validate before evaluation.

\n\n---\n\nRequired: No \nType: String \nAllowed Values: MULTI_VALUED | SINGLE_VALUED \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: MULTI_VALUED | SINGLE_VALUED \nUpdate requires: No interruption" }, "DateTimeDatasetParameter": { "type": "object", - "description": "

A parameter created in the dataset of date time data type.

", + "description": "

A date time parameter for a dataset.

", "properties": { "Id": { - "$ref": "#/definitions/DatasetParameterId" + "type": "string", + "maxLength": 128, + "minLength": 1, + "description": "

An identifier for the parameter that is created in the dataset.

", + "markdownDescription": "

An identifier for the parameter that is created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" }, "Name": { - "$ref": "#/definitions/DatasetParameterName" + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "

The name of the date time parameter that is created in the dataset.

", + "markdownDescription": "

The name of the date time parameter that is created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" }, "ValueType": { "$ref": "#/definitions/DatasetParameterValueType" @@ -293,41 +331,45 @@ "ValueType" ], "additionalProperties": false, - "markdownDescription": "

A parameter created in the dataset of date time data type.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A date time parameter for a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "DateTimeDatasetParameterDefaultValues": { "type": "object", - "description": "

List of default values defined for a given string date time parameter type. Currently only static values are supported.

", + "description": "

The default values of a date time parameter.

", "properties": { "StaticValues": { - "$ref": "#/definitions/DateTimeDatasetParameterValueList", - "description": "

List of static default values defined for a given string date time parameter type.

", - "markdownDescription": "

List of static default values defined for a given string date time parameter type.

\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "type": "array", + "items": { + "type": "string", + "description": "

The default value for the date time parameter.

", + "markdownDescription": "

The default value for the date time parameter.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given date time parameter.

", + "markdownDescription": "

A list of static default values for a given date time parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "

List of default values defined for a given string date time parameter type. Currently only static values are supported.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DateTimeDatasetParameterValueList": { - "type": "array", - "items": { - "type": "string", - "description": "

Default value defined for the dataset parameter of date time type.

", - "markdownDescription": "

Default value defined for the dataset parameter of date time type.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "maxItems": 32, - "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "

The default values of a date time parameter.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "DecimalDatasetParameter": { "type": "object", - "description": "

A parameter created in the dataset of decimal data type.

", + "description": "

A decimal parameter for a dataset.

", "properties": { "Id": { - "$ref": "#/definitions/DatasetParameterId" + "type": "string", + "maxLength": 128, + "minLength": 1, + "description": "

An identifier for the decimal parameter created in the dataset.

", + "markdownDescription": "

An identifier for the decimal parameter created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" }, "Name": { - "$ref": "#/definitions/DatasetParameterName" + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "

The name of the decimal parameter that is created in the dataset.

", + "markdownDescription": "

The name of the decimal parameter that is created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" }, "ValueType": { "$ref": "#/definitions/DatasetParameterValueType" @@ -342,138 +384,39 @@ "ValueType" ], "additionalProperties": false, - "markdownDescription": "

A parameter created in the dataset of decimal data type.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A decimal parameter for a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "DecimalDatasetParameterDefaultValues": { "type": "object", - "description": "

List of default values defined for a given decimal dataset parameter type. Currently only static values are supported.

", + "description": "

The default values of a decimal parameter.

", "properties": { "StaticValues": { - "$ref": "#/definitions/DecimalDatasetParameterValueList", - "description": "

List of static default values defined for a given decimal dataset parameter type.

", - "markdownDescription": "

List of static default values defined for a given decimal dataset parameter type.

\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - } - }, - "additionalProperties": false, - "markdownDescription": "

List of default values defined for a given decimal dataset parameter type. Currently only static values are supported.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DecimalDatasetParameterValueList": { - "type": "array", - "items": { - "type": "number", - "description": "

Default value defined for the dataset parameter of decimal type.

", - "markdownDescription": "

Default value defined for the dataset parameter of decimal type.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" - }, - "maxItems": 32, - "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "IntegerDatasetParameter": { - "type": "object", - "description": "

A parameter created in the dataset of integer data type.

", - "properties": { - "Id": { - "$ref": "#/definitions/DatasetParameterId" - }, - "Name": { - "$ref": "#/definitions/DatasetParameterName" - }, - "ValueType": { - "$ref": "#/definitions/DatasetParameterValueType" - }, - "DefaultValues": { - "$ref": "#/definitions/IntegerDatasetParameterDefaultValues" - } - }, - "required": [ - "Id", - "Name", - "ValueType" - ], - "additionalProperties": false, - "markdownDescription": "

A parameter created in the dataset of integer data type.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "IntegerDatasetParameterDefaultValues": { - "type": "object", - "description": "

List of default values defined for a given integer dataset parameter type. Currently only static values are supported.

", - "properties": { - "StaticValues": { - "$ref": "#/definitions/IntegerDatasetParameterValueList", - "description": "

List of static default values defined for a given integer dataset parameter type.

", - "markdownDescription": "

List of static default values defined for a given integer dataset parameter type.

\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - } - }, - "additionalProperties": false, - "markdownDescription": "

List of default values defined for a given integer dataset parameter type. Currently only static values are supported.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "IntegerDatasetParameterValueList": { - "type": "array", - "items": { - "type": "number", - "description": "

Default value defined for the dataset parameter of integer type.

", - "markdownDescription": "

Default value defined for the dataset parameter of integer type.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" - }, - "maxItems": 32, - "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "StringDatasetParameter": { - "type": "object", - "description": "

A parameter created in the dataset of string data type.

", - "properties": { - "Id": { - "$ref": "#/definitions/DatasetParameterId" - }, - "Name": { - "$ref": "#/definitions/DatasetParameterName" - }, - "ValueType": { - "$ref": "#/definitions/DatasetParameterValueType" - }, - "DefaultValues": { - "$ref": "#/definitions/StringDatasetParameterDefaultValues" - } - }, - "required": [ - "Id", - "Name", - "ValueType" - ], - "additionalProperties": false, - "markdownDescription": "

A parameter created in the dataset of string data type.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "StringDatasetParameterDefaultValues": { - "type": "object", - "description": "

List of default values defined for a given string dataset parameter type. Currently only static values are supported.

", - "properties": { - "StaticValues": { - "$ref": "#/definitions/StringDatasetParameterValueList", - "description": "

List of static default values defined for a given string dataset parameter type.

", - "markdownDescription": "

List of static default values defined for a given string dataset parameter type.

\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "type": "array", + "items": { + "type": "number", + "default": 0, + "description": "

The default value for the decimal parameter.

", + "markdownDescription": "

The default value for the decimal parameter.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given decimal parameter.

", + "markdownDescription": "

A list of static default values for a given decimal parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "

List of default values defined for a given string dataset parameter type. Currently only static values are supported.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "StringDatasetParameterValueList": { - "type": "array", - "items": { - "type": "string", - "description": "

Default value defined for the dataset parameter of string type.

", - "markdownDescription": "

Default value defined for the dataset parameter of string type.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "maxItems": 32, - "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "

The default values of a decimal parameter.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "FieldFolder": { "type": "object", + "description": "

A FieldFolder element is a folder that contains fields and nested subfolders.

", "properties": { "Description": { "type": "string", "maxLength": 500, "minLength": 0, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 500 \nUpdate requires: No interruption" + "description": "

The description for a field folder.

", + "markdownDescription": "

The description for a field folder.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 500 \nUpdate requires: No interruption" }, "Columns": { "type": "array", @@ -483,11 +426,12 @@ }, "maxItems": 5000, "minItems": 0, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "description": "

A folder has a list of columns. A column can only be in one folder.

", + "markdownDescription": "

A folder has a list of columns. A column can only be in one folder.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A FieldFolder element is a folder that contains fields and nested subfolders.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "FieldFolderMap": { "type": "object", @@ -533,28 +477,28 @@ "type": "object", "description": "

Geospatial column group that denotes a hierarchy.

", "properties": { + "Name": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "description": "

A display name for the hierarchy.

", + "markdownDescription": "

A display name for the hierarchy.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + }, + "CountryCode": { + "$ref": "#/definitions/GeoSpatialCountryCode" + }, "Columns": { "type": "array", "items": { "type": "string", - "maxLength": 128, + "maxLength": 127, "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" }, "maxItems": 16, "minItems": 1, "description": "

Columns in this hierarchy.

", "markdownDescription": "

Columns in this hierarchy.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "CountryCode": { - "$ref": "#/definitions/GeoSpatialCountryCode" - }, - "Name": { - "type": "string", - "maxLength": 64, - "minLength": 1, - "description": "

A display name for the hierarchy.

", - "markdownDescription": "

A display name for the hierarchy.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" } }, "required": [ @@ -581,26 +525,43 @@ "POSTCODE", "LONGITUDE", "LATITUDE", - "POLITICAL1" + "POLITICAL1", + "CENSUS_TRACT", + "CENSUS_BLOCK_GROUP", + "CENSUS_BLOCK" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: COUNTRY | STATE | COUNTY | CITY | POSTCODE | LONGITUDE | LATITUDE | POLITICAL1 | CENSUS_TRACT | CENSUS_BLOCK_GROUP | CENSUS_BLOCK \nUpdate requires: No interruption" + }, + "IncrementalRefresh": { + "type": "object", + "description": "

The incremental refresh configuration for a dataset.

", + "properties": { + "LookbackWindow": { + "$ref": "#/definitions/LookbackWindow" + } + }, + "required": [ + "LookbackWindow" ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: COUNTRY | STATE | COUNTY | CITY | POSTCODE | LONGITUDE | LATITUDE | POLITICAL1 \nUpdate requires: No interruption" + "additionalProperties": false, + "markdownDescription": "

The incremental refresh configuration for a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "InputColumn": { "type": "object", "description": "

Metadata for a column that is used as the input of a transform operation.

", "properties": { - "Type": { - "$ref": "#/definitions/InputColumnDataType" - }, - "SubType": { - "$ref": "#/definitions/ColumnSubDataType" - }, "Name": { "type": "string", - "maxLength": 128, + "maxLength": 127, "minLength": 1, "description": "

The name of this column in the underlying data source.

", - "markdownDescription": "

The name of this column in the underlying data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "

The name of this column in the underlying data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/InputColumnDataType" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" } }, "required": [ @@ -623,91 +584,93 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: STRING | INTEGER | DECIMAL | DATETIME | BIT | BOOLEAN | JSON \nUpdate requires: No interruption" }, - "RefreshConfiguration": { - "type": "object", - "description": "

Refresh Configuration.

", - "properties": { - "IncrementalRefresh": { - "$ref": "#/definitions/IncrementalRefresh" - } - }, - "additionalProperties": false, - "markdownDescription": "

Refresh Configuration.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "IncrementalRefresh": { + "IntegerDatasetParameter": { "type": "object", - "description": "

Incremental Refresh

", + "description": "

An integer parameter for a dataset.

", "properties": { - "LookbackWindow": { - "$ref": "#/definitions/LookbackWindow" + "Id": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "description": "

An identifier for the integer parameter created in the dataset.

", + "markdownDescription": "

An identifier for the integer parameter created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" + }, + "Name": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "

The name of the integer parameter that is created in the dataset.

", + "markdownDescription": "

The name of the integer parameter that is created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + }, + "DefaultValues": { + "$ref": "#/definitions/IntegerDatasetParameterDefaultValues" } }, + "required": [ + "Id", + "Name", + "ValueType" + ], "additionalProperties": false, - "markdownDescription": "

Incremental Refresh

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

An integer parameter for a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "LookbackWindow": { + "IntegerDatasetParameterDefaultValues": { "type": "object", + "description": "

The default values of an integer parameter.

", "properties": { - "ColumnName": { - "type": "string", - "description": "

Column Name

", - "markdownDescription": "

Column Name

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "Size": { - "type": "number", - "description": "

Size

", - "minimum": 1, - "markdownDescription": "

Size

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" - }, - "SizeUnit": { - "$ref": "#/definitions/SizeUnit" + "StaticValues": { + "type": "array", + "items": { + "type": "number", + "default": 0, + "description": "

The default value for the integer parameter.

", + "markdownDescription": "

The default value for the integer parameter.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given integer parameter.

", + "markdownDescription": "

A list of static default values for a given integer parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "SizeUnit": { - "type": "string", - "enum": [ - "HOUR", - "DAY", - "WEEK" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: HOUR | DAY | WEEK \nUpdate requires: No interruption" + "markdownDescription": "

The default values of an integer parameter.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "JoinInstruction": { "type": "object", - "description": "

Join instruction.

", + "description": "

The instructions associated with a join.

", "properties": { - "OnClause": { - "type": "string", - "maxLength": 512, - "minLength": 1, - "description": "

On Clause.

", - "markdownDescription": "

On Clause.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nUpdate requires: No interruption" - }, - "Type": { - "$ref": "#/definitions/JoinType" - }, - "LeftJoinKeyProperties": { - "$ref": "#/definitions/JoinKeyProperties" - }, "LeftOperand": { "type": "string", "maxLength": 64, "minLength": 1, - "description": "

Left operand.

", - "markdownDescription": "

Left operand.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: [0-9a-zA-Z-]* \nUpdate requires: No interruption" + "description": "

The operand on the left side of a join.

", + "markdownDescription": "

The operand on the left side of a join.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: ^[0-9a-zA-Z-]*$ \nUpdate requires: No interruption" }, "RightOperand": { "type": "string", "maxLength": 64, "minLength": 1, - "description": "

Right operand.

", - "markdownDescription": "

Right operand.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: [0-9a-zA-Z-]* \nUpdate requires: No interruption" + "description": "

The operand on the right side of a join.

", + "markdownDescription": "

The operand on the right side of a join.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: ^[0-9a-zA-Z-]*$ \nUpdate requires: No interruption" + }, + "LeftJoinKeyProperties": { + "$ref": "#/definitions/JoinKeyProperties" }, "RightJoinKeyProperties": { "$ref": "#/definitions/JoinKeyProperties" + }, + "Type": { + "$ref": "#/definitions/JoinType" + }, + "OnClause": { + "type": "string", + "maxLength": 512, + "minLength": 1, + "description": "

The join instructions provided in the ON clause of a join.

", + "markdownDescription": "

The join instructions provided in the ON clause of a join.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nUpdate requires: No interruption" } }, "required": [ @@ -717,18 +680,20 @@ "Type" ], "additionalProperties": false, - "markdownDescription": "

Join instruction.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The instructions associated with a join.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "JoinKeyProperties": { "type": "object", + "description": "

Properties associated with the columns participating in a join.

", "properties": { "UniqueKey": { "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "description": "

A value that indicates that a row in a table is uniquely identified by the columns in\n a join key. This is used by Amazon QuickSight to optimize query performance.

", + "markdownDescription": "

A value that indicates that a row in a table is uniquely identified by the columns in\n a join key. This is used by Amazon QuickSight to optimize query performance.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

Properties associated with the columns participating in a join.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "JoinType": { "type": "string", @@ -758,8 +723,8 @@ }, "maxItems": 2048, "minItems": 1, - "description": "

Transform operations that act on this logical table.

", - "markdownDescription": "

Transform operations that act on this logical table.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "description": "

Transform operations that act on this logical table. For this structure to be valid, only one of the attributes can be non-null.

", + "markdownDescription": "

Transform operations that act on this logical table. For this structure to be valid, only one of the attributes can be non-null.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "Source": { "$ref": "#/definitions/LogicalTableSource" @@ -777,7 +742,7 @@ "maxProperties": 64, "minProperties": 1, "patternProperties": { - "[0-9a-zA-Z-]*": { + "^[0-9a-zA-Z-]*$": { "$ref": "#/definitions/LogicalTable" } }, @@ -788,53 +753,132 @@ "type": "object", "description": "

Information about the source of a logical table. This is a variant type structure. For\n this structure to be valid, only one of the attributes can be non-null.

", "properties": { + "JoinInstruction": { + "$ref": "#/definitions/JoinInstruction" + }, "PhysicalTableId": { "type": "string", "maxLength": 64, "minLength": 1, "description": "

Physical table ID.

", - "markdownDescription": "

Physical table ID.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: [0-9a-zA-Z-]* \nUpdate requires: No interruption" - }, - "JoinInstruction": { - "$ref": "#/definitions/JoinInstruction" + "markdownDescription": "

Physical table ID.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: ^[0-9a-zA-Z-]*$ \nUpdate requires: No interruption" }, "DataSetArn": { "type": "string", - "description": "

The Amazon Resource Name (ARN) for the dataset.

", - "markdownDescription": "

The Amazon Resource Name (ARN) for the dataset.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "description": "

The Amazon Resource Number (ARN) of the parent dataset.

", + "markdownDescription": "

The Amazon Resource Number (ARN) of the parent dataset.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, "additionalProperties": false, "markdownDescription": "

Information about the source of a logical table. This is a variant type structure. For\n this structure to be valid, only one of the attributes can be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "LookbackWindow": { + "type": "object", + "description": "

The lookback window setup of an incremental refresh configuration.

", + "properties": { + "ColumnName": { + "type": "string", + "description": "

The name of the lookback window column.

", + "markdownDescription": "

The name of the lookback window column.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Size": { + "type": "number", + "default": 0, + "minimum": 1, + "description": "

The lookback window column size.

", + "markdownDescription": "

The lookback window column size.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + }, + "SizeUnit": { + "$ref": "#/definitions/LookbackWindowSizeUnit" + } + }, + "required": [ + "ColumnName", + "Size", + "SizeUnit" + ], + "additionalProperties": false, + "markdownDescription": "

The lookback window setup of an incremental refresh configuration.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "LookbackWindowSizeUnit": { + "type": "string", + "enum": [ + "HOUR", + "DAY", + "WEEK" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: HOUR | DAY | WEEK \nUpdate requires: No interruption" + }, "NewDefaultValues": { "type": "object", + "description": "

The configuration that overrides the existing default values for a dataset parameter that is inherited from another dataset.

", "properties": { "StringStaticValues": { - "$ref": "#/definitions/StringDatasetParameterValueList" + "type": "array", + "items": { + "type": "string", + "maxLength": 512, + "minLength": 0, + "description": "

The default value for the string parameter.

", + "markdownDescription": "

The default value for the string parameter.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 512 \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given string parameter.

", + "markdownDescription": "

A list of static default values for a given string parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "DecimalStaticValues": { - "$ref": "#/definitions/DecimalDatasetParameterValueList" + "type": "array", + "items": { + "type": "number", + "default": 0, + "description": "

The default value for the decimal parameter.

", + "markdownDescription": "

The default value for the decimal parameter.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given decimal parameter.

", + "markdownDescription": "

A list of static default values for a given decimal parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "DateTimeStaticValues": { - "$ref": "#/definitions/DateTimeDatasetParameterValueList" + "type": "array", + "items": { + "type": "string", + "description": "

The default value for the date time parameter.

", + "markdownDescription": "

The default value for the date time parameter.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given date time parameter.

", + "markdownDescription": "

A list of static default values for a given date time parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "IntegerStaticValues": { - "$ref": "#/definitions/IntegerDatasetParameterValueList" + "type": "array", + "items": { + "type": "number", + "default": 0, + "description": "

The default value for the integer parameter.

", + "markdownDescription": "

The default value for the integer parameter.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given integer parameter.

", + "markdownDescription": "

A list of static default values for a given integer parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "additionalProperties": false, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The configuration that overrides the existing default values for a dataset parameter that is inherited from another dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "OutputColumn": { "type": "object", "description": "

Output column.

", "properties": { - "Type": { - "$ref": "#/definitions/ColumnDataType" - }, - "SubType": { - "$ref": "#/definitions/ColumnSubDataType" + "Name": { + "type": "string", + "maxLength": 127, + "minLength": 1, + "description": "

The display name of the column..

", + "markdownDescription": "

The display name of the column..

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" }, "Description": { "type": "string", @@ -843,12 +887,11 @@ "description": "

A description for a column.

", "markdownDescription": "

A description for a column.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 500 \nUpdate requires: No interruption" }, - "Name": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

A display name for the dataset.

", - "markdownDescription": "

A display name for the dataset.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "Type": { + "$ref": "#/definitions/ColumnDataType" + }, + "SubType": { + "$ref": "#/definitions/ColumnDataSubType" } }, "additionalProperties": false, @@ -856,29 +899,31 @@ }, "OverrideDatasetParameterOperation": { "type": "object", - "description": "

A transform operation that overrides the dataset parameter values defined in another dataset.

", + "description": "

A transform operation that overrides the dataset parameter values that are defined in another dataset.

", "properties": { "ParameterName": { - "$ref": "#/definitions/DatasetParameterName", + "type": "string", + "maxLength": 2048, + "minLength": 1, "description": "

The name of the parameter to be overridden with different values.

", - "markdownDescription": "

The name of the parameter to be overridden with different values.

\n\n---\n\nRequired: Yes \nType: \nUpdate requires: No interruption" + "markdownDescription": "

The name of the parameter to be overridden with different values.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" }, "NewParameterName": { - "$ref": "#/definitions/DatasetParameterName", + "type": "string", + "maxLength": 2048, + "minLength": 1, "description": "

The new name for the parameter.

", - "markdownDescription": "

The new name for the parameter.

\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "markdownDescription": "

The new name for the parameter.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" }, "NewDefaultValues": { - "$ref": "#/definitions/NewDefaultValues", - "description": "

The new default values for the parameter.

", - "markdownDescription": "

The new default values for the parameter.

\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "$ref": "#/definitions/NewDefaultValues" } }, "required": [ "ParameterName" ], "additionalProperties": false, - "markdownDescription": "

A transform operation that overrides the dataset parameter values defined in another dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A transform operation that overrides the dataset parameter values that are defined in another dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "PhysicalTable": { "type": "object", @@ -902,7 +947,7 @@ "maxProperties": 32, "minProperties": 0, "patternProperties": { - "[0-9a-zA-Z-]*": { + "^[0-9a-zA-Z-]*$": { "$ref": "#/definitions/PhysicalTable" } }, @@ -931,45 +976,59 @@ "additionalProperties": false, "markdownDescription": "

A transform operation that projects columns. Operations that come after a projection\n can only refer to projected columns.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "RefreshConfiguration": { + "type": "object", + "description": "

The refresh configuration of a dataset.

", + "properties": { + "IncrementalRefresh": { + "$ref": "#/definitions/IncrementalRefresh" + } + }, + "required": [ + "IncrementalRefresh" + ], + "additionalProperties": false, + "markdownDescription": "

The refresh configuration of a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "RelationalTable": { "type": "object", "description": "

A physical table type for relational data sources.

", "properties": { "DataSourceArn": { "type": "string", - "description": "

The Amazon Resource Name (ARN) for the data source.

", - "markdownDescription": "

The Amazon Resource Name (ARN) for the data source.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" - }, - "InputColumns": { - "type": "array", - "items": { - "$ref": "#/definitions/InputColumn" - }, - "maxItems": 2048, - "minItems": 1, - "description": "

The column schema of the table.

", - "markdownDescription": "

The column schema of the table.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "Schema": { - "type": "string", - "maxLength": 64, - "minLength": 0, - "description": "

The schema name. This name applies to certain relational database engines.

", - "markdownDescription": "

The schema name. This name applies to certain relational database engines.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 64 \nUpdate requires: No interruption" + "description": "

The Amazon Resource Name (ARN) for the data source.

", + "markdownDescription": "

The Amazon Resource Name (ARN) for the data source.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "Catalog": { "type": "string", - "description": "

The catalog associated with a table.

", "maxLength": 256, "minLength": 0, + "description": "

The catalog associated with a table.

", "markdownDescription": "

The catalog associated with a table.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" }, + "Schema": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "description": "

The schema name. This name applies to certain relational database engines.

", + "markdownDescription": "

The schema name. This name applies to certain relational database engines.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" + }, "Name": { "type": "string", - "maxLength": 64, + "maxLength": 256, "minLength": 1, "description": "

The name of the relational table.

", - "markdownDescription": "

The name of the relational table.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + "markdownDescription": "

The name of the relational table.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "InputColumns": { + "type": "array", + "items": { + "$ref": "#/definitions/InputColumn" + }, + "maxItems": 2048, + "minItems": 1, + "description": "

The column schema of the table.

", + "markdownDescription": "

The column schema of the table.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" } }, "required": [ @@ -984,19 +1043,19 @@ "type": "object", "description": "

A transform operation that renames a column.

", "properties": { - "NewColumnName": { + "ColumnName": { "type": "string", - "maxLength": 128, + "maxLength": 127, "minLength": 1, - "description": "

The new name for the column.

", - "markdownDescription": "

The new name for the column.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "description": "

The name of the column to be renamed.

", + "markdownDescription": "

The name of the column to be renamed.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" }, - "ColumnName": { + "NewColumnName": { "type": "string", - "maxLength": 128, + "maxLength": 127, "minLength": 1, - "description": "

The name of the column to be renamed.

", - "markdownDescription": "

The name of the column to be renamed.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "description": "

The new name for the column.

", + "markdownDescription": "

The new name for the column.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" } }, "required": [ @@ -1010,6 +1069,13 @@ "type": "object", "description": "

Permission for the resource.

", "properties": { + "Principal": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "markdownDescription": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, "Actions": { "type": "array", "items": { @@ -1020,13 +1086,6 @@ "minItems": 1, "description": "

The IAM action to grant or revoke permissions on.

", "markdownDescription": "

The IAM action to grant or revoke permissions on.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "Principal": { - "type": "string", - "maxLength": 256, - "minLength": 1, - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an AWS account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across AWS accounts.\n (This is less common.)

    \n
  • \n
", - "markdownDescription": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an AWS account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across AWS accounts.\n (This is less common.)

    \n
  • \n
\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ @@ -1038,19 +1097,19 @@ }, "RowLevelPermissionDataSet": { "type": "object", - "description": "

The row-level security configuration for the dataset.

", + "description": "

Information about a dataset that contains permissions for row-level security (RLS).\n The permissions dataset maps fields to users or groups. For more information, see\n Using Row-Level Security (RLS) to Restrict Access to a Dataset in the Amazon QuickSight User\n Guide.

\n

The option to deny permissions by setting PermissionPolicy to DENY_ACCESS is\n not supported for new RLS datasets.

", "properties": { - "Arn": { - "type": "string", - "description": "

The Amazon Resource Name (ARN) of the permission dataset.

", - "markdownDescription": "

The Amazon Resource Name (ARN) of the permission dataset.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" - }, "Namespace": { "type": "string", "maxLength": 64, "minLength": 0, - "description": "

The namespace associated with the row-level permissions dataset.

", - "markdownDescription": "

The namespace associated with the row-level permissions dataset.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 64 \nPattern: ^[a-zA-Z0-9._-]*$ \nUpdate requires: No interruption" + "description": "

The namespace associated with the dataset that contains permissions for RLS.

", + "markdownDescription": "

The namespace associated with the dataset that contains permissions for RLS.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 64 \nPattern: ^[a-zA-Z0-9._-]*$ \nUpdate requires: No interruption" + }, + "Arn": { + "type": "string", + "description": "

The Amazon Resource Name (ARN) of the dataset that contains permissions for RLS.

", + "markdownDescription": "

The Amazon Resource Name (ARN) of the dataset that contains permissions for RLS.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "PermissionPolicy": { "$ref": "#/definitions/RowLevelPermissionPolicy" @@ -1067,15 +1126,7 @@ "PermissionPolicy" ], "additionalProperties": false, - "markdownDescription": "

The row-level security configuration for the dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "RowLevelPermissionPolicy": { - "type": "string", - "enum": [ - "GRANT_ACCESS", - "DENY_ACCESS" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: GRANT_ACCESS | DENY_ACCESS \nUpdate requires: No interruption" + "markdownDescription": "

Information about a dataset that contains permissions for row-level security (RLS).\n The permissions dataset maps fields to users or groups. For more information, see\n Using Row-Level Security (RLS) to Restrict Access to a Dataset in the Amazon QuickSight User\n Guide.

\n

The option to deny permissions by setting PermissionPolicy to DENY_ACCESS is\n not supported for new RLS datasets.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "RowLevelPermissionFormatVersion": { "type": "string", @@ -1085,9 +1136,17 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: VERSION_1 | VERSION_2 \nUpdate requires: No interruption" }, + "RowLevelPermissionPolicy": { + "type": "string", + "enum": [ + "GRANT_ACCESS", + "DENY_ACCESS" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: GRANT_ACCESS | DENY_ACCESS \nUpdate requires: No interruption" + }, "RowLevelPermissionTagConfiguration": { "type": "object", - "description": "

The configuration of tags on a dataset to set row-level security.

", + "description": "

The configuration of tags on a dataset to set row-level security.

", "properties": { "Status": { "$ref": "#/definitions/Status" @@ -1105,7 +1164,16 @@ "TagRuleConfigurations": { "type": "array", "items": { - "$ref": "#/definitions/RowLevelPermissionTagRuleConfiguration" + "type": "array", + "items": { + "type": "string", + "maxLength": 128, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "maxItems": 50, + "minItems": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "maxItems": 50, "minItems": 1, @@ -1117,25 +1185,12 @@ "TagRules" ], "additionalProperties": false, - "markdownDescription": "

The configuration of tags on a dataset to set row-level security.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "Status": { - "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + "markdownDescription": "

The configuration of tags on a dataset to set row-level security.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "RowLevelPermissionTagRule": { "type": "object", - "description": "

Permission for the resource.

", + "description": "

A set of rules associated with a tag.

", "properties": { - "ColumnName": { - "type": "string", - "description": "

The column name that a tag key is assigned to.

", - "markdownDescription": "

The column name that a tag key is assigned to.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" - }, "TagKey": { "type": "string", "maxLength": 128, @@ -1143,18 +1198,24 @@ "description": "

The unique key for a tag.

", "markdownDescription": "

The unique key for a tag.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, - "MatchAllValue": { + "ColumnName": { "type": "string", - "maxLength": 256, - "minLength": 1, - "description": "

A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.

", - "markdownDescription": "

A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "description": "

The column name that a tag key is assigned to.

", + "markdownDescription": "

The column name that a tag key is assigned to.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "TagMultiValueDelimiter": { "type": "string", "maxLength": 10, + "minLength": 0, "description": "

A string that you want to use to delimit the values when you pass the values at run time. For example, you can delimit the values with a comma.

", "markdownDescription": "

A string that you want to use to delimit the values when you pass the values at run time. For example, you can delimit the values with a comma.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 10 \nUpdate requires: No interruption" + }, + "MatchAllValue": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "description": "

A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.

", + "markdownDescription": "

A string that you want to use to filter by all the values in a column in the dataset and don\u2019t want to list the values one by one. For example, you can use an asterisk as your match all value.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ @@ -1162,28 +1223,19 @@ "TagKey" ], "additionalProperties": false, - "markdownDescription": "

Permission for the resource.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "RowLevelPermissionTagRuleConfiguration": { - "type": "array", - "items": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" - }, - "maxItems": 50, - "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "

A set of rules associated with a tag.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "S3Source": { "type": "object", - "description": "

A physical table type for as S3 data source.

", + "description": "

A physical table type for an S3 data source.

", "properties": { "DataSourceArn": { "type": "string", - "description": "

The amazon Resource Name (ARN) for the data source.

", - "markdownDescription": "

The amazon Resource Name (ARN) for the data source.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "description": "

The Amazon Resource Name (ARN) for the data source.

", + "markdownDescription": "

The Amazon Resource Name (ARN) for the data source.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "UploadSettings": { + "$ref": "#/definitions/UploadSettings" }, "InputColumns": { "type": "array", @@ -1192,11 +1244,8 @@ }, "maxItems": 2048, "minItems": 1, - "description": "

A physical table type for as S3 data source.

", - "markdownDescription": "

A physical table type for as S3 data source.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "UploadSettings": { - "$ref": "#/definitions/UploadSettings" + "description": "

A physical table type for an S3 data source.

\n \n

For files that aren't JSON, only STRING data types are supported in input columns.

\n
", + "markdownDescription": "

A physical table type for an S3 data source.

\n \n

For files that aren't JSON, only STRING data types are supported in input columns.

\n
\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" } }, "required": [ @@ -1204,25 +1253,88 @@ "InputColumns" ], "additionalProperties": false, - "markdownDescription": "

A physical table type for as S3 data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

A physical table type for an S3 data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Tag": { + "Status": { + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "StringDatasetParameter": { "type": "object", - "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "description": "

A string parameter for a dataset.

", "properties": { - "Value": { + "Id": { "type": "string", - "maxLength": 256, + "maxLength": 128, "minLength": 1, - "description": "

Tag value.

", - "markdownDescription": "

Tag value.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "description": "

An identifier for the string parameter that is created in the dataset.

", + "markdownDescription": "

An identifier for the string parameter that is created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[a-zA-Z0-9-]+$ \nUpdate requires: No interruption" }, + "Name": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "

The name of the string parameter that is created in the dataset.

", + "markdownDescription": "

The name of the string parameter that is created in the dataset.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^[a-zA-Z0-9]+$ \nUpdate requires: No interruption" + }, + "ValueType": { + "$ref": "#/definitions/DatasetParameterValueType" + }, + "DefaultValues": { + "$ref": "#/definitions/StringDatasetParameterDefaultValues" + } + }, + "required": [ + "Id", + "Name", + "ValueType" + ], + "additionalProperties": false, + "markdownDescription": "

A string parameter for a dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "StringDatasetParameterDefaultValues": { + "type": "object", + "description": "

The default values of a string parameter.

", + "properties": { + "StaticValues": { + "type": "array", + "items": { + "type": "string", + "maxLength": 512, + "minLength": 0, + "description": "

The default value for the string parameter.

", + "markdownDescription": "

The default value for the string parameter.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 512 \nUpdate requires: No interruption" + }, + "maxItems": 32, + "minItems": 0, + "description": "

A list of static default values for a given string parameter.

", + "markdownDescription": "

A list of static default values for a given string parameter.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "

The default values of a string parameter.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "properties": { "Key": { "type": "string", "maxLength": 128, "minLength": 1, "description": "

Tag key.

", "markdownDescription": "

Tag key.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "description": "

Tag value.

", + "markdownDescription": "

Tag value.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ @@ -1238,10 +1350,10 @@ "properties": { "ColumnName": { "type": "string", - "maxLength": 128, + "maxLength": 127, "minLength": 1, "description": "

The column that this operation acts on.

", - "markdownDescription": "

The column that this operation acts on.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "

The column that this operation acts on.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" }, "Tags": { "type": "array", @@ -1250,8 +1362,8 @@ }, "maxItems": 16, "minItems": 1, - "description": "

The dataset column tag, currently only used for geospatial type tagging. .

\n \n

This is not tags for the AWS tagging feature. .

\n
", - "markdownDescription": "

The dataset column tag, currently only used for geospatial type tagging. .

\n \n

This is not tags for the AWS tagging feature. .

\n
\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + "description": "

The dataset column tag, currently only used for geospatial type tagging.

\n \n

This is not tags for the Amazon Web Services tagging feature.

\n
", + "markdownDescription": "

The dataset column tag, currently only used for geospatial type tagging.

\n \n

This is not tags for the Amazon Web Services tagging feature.

\n
\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" } }, "required": [ @@ -1288,23 +1400,26 @@ "type": "object", "description": "

A data transformation on a logical table. This is a variant type structure. For this\n structure to be valid, only one of the attributes can be non-null.

", "properties": { - "TagColumnOperation": { - "$ref": "#/definitions/TagColumnOperation" + "ProjectOperation": { + "$ref": "#/definitions/ProjectOperation" }, "FilterOperation": { "$ref": "#/definitions/FilterOperation" }, - "CastColumnTypeOperation": { - "$ref": "#/definitions/CastColumnTypeOperation" - }, "CreateColumnsOperation": { "$ref": "#/definitions/CreateColumnsOperation" }, "RenameColumnOperation": { "$ref": "#/definitions/RenameColumnOperation" }, - "ProjectOperation": { - "$ref": "#/definitions/ProjectOperation" + "CastColumnTypeOperation": { + "$ref": "#/definitions/CastColumnTypeOperation" + }, + "TagColumnOperation": { + "$ref": "#/definitions/TagColumnOperation" + }, + "UntagColumnOperation": { + "$ref": "#/definitions/UntagColumnOperation" }, "OverrideDatasetParameterOperation": { "$ref": "#/definitions/OverrideDatasetParameterOperation" @@ -1313,18 +1428,37 @@ "additionalProperties": false, "markdownDescription": "

A data transformation on a logical table. This is a variant type structure. For this\n structure to be valid, only one of the attributes can be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "UntagColumnOperation": { + "type": "object", + "description": "

A transform operation that removes tags associated with a column.

", + "properties": { + "ColumnName": { + "type": "string", + "maxLength": 127, + "minLength": 1, + "description": "

The column that this operation acts on.

", + "markdownDescription": "

The column that this operation acts on.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 127 \nUpdate requires: No interruption" + }, + "TagNames": { + "type": "array", + "items": { + "$ref": "#/definitions/ColumnTagName" + }, + "description": "

The column tags to remove from this column.

", + "markdownDescription": "

The column tags to remove from this column.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "ColumnName", + "TagNames" + ], + "additionalProperties": false, + "markdownDescription": "

A transform operation that removes tags associated with a column.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "UploadSettings": { "type": "object", "description": "

Information about the format for a source file or files.

", "properties": { - "ContainsHeader": { - "type": "boolean", - "description": "

Whether the file has a header row, or the files each have a header row.

", - "markdownDescription": "

Whether the file has a header row, or the files each have a header row.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "TextQualifier": { - "$ref": "#/definitions/TextQualifier" - }, "Format": { "$ref": "#/definitions/FileFormat" }, @@ -1334,6 +1468,14 @@ "description": "

A row number to start reading data from.

", "markdownDescription": "

A row number to start reading data from.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" }, + "ContainsHeader": { + "type": "boolean", + "description": "

Whether the file has a header row, or the files each have a header row.

", + "markdownDescription": "

Whether the file has a header row, or the files each have a header row.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "TextQualifier": { + "$ref": "#/definitions/TextQualifier" + }, "Delimiter": { "type": "string", "maxLength": 1, @@ -1366,33 +1508,6 @@ }, "additionalProperties": false, "markdownDescription": "

Wait policy to use when creating/updating dataset. Default is to wait for SPICE ingestion to finish with timeout of 36 hours.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DataSetUsageConfiguration": { - "type": "object", - "description": "

The dataset usage configuration for the dataset.

", - "properties": { - "DisableUseAsDirectQuerySource": { - "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, - "DisableUseAsImportedSource": { - "type": "boolean", - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - } - }, - "additionalProperties": false, - "markdownDescription": "

The dataset usage configuration for the dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DataSetRefreshProperties": { - "type": "object", - "description": "

The dataset refresh properties for the dataset.

", - "properties": { - "RefreshConfiguration": { - "$ref": "#/definitions/RefreshConfiguration" - } - }, - "additionalProperties": false, - "markdownDescription": "

The dataset refresh properties for the dataset.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { @@ -1409,8 +1524,8 @@ }, "maxItems": 8, "minItems": 1, - "description": "

Groupings of columns that work together in certain QuickSight features. Currently, only geospatial hierarchy is supported.

", - "markdownDescription": "

Groupings of columns that work together in certain QuickSight features. Currently, only geospatial hierarchy is supported.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "description": "

Groupings of columns that work together in certain Amazon QuickSight features. Currently, only geospatial hierarchy is supported.

", + "markdownDescription": "

Groupings of columns that work together in certain Amazon QuickSight features. Currently, only geospatial hierarchy is supported.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "ColumnLevelPermissionRules": { "type": "array", @@ -1418,21 +1533,28 @@ "$ref": "#/definitions/ColumnLevelPermissionRule" }, "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "description": "

A set of one or more definitions of a \n ColumnLevelPermissionRule\n .

", + "markdownDescription": "

A set of one or more definitions of a \n ColumnLevelPermissionRule\n .

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "DataSetId": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, + "DataSetRefreshProperties": { + "$ref": "#/definitions/DataSetRefreshProperties" + }, + "DataSetUsageConfiguration": { + "$ref": "#/definitions/DataSetUsageConfiguration" + }, "DatasetParameters": { "type": "array", "items": { "$ref": "#/definitions/DatasetParameter" }, "maxItems": 32, - "minItems": 1, - "description": "

The parameters declared in the dataset.

", - "markdownDescription": "

The parameters declared in the dataset.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "minItems": 0, + "description": "

The parameter declarations of the dataset.

", + "markdownDescription": "

The parameter declarations of the dataset.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "FieldFolders": { "$ref": "#/definitions/FieldFolderMap" @@ -1481,12 +1603,6 @@ }, "IngestionWaitPolicy": { "$ref": "#/definitions/IngestionWaitPolicy" - }, - "DataSetUsageConfiguration": { - "$ref": "#/definitions/DataSetUsageConfiguration" - }, - "DataSetRefreshProperties": { - "$ref": "#/definitions/DataSetRefreshProperties" } }, "readOnlyProperties": [ @@ -1508,7 +1624,6 @@ "/properties/AwsAccountId", "/properties/DataSetId" ], - "additionalProperties": false, "handlers": { "create": { "permissions": [ @@ -1569,6 +1684,14 @@ ] } }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "attributes": { "Arn": { "type": "string", @@ -1577,6 +1700,7 @@ }, "ConsumedSpiceCapacityInBytes": { "type": "number", + "default": 0, "description": "

The amount of SPICE capacity used by this dataset. This is 0 if the dataset isn't\n imported into SPICE.

", "markdownDescription": "

The amount of SPICE capacity used by this dataset. This is 0 if the dataset isn't\n imported into SPICE.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" }, diff --git a/server/schema/resources/aws-quicksight-datasource.json b/server/schema/resources/aws-quicksight-datasource.json index 3b6f34e9..096bb428 100644 --- a/server/schema/resources/aws-quicksight-datasource.json +++ b/server/schema/resources/aws-quicksight-datasource.json @@ -1,330 +1,284 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-quicksight", + "handlers": { + "read": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:ListTagsForResource" + ] + }, + "create": { + "permissions": [ + "quicksight:CreateDataSource", + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:TagResource", + "quicksight:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:UpdateDataSource", + "quicksight:UpdateDataSourcePermissions", + "quicksight:TagResource", + "quicksight:UntagResource", + "quicksight:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:ListDataSources" + ] + }, + "delete": { + "permissions": [ + "quicksight:DescribeDataSource", + "quicksight:DescribeDataSourcePermissions", + "quicksight:DeleteDataSource", + "quicksight:ListTagsForResource" + ] + } + }, "typeName": "AWS::QuickSight::DataSource", + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedTime", + "/properties/LastUpdatedTime", + "/properties/Status" + ], "description": "Definition of the AWS::QuickSight::DataSource Resource Type.", + "writeOnlyProperties": [ + "/properties/Credentials" + ], + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/DataSourceId", + "/properties/Type" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/AwsAccountId", + "/properties/DataSourceId" + ], "definitions": { - "AmazonElasticsearchParameters": { + "AuroraPostgreSqlParameters": { + "description": "

Parameters for Amazon Aurora PostgreSQL-Compatible Edition.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon Elasticsearch Service parameters.

", "properties": { - "Domain": { + "Port": { + "default": 0, + "maximum": 65535, + "description": "

The port that Amazon Aurora PostgreSQL is listening on.

", + "type": "number", + "minimum": 1, + "markdownDescription": "

The port that Amazon Aurora PostgreSQL is listening on.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + }, + "Database": { + "minLength": 1, + "description": "

The Amazon Aurora PostgreSQL database to connect to.

", "type": "string", - "maxLength": 64, + "maxLength": 128, + "markdownDescription": "

The Amazon Aurora PostgreSQL database to connect to.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Host": { "minLength": 1, - "description": "

The Amazon Elasticsearch Service domain.

", - "markdownDescription": "

The Amazon Elasticsearch Service domain.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + "description": "

The Amazon Aurora PostgreSQL-Compatible host to connect to.

", + "type": "string", + "maxLength": 256, + "markdownDescription": "

The Amazon Aurora PostgreSQL-Compatible host to connect to.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ - "Domain" + "Database", + "Host", + "Port" ], - "markdownDescription": "

Amazon Elasticsearch Service parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

Parameters for Amazon Aurora PostgreSQL-Compatible Edition.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "AmazonOpenSearchParameters": { + "DataSourceCredentials": { + "description": "

Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon OpenSearch Service parameters.

", "properties": { - "Domain": { - "type": "string", - "maxLength": 64, + "SecretArn": { "minLength": 1, - "description": "

The Amazon OpenSearch Service domain.

", - "markdownDescription": "

The Amazon OpenSearch Service domain.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + "description": "

The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.

", + "type": "string", + "maxLength": 2048, + "markdownDescription": "

The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:[-a-z0-9]*:secretsmanager:[-a-z0-9]*:[0-9]{12}:secret:.+$ \nUpdate requires: No interruption" + }, + "CopySourceArn": { + "description": "

The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.

", + "type": "string", + "markdownDescription": "

The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.

\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:[-a-z0-9]*:quicksight:[-a-z0-9]*:[0-9]{12}:datasource/.+$ \nUpdate requires: No interruption" + }, + "CredentialPair": { + "$ref": "#/definitions/CredentialPair" } }, - "required": [ - "Domain" - ], - "markdownDescription": "

Amazon OpenSearch Service parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "AthenaParameters": { + "ManifestFileLocation": { + "description": "

Amazon S3 manifest file location.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon Athena parameters.

", "properties": { - "WorkGroup": { - "type": "string", - "maxLength": 128, + "Bucket": { "minLength": 1, - "description": "

The workgroup that Amazon Athena uses.

", - "markdownDescription": "

The workgroup that Amazon Athena uses.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "description": "

Amazon S3 bucket.

", + "type": "string", + "maxLength": 1024, + "markdownDescription": "

Amazon S3 bucket.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" }, - "RoleArn": { + "Key": { + "minLength": 1, + "description": "

Amazon S3 key that identifies an object.

", "type": "string", - "maxLength": 2048, - "minLength": 20, - "description": "

Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.

", - "markdownDescription": "

Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nUpdate requires: No interruption" + "maxLength": 1024, + "markdownDescription": "

Amazon S3 key that identifies an object.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" } }, - "markdownDescription": "

Amazon Athena parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "required": [ + "Bucket", + "Key" + ], + "markdownDescription": "

Amazon S3 manifest file location.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "AuroraParameters": { + "StarburstParameters": { + "description": "

The parameters that are required to connect to a Starburst data source.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon Aurora parameters.

", "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, + "description": "

The port for the Starburst data source.

", + "type": "number", "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + "markdownDescription": "

The port for the Starburst data source.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, - "Database": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

Database.

", - "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "ProductType": { + "$ref": "#/definitions/StarburstProductType" }, "Host": { + "minLength": 1, + "description": "

The host name of the Starburst data source.

", "type": "string", "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "markdownDescription": "

The host name of the Starburst data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "Catalog": { + "minLength": 0, + "description": "

The catalog name for the Starburst data source.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

The catalog name for the Starburst data source.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" } }, "required": [ - "Database", + "Catalog", "Host", "Port" ], - "markdownDescription": "

Amazon Aurora parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters that are required to connect to a Starburst data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "AuroraPostgreSqlParameters": { + "RedshiftParameters": { + "description": "

The parameters for Amazon Redshift. The ClusterId field can be blank if\n Host and Port are both set. The Host and Port fields can be blank if the ClusterId field is set.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon Aurora with PostgreSQL compatibility parameters.

", "properties": { + "ClusterId": { + "minLength": 1, + "description": "

Cluster ID. This field can be blank if the Host and Port are\n provided.

", + "type": "string", + "maxLength": 64, + "markdownDescription": "

Cluster ID. This field can be blank if the Host and Port are\n provided.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + }, "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + "description": "

Port. This field can be blank if the ClusterId is provided.

", + "type": "number", + "minimum": 0, + "markdownDescription": "

Port. This field can be blank if the ClusterId is provided.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" }, "Database": { - "type": "string", - "maxLength": 128, "minLength": 1, "description": "

Database.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, "Host": { + "minLength": 1, + "description": "

Host. This field can be blank if ClusterId is provided.

", "type": "string", "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "markdownDescription": "

Host. This field can be blank if ClusterId is provided.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "IdentityCenterConfiguration": { + "$ref": "#/definitions/IdentityCenterConfiguration" } }, "required": [ - "Database", - "Host", - "Port" + "Database" ], - "markdownDescription": "

Amazon Aurora with PostgreSQL compatibility parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for Amazon Redshift. The ClusterId field can be blank if\n Host and Port are both set. The Host and Port fields can be blank if the ClusterId field is set.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "AwsIotAnalyticsParameters": { + "VpcConnectionProperties": { + "description": "

VPC connection properties.

", + "additionalProperties": false, "type": "object", - "description": "

AWS IoT Analytics parameters.

", "properties": { - "DataSetName": { + "VpcConnectionArn": { + "description": "

The Amazon Resource Name (ARN) for the VPC connection.

", "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

Dataset name.

", - "markdownDescription": "

Dataset name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "

The Amazon Resource Name (ARN) for the VPC connection.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ - "DataSetName" + "VpcConnectionArn" ], - "markdownDescription": "

AWS IoT Analytics parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

VPC connection properties.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "CredentialPair": { + "SnowflakeParameters": { + "description": "

The parameters for Snowflake.

", + "additionalProperties": false, "type": "object", - "description": "

The combination of user name and password that are used as credentials.

", "properties": { - "AlternateDataSourceParameters": { - "type": "array", - "items": { - "$ref": "#/definitions/DataSourceParameters" - }, - "maxItems": 50, - "minItems": 1, - "description": "

A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.

", - "markdownDescription": "

A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Username": { + "Warehouse": { + "minLength": 0, + "description": "

Warehouse.

", "type": "string", - "maxLength": 64, - "minLength": 1, - "description": "

User name.

", - "markdownDescription": "

User name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + "maxLength": 128, + "markdownDescription": "

Warehouse.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" }, - "Password": { - "type": "string", - "maxLength": 1024, + "Database": { "minLength": 1, - "description": "

Password.

", - "markdownDescription": "

Password.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" - } - }, - "required": [ - "Password", - "Username" - ], - "markdownDescription": "

The combination of user name and password that are used as credentials.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DatabricksParameters": { - "type": "object", - "description": "

Databricks parameters.

", - "properties": { - "Host": { + "description": "

Database.

", "type": "string", - "maxLength": 256, + "maxLength": 128, + "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Host": { "minLength": 1, "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" - }, - "Port": { - "type": "number", - "maximum": 65535, - "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" - }, - "SqlEndpointPath": { "type": "string", - "maxLength": 4096, - "minLength": 1, - "description": "

The HTTP Path of the Databricks data source.

", - "markdownDescription": "

The HTTP Path of the Databricks data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 4096 \nUpdate requires: No interruption" + "maxLength": 256, + "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ + "Database", "Host", - "Port", - "SqlEndpointPath" - ], - "markdownDescription": "

Databricks parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DataSourceCredentials": { - "type": "object", - "description": "

Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.

", - "properties": { - "CopySourceArn": { - "type": "string", - "description": "

The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.

", - "markdownDescription": "

The Amazon Resource Name (ARN) of a data source that has the credential pair that you\n want to use. When CopySourceArn is not null, the credential pair from the\n data source in the ARN is used as the credentials for the\n DataSourceCredentials structure.

\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:[-a-z0-9]*:quicksight:[-a-z0-9]*:[0-9]{12}:datasource/.+ \nUpdate requires: No interruption" - }, - "CredentialPair": { - "$ref": "#/definitions/CredentialPair" - }, - "SecretArn": { - "type": "string", - "maxLength": 2048, - "minLength": 1, - "description": "

The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.

", - "markdownDescription": "

The Amazon Resource Name (ARN) of the secret associated with the data source in Amazon Secrets Manager.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:[-a-z0-9]*:secretsmanager:[-a-z0-9]*:[0-9]{12}:secret:.+ \nUpdate requires: No interruption" - } - }, - "markdownDescription": "

Data source credentials. This is a variant type structure. For this structure to be\n valid, only one of the attributes can be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DataSourceErrorInfo": { - "type": "object", - "description": "

Error information for the data source creation or update.

", - "properties": { - "Type": { - "$ref": "#/definitions/DataSourceErrorInfoType" - }, - "Message": { - "type": "string", - "description": "

Error message.

", - "markdownDescription": "

Error message.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "markdownDescription": "

Error information for the data source creation or update.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "DataSourceErrorInfoType": { - "type": "string", - "enum": [ - "ACCESS_DENIED", - "COPY_SOURCE_NOT_FOUND", - "TIMEOUT", - "ENGINE_VERSION_NOT_SUPPORTED", - "UNKNOWN_HOST", - "GENERIC_SQL_FAILURE", - "CONFLICT", - "UNKNOWN" + "Warehouse" ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ACCESS_DENIED | COPY_SOURCE_NOT_FOUND | TIMEOUT | ENGINE_VERSION_NOT_SUPPORTED | UNKNOWN_HOST | GENERIC_SQL_FAILURE | CONFLICT | UNKNOWN \nUpdate requires: No interruption" - }, - "DataSourceParameters": { - "type": "object", - "description": "

The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.

", - "properties": { - "AuroraPostgreSqlParameters": { - "$ref": "#/definitions/AuroraPostgreSqlParameters" - }, - "TeradataParameters": { - "$ref": "#/definitions/TeradataParameters" - }, - "RdsParameters": { - "$ref": "#/definitions/RdsParameters" - }, - "AthenaParameters": { - "$ref": "#/definitions/AthenaParameters" - }, - "SparkParameters": { - "$ref": "#/definitions/SparkParameters" - }, - "MariaDbParameters": { - "$ref": "#/definitions/MariaDbParameters" - }, - "OracleParameters": { - "$ref": "#/definitions/OracleParameters" - }, - "PrestoParameters": { - "$ref": "#/definitions/PrestoParameters" - }, - "RedshiftParameters": { - "$ref": "#/definitions/RedshiftParameters" - }, - "MySqlParameters": { - "$ref": "#/definitions/MySqlParameters" - }, - "SqlServerParameters": { - "$ref": "#/definitions/SqlServerParameters" - }, - "SnowflakeParameters": { - "$ref": "#/definitions/SnowflakeParameters" - }, - "AmazonElasticsearchParameters": { - "$ref": "#/definitions/AmazonElasticsearchParameters" - }, - "AmazonOpenSearchParameters": { - "$ref": "#/definitions/AmazonOpenSearchParameters" - }, - "PostgreSqlParameters": { - "$ref": "#/definitions/PostgreSqlParameters" - }, - "AuroraParameters": { - "$ref": "#/definitions/AuroraParameters" - }, - "S3Parameters": { - "$ref": "#/definitions/S3Parameters" - }, - "DatabricksParameters": { - "$ref": "#/definitions/DatabricksParameters" - }, - "StarburstParameters": { - "$ref": "#/definitions/StarburstParameters" - }, - "TrinoParameters": { - "$ref": "#/definitions/TrinoParameters" - } - }, - "markdownDescription": "

The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for Snowflake.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "DataSourceType": { "type": "string", @@ -337,6 +291,13 @@ "AURORA_POSTGRESQL", "AWS_IOT_ANALYTICS", "DATABRICKS", + "DENODO", + "DREMIO", + "DYNAMODB", + "SAPHANA", + "DB2_AS400", + "EXASOL", + "FILE", "GITHUB", "JIRA", "MARIADB", @@ -352,156 +313,93 @@ "SPARK", "SQLSERVER", "TERADATA", - "TWITTER", "TIMESTREAM", - "STARBURST", - "TRINO" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ADOBE_ANALYTICS | AMAZON_ELASTICSEARCH | AMAZON_OPENSEARCH | ATHENA | AURORA | AURORA_POSTGRESQL | AWS_IOT_ANALYTICS | DATABRICKS | GITHUB | JIRA | MARIADB | MYSQL | ORACLE | POSTGRESQL | PRESTO | REDSHIFT | S3 | SALESFORCE | SERVICENOW | SNOWFLAKE | SPARK | SQLSERVER | TERADATA | TWITTER | TIMESTREAM | STARBURST | TRINO \nUpdate requires: No interruption" - }, - "ManifestFileLocation": { - "type": "object", - "description": "

Amazon S3 manifest file location.

", - "properties": { - "Bucket": { - "type": "string", - "maxLength": 1024, - "minLength": 1, - "description": "

Amazon S3 bucket.

", - "markdownDescription": "

Amazon S3 bucket.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" - }, - "Key": { - "type": "string", - "maxLength": 1024, - "minLength": 1, - "description": "

Amazon S3 key that identifies an object.

", - "markdownDescription": "

Amazon S3 key that identifies an object.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" - } - }, - "required": [ - "Bucket", - "Key" - ], - "markdownDescription": "

Amazon S3 manifest file location.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "MariaDbParameters": { - "type": "object", - "description": "

MariaDB parameters.

", - "properties": { - "Port": { - "type": "number", - "maximum": 65535, - "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" - }, - "Database": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

Database.

", - "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" - }, - "Host": { - "type": "string", - "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" - } - }, - "required": [ - "Database", - "Host", - "Port" + "TWITTER", + "BIGQUERY", + "GOOGLE_ANALYTICS", + "TRINO", + "STARBURST", + "MONGO", + "MONGO_ATLAS", + "DOCUMENTDB", + "APPFLOW" ], - "markdownDescription": "

MariaDB parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ADOBE_ANALYTICS | AMAZON_ELASTICSEARCH | AMAZON_OPENSEARCH | ATHENA | AURORA | AURORA_POSTGRESQL | AWS_IOT_ANALYTICS | DATABRICKS | DENODO | DREMIO | DYNAMODB | SAPHANA | DB2_AS400 | EXASOL | FILE | GITHUB | JIRA | MARIADB | MYSQL | ORACLE | POSTGRESQL | PRESTO | REDSHIFT | S3 | SALESFORCE | SERVICENOW | SNOWFLAKE | SPARK | SQLSERVER | TERADATA | TIMESTREAM | TWITTER | BIGQUERY | GOOGLE_ANALYTICS | TRINO | STARBURST | MONGO | MONGO_ATLAS | DOCUMENTDB | APPFLOW \nUpdate requires: No interruption" }, - "MySqlParameters": { + "AmazonElasticsearchParameters": { + "description": "

The parameters for OpenSearch.

", + "additionalProperties": false, "type": "object", - "description": "

MySQL parameters.

", "properties": { - "Port": { - "type": "number", - "maximum": 65535, - "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" - }, - "Database": { - "type": "string", - "maxLength": 128, + "Domain": { "minLength": 1, - "description": "

Database.

", - "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" - }, - "Host": { + "description": "

The OpenSearch domain.

", "type": "string", - "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "maxLength": 64, + "markdownDescription": "

The OpenSearch domain.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" } }, "required": [ - "Database", - "Host", - "Port" + "Domain" ], - "markdownDescription": "

MySQL parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for OpenSearch.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "OracleParameters": { + "AmazonOpenSearchParameters": { + "description": "

The parameters for OpenSearch.

", + "additionalProperties": false, "type": "object", "properties": { - "Port": { - "type": "number", - "maximum": 65535, - "minimum": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" - }, - "Database": { - "type": "string", - "maxLength": 128, + "Domain": { "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" - }, - "Host": { + "description": "

The OpenSearch domain.

", "type": "string", - "maxLength": 256, - "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "maxLength": 64, + "markdownDescription": "

The OpenSearch domain.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" } }, "required": [ - "Database", - "Host", - "Port" + "Domain" ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for OpenSearch.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "PostgreSqlParameters": { + "ResourceStatus": { + "type": "string", + "enum": [ + "CREATION_IN_PROGRESS", + "CREATION_SUCCESSFUL", + "CREATION_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_SUCCESSFUL", + "UPDATE_FAILED", + "DELETED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATION_IN_PROGRESS | CREATION_SUCCESSFUL | CREATION_FAILED | UPDATE_IN_PROGRESS | UPDATE_SUCCESSFUL | UPDATE_FAILED | DELETED \nUpdate requires: No interruption" + }, + "AuroraParameters": { + "description": "

Parameters for Amazon Aurora.

", + "additionalProperties": false, "type": "object", - "description": "

PostgreSQL parameters.

", "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 1, "description": "

Port.

", + "type": "number", + "minimum": 1, "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, "Database": { - "type": "string", - "maxLength": 128, "minLength": 1, "description": "

Database.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, "Host": { - "type": "string", - "maxLength": 256, "minLength": 1, "description": "

Host.

", + "type": "string", + "maxLength": 256, "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, @@ -510,234 +408,353 @@ "Host", "Port" ], - "markdownDescription": "

PostgreSQL parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

Parameters for Amazon Aurora.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "PrestoParameters": { + "S3Parameters": { + "description": "

The parameters for S3.

", + "additionalProperties": false, "type": "object", - "description": "

Presto parameters.

", "properties": { - "Port": { - "type": "number", - "maximum": 65535, - "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" - }, - "Host": { - "type": "string", - "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "ManifestFileLocation": { + "$ref": "#/definitions/ManifestFileLocation" }, - "Catalog": { + "RoleArn": { + "minLength": 20, + "description": "

Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.

", "type": "string", - "maxLength": 128, - "minLength": 0, - "description": "

Catalog.

", - "markdownDescription": "

Catalog.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" + "maxLength": 2048, + "markdownDescription": "

Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nUpdate requires: No interruption" } }, "required": [ - "Catalog", - "Host", - "Port" + "ManifestFileLocation" ], - "markdownDescription": "

Presto parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for S3.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "RdsParameters": { + "IdentityCenterConfiguration": { + "description": "

The parameters for an IAM Identity Center configuration.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon RDS parameters.

", "properties": { - "InstanceId": { - "type": "string", - "maxLength": 64, - "minLength": 1, - "description": "

Instance ID.

", - "markdownDescription": "

Instance ID.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + "EnableIdentityPropagation": { + "default": null, + "description": "

A Boolean option that controls whether Trusted Identity Propagation should be used.

", + "type": "boolean", + "markdownDescription": "

A Boolean option that controls whether Trusted Identity Propagation should be used.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + } + }, + "markdownDescription": "

The parameters for an IAM Identity Center configuration.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "SslProperties": { + "description": "

Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects to your\n underlying data source.

", + "additionalProperties": false, + "type": "object", + "properties": { + "DisableSsl": { + "default": false, + "description": "

A Boolean option to control whether SSL should be disabled.

", + "type": "boolean", + "markdownDescription": "

A Boolean option to control whether SSL should be disabled.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + } + }, + "markdownDescription": "

Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects to your\n underlying data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DataSourceErrorInfoType": { + "type": "string", + "enum": [ + "ACCESS_DENIED", + "COPY_SOURCE_NOT_FOUND", + "TIMEOUT", + "ENGINE_VERSION_NOT_SUPPORTED", + "UNKNOWN_HOST", + "GENERIC_SQL_FAILURE", + "CONFLICT", + "UNKNOWN" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: ACCESS_DENIED | COPY_SOURCE_NOT_FOUND | TIMEOUT | ENGINE_VERSION_NOT_SUPPORTED | UNKNOWN_HOST | GENERIC_SQL_FAILURE | CONFLICT | UNKNOWN \nUpdate requires: No interruption" + }, + "ResourcePermission": { + "description": "

Permission for the resource.

", + "additionalProperties": false, + "type": "object", + "properties": { + "Actions": { + "minItems": 1, + "maxItems": 20, + "description": "

The IAM action to grant or revoke permissions on.

", + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "

The IAM action to grant or revoke permissions on.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" }, - "Database": { + "Resource": { "type": "string", - "maxLength": 128, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Principal": { "minLength": 1, - "description": "

Database.

", - "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
", + "type": "string", + "maxLength": 256, + "markdownDescription": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon Web Services account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across Amazon Web Services accounts.\n (This is less common.)

    \n
  • \n
\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ - "Database", - "InstanceId" + "Actions", + "Principal" ], - "markdownDescription": "

Amazon RDS parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

Permission for the resource.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "RedshiftParameters": { + "DataSourceErrorInfo": { + "description": "

Error information for the data source creation or update.

", + "additionalProperties": false, "type": "object", - "description": "

Amazon Redshift parameters. The ClusterId field can be blank if\n Host and Port are both set. The Host and\n Port fields can be blank if the ClusterId field is set.

", "properties": { - "ClusterId": { - "type": "string", - "maxLength": 64, - "minLength": 1, - "description": "

Cluster ID. This field can be blank if the Host and Port are\n provided.

", - "markdownDescription": "

Cluster ID. This field can be blank if the Host and Port are\n provided.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + "Type": { + "$ref": "#/definitions/DataSourceErrorInfoType" }, + "Message": { + "description": "

Error message.

", + "type": "string", + "markdownDescription": "

Error message.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "

Error information for the data source creation or update.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TeradataParameters": { + "description": "

The parameters for Teradata.

", + "additionalProperties": false, + "type": "object", + "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 0, - "description": "

Port. This field can be blank if the ClusterId is provided.

", - "markdownDescription": "

Port. This field can be blank if the ClusterId is provided.

\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + "description": "

Port.

", + "type": "number", + "minimum": 1, + "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, "Database": { - "type": "string", - "maxLength": 128, "minLength": 1, "description": "

Database.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, "Host": { + "minLength": 1, + "description": "

Host.

", "type": "string", "maxLength": 256, - "minLength": 1, - "description": "

Host. This field can be blank if ClusterId is provided.

", - "markdownDescription": "

Host. This field can be blank if ClusterId is provided.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ - "Database" + "Database", + "Host", + "Port" ], - "markdownDescription": "

Amazon Redshift parameters. The ClusterId field can be blank if\n Host and Port are both set. The Host and\n Port fields can be blank if the ClusterId field is set.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for Teradata.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ResourcePermission": { + "RdsParameters": { + "description": "

The parameters for Amazon RDS.

", + "additionalProperties": false, "type": "object", - "description": "

Permission for the resource.

", "properties": { - "Actions": { - "type": "array", - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "maxItems": 20, - "minItems": 1, - "description": "

The IAM action to grant or revoke permissions on.

", - "markdownDescription": "

The IAM action to grant or revoke permissions on.

\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - }, - "Principal": { + "InstanceId": { + "minLength": 1, + "description": "

Instance ID.

", "type": "string", - "maxLength": 256, + "maxLength": 64, + "markdownDescription": "

Instance ID.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + }, + "Database": { "minLength": 1, - "description": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an AWS account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across AWS accounts.\n (This is less common.)

    \n
  • \n
", - "markdownDescription": "

The Amazon Resource Name (ARN) of the principal. This can be one of the\n following:

\n
    \n
  • \n

    The ARN of an Amazon QuickSight user or group associated with a data source or dataset. (This is common.)

    \n
  • \n
  • \n

    The ARN of an Amazon QuickSight user, group, or namespace associated with an analysis, dashboard, template, or theme. (This is common.)

    \n
  • \n
  • \n

    The ARN of an AWS account root: This is an IAM ARN rather than a QuickSight\n ARN. Use this option only to share resources (templates) across AWS accounts.\n (This is less common.)

    \n
  • \n
\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "description": "

Database.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" } }, "required": [ - "Actions", - "Principal" - ], - "markdownDescription": "

Permission for the resource.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "ResourceStatus": { - "type": "string", - "enum": [ - "CREATION_IN_PROGRESS", - "CREATION_SUCCESSFUL", - "CREATION_FAILED", - "UPDATE_IN_PROGRESS", - "UPDATE_SUCCESSFUL", - "UPDATE_FAILED", - "DELETED" + "Database", + "InstanceId" ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATION_IN_PROGRESS | CREATION_SUCCESSFUL | CREATION_FAILED | UPDATE_IN_PROGRESS | UPDATE_SUCCESSFUL | UPDATE_FAILED | DELETED \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for Amazon RDS.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "S3Parameters": { + "AthenaParameters": { + "description": "

Parameters for Amazon Athena.

", + "additionalProperties": false, "type": "object", - "description": "

S3 parameters.

", "properties": { - "ManifestFileLocation": { - "$ref": "#/definitions/ManifestFileLocation" + "WorkGroup": { + "minLength": 1, + "description": "

The workgroup that Amazon Athena uses.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

The workgroup that Amazon Athena uses.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, "RoleArn": { + "minLength": 20, + "description": "

Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.

", "type": "string", "maxLength": 2048, - "minLength": 20, - "description": "

Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.

", - "markdownDescription": "

Use the RoleArn structure to override an account-wide role for a specific S3 data source. For example, say an account administrator has turned off all S3 access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow S3 access for the single S3 data source that is specified in the structure, even if the account-wide role forbidding S3 access is still active.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nUpdate requires: No interruption" + "markdownDescription": "

Use the RoleArn structure to override an account-wide role for a specific Athena data source. For example, say an account administrator has turned off all Athena access with an account-wide role. The administrator can then use RoleArn to bypass the account-wide role and allow Athena access for the single Athena data source that is specified in the structure, even if the account-wide role forbidding Athena access is still active.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nUpdate requires: No interruption" + } + }, + "markdownDescription": "

Parameters for Amazon Athena.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "SparkParameters": { + "description": "

The parameters for Spark.

", + "additionalProperties": false, + "type": "object", + "properties": { + "Port": { + "default": 0, + "maximum": 65535, + "description": "

Port.

", + "type": "number", + "minimum": 1, + "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + }, + "Host": { + "minLength": 1, + "description": "

Host.

", + "type": "string", + "maxLength": 256, + "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ - "ManifestFileLocation" + "Host", + "Port" ], - "markdownDescription": "

S3 parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for Spark.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "SnowflakeParameters": { + "MariaDbParameters": { + "description": "

The parameters for MariaDB.

", + "additionalProperties": false, "type": "object", - "description": "

Snowflake parameters.

", "properties": { - "Warehouse": { - "type": "string", - "maxLength": 128, - "minLength": 0, - "description": "

Warehouse.

", - "markdownDescription": "

Warehouse.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" + "Port": { + "default": 0, + "maximum": 65535, + "description": "

Port.

", + "type": "number", + "minimum": 1, + "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, "Database": { - "type": "string", - "maxLength": 128, "minLength": 1, "description": "

Database.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, "Host": { - "type": "string", - "maxLength": 256, "minLength": 1, "description": "

Host.

", + "type": "string", + "maxLength": 256, "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ "Database", "Host", - "Warehouse" + "Port" ], - "markdownDescription": "

Snowflake parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for MariaDB.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "StarburstParameters": { + "OracleParameters": { + "description": "

The parameters for Oracle.

", + "additionalProperties": false, "type": "object", - "description": "

Starburst parameters.

", "properties": { + "Port": { + "default": 0, + "maximum": 65535, + "description": "

The port.

", + "type": "number", + "minimum": 1, + "markdownDescription": "

The port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + }, + "Database": { + "minLength": 1, + "description": "

The database.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

The database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, "Host": { + "minLength": 1, + "description": "

An Oracle host.

", "type": "string", "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" - }, + "markdownDescription": "

An Oracle host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "markdownDescription": "

The parameters for Oracle.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PrestoParameters": { + "description": "

The parameters for Presto.

", + "additionalProperties": false, + "type": "object", + "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 1, "description": "

Port.

", + "type": "number", + "minimum": 1, "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, - "Catalog": { + "Host": { + "minLength": 1, + "description": "

Host.

", "type": "string", - "maxLength": 128, + "maxLength": 256, + "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "Catalog": { "minLength": 0, "description": "

Catalog.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Catalog.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" - }, - "ProductType": { - "$ref": "#/definitions/StarburstProductType" } }, "required": [ + "Catalog", "Host", - "Port", - "Catalog" + "Port" + ], + "markdownDescription": "

The parameters for Presto.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "AwsIotAnalyticsParameters": { + "description": "

The parameters for IoT Analytics.

", + "additionalProperties": false, + "type": "object", + "properties": { + "DataSetName": { + "minLength": 1, + "description": "

Dataset name.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

Dataset name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + } + }, + "required": [ + "DataSetName" ], - "markdownDescription": "

Starburst parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for IoT Analytics.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "StarburstProductType": { "type": "string", @@ -747,87 +764,205 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: GALAXY | ENTERPRISE \nUpdate requires: No interruption" }, - "TrinoParameters": { + "DataSourceParameters": { + "description": "

The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.

", + "additionalProperties": false, "type": "object", - "description": "

Trino parameters.

", "properties": { - "Host": { - "type": "string", - "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "AuroraPostgreSqlParameters": { + "$ref": "#/definitions/AuroraPostgreSqlParameters" + }, + "TeradataParameters": { + "$ref": "#/definitions/TeradataParameters" + }, + "RdsParameters": { + "$ref": "#/definitions/RdsParameters" + }, + "AthenaParameters": { + "$ref": "#/definitions/AthenaParameters" + }, + "SparkParameters": { + "$ref": "#/definitions/SparkParameters" + }, + "MariaDbParameters": { + "$ref": "#/definitions/MariaDbParameters" + }, + "OracleParameters": { + "$ref": "#/definitions/OracleParameters" + }, + "PrestoParameters": { + "$ref": "#/definitions/PrestoParameters" + }, + "StarburstParameters": { + "$ref": "#/definitions/StarburstParameters" + }, + "RedshiftParameters": { + "$ref": "#/definitions/RedshiftParameters" + }, + "MySqlParameters": { + "$ref": "#/definitions/MySqlParameters" + }, + "SqlServerParameters": { + "$ref": "#/definitions/SqlServerParameters" + }, + "SnowflakeParameters": { + "$ref": "#/definitions/SnowflakeParameters" + }, + "AmazonElasticsearchParameters": { + "$ref": "#/definitions/AmazonElasticsearchParameters" }, + "AmazonOpenSearchParameters": { + "$ref": "#/definitions/AmazonOpenSearchParameters" + }, + "PostgreSqlParameters": { + "$ref": "#/definitions/PostgreSqlParameters" + }, + "AuroraParameters": { + "$ref": "#/definitions/AuroraParameters" + }, + "S3Parameters": { + "$ref": "#/definitions/S3Parameters" + }, + "TrinoParameters": { + "$ref": "#/definitions/TrinoParameters" + }, + "DatabricksParameters": { + "$ref": "#/definitions/DatabricksParameters" + } + }, + "markdownDescription": "

The parameters that Amazon QuickSight uses to connect to your underlying data source.\n This is a variant type structure. For this structure to be valid, only one of the\n attributes can be non-null.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "MySqlParameters": { + "description": "

The parameters for MySQL.

", + "additionalProperties": false, + "type": "object", + "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 1, "description": "

Port.

", + "type": "number", + "minimum": 1, "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, - "Catalog": { + "Database": { + "minLength": 1, + "description": "

Database.

", "type": "string", "maxLength": 128, - "minLength": 0, - "description": "

Catalog.

", - "markdownDescription": "

Catalog.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Host": { + "minLength": 1, + "description": "

Host.

", + "type": "string", + "maxLength": 256, + "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, "required": [ + "Database", "Host", - "Port", - "Catalog" + "Port" ], - "markdownDescription": "

Trino parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for MySQL.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "SparkParameters": { + "SqlServerParameters": { + "description": "

The parameters for SQL Server.

", + "additionalProperties": false, "type": "object", - "description": "

Spark parameters.

", "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 1, "description": "

Port.

", + "type": "number", + "minimum": 1, "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, - "Host": { + "Database": { + "minLength": 1, + "description": "

Database.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "Host": { + "minLength": 1, + "description": "

Host.

", + "type": "string", + "maxLength": 256, + "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + } + }, + "required": [ + "Database", + "Host", + "Port" + ], + "markdownDescription": "

The parameters for SQL Server.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "CredentialPair": { + "description": "

The combination of user name and password that are used as credentials.

", + "additionalProperties": false, + "type": "object", + "properties": { + "AlternateDataSourceParameters": { + "minItems": 1, + "maxItems": 50, + "description": "

A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.

", + "type": "array", + "items": { + "$ref": "#/definitions/DataSourceParameters" + }, + "markdownDescription": "

A set of alternate data source parameters that you want to share for these\n credentials. The credentials are applied in tandem with the data source parameters when\n you copy a data source by using a create or update request. The API operation compares\n the DataSourceParameters structure that's in the request with the\n structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the new data source with\n the existing credentials. If the AlternateDataSourceParameters list is\n null, the DataSourceParameters originally used with these\n Credentials is automatically allowed.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Username": { + "minLength": 1, + "description": "

User name.

", "type": "string", - "maxLength": 256, + "maxLength": 64, + "markdownDescription": "

User name.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + }, + "Password": { "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "description": "

Password.

", + "type": "string", + "maxLength": 1024, + "markdownDescription": "

Password.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" } }, "required": [ - "Host", - "Port" + "Password", + "Username" ], - "markdownDescription": "

Spark parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The combination of user name and password that are used as credentials.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "SqlServerParameters": { + "PostgreSqlParameters": { + "description": "

The parameters for PostgreSQL.

", + "additionalProperties": false, "type": "object", - "description": "

SQL Server parameters.

", "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, - "minimum": 1, "description": "

Port.

", + "type": "number", + "minimum": 1, "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, "Database": { - "type": "string", - "maxLength": 128, "minLength": 1, "description": "

Database.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, "Host": { - "type": "string", - "maxLength": 256, "minLength": 1, "description": "

Host.

", + "type": "string", + "maxLength": 256, "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, @@ -836,36 +971,25 @@ "Host", "Port" ], - "markdownDescription": "

SQL Server parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "SslProperties": { - "type": "object", - "description": "

Secure Socket Layer (SSL) properties that apply when QuickSight connects to your\n underlying data source.

", - "properties": { - "DisableSsl": { - "type": "boolean", - "description": "

A Boolean option to control whether SSL should be disabled.

", - "markdownDescription": "

A Boolean option to control whether SSL should be disabled.

\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - } - }, - "markdownDescription": "

Secure Socket Layer (SSL) properties that apply when QuickSight connects to your\n underlying data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters for PostgreSQL.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "Tag": { - "type": "object", "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", + "additionalProperties": false, + "type": "object", "properties": { "Value": { - "type": "string", - "maxLength": 256, "minLength": 1, "description": "

Tag value.

", + "type": "string", + "maxLength": 256, "markdownDescription": "

Tag value.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" }, "Key": { - "type": "string", - "maxLength": 128, "minLength": 1, "description": "

Tag key.

", + "type": "string", + "maxLength": 128, "markdownDescription": "

Tag key.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" } }, @@ -875,204 +999,165 @@ ], "markdownDescription": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "TeradataParameters": { + "TrinoParameters": { + "description": "

The parameters that are required to connect to a Trino data source.

", + "additionalProperties": false, "type": "object", - "description": "

Teradata parameters.

", "properties": { "Port": { - "type": "number", + "default": 0, "maximum": 65535, + "description": "

The port for the Trino data source.

", + "type": "number", "minimum": 1, - "description": "

Port.

", - "markdownDescription": "

Port.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" - }, - "Database": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

Database.

", - "markdownDescription": "

Database.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "

The port for the Trino data source.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" }, "Host": { + "minLength": 1, + "description": "

The host name of the Trino data source.

", "type": "string", "maxLength": 256, - "minLength": 1, - "description": "

Host.

", - "markdownDescription": "

Host.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "markdownDescription": "

The host name of the Trino data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "Catalog": { + "minLength": 0, + "description": "

The catalog name for the Trino data source.

", + "type": "string", + "maxLength": 128, + "markdownDescription": "

The catalog name for the Trino data source.

\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: No interruption" } }, "required": [ - "Database", + "Catalog", "Host", "Port" ], - "markdownDescription": "

Teradata parameters.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters that are required to connect to a Trino data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "VpcConnectionProperties": { + "DatabricksParameters": { + "description": "

The parameters that are required to connect to a Databricks data source.

", + "additionalProperties": false, "type": "object", - "description": "

VPC connection properties.

", "properties": { - "VpcConnectionArn": { + "Port": { + "default": 0, + "maximum": 65535, + "description": "

The port for the Databricks data source.

", + "type": "number", + "minimum": 1, + "markdownDescription": "

The port for the Databricks data source.

\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + }, + "Host": { + "minLength": 1, + "description": "

The host name of the Databricks data source.

", "type": "string", - "description": "

The Amazon Resource Name (ARN) for the VPC connection.

", - "markdownDescription": "

The Amazon Resource Name (ARN) for the VPC connection.

\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "maxLength": 256, + "markdownDescription": "

The host name of the Databricks data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "SqlEndpointPath": { + "minLength": 1, + "description": "

The HTTP path of the Databricks data source.

", + "type": "string", + "maxLength": 4096, + "markdownDescription": "

The HTTP path of the Databricks data source.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 4096 \nUpdate requires: No interruption" } }, "required": [ - "VpcConnectionArn" + "Host", + "Port", + "SqlEndpointPath" ], - "markdownDescription": "

VPC connection properties.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "

The parameters that are required to connect to a Databricks data source.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, + "required": [ + "Name", + "Type" + ], "properties": { + "ErrorInfo": { + "$ref": "#/definitions/DataSourceErrorInfo" + }, + "Name": { + "minLength": 1, + "type": "string", + "maxLength": 128, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "DataSourceParameters": { + "$ref": "#/definitions/DataSourceParameters" + }, + "Type": { + "$ref": "#/definitions/DataSourceType" + }, + "VpcConnectionProperties": { + "$ref": "#/definitions/VpcConnectionProperties" + }, "AlternateDataSourceParameters": { + "minItems": 1, + "maxItems": 50, + "description": "

A set of alternate data source parameters that you want to share for the credentials\n stored with this data source. The credentials are applied in tandem with the data source\n parameters when you copy a data source by using a create or update request. The API\n operation compares the DataSourceParameters structure that's in the request\n with the structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the credentials from this\n existing data source. If the AlternateDataSourceParameters list is null,\n the Credentials originally used with this DataSourceParameters\n are automatically allowed.

", "type": "array", "items": { "$ref": "#/definitions/DataSourceParameters" }, - "maxItems": 50, - "minItems": 1, - "description": "

A set of alternate data source parameters that you want to share for the credentials\n stored with this data source. The credentials are applied in tandem with the data source\n parameters when you copy a data source by using a create or update request. The API\n operation compares the DataSourceParameters structure that's in the request\n with the structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the credentials from this\n existing data source. If the AlternateDataSourceParameters list is null,\n the Credentials originally used with this DataSourceParameters\n are automatically allowed.

", "markdownDescription": "

A set of alternate data source parameters that you want to share for the credentials\n stored with this data source. The credentials are applied in tandem with the data source\n parameters when you copy a data source by using a create or update request. The API\n operation compares the DataSourceParameters structure that's in the request\n with the structures in the AlternateDataSourceParameters allow list. If the\n structures are an exact match, the request is allowed to use the credentials from this\n existing data source. If the AlternateDataSourceParameters list is null,\n the Credentials originally used with this DataSourceParameters\n are automatically allowed.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "AwsAccountId": { + "minLength": 12, "type": "string", "maxLength": 12, - "minLength": 12, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 12 \nMaximum Length: 12 \nPattern: ^[0-9]{12}$ \nUpdate requires: Replacement" }, - "Credentials": { - "$ref": "#/definitions/DataSourceCredentials" - }, - "DataSourceId": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" - }, - "DataSourceParameters": { - "$ref": "#/definitions/DataSourceParameters" - }, - "ErrorInfo": { - "$ref": "#/definitions/DataSourceErrorInfo" - }, - "Name": { - "type": "string", - "maxLength": 128, - "minLength": 1, - "description": "

A display name for the data source.

", - "markdownDescription": "

A display name for the data source.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" - }, "Permissions": { + "minItems": 1, + "maxItems": 64, "type": "array", "items": { "$ref": "#/definitions/ResourcePermission" }, - "maxItems": 64, - "minItems": 1, - "description": "

A list of resource permissions on the data source.

", - "markdownDescription": "

A list of resource permissions on the data source.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "SslProperties": { "$ref": "#/definitions/SslProperties" }, + "Credentials": { + "$ref": "#/definitions/DataSourceCredentials" + }, + "DataSourceId": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + }, "Tags": { + "minItems": 1, + "maxItems": 200, "type": "array", "items": { "$ref": "#/definitions/Tag" }, - "maxItems": 200, - "minItems": 1, - "description": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the data source.

", - "markdownDescription": "

Contains a map of the key-value pairs for the resource tag or tags assigned to the data source.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Type": { - "$ref": "#/definitions/DataSourceType" - }, - "VpcConnectionProperties": { - "$ref": "#/definitions/VpcConnectionProperties" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/CreatedTime", - "/properties/LastUpdatedTime", - "/properties/Status" - ], - "writeOnlyProperties": [ - "/properties/Credentials" - ], - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/DataSourceId", - "/properties/Type" - ], - "primaryIdentifier": [ - "/properties/AwsAccountId", - "/properties/DataSourceId" - ], - "additionalProperties": false, - "handlers": { - "create": { - "permissions": [ - "quicksight:CreateDataSource", - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:TagResource", - "quicksight:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:UpdateDataSource", - "quicksight:UpdateDataSourcePermissions", - "quicksight:TagResource", - "quicksight:UntagResource", - "quicksight:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:DescribeDataSourcePermissions", - "quicksight:DeleteDataSource", - "quicksight:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "quicksight:DescribeDataSource", - "quicksight:ListDataSources" - ] + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "attributes": { - "Arn": { - "type": "string", - "description": "

The Amazon Resource Name (ARN) of the data source.

", - "markdownDescription": "

The Amazon Resource Name (ARN) of the data source.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "Status": { + "$ref": "#/definitions/ResourceStatus" }, "CreatedTime": { - "type": "string", - "description": "

The time that this data source was created.

", "format": "date-time", + "description": "

The time that this data source was created.

", + "type": "string", "markdownDescription": "

The time that this data source was created.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "LastUpdatedTime": { - "type": "string", - "description": "

The last time that this data source was updated.

", "format": "date-time", + "description": "

The last time that this data source was updated.

", + "type": "string", "markdownDescription": "

The last time that this data source was updated.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Status": { - "$ref": "#/definitions/ResourceStatus" + "Arn": { + "description": "

The Amazon Resource Name (ARN) of the data source.

", + "type": "string", + "markdownDescription": "

The Amazon Resource Name (ARN) of the data source.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-quicksight-template.json b/server/schema/resources/aws-quicksight-template.json index 6f8ed278..0adca2d9 100644 --- a/server/schema/resources/aws-quicksight-template.json +++ b/server/schema/resources/aws-quicksight-template.json @@ -848,7 +848,7 @@ }, "Series": { "minItems": 0, - "maxItems": 10, + "maxItems": 2000, "type": "array", "items": { "$ref": "#/definitions/SeriesItem" @@ -2235,6 +2235,25 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "WaterfallChartGroupColorConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "NegativeBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + }, + "TotalBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + }, + "PositiveBarColor": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^#[A-F0-9]{6}$ \nUpdate requires: No interruption" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "FunnelChartFieldWells": { "additionalProperties": false, "type": "object", @@ -5884,6 +5903,16 @@ ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, + "WaterfallChartColorConfiguration": { + "additionalProperties": false, + "type": "object", + "properties": { + "GroupColorConfiguration": { + "$ref": "#/definitions/WaterfallChartGroupColorConfiguration" + } + }, + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "ParameterListControl": { "additionalProperties": false, "type": "object", @@ -6798,6 +6827,9 @@ "WaterfallChartOptions": { "$ref": "#/definitions/WaterfallChartOptions" }, + "ColorConfiguration": { + "$ref": "#/definitions/WaterfallChartColorConfiguration" + }, "CategoryAxisDisplayOptions": { "$ref": "#/definitions/AxisDisplayOptions" }, @@ -9313,7 +9345,7 @@ "properties": { "ConditionalFormattingOptions": { "minItems": 0, - "maxItems": 100, + "maxItems": 500, "type": "array", "items": { "$ref": "#/definitions/TableConditionalFormattingOption" @@ -9659,7 +9691,7 @@ "properties": { "ConditionalFormattingOptions": { "minItems": 0, - "maxItems": 100, + "maxItems": 500, "type": "array", "items": { "$ref": "#/definitions/PivotTableConditionalFormattingOption" diff --git a/server/schema/resources/aws-quicksight-topic.json b/server/schema/resources/aws-quicksight-topic.json index c2e76318..701c6a94 100644 --- a/server/schema/resources/aws-quicksight-topic.json +++ b/server/schema/resources/aws-quicksight-topic.json @@ -584,6 +584,10 @@ "default": false, "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "DisableIndexing": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, "ColumnDataRole": { "$ref": "#/definitions/ColumnDataRole" }, @@ -621,17 +625,17 @@ "default": false, "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "NonAdditive": { - "type": "boolean", - "default": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, "CellValueSynonyms": { "type": "array", "items": { "$ref": "#/definitions/CellValueSynonym" }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "NonAdditive": { + "type": "boolean", + "default": false, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, "required": [ @@ -723,6 +727,10 @@ "default": false, "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, + "DisableIndexing": { + "type": "boolean", + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, "ComparativeOrder": { "$ref": "#/definitions/ComparativeOrder" }, @@ -754,17 +762,17 @@ "default": false, "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "NonAdditive": { - "type": "boolean", - "default": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, "CellValueSynonyms": { "type": "array", "items": { "$ref": "#/definitions/CellValueSynonym" }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "NonAdditive": { + "type": "boolean", + "default": false, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" } }, "required": [ @@ -803,15 +811,15 @@ "minLength": 0, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption" }, + "UserExperienceVersion": { + "$ref": "#/definitions/TopicUserExperienceVersion" + }, "DataSets": { "type": "array", "items": { "$ref": "#/definitions/DatasetMetadata" }, "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "UserExperienceVersion": { - "$ref": "#/definitions/TopicUserExperienceVersion" } }, "additionalProperties": false, @@ -1105,12 +1113,6 @@ "/properties/AwsAccountId", "/properties/TopicId" ], - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, "handlers": { "create": { "permissions": [ @@ -1143,6 +1145,12 @@ } }, "additionalProperties": false, + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "attributes": { "Arn": { "type": "string", diff --git a/server/schema/resources/aws-quicksight-vpcconnection.json b/server/schema/resources/aws-quicksight-vpcconnection.json index 962087c8..f3a96cb3 100644 --- a/server/schema/resources/aws-quicksight-vpcconnection.json +++ b/server/schema/resources/aws-quicksight-vpcconnection.json @@ -2,149 +2,91 @@ "typeName": "AWS::QuickSight::VPCConnection", "description": "Definition of the AWS::QuickSight::VPCConnection Resource Type.", "definitions": { - "Arn": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "DnsResolvers": { - "type": "array", - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "insertionOrder": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "NetworkInterfaces": { - "type": "array", - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "maxItems": 15, - "insertionOrder": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, "NetworkInterface": { "type": "object", + "description": "

The structure that contains information about a network interface.

", "properties": { "SubnetId": { - "$ref": "#/definitions/SubnetId" + "type": "string", + "maxLength": 255, + "minLength": 1, + "description": "

The subnet ID associated with the network interface.

", + "markdownDescription": "

The subnet ID associated with the network interface.

\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^subnet-[0-9a-z]*$ \nUpdate requires: No interruption" }, "AvailabilityZone": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "description": "

The availability zone that the network interface resides in.

", + "markdownDescription": "

The availability zone that the network interface resides in.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "ErrorMessage": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "description": "

An error message.

", + "markdownDescription": "

An error message.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Status": { - "type": "string", - "enum": [ - "CREATING", - "AVAILABLE", - "CREATION_FAILED", - "UPDATING", - "UPDATE_FAILED", - "DELETING", - "DELETED", - "DELETION_FAILED", - "DELETION_SCHEDULED", - "ATTACHMENT_FAILED_ROLLBACK_FAILED" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | AVAILABLE | CREATION_FAILED | UPDATING | UPDATE_FAILED | DELETING | DELETED | DELETION_FAILED | DELETION_SCHEDULED | ATTACHMENT_FAILED_ROLLBACK_FAILED \nUpdate requires: No interruption" + "$ref": "#/definitions/NetworkInterfaceStatus" }, "NetworkInterfaceId": { - "$ref": "#/definitions/NetworkInterfaceId" + "type": "string", + "maxLength": 255, + "minLength": 0, + "description": "

The network interface ID.

", + "markdownDescription": "

The network interface ID.

\n\n---\n\nRequired: No \nType: String \nMaximum Length: 255 \nPattern: ^eni-[0-9a-z]*$ \nUpdate requires: No interruption" } }, "additionalProperties": false, - "required": [], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "NetworkInterfaceId": { - "type": "string", - "maxLength": 255, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 255 \nPattern: ^eni-[0-9a-z]*$ \nUpdate requires: No interruption" - }, - "RoleArn": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "SecurityGroupIds": { - "type": "array", - "items": { - "$ref": "#/definitions/SecurityGroupId" - }, - "maxItems": 16, - "minItems": 1, - "insertionOrder": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "SecurityGroupId": { - "type": "string", - "maxItems": 255, - "minItems": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^sg-[0-9a-z]*$ \nUpdate requires: No interruption" - }, - "SubnetIds": { - "type": "array", - "items": { - "$ref": "#/definitions/SubnetId" - }, - "maxItems": 15, - "minItems": 2, - "insertionOrder": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "

The structure that contains information about a network interface.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "SubnetId": { + "NetworkInterfaceStatus": { "type": "string", - "maxLength": 255, - "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^subnet-[0-9a-z]*$ \nUpdate requires: No interruption" - }, - "Tags": { - "type": "array", - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 1, - "insertionOrder": false, - "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "enum": [ + "CREATING", + "AVAILABLE", + "CREATION_FAILED", + "UPDATING", + "UPDATE_FAILED", + "DELETING", + "DELETED", + "DELETION_FAILED", + "DELETION_SCHEDULED", + "ATTACHMENT_FAILED_ROLLBACK_FAILED" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATING | AVAILABLE | CREATION_FAILED | UPDATING | UPDATE_FAILED | DELETING | DELETED | DELETION_FAILED | DELETION_SCHEDULED | ATTACHMENT_FAILED_ROLLBACK_FAILED \nUpdate requires: No interruption" }, "Tag": { "type": "object", + "description": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

", "properties": { - "Value": { + "Key": { "type": "string", - "maxLength": 256, + "maxLength": 128, "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" + "description": "

Tag key.

", + "markdownDescription": "

Tag key.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, - "Key": { + "Value": { "type": "string", - "maxLength": 128, + "maxLength": 256, "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "description": "

Tag value.

", + "markdownDescription": "

Tag value.

\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nUpdate requires: No interruption" } }, - "additionalProperties": false, "required": [ "Key", "Value" ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "VPCConnectionId": { - "type": "string", - "maxLength": 1000, - "minLength": 1, - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1000 \nPattern: [\\w\\-]+ \nUpdate requires: No interruption" + "additionalProperties": false, + "markdownDescription": "

The key or keys of the key-value pairs for the resource tag or tags assigned to the\n resource.

\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "VPCId": { + "VPCConnectionAvailabilityStatus": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "enum": [ + "AVAILABLE", + "UNAVAILABLE", + "PARTIALLY_AVAILABLE" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: AVAILABLE | UNAVAILABLE | PARTIALLY_AVAILABLE \nUpdate requires: No interruption" }, "VPCConnectionResourceStatus": { "type": "string", @@ -160,67 +102,80 @@ "DELETED" ], "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATION_IN_PROGRESS | CREATION_SUCCESSFUL | CREATION_FAILED | UPDATE_IN_PROGRESS | UPDATE_SUCCESSFUL | UPDATE_FAILED | DELETION_IN_PROGRESS | DELETION_FAILED | DELETED \nUpdate requires: No interruption" - }, - "VPCConnectionAvailabilityStatus": { - "type": "string", - "enum": [ - "AVAILABLE", - "UNAVAILABLE", - "PARTIALLY_AVAILABLE" - ], - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: AVAILABLE | UNAVAILABLE | PARTIALLY_AVAILABLE \nUpdate requires: No interruption" } }, "properties": { + "AvailabilityStatus": { + "$ref": "#/definitions/VPCConnectionAvailabilityStatus" + }, "AwsAccountId": { "type": "string", "maxLength": 12, "minLength": 12, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 12 \nMaximum Length: 12 \nPattern: ^[0-9]{12}$ \nUpdate requires: Replacement" }, + "DnsResolvers": { + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "insertionOrder": false, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, "Name": { "type": "string", "maxLength": 128, "minLength": 1, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" }, - "VPCConnectionId": { - "$ref": "#/definitions/VPCConnectionId" + "RoleArn": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "SecurityGroupIds": { - "$ref": "#/definitions/SecurityGroupIds" + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^sg-[0-9a-z]*$ \nUpdate requires: No interruption" + }, + "maxItems": 16, + "minItems": 1, + "insertionOrder": false, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "SubnetIds": { - "$ref": "#/definitions/SubnetIds" - }, - "DnsResolvers": { - "$ref": "#/definitions/DnsResolvers" - }, - "AvailabilityStatus": { - "$ref": "#/definitions/VPCConnectionAvailabilityStatus" - }, - "RoleArn": { - "$ref": "#/definitions/RoleArn" + "type": "array", + "items": { + "type": "string", + "maxLength": 255, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 255 \nPattern: ^subnet-[0-9a-z]*$ \nUpdate requires: No interruption" + }, + "maxItems": 15, + "minItems": 2, + "insertionOrder": false, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "Tags": { - "$ref": "#/definitions/Tags" + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 200, + "minItems": 1, + "insertionOrder": false, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "VPCConnectionId": { + "type": "string", + "maxLength": 1000, + "minLength": 1, + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1000 \nPattern: [\\w\\-]+ \nUpdate requires: Replacement" } }, - "additionalProperties": false, - "tagging": { - "taggable": true, - "tagOnCreate": true, - "tagUpdatable": true, - "cloudFormationSystemTags": true, - "tagProperty": "/properties/Tags" - }, - "createOnlyProperties": [ - "/properties/AwsAccountId", - "/properties/VPCConnectionId" - ], - "writeOnlyProperties": [ - "/properties/SubnetIds" - ], "readOnlyProperties": [ "/properties/Arn", "/properties/CreatedTime", @@ -229,6 +184,13 @@ "/properties/Status", "/properties/VPCId" ], + "writeOnlyProperties": [ + "/properties/SubnetIds" + ], + "createOnlyProperties": [ + "/properties/AwsAccountId", + "/properties/VPCConnectionId" + ], "primaryIdentifier": [ "/properties/AwsAccountId", "/properties/VPCConnectionId" @@ -273,28 +235,50 @@ ] } }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, "attributes": { "Arn": { - "$ref": "#/definitions/Arn" - }, - "VPCId": { - "$ref": "#/definitions/VPCId" - }, - "Status": { - "$ref": "#/definitions/VPCConnectionResourceStatus" - }, - "NetworkInterfaces": { - "$ref": "#/definitions/NetworkInterfaces" + "type": "string", + "description": "

The Amazon Resource Name (ARN) of the VPC connection.

", + "markdownDescription": "

The Amazon Resource Name (ARN) of the VPC connection.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "CreatedTime": { "type": "string", + "description": "

The time that the VPC connection was created.

", "format": "date-time", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "

The time that the VPC connection was created.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "LastUpdatedTime": { "type": "string", + "description": "

The time that the VPC connection was last updated.

", "format": "date-time", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "

The time that the VPC connection was last updated.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "NetworkInterfaces": { + "type": "array", + "items": { + "$ref": "#/definitions/NetworkInterface" + }, + "maxItems": 15, + "minItems": 0, + "description": "

A list of network interfaces.

", + "insertionOrder": false, + "markdownDescription": "

A list of network interfaces.

\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/VPCConnectionResourceStatus" + }, + "VPCId": { + "type": "string", + "description": "

The Amazon EC2 VPC ID associated with the VPC connection.

", + "markdownDescription": "

The Amazon EC2 VPC ID associated with the VPC connection.

\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-rds-dbinstance.json b/server/schema/resources/aws-rds-dbinstance.json index eeab5a42..c220c978 100644 --- a/server/schema/resources/aws-rds-dbinstance.json +++ b/server/schema/resources/aws-rds-dbinstance.json @@ -172,6 +172,7 @@ }, "writeOnlyProperties": [ "/properties/AllowMajorVersionUpgrade", + "/properties/AutomaticBackupReplicationKmsKeyId", "/properties/CertificateRotationRestart", "/properties/DBSnapshotIdentifier", "/properties/DeleteAutomatedBackups", @@ -384,6 +385,11 @@ "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "AutomaticBackupReplicationKmsKeyId": { + "description": "", + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "MultiAZ": { "description": "Specifies whether the database instance is a Multi-AZ DB instance deployment. You can't set the ``AvailabilityZone`` parameter if the ``MultiAZ`` parameter is set to true. \n For more information, see [Multi-AZ deployments for high availability](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) in the *Amazon RDS User Guide*.\n *Amazon Aurora* \n Not applicable. Amazon Aurora storage is replicated across all of the Availability Zones and doesn't require the ``MultiAZ`` option to be set.", "type": "boolean", diff --git a/server/schema/resources/aws-redshift-cluster.json b/server/schema/resources/aws-redshift-cluster.json index ce745f94..5c58b679 100644 --- a/server/schema/resources/aws-redshift-cluster.json +++ b/server/schema/resources/aws-redshift-cluster.json @@ -1,39 +1,164 @@ { + "tagging": { + "taggable": true + }, "typeName": "AWS::Redshift::Cluster", + "readOnlyProperties": [ + "/properties/DeferMaintenanceIdentifier", + "/properties/Endpoint/Port", + "/properties/Endpoint/Address", + "/properties/ClusterNamespaceArn", + "/properties/MasterPasswordSecretArn" + ], "description": "An example resource schema demonstrating some basic constructs and validation rules.", + "createOnlyProperties": [ + "/properties/ClusterIdentifier", + "/properties/OwnerAccount", + "/properties/SnapshotIdentifier", + "/properties/DBName", + "/properties/SnapshotClusterIdentifier", + "/properties/ClusterSubnetGroupName", + "/properties/MasterUsername" + ], + "primaryIdentifier": [ + "/properties/ClusterIdentifier" + ], + "required": [ + "NodeType", + "MasterUsername", + "DBName", + "ClusterType" + ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "handlers": { + "read": { + "permissions": [ + "redshift:DescribeClusters", + "redshift:DescribeLoggingStatus", + "redshift:DescribeSnapshotCopyGrant", + "redshift:DescribeClusterDbRevisions", + "redshift:DescribeTags", + "redshift:GetResourcePolicy" + ] + }, + "create": { + "permissions": [ + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "redshift:DescribeClusters", + "redshift:CreateCluster", + "redshift:RestoreFromClusterSnapshot", + "redshift:EnableLogging", + "redshift:DescribeLoggingStatus", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:GetResourcePolicy", + "redshift:PutResourcePolicy", + "redshift:ModifyClusterMaintenance", + "ec2:DescribeVpcs", + "ec2:DescribeSubnets", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeAddresses", + "ec2:AssociateAddress", + "ec2:CreateNetworkInterface", + "ec2:ModifyNetworkInterfaceAttribute", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints", + "ec2:ModifyVpcEndpoint", + "ec2:AllocateAddress", + "ec2:CreateSecurityGroup", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeInternetGateways", + "ec2:DescribeSecurityGroupRules", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeNetworkAcls", + "ec2:DescribeRouteTables", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 2160 + }, + "update": { + "permissions": [ + "iam:PassRole", + "redshift:DescribeClusters", + "redshift:ModifyCluster", + "redshift:ModifyClusterIamRoles", + "redshift:EnableLogging", + "redshift:CreateTags", + "redshift:DeleteTags", + "redshift:DescribeTags", + "redshift:DisableLogging", + "redshift:DescribeLoggingStatus", + "redshift:RebootCluster", + "redshift:EnableSnapshotCopy", + "redshift:DisableSnapshotCopy", + "redshift:ModifySnapshotCopyRetentionPeriod", + "redshift:ModifyAquaConfiguration", + "redshift:ResizeCluster", + "redshift:ModifyClusterMaintenance", + "redshift:DescribeClusterDbRevisions", + "redshift:ModifyClusterDbRevisions", + "redshift:PauseCluster", + "redshift:ResumeCluster", + "redshift:RotateEncryptionKey", + "redshift:FailoverPrimaryCompute", + "redshift:PutResourcePolicy", + "redshift:GetResourcePolicy", + "redshift:DeleteResourcePolicy", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 2160 + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeClusters" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeClusters", + "redshift:DeleteCluster" + ], + "timeoutInMinutes": 2160 + } + }, + "writeOnlyProperties": [ + "/properties/MasterUserPassword", + "/properties/Classic", + "/properties/SnapshotIdentifier", + "/properties/DeferMaintenance", + "/properties/DeferMaintenanceDuration", + "/properties/ManageMasterPassword" + ], + "additionalProperties": false, "definitions": { - "Tag": { - "description": "A key-value pair to associate with a resource.", - "type": "object", + "Endpoint": { "additionalProperties": false, + "type": "object", "properties": { - "Key": { + "Address": { "type": "string", - "description": "The key name of the tag. You can specify a value that is 1 to 127 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": 127, - "markdownDescription": "The key name of the tag. You can specify a value that is 1 to 127 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: 127 \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Value": { + "Port": { "type": "string", - "description": "The value for the tag. You can specify a value that is 1 to 255 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": 255, - "markdownDescription": "The value for the tag. You can specify a value that is 1 to 255 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: 255 \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "required": [ - "Value", - "Key" - ], - "markdownDescription": "A key-value pair to associate with a resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "LoggingProperties": { - "type": "object", "additionalProperties": false, + "type": "object", "properties": { "BucketName": { + "relationshipRef": { + "typeName": "AWS::S3::Bucket", + "propertyPath": "/properties/BucketName" + }, "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, @@ -44,225 +169,241 @@ }, "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "Endpoint": { - "type": "object", + "Tag": { + "description": "A key-value pair to associate with a resource.", "additionalProperties": false, + "type": "object", "properties": { - "Port": { + "Value": { + "minLength": 1, + "description": "The value for the tag. You can specify a value that is 1 to 255 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 -.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "maxLength": 255, + "markdownDescription": "The value for the tag. You can specify a value that is 1 to 255 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: 255 \nUpdate requires: No interruption" }, - "Address": { + "Key": { + "minLength": 1, + "description": "The key name of the tag. You can specify a value that is 1 to 127 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 -.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "maxLength": 127, + "markdownDescription": "The key name of the tag. You can specify a value that is 1 to 127 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: 127 \nUpdate requires: No interruption" } }, - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "required": [ + "Value", + "Key" + ], + "markdownDescription": "A key-value pair to associate with a resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, "properties": { - "ClusterIdentifier": { - "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", + "RevisionTarget": { + "description": "The identifier of the database revision. You can retrieve this value from the response to the DescribeClusterDbRevisions request.", "type": "string", - "maxLength": 63, - "markdownDescription": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account\n\n---\n\nRequired: No \nType: String \nMaximum Length: 63 \nUpdate requires: Replacement" + "markdownDescription": "The identifier of the database revision. You can retrieve this value from the response to the DescribeClusterDbRevisions request.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "MasterUsername": { - "description": "The user name associated with the master user account for the cluster that is being created. The user name can't be PUBLIC and first character must be a letter.", - "type": "string", - "maxLength": 128, - "markdownDescription": "The user name associated with the master user account for the cluster that is being created. The user name can't be PUBLIC and first character must be a letter.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: Replacement" + "AutomatedSnapshotRetentionPeriod": { + "description": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Default value is 1", + "type": "integer", + "markdownDescription": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Default value is 1\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "MasterUserPassword": { - "description": "The password associated with the master user account for the cluster that is being created. You can't use MasterUserPassword if ManageMasterPassword is true. Password must be between 8 and 64 characters in length, should have at least one uppercase letter.Must contain at least one lowercase letter.Must contain one number.Can be any printable ASCII character.", - "type": "string", - "maxLength": 64, - "markdownDescription": "The password associated with the master user account for the cluster that is being created. You can't use MasterUserPassword if ManageMasterPassword is true. Password must be between 8 and 64 characters in length, should have at least one uppercase letter.Must contain at least one lowercase letter.Must contain one number.Can be any printable ASCII character.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 64 \nUpdate requires: No interruption" + "Encrypted": { + "description": "If true, the data in the cluster is encrypted at rest.", + "type": "boolean", + "markdownDescription": "If true, the data in the cluster is encrypted at rest.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "NodeType": { - "description": "The node type to be provisioned for the cluster.Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.4xlarge | ra3.16xlarge", + "Port": { + "description": "The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings", + "type": "integer", + "markdownDescription": "The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "NumberOfNodes": { + "description": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.", + "type": "integer", + "markdownDescription": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "DestinationRegion": { + "description": "The destination AWS Region that you want to copy snapshots to. Constraints: Must be the name of a valid AWS Region. For more information, see Regions and Endpoints in the Amazon Web Services [https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region] General Reference", "type": "string", - "markdownDescription": "The node type to be provisioned for the cluster.Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.4xlarge | ra3.16xlarge\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The destination AWS Region that you want to copy snapshots to. Constraints: Must be the name of a valid AWS Region. For more information, see Regions and Endpoints in the Amazon Web Services [https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region] General Reference\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "AllowVersionUpgrade": { "description": "Major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default value is True", "type": "boolean", "markdownDescription": "Major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster. Default value is True\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "AutomatedSnapshotRetentionPeriod": { - "description": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Default value is 1", - "type": "integer", - "markdownDescription": "The number of days that automated snapshots are retained. If the value is 0, automated snapshots are disabled. Default value is 1\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" - }, - "AvailabilityZone": { - "description": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint", - "type": "string", - "markdownDescription": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "Endpoint": { + "$ref": "#/definitions/Endpoint" }, - "ClusterParameterGroupName": { - "description": "The name of the parameter group to be associated with this cluster.", - "type": "string", - "maxLength": 255, - "markdownDescription": "The name of the parameter group to be associated with this cluster.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 255 \nUpdate requires: No interruption" + "NamespaceResourcePolicy": { + "description": "The namespace resource policy document that will be attached to a Redshift cluster.", + "type": "object", + "markdownDescription": "The namespace resource policy document that will be attached to a Redshift cluster.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ClusterType": { - "description": "The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required and if multi-node, the NumberOfNodes parameter is required", + "MaintenanceTrackName": { + "description": "The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.", "type": "string", - "markdownDescription": "The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required and if multi-node, the NumberOfNodes parameter is required\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "ClusterVersion": { - "description": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.The version selected runs on all the nodes in the cluster.", + "OwnerAccount": { "type": "string", - "markdownDescription": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.The version selected runs on all the nodes in the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "ClusterSubnetGroupName": { - "description": "The name of a cluster subnet group to be associated with this cluster.", - "type": "string", - "markdownDescription": "The name of a cluster subnet group to be associated with this cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" - }, - "DBName": { - "description": "The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database.", - "type": "string", - "markdownDescription": "The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "ElasticIp": { - "description": "The Elastic IP (EIP) address for the cluster.", - "type": "string", - "markdownDescription": "The Elastic IP (EIP) address for the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "Encrypted": { - "description": "If true, the data in the cluster is encrypted at rest.", + "MultiAZ": { + "description": "A boolean indicating if the redshift cluster is multi-az or not. If you don't provide this parameter or set the value to false, the redshift cluster will be single-az.", "type": "boolean", - "markdownDescription": "If true, the data in the cluster is encrypted at rest.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "A boolean indicating if the redshift cluster is multi-az or not. If you don't provide this parameter or set the value to false, the redshift cluster will be single-az.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "HsmClientCertificateIdentifier": { - "description": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM", - "type": "string", - "markdownDescription": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "Tags": { + "maxItems": 50, + "uniqueItems": false, + "description": "The list of tags for the cluster parameter group.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/Tag" + }, + "markdownDescription": "The list of tags for the cluster parameter group.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "HsmConfigurationIdentifier": { - "description": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.", + "SnapshotClusterIdentifier": { + "description": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.", "type": "string", - "markdownDescription": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + }, + "IamRoles": { + "maxItems": 50, + "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 50 IAM roles in a single request", + "insertionOrder": false, + "type": "array", + "items": { + "relationshipRef": { + "typeName": "AWS::IAM::Role", + "propertyPath": "/properties/Arn" + }, + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 50 IAM roles in a single request\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, "KmsKeyId": { "description": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.", + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/Arn" + } + }, + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/KeyId" + } + } + ], "type": "string", "markdownDescription": "The AWS Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "NumberOfNodes": { - "description": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.", - "type": "integer", - "markdownDescription": "The number of compute nodes in the cluster. This parameter is required when the ClusterType parameter is specified as multi-node.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "SnapshotCopyManual": { + "description": "Indicates whether to apply the snapshot retention period to newly copied manual snapshots instead of automated snapshots.", + "type": "boolean", + "markdownDescription": "Indicates whether to apply the snapshot retention period to newly copied manual snapshots instead of automated snapshots.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "Port": { - "description": "The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings", - "type": "integer", - "markdownDescription": "The port number on which the cluster accepts incoming connections. The cluster is accessible only via the JDBC and ODBC connection strings\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "ManageMasterPassword": { + "description": "A boolean indicating if the redshift cluster's admin user credentials is managed by Redshift or not. You can't use MasterUserPassword if ManageMasterPassword is true. If ManageMasterPassword is false or not set, Amazon Redshift uses MasterUserPassword for the admin user account's password.", + "type": "boolean", + "markdownDescription": "A boolean indicating if the redshift cluster's admin user credentials is managed by Redshift or not. You can't use MasterUserPassword if ManageMasterPassword is true. If ManageMasterPassword is false or not set, Amazon Redshift uses MasterUserPassword for the admin user account's password.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "PreferredMaintenanceWindow": { - "description": "The weekly time range (in UTC) during which automated cluster maintenance can occur.", + "AvailabilityZone": { + "description": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint", "type": "string", - "markdownDescription": "The weekly time range (in UTC) during which automated cluster maintenance can occur.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "PubliclyAccessible": { - "description": "If true, the cluster can be accessed from a public network.", - "type": "boolean", - "markdownDescription": "If true, the cluster can be accessed from a public network.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "The EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the cluster. Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "ClusterSecurityGroups": { + "uniqueItems": false, "description": "A list of security groups to be associated with this cluster.", - "type": "array", "insertionOrder": false, - "uniqueItems": false, - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of security groups to be associated with this cluster.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "IamRoles": { - "description": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 50 IAM roles in a single request", "type": "array", - "insertionOrder": false, - "maxItems": 50, "items": { + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::EC2::SecurityGroup", + "propertyPath": "/properties/Id" + } + }, + { + "relationshipRef": { + "typeName": "AWS::Redshift::ClusterSecurityGroup", + "propertyPath": "/properties/Id" + } + } + ], "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "markdownDescription": "A list of AWS Identity and Access Management (IAM) roles that can be used by the cluster to access other AWS services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. You can supply up to 50 IAM roles in a single request\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Tags": { - "description": "The list of tags for the cluster parameter group.", - "type": "array", - "insertionOrder": false, - "maxItems": 50, - "uniqueItems": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "markdownDescription": "The list of tags for the cluster parameter group.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "VpcSecurityGroupIds": { - "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.", - "type": "array", - "insertionOrder": false, - "uniqueItems": false, - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "A list of security groups to be associated with this cluster.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "SnapshotClusterIdentifier": { - "description": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.", + "ClusterIdentifier": { + "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", "type": "string", - "markdownDescription": "The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "maxLength": 63, + "markdownDescription": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account\n\n---\n\nRequired: No \nType: String \nMaximum Length: 63 \nUpdate requires: Replacement" }, - "SnapshotIdentifier": { - "description": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.", + "MasterUserPassword": { + "description": "The password associated with the master user account for the cluster that is being created. You can't use MasterUserPassword if ManageMasterPassword is true. Password must be between 8 and 64 characters in length, should have at least one uppercase letter.Must contain at least one lowercase letter.Must contain one number.Can be any printable ASCII character.", "type": "string", - "markdownDescription": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "maxLength": 64, + "markdownDescription": "The password associated with the master user account for the cluster that is being created. You can't use MasterUserPassword if ManageMasterPassword is true. Password must be between 8 and 64 characters in length, should have at least one uppercase letter.Must contain at least one lowercase letter.Must contain one number.Can be any printable ASCII character.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 64 \nUpdate requires: No interruption" }, - "OwnerAccount": { + "ClusterSubnetGroupName": { + "description": "The name of a cluster subnet group to be associated with this cluster.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" + "markdownDescription": "The name of a cluster subnet group to be associated with this cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, "LoggingProperties": { "$ref": "#/definitions/LoggingProperties" }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" + "DeferMaintenance": { + "description": "A boolean indicating whether to enable the deferred maintenance window.", + "type": "boolean", + "markdownDescription": "A boolean indicating whether to enable the deferred maintenance window.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "DestinationRegion": { - "description": "The destination AWS Region that you want to copy snapshots to. Constraints: Must be the name of a valid AWS Region. For more information, see Regions and Endpoints in the Amazon Web Services [https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region] General Reference", + "NodeType": { + "description": "The node type to be provisioned for the cluster.Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.4xlarge | ra3.16xlarge", "type": "string", - "markdownDescription": "The destination AWS Region that you want to copy snapshots to. Constraints: Must be the name of a valid AWS Region. For more information, see Regions and Endpoints in the Amazon Web Services [https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region] General Reference\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "SnapshotCopyRetentionPeriod": { - "description": "The number of days to retain automated snapshots in the destination region after they are copied from the source region. \n\n Default is 7. \n\n Constraints: Must be at least 1 and no more than 35.", - "type": "integer", - "markdownDescription": "The number of days to retain automated snapshots in the destination region after they are copied from the source region. \n\n Default is 7. \n\n Constraints: Must be at least 1 and no more than 35.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "markdownDescription": "The node type to be provisioned for the cluster.Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.4xlarge | ra3.16xlarge\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "SnapshotCopyGrantName": { - "description": "The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region.", + "MasterUsername": { + "description": "The user name associated with the master user account for the cluster that is being created. The user name can't be PUBLIC and first character must be a letter.", "type": "string", - "markdownDescription": "The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "maxLength": 128, + "markdownDescription": "The user name associated with the master user account for the cluster that is being created. The user name can't be PUBLIC and first character must be a letter.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 128 \nUpdate requires: Replacement" + }, + "PubliclyAccessible": { + "description": "If true, the cluster can be accessed from a public network.", + "type": "boolean", + "markdownDescription": "If true, the cluster can be accessed from a public network.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "ManualSnapshotRetentionPeriod": { "description": "The number of days to retain newly copied snapshots in the destination AWS Region after they are copied from the source AWS Region. If the value is -1, the manual snapshot is retained indefinitely.\n\nThe value must be either -1 or an integer between 1 and 3,653.", "type": "integer", "markdownDescription": "The number of days to retain newly copied snapshots in the destination AWS Region after they are copied from the source AWS Region. If the value is -1, the manual snapshot is retained indefinitely.\n\nThe value must be either -1 or an integer between 1 and 3,653.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "SnapshotCopyManual": { - "description": "Indicates whether to apply the snapshot retention period to newly copied manual snapshots instead of automated snapshots.", - "type": "boolean", - "markdownDescription": "Indicates whether to apply the snapshot retention period to newly copied manual snapshots instead of automated snapshots.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "ResourceAction": { + "description": "The Redshift operation to be performed. Resource Action supports pause-cluster, resume-cluster, failover-primary-compute APIs", + "type": "string", + "markdownDescription": "The Redshift operation to be performed. Resource Action supports pause-cluster, resume-cluster, failover-primary-compute APIs\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "AvailabilityZoneRelocation": { - "description": "The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.", - "type": "boolean", - "markdownDescription": "The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "HsmClientCertificateIdentifier": { + "description": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM", + "type": "string", + "markdownDescription": "Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "ElasticIp": { + "description": "The Elastic IP (EIP) address for the cluster.", + "type": "string", + "markdownDescription": "The Elastic IP (EIP) address for the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "AvailabilityZoneRelocationStatus": { "description": "The availability zone relocation status of the cluster", @@ -274,220 +415,133 @@ "type": "string", "markdownDescription": "The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored. Possible values include the following.\n\nenabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.\ndisabled - Don't use AQUA.\nauto - Amazon Redshift determines whether to use AQUA.\n\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "Classic": { - "description": "A boolean value indicating whether the resize operation is using the classic resize process. If you don't provide this parameter or set the value to false , the resize type is elastic.", - "type": "boolean", - "markdownDescription": "A boolean value indicating whether the resize operation is using the classic resize process. If you don't provide this parameter or set the value to false , the resize type is elastic.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "SnapshotIdentifier": { + "description": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.", + "type": "string", + "markdownDescription": "The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.\n\n---\n\nRequired: No \nType: String \nUpdate requires: Replacement" }, - "EnhancedVpcRouting": { - "description": "An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide.\n\nIf this option is true , enhanced VPC routing is enabled.\n\nDefault: false", + "AvailabilityZoneRelocation": { + "description": "The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.", "type": "boolean", - "markdownDescription": "An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide.\n\nIf this option is true , enhanced VPC routing is enabled.\n\nDefault: false\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "MaintenanceTrackName": { - "description": "The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.", + "SnapshotCopyGrantName": { + "description": "The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region.", "type": "string", - "markdownDescription": "The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The name of the snapshot copy grant to use when snapshots of an AWS KMS-encrypted cluster are copied to the destination region.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "DeferMaintenance": { - "description": "A boolean indicating whether to enable the deferred maintenance window.", + "EnhancedVpcRouting": { + "description": "An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide.\n\nIf this option is true , enhanced VPC routing is enabled.\n\nDefault: false", "type": "boolean", - "markdownDescription": "A boolean indicating whether to enable the deferred maintenance window.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see Enhanced VPC Routing in the Amazon Redshift Cluster Management Guide.\n\nIf this option is true , enhanced VPC routing is enabled.\n\nDefault: false\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "DeferMaintenanceStartTime": { - "description": "A timestamp indicating the start time for the deferred maintenance window.", + "ClusterParameterGroupName": { + "description": "The name of the parameter group to be associated with this cluster.", "type": "string", - "markdownDescription": "A timestamp indicating the start time for the deferred maintenance window.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "maxLength": 255, + "markdownDescription": "The name of the parameter group to be associated with this cluster.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 255 \nUpdate requires: No interruption" }, "DeferMaintenanceEndTime": { "description": "A timestamp indicating end time for the deferred maintenance window. If you specify an end time, you can't specify a duration.", "type": "string", "markdownDescription": "A timestamp indicating end time for the deferred maintenance window. If you specify an end time, you can't specify a duration.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "DeferMaintenanceDuration": { - "description": "An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.", - "type": "integer", - "markdownDescription": "An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "RotateEncryptionKey": { + "description": "A boolean indicating if we want to rotate Encryption Keys.", + "type": "boolean", + "markdownDescription": "A boolean indicating if we want to rotate Encryption Keys.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, - "RevisionTarget": { - "description": "The identifier of the database revision. You can retrieve this value from the response to the DescribeClusterDbRevisions request.", + "VpcSecurityGroupIds": { + "uniqueItems": false, + "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.", + "insertionOrder": false, + "type": "array", + "items": { + "relationshipRef": { + "typeName": "AWS::EC2::VPC", + "propertyPath": "/properties/VpcId" + }, + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "ClusterVersion": { + "description": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.The version selected runs on all the nodes in the cluster.", "type": "string", - "markdownDescription": "The identifier of the database revision. You can retrieve this value from the response to the DescribeClusterDbRevisions request.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The version of the Amazon Redshift engine software that you want to deploy on the cluster.The version selected runs on all the nodes in the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "ResourceAction": { - "description": "The Redshift operation to be performed. Resource Action supports pause-cluster, resume-cluster, failover-primary-compute APIs", + "HsmConfigurationIdentifier": { + "description": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.", "type": "string", - "markdownDescription": "The Redshift operation to be performed. Resource Action supports pause-cluster, resume-cluster, failover-primary-compute APIs\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "RotateEncryptionKey": { - "description": "A boolean indicating if we want to rotate Encryption Keys.", - "type": "boolean", - "markdownDescription": "A boolean indicating if we want to rotate Encryption Keys.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "PreferredMaintenanceWindow": { + "description": "The weekly time range (in UTC) during which automated cluster maintenance can occur.", + "type": "string", + "markdownDescription": "The weekly time range (in UTC) during which automated cluster maintenance can occur.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "MultiAZ": { - "description": "A boolean indicating if the redshift cluster is multi-az or not. If you don't provide this parameter or set the value to false, the redshift cluster will be single-az.", - "type": "boolean", - "markdownDescription": "A boolean indicating if the redshift cluster is multi-az or not. If you don't provide this parameter or set the value to false, the redshift cluster will be single-az.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "DeferMaintenanceStartTime": { + "description": "A timestamp indicating the start time for the deferred maintenance window.", + "type": "string", + "markdownDescription": "A timestamp indicating the start time for the deferred maintenance window.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "NamespaceResourcePolicy": { - "description": "The namespace resource policy document that will be attached to a Redshift cluster.", - "type": "object", - "markdownDescription": "The namespace resource policy document that will be attached to a Redshift cluster.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "ClusterType": { + "description": "The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required and if multi-node, the NumberOfNodes parameter is required", + "type": "string", + "markdownDescription": "The type of the cluster. When cluster type is specified as single-node, the NumberOfNodes parameter is not required and if multi-node, the NumberOfNodes parameter is required\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, - "ManageMasterPassword": { - "description": "A boolean indicating if the redshift cluster's admin user credentials is managed by Redshift or not. You can't use MasterUserPassword if ManageMasterPassword is true. If ManageMasterPassword is false or not set, Amazon Redshift uses MasterUserPassword for the admin user account's password.", + "Classic": { + "description": "A boolean value indicating whether the resize operation is using the classic resize process. If you don't provide this parameter or set the value to false , the resize type is elastic.", "type": "boolean", - "markdownDescription": "A boolean indicating if the redshift cluster's admin user credentials is managed by Redshift or not. You can't use MasterUserPassword if ManageMasterPassword is true. If ManageMasterPassword is false or not set, Amazon Redshift uses MasterUserPassword for the admin user account's password.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "markdownDescription": "A boolean value indicating whether the resize operation is using the classic resize process. If you don't provide this parameter or set the value to false , the resize type is elastic.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" }, "MasterPasswordSecretKmsKeyId": { "description": "The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin user credentials secret.", + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/Arn" + } + }, + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/KeyId" + } + } + ], "type": "string", "markdownDescription": "The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin user credentials secret.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "additionalProperties": false, - "required": [ - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "readOnlyProperties": [ - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address", - "/properties/ClusterNamespaceArn", - "/properties/MasterPasswordSecretArn" - ], - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier", - "/properties/DeferMaintenance", - "/properties/DeferMaintenanceDuration", - "/properties/ManageMasterPassword" - ], - "tagging": { - "taggable": true - }, - "handlers": { - "create": { - "permissions": [ - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeLoggingStatus", - "redshift:CreateTags", - "redshift:DescribeTags", - "redshift:GetResourcePolicy", - "redshift:PutResourcePolicy", - "redshift:ModifyClusterMaintenance", - "ec2:DescribeVpcs", - "ec2:DescribeSubnets", - "ec2:DescribeNetworkInterfaces", - "ec2:DescribeAddresses", - "ec2:AssociateAddress", - "ec2:CreateNetworkInterface", - "ec2:ModifyNetworkInterfaceAttribute", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:AllocateAddress", - "ec2:CreateSecurityGroup", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroupRules", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeNetworkAcls", - "ec2:DescribeRouteTables", - "cloudwatch:PutMetricData" - ], - "timeoutInMinutes": 2160 }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags", - "redshift:GetResourcePolicy" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:DescribeLoggingStatus", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute", - "redshift:PutResourcePolicy", - "redshift:GetResourcePolicy", - "redshift:DeleteResourcePolicy", - "cloudwatch:PutMetricData" - ], - "timeoutInMinutes": 2160 + "DeferMaintenanceDuration": { + "description": "An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.", + "type": "integer", + "markdownDescription": "An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 + "DBName": { + "description": "The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database.", + "type": "string", + "markdownDescription": "The name of the first database to be created when the cluster is created. To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] + "SnapshotCopyRetentionPeriod": { + "description": "The number of days to retain automated snapshots in the destination region after they are copied from the source region. \n\n Default is 7. \n\n Constraints: Must be at least 1 and no more than 35.", + "type": "integer", + "markdownDescription": "The number of days to retain automated snapshots in the destination region after they are copied from the source region. \n\n Default is 7. \n\n Constraints: Must be at least 1 and no more than 35.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" } }, "attributes": { - "ClusterNamespaceArn": { - "description": "The Amazon Resource Name (ARN) of the cluster namespace.", - "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of the cluster namespace.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, "DeferMaintenanceIdentifier": { "description": "A unique identifier for the deferred maintenance window.", "type": "string", "markdownDescription": "A unique identifier for the deferred maintenance window.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, + "ClusterNamespaceArn": { + "description": "The Amazon Resource Name (ARN) of the cluster namespace.", + "type": "string", + "markdownDescription": "The Amazon Resource Name (ARN) of the cluster namespace.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "MasterPasswordSecretArn": { "description": "The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.", "type": "string", diff --git a/server/schema/resources/aws-redshift-clustersubnetgroup.json b/server/schema/resources/aws-redshift-clustersubnetgroup.json index 908d06c2..b082f616 100644 --- a/server/schema/resources/aws-redshift-clustersubnetgroup.json +++ b/server/schema/resources/aws-redshift-clustersubnetgroup.json @@ -43,6 +43,10 @@ "maxItems": 20, "items": { "type": "string", + "relationshipRef": { + "typeName": "AWS::EC2::Subnet", + "propertyPath": "/properties/SubnetId" + }, "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "markdownDescription": "The list of VPC subnet IDs\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" diff --git a/server/schema/resources/aws-redshift-endpointaccess.json b/server/schema/resources/aws-redshift-endpointaccess.json index 2049604d..32917568 100644 --- a/server/schema/resources/aws-redshift-endpointaccess.json +++ b/server/schema/resources/aws-redshift-endpointaccess.json @@ -1,148 +1,34 @@ { - "typeName": "AWS::Redshift::EndpointAccess", - "description": "Resource schema for a Redshift-managed VPC endpoint.", "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "definitions": { - "VpcSecurityGroup": { - "description": "Describes the members of a VPC security group.", - "type": "object", - "properties": { - "VpcSecurityGroupId": { - "type": "string", - "description": "The identifier of the VPC security group.", - "markdownDescription": "The identifier of the VPC security group.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "Status": { - "type": "string", - "description": "The status of the VPC security group.", - "markdownDescription": "The status of the VPC security group.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "additionalProperties": false, - "markdownDescription": "Describes the members of a VPC security group.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, - "NetworkInterface": { - "description": "Describes a network interface.", - "type": "object", - "properties": { - "NetworkInterfaceId": { - "type": "string", - "description": "The network interface identifier.", - "markdownDescription": "The network interface identifier.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "SubnetId": { - "type": "string", - "description": "The subnet identifier.", - "markdownDescription": "The subnet identifier.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "PrivateIpAddress": { - "type": "string", - "description": "The IPv4 address of the network interface within the subnet.", - "markdownDescription": "The IPv4 address of the network interface within the subnet.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "AvailabilityZone": { - "type": "string", - "description": "The Availability Zone.", - "markdownDescription": "The Availability Zone.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - } - }, - "additionalProperties": false, - "markdownDescription": "Describes a network interface.\n\n---\n\nRequired: No \nUpdate requires: No interruption" - } - }, - "properties": { - "ClusterIdentifier": { - "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", - "type": "string", - "markdownDescription": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - }, - "ResourceOwner": { - "description": "The AWS account ID of the owner of the cluster.", - "type": "string", - "markdownDescription": "The AWS account ID of the owner of the cluster.\n\n---\n\nRequired: No \nType: String \nPattern: ^\\d{12}$ \nUpdate requires: Replacement" - }, - "EndpointName": { - "description": "The name of the endpoint.", - "type": "string", - "markdownDescription": "The name of the endpoint.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,30}$ \nUpdate requires: Replacement" - }, - "SubnetGroupName": { - "description": "The subnet group name where Amazon Redshift chooses to deploy the endpoint.", - "type": "string", - "markdownDescription": "The subnet group name where Amazon Redshift chooses to deploy the endpoint.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-zA-Z0-9-]+$).{1,255}$ \nUpdate requires: Replacement" - }, - "VpcSecurityGroupIds": { - "description": "A list of vpc security group ids to apply to the created endpoint access.", - "type": "array", - "insertionOrder": false, - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of vpc security group ids to apply to the created endpoint access.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" - } - }, "tagging": { "taggable": false }, - "additionalProperties": false, - "required": [ - "ClusterIdentifier", - "SubnetGroupName", - "EndpointName", - "VpcSecurityGroupIds" - ], - "primaryIdentifier": [ - "/properties/EndpointName" - ], - "createOnlyProperties": [ - "/properties/EndpointName", - "/properties/ClusterIdentifier", - "/properties/ResourceOwner", - "/properties/SubnetGroupName" - ], - "readOnlyProperties": [ - "/properties/Address", - "/properties/EndpointStatus", - "/properties/EndpointCreateTime", - "/properties/Port", - "/properties/VpcSecurityGroups", - "/properties/VpcSecurityGroups/*/VpcSecurityGroupId", - "/properties/VpcSecurityGroups/*/Status", - "/properties/VpcEndpoint", - "/properties/VpcEndpoint/VpcEndpointId", - "/properties/VpcEndpoint/VpcId", - "/properties/VpcEndpoint/NetworkInterfaces/*/NetworkInterfaceId", - "/properties/VpcEndpoint/NetworkInterfaces/*/PrivateIpAddress", - "/properties/VpcEndpoint/NetworkInterfaces/*/SubnetId", - "/properties/VpcEndpoint/NetworkInterfaces/*/AvailabilityZone" - ], "handlers": { - "create": { + "read": { "permissions": [ - "redshift:CreateEndpointAccess", "redshift:DescribeEndpointAccess", - "ec2:CreateClientVpnEndpoint", - "ec2:CreateVpcEndpoint", + "ec2:DescribeClientVpnEndpoints", + "ec2:DescribeVpcEndpoint", "ec2:DescribeVpcAttribute", "ec2:DescribeSecurityGroups", "ec2:DescribeAddresses", "ec2:DescribeInternetGateways", "ec2:DescribeSubnets" - ], - "timeoutInMinutes": 60 + ] }, - "read": { + "create": { "permissions": [ + "redshift:CreateEndpointAccess", "redshift:DescribeEndpointAccess", - "ec2:DescribeClientVpnEndpoints", - "ec2:DescribeVpcEndpoint", + "ec2:CreateClientVpnEndpoint", + "ec2:CreateVpcEndpoint", "ec2:DescribeVpcAttribute", "ec2:DescribeSecurityGroups", "ec2:DescribeAddresses", "ec2:DescribeInternetGateways", "ec2:DescribeSubnets" - ] + ], + "timeoutInMinutes": 60 }, "update": { "permissions": [ @@ -158,6 +44,18 @@ ], "timeoutInMinutes": 60 }, + "list": { + "permissions": [ + "redshift:DescribeEndpointAccess", + "ec2:DescribeClientVpnEndpoints", + "ec2:DescribeVpcEndpoints", + "ec2:DescribeVpcAttribute", + "ec2:DescribeSecurityGroups", + "ec2:DescribeAddresses", + "ec2:DescribeInternetGateways", + "ec2:DescribeSubnets" + ] + }, "delete": { "permissions": [ "redshift:DeleteEndpointAccess", @@ -172,76 +70,202 @@ "ec2:DescribeVpcEndpoint" ], "timeoutInMinutes": 60 + } + }, + "typeName": "AWS::Redshift::EndpointAccess", + "readOnlyProperties": [ + "/properties/Address", + "/properties/EndpointStatus", + "/properties/EndpointCreateTime", + "/properties/Port", + "/properties/VpcSecurityGroups", + "/properties/VpcSecurityGroups/*/VpcSecurityGroupId", + "/properties/VpcSecurityGroups/*/Status", + "/properties/VpcEndpoint", + "/properties/VpcEndpoint/VpcEndpointId", + "/properties/VpcEndpoint/VpcId", + "/properties/VpcEndpoint/NetworkInterfaces/*/NetworkInterfaceId", + "/properties/VpcEndpoint/NetworkInterfaces/*/PrivateIpAddress", + "/properties/VpcEndpoint/NetworkInterfaces/*/SubnetId", + "/properties/VpcEndpoint/NetworkInterfaces/*/AvailabilityZone" + ], + "description": "Resource schema for a Redshift-managed VPC endpoint.", + "createOnlyProperties": [ + "/properties/EndpointName", + "/properties/ClusterIdentifier", + "/properties/ResourceOwner", + "/properties/SubnetGroupName" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/EndpointName" + ], + "definitions": { + "VpcSecurityGroup": { + "description": "Describes the members of a VPC security group.", + "additionalProperties": false, + "type": "object", + "properties": { + "Status": { + "description": "The status of the VPC security group.", + "type": "string", + "markdownDescription": "The status of the VPC security group.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "VpcSecurityGroupId": { + "relationshipRef": { + "typeName": "AWS::EC2::SecurityGroup", + "propertyPath": "/properties/Id" + }, + "description": "The identifier of the VPC security group.", + "type": "string", + "markdownDescription": "The identifier of the VPC security group.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "Describes the members of a VPC security group.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "list": { - "permissions": [ - "redshift:DescribeEndpointAccess", - "ec2:DescribeClientVpnEndpoints", - "ec2:DescribeVpcEndpoints", - "ec2:DescribeVpcAttribute", - "ec2:DescribeSecurityGroups", - "ec2:DescribeAddresses", - "ec2:DescribeInternetGateways", - "ec2:DescribeSubnets" - ] + "NetworkInterface": { + "description": "Describes a network interface.", + "additionalProperties": false, + "type": "object", + "properties": { + "PrivateIpAddress": { + "relationshipRef": { + "typeName": "AWS::EC2::NetworkInterface", + "propertyPath": "/properties/PrivateIpAddress" + }, + "description": "The IPv4 address of the network interface within the subnet.", + "type": "string", + "markdownDescription": "The IPv4 address of the network interface within the subnet.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "AvailabilityZone": { + "description": "The Availability Zone.", + "type": "string", + "markdownDescription": "The Availability Zone.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SubnetId": { + "relationshipRef": { + "typeName": "AWS::EC2::NetworkInterface", + "propertyPath": "/properties/SubnetId" + }, + "description": "The subnet identifier.", + "type": "string", + "markdownDescription": "The subnet identifier.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "NetworkInterfaceId": { + "relationshipRef": { + "typeName": "AWS::EC2::NetworkInterface", + "propertyPath": "/properties/Id" + }, + "description": "The network interface identifier.", + "type": "string", + "markdownDescription": "The network interface identifier.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + }, + "markdownDescription": "Describes a network interface.\n\n---\n\nRequired: No \nUpdate requires: No interruption" } }, - "attributes": { - "Address": { - "description": "The DNS address of the endpoint.", + "properties": { + "EndpointName": { + "description": "The name of the endpoint.", "type": "string", - "markdownDescription": "The DNS address of the endpoint.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The name of the endpoint.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,30}$ \nUpdate requires: Replacement" }, - "VpcSecurityGroups": { - "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the endpoint.", - "type": "array", + "VpcSecurityGroupIds": { + "description": "A list of vpc security group ids to apply to the created endpoint access.", "insertionOrder": false, + "type": "array", "items": { - "$ref": "#/definitions/VpcSecurityGroup" + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "markdownDescription": "A list of Virtual Private Cloud (VPC) security groups to be associated with the endpoint.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "A list of vpc security group ids to apply to the created endpoint access.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" }, - "EndpointStatus": { - "description": "The status of the endpoint.", + "ResourceOwner": { + "description": "The AWS account ID of the owner of the cluster.", "type": "string", - "markdownDescription": "The status of the endpoint.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The AWS account ID of the owner of the cluster.\n\n---\n\nRequired: No \nType: String \nPattern: ^\\d{12}$ \nUpdate requires: Replacement" }, - "EndpointCreateTime": { - "description": "The time (UTC) that the endpoint was created.", + "SubnetGroupName": { + "description": "The subnet group name where Amazon Redshift chooses to deploy the endpoint.", "type": "string", - "markdownDescription": "The time (UTC) that the endpoint was created.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The subnet group name where Amazon Redshift chooses to deploy the endpoint.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-zA-Z0-9-]+$).{1,255}$ \nUpdate requires: Replacement" }, - "Port": { - "description": "The port number on which the cluster accepts incoming connections.", - "type": "integer", - "markdownDescription": "The port number on which the cluster accepts incoming connections.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "ClusterIdentifier": { + "description": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account", + "type": "string", + "markdownDescription": "A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. All alphabetical characters must be lower case, no hypens at the end, no two consecutive hyphens. Cluster name should be unique for all clusters within an AWS account\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + } + }, + "required": [ + "ClusterIdentifier", + "SubnetGroupName", + "EndpointName", + "VpcSecurityGroupIds" + ], + "attributes": { + "EndpointStatus": { + "description": "The status of the endpoint.", + "type": "string", + "markdownDescription": "The status of the endpoint.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "VpcEndpoint": { "description": "The connection endpoint for connecting to an Amazon Redshift cluster through the proxy.", + "additionalProperties": false, "type": "object", "properties": { - "VpcEndpointId": { - "type": "string", - "description": "The connection endpoint ID for connecting an Amazon Redshift cluster through the proxy.", - "markdownDescription": "The connection endpoint ID for connecting an Amazon Redshift cluster through the proxy.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, "VpcId": { - "type": "string", + "relationshipRef": { + "typeName": "AWS::EC2::VPCEndpoint", + "propertyPath": "/properties/VpcId" + }, "description": "The VPC identifier that the endpoint is associated.", + "type": "string", "markdownDescription": "The VPC identifier that the endpoint is associated.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "NetworkInterfaces": { - "type": "array", - "insertionOrder": false, "description": "One or more network interfaces of the endpoint. Also known as an interface endpoint.", + "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/NetworkInterface" }, "markdownDescription": "One or more network interfaces of the endpoint. Also known as an interface endpoint.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "VpcEndpointId": { + "relationshipRef": { + "typeName": "AWS::EC2::VPCEndpoint", + "propertyPath": "/properties/Id" + }, + "description": "The connection endpoint ID for connecting an Amazon Redshift cluster through the proxy.", + "type": "string", + "markdownDescription": "The connection endpoint ID for connecting an Amazon Redshift cluster through the proxy.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, - "additionalProperties": false, "markdownDescription": "The connection endpoint for connecting to an Amazon Redshift cluster through the proxy.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Address": { + "description": "The DNS address of the endpoint.", + "type": "string", + "markdownDescription": "The DNS address of the endpoint.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Port": { + "description": "The port number on which the cluster accepts incoming connections.", + "type": "integer", + "markdownDescription": "The port number on which the cluster accepts incoming connections.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "EndpointCreateTime": { + "description": "The time (UTC) that the endpoint was created.", + "type": "string", + "markdownDescription": "The time (UTC) that the endpoint was created.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "VpcSecurityGroups": { + "description": "A list of Virtual Private Cloud (VPC) security groups to be associated with the endpoint.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/VpcSecurityGroup" + }, + "markdownDescription": "A list of Virtual Private Cloud (VPC) security groups to be associated with the endpoint.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-redshift-endpointauthorization.json b/server/schema/resources/aws-redshift-endpointauthorization.json index 5fd0438f..20135fda 100644 --- a/server/schema/resources/aws-redshift-endpointauthorization.json +++ b/server/schema/resources/aws-redshift-endpointauthorization.json @@ -1,59 +1,8 @@ { - "typeName": "AWS::Redshift::EndpointAuthorization", - "description": "Describes an endpoint authorization for authorizing Redshift-managed VPC endpoint access to a cluster across AWS accounts.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", - "definitions": { - "AwsAccount": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^\\d{12}$ \nUpdate requires: No interruption" - }, - "VpcId": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^vpc-[A-Za-z0-9]{1,17}$ \nUpdate requires: No interruption" - } - }, - "properties": { - "ClusterIdentifier": { - "description": "The cluster identifier.", - "type": "string", - "markdownDescription": "The cluster identifier.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,63}$ \nUpdate requires: Replacement" - }, - "Account": { - "description": "The target AWS account ID to grant or revoke access for.", - "$ref": "#/definitions/AwsAccount", - "markdownDescription": "The target AWS account ID to grant or revoke access for.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: Replacement" - }, - "VpcIds": { - "description": "The virtual private cloud (VPC) identifiers to grant or revoke access to.", - "type": "array", - "insertionOrder": false, - "items": { - "$ref": "#/definitions/VpcId" - }, - "markdownDescription": "The virtual private cloud (VPC) identifiers to grant or revoke access to.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, - "Force": { - "description": " Indicates whether to force the revoke action. If true, the Redshift-managed VPC endpoints associated with the endpoint authorization are also deleted.", - "type": "boolean", - "markdownDescription": " Indicates whether to force the revoke action. If true, the Redshift-managed VPC endpoints associated with the endpoint authorization are also deleted.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - } - }, "tagging": { "taggable": false }, - "additionalProperties": false, - "required": [ - "ClusterIdentifier", - "Account" - ], - "primaryIdentifier": [ - "/properties/ClusterIdentifier", - "/properties/Account" - ], - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/Account" - ], + "typeName": "AWS::Redshift::EndpointAuthorization", "readOnlyProperties": [ "/properties/Grantor", "/properties/Grantee", @@ -64,10 +13,26 @@ "/properties/AllowedVPCs", "/properties/EndpointCount" ], - "writeOnlyProperties": [ - "/properties/Force" + "description": "Describes an endpoint authorization for authorizing Redshift-managed VPC endpoint access to a cluster across AWS accounts.", + "createOnlyProperties": [ + "/properties/ClusterIdentifier", + "/properties/Account" + ], + "primaryIdentifier": [ + "/properties/ClusterIdentifier", + "/properties/Account" + ], + "required": [ + "ClusterIdentifier", + "Account" ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", "handlers": { + "read": { + "permissions": [ + "redshift:DescribeEndpointAuthorization" + ] + }, "create": { "permissions": [ "redshift:AuthorizeEndpointAccess", @@ -75,11 +40,6 @@ ], "timeoutInMinutes": 60 }, - "read": { - "permissions": [ - "redshift:DescribeEndpointAuthorization" - ] - }, "update": { "permissions": [ "redshift:AuthorizeEndpointAccess", @@ -88,6 +48,11 @@ ], "timeoutInMinutes": 60 }, + "list": { + "permissions": [ + "redshift:DescribeEndpointAuthorization" + ] + }, "delete": { "permissions": [ "redshift:RevokeEndpointAccess", @@ -101,57 +66,96 @@ "ec2:DescribeSubnets" ], "timeoutInMinutes": 60 + } + }, + "writeOnlyProperties": [ + "/properties/Force" + ], + "additionalProperties": false, + "definitions": { + "VpcId": { + "relationshipRef": { + "typeName": "AWS::EC2::VPC", + "propertyPath": "/properties/VpcId" + }, + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^vpc-[A-Za-z0-9]{1,17}$ \nUpdate requires: No interruption" }, - "list": { - "permissions": [ - "redshift:DescribeEndpointAuthorization" - ] + "AwsAccount": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^\\d{12}$ \nUpdate requires: No interruption" } }, - "attributes": { - "Grantor": { - "description": "The AWS account ID of the cluster owner.", + "properties": { + "Account": { + "description": "The target AWS account ID to grant or revoke access for.", "$ref": "#/definitions/AwsAccount", - "markdownDescription": "The AWS account ID of the cluster owner.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "markdownDescription": "The target AWS account ID to grant or revoke access for.\n\n---\n\nRequired: Yes \nType: \nUpdate requires: Replacement" + }, + "Force": { + "description": " Indicates whether to force the revoke action. If true, the Redshift-managed VPC endpoints associated with the endpoint authorization are also deleted.", + "type": "boolean", + "markdownDescription": " Indicates whether to force the revoke action. If true, the Redshift-managed VPC endpoints associated with the endpoint authorization are also deleted.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "VpcIds": { + "description": "The virtual private cloud (VPC) identifiers to grant or revoke access to.", + "insertionOrder": false, + "type": "array", + "items": { + "$ref": "#/definitions/VpcId" + }, + "markdownDescription": "The virtual private cloud (VPC) identifiers to grant or revoke access to.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "ClusterIdentifier": { + "description": "The cluster identifier.", + "type": "string", + "markdownDescription": "The cluster identifier.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-z][a-z0-9]*(-[a-z0-9]+)*$).{1,63}$ \nUpdate requires: Replacement" + } + }, + "attributes": { + "Status": { + "description": "The status of the authorization action.", + "type": "string", + "markdownDescription": "The status of the authorization action.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Grantee": { "description": "The AWS account ID of the grantee of the cluster.", "$ref": "#/definitions/AwsAccount", "markdownDescription": "The AWS account ID of the grantee of the cluster.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, + "Grantor": { + "description": "The AWS account ID of the cluster owner.", + "$ref": "#/definitions/AwsAccount", + "markdownDescription": "The AWS account ID of the cluster owner.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "EndpointCount": { + "description": "The number of Redshift-managed VPC endpoints created for the authorization.", + "type": "integer", + "markdownDescription": "The number of Redshift-managed VPC endpoints created for the authorization.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, "AuthorizeTime": { "description": "The time (UTC) when the authorization was created.", "type": "string", "markdownDescription": "The time (UTC) when the authorization was created.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "ClusterStatus": { - "description": "The status of the cluster.", - "type": "string", - "markdownDescription": "The status of the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "Status": { - "description": "The status of the authorization action.", - "type": "string", - "markdownDescription": "The status of the authorization action.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "AllowedAllVPCs": { - "description": "Indicates whether all VPCs in the grantee account are allowed access to the cluster.", - "type": "boolean", - "markdownDescription": "Indicates whether all VPCs in the grantee account are allowed access to the cluster.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" - }, "AllowedVPCs": { "description": "The VPCs allowed access to the cluster.", - "type": "array", "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/VpcId" }, "markdownDescription": "The VPCs allowed access to the cluster.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "EndpointCount": { - "description": "The number of Redshift-managed VPC endpoints created for the authorization.", - "type": "integer", - "markdownDescription": "The number of Redshift-managed VPC endpoints created for the authorization.\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + "AllowedAllVPCs": { + "description": "Indicates whether all VPCs in the grantee account are allowed access to the cluster.", + "type": "boolean", + "markdownDescription": "Indicates whether all VPCs in the grantee account are allowed access to the cluster.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "ClusterStatus": { + "description": "The status of the cluster.", + "type": "string", + "markdownDescription": "The status of the cluster.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-redshift-eventsubscription.json b/server/schema/resources/aws-redshift-eventsubscription.json index 7ec3c4ae..e206b147 100644 --- a/server/schema/resources/aws-redshift-eventsubscription.json +++ b/server/schema/resources/aws-redshift-eventsubscription.json @@ -1,46 +1,101 @@ { + "tagging": { + "taggable": true + }, "typeName": "AWS::Redshift::EventSubscription", + "readOnlyProperties": [ + "/properties/CustomerAwsId", + "/properties/CustSubscriptionId", + "/properties/Status", + "/properties/SubscriptionCreationTime", + "/properties/SourceIdsList", + "/properties/EventCategoriesList" + ], "description": "The `AWS::Redshift::EventSubscription` resource creates an Amazon Redshift Event Subscription.", + "createOnlyProperties": [ + "/properties/SubscriptionName" + ], + "primaryIdentifier": [ + "/properties/SubscriptionName" + ], + "required": [ + "SubscriptionName" + ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "handlers": { + "read": { + "permissions": [ + "redshift:DescribeEventSubscriptions", + "redshift:DescribeTags" + ] + }, + "create": { + "permissions": [ + "redshift:CreateEventSubscription", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions" + ] + }, + "update": { + "permissions": [ + "redshift:ModifyEventSubscription", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions", + "redshift:DeleteTags" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeEventSubscriptions", + "redshift:DeleteEventSubscription", + "redshift:DescribeTags", + "redshift:DeleteTags" + ] + } + }, + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" + ], + "additionalProperties": false, "definitions": { "Tag": { "description": "A key-value pair to associate with a resource.", + "additionalProperties": false, "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, + "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 -.", + "type": "string", "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" + }, + "Key": { + "minLength": 1, + "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 -.", + "type": "string", + "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" } }, "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": { - "SubscriptionName": { - "description": "The name of the Amazon Redshift event notification subscription", - "type": "string", - "markdownDescription": "The name of the Amazon Redshift event notification subscription\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$).{1,255}$ \nUpdate requires: Replacement" - }, - "SnsTopicArn": { - "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications.", - "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, "SourceType": { "description": "The type of source that will be generating the events.", "type": "string", @@ -53,21 +108,11 @@ ], "markdownDescription": "The type of source that will be generating the events.\n\n---\n\nRequired: No \nType: String \nAllowed Values: cluster | cluster-parameter-group | cluster-security-group | cluster-snapshot | scheduled-action \nUpdate requires: No interruption" }, - "SourceIds": { - "description": "A list of one or more identifiers of Amazon Redshift source objects.", - "type": "array", - "insertionOrder": false, - "items": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "markdownDescription": "A list of one or more identifiers of Amazon Redshift source objects.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" - }, "EventCategories": { + "uniqueItems": true, "description": "Specifies the Amazon Redshift event categories to be published by the event notification subscription.", - "type": "array", "insertionOrder": false, - "uniqueItems": true, + "type": "array", "items": { "type": "string", "enum": [ @@ -81,6 +126,11 @@ }, "markdownDescription": "Specifies the Amazon Redshift event categories to be published by the event notification subscription.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, + "Enabled": { + "description": "A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.", + "type": "boolean", + "markdownDescription": "A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, "Severity": { "description": "Specifies the Amazon Redshift event severity to be published by the event notification subscription.", "type": "string", @@ -90,97 +140,37 @@ ], "markdownDescription": "Specifies the Amazon Redshift event severity to be published by the event notification subscription.\n\n---\n\nRequired: No \nType: String \nAllowed Values: ERROR | INFO \nUpdate requires: No interruption" }, - "Enabled": { - "description": "A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.", - "type": "boolean", - "markdownDescription": "A boolean value; set to true to activate the subscription, and set to false to create the subscription but not activate it.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + "SubscriptionName": { + "description": "The name of the Amazon Redshift event notification subscription", + "type": "string", + "markdownDescription": "The name of the Amazon Redshift event notification subscription\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(?=^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$).{1,255}$ \nUpdate requires: Replacement" + }, + "SourceIds": { + "description": "A list of one or more identifiers of Amazon Redshift source objects.", + "insertionOrder": false, + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "markdownDescription": "A list of one or more identifiers of Amazon Redshift source objects.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "SnsTopicArn": { + "description": "The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications.", + "type": "string", + "markdownDescription": "The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "Tags": { "description": "An array of key-value pairs to apply to this resource.", - "type": "array", "insertionOrder": false, + "type": "array", "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": true - }, - "additionalProperties": false, - "required": [ - "SubscriptionName" - ], - "primaryIdentifier": [ - "/properties/SubscriptionName" - ], - "createOnlyProperties": [ - "/properties/SubscriptionName" - ], - "readOnlyProperties": [ - "/properties/CustomerAwsId", - "/properties/CustSubscriptionId", - "/properties/Status", - "/properties/SubscriptionCreationTime", - "/properties/SourceIdsList", - "/properties/EventCategoriesList" - ], - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ], - "handlers": { - "create": { - "permissions": [ - "redshift:CreateEventSubscription", - "redshift:CreateTags", - "redshift:DescribeTags", - "redshift:DescribeEventSubscriptions" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeEventSubscriptions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:ModifyEventSubscription", - "redshift:CreateTags", - "redshift:DescribeTags", - "redshift:DescribeEventSubscriptions", - "redshift:DeleteTags" - ] - }, - "delete": { - "permissions": [ - "redshift:DescribeEventSubscriptions", - "redshift:DeleteEventSubscription", - "redshift:DescribeTags", - "redshift:DeleteTags" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeEventSubscriptions" - ] - } - }, "attributes": { - "CustomerAwsId": { - "description": "The AWS account associated with the Amazon Redshift event notification subscription.", - "type": "string", - "markdownDescription": "The AWS account associated with the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, - "CustSubscriptionId": { - "description": "The name of the Amazon Redshift event notification subscription.", - "type": "string", - "markdownDescription": "The name of the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, "Status": { "description": "The status of the Amazon Redshift event notification subscription.", "type": "string", @@ -191,31 +181,41 @@ ], "markdownDescription": "The status of the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: String \nAllowed Values: active | no-permission | topic-not-exist \nUpdate requires: No interruption" }, - "SubscriptionCreationTime": { - "description": "The date and time the Amazon Redshift event notification subscription was created.", + "CustSubscriptionId": { + "description": "The name of the Amazon Redshift event notification subscription.", "type": "string", - "markdownDescription": "The date and time the Amazon Redshift event notification subscription was created.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The name of the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "SourceIdsList": { - "description": "A list of the sources that publish events to the Amazon Redshift event notification subscription.", - "type": "array", + "EventCategoriesList": { + "uniqueItems": true, + "description": "The list of Amazon Redshift event categories specified in the event notification subscription.", "insertionOrder": false, + "type": "array", "items": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "markdownDescription": "A list of the sources that publish events to the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "The list of Amazon Redshift event categories specified in the event notification subscription.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" }, - "EventCategoriesList": { - "description": "The list of Amazon Redshift event categories specified in the event notification subscription.", - "type": "array", + "CustomerAwsId": { + "description": "The AWS account associated with the Amazon Redshift event notification subscription.", + "type": "string", + "markdownDescription": "The AWS account associated with the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "SourceIdsList": { + "description": "A list of the sources that publish events to the Amazon Redshift event notification subscription.", "insertionOrder": false, - "uniqueItems": true, + "type": "array", "items": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "markdownDescription": "The list of Amazon Redshift event categories specified in the event notification subscription.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + "markdownDescription": "A list of the sources that publish events to the Amazon Redshift event notification subscription.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "SubscriptionCreationTime": { + "description": "The date and time the Amazon Redshift event notification subscription was created.", + "type": "string", + "markdownDescription": "The date and time the Amazon Redshift event notification subscription was created.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-redshift-scheduledaction.json b/server/schema/resources/aws-redshift-scheduledaction.json index 9a41dbbb..7a007be6 100644 --- a/server/schema/resources/aws-redshift-scheduledaction.json +++ b/server/schema/resources/aws-redshift-scheduledaction.json @@ -1,44 +1,152 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": false + }, + "handlers": { + "read": { + "permissions": [ + "redshift:DescribeScheduledActions", + "redshift:DescribeTags" + ] + }, + "create": { + "permissions": [ + "redshift:CreateScheduledAction", + "redshift:DescribeScheduledActions", + "redshift:DescribeTags", + "redshift:PauseCluster", + "redshift:ResumeCluster", + "redshift:ResizeCluster", + "iam:PassRole" + ] + }, + "update": { + "permissions": [ + "redshift:DescribeScheduledActions", + "redshift:ModifyScheduledAction", + "redshift:PauseCluster", + "redshift:ResumeCluster", + "redshift:ResizeCluster", + "redshift:DescribeTags", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeScheduledActions" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeScheduledActions", + "redshift:DeleteScheduledAction" + ] + } + }, "typeName": "AWS::Redshift::ScheduledAction", + "readOnlyProperties": [ + "/properties/State", + "/properties/NextInvocations" + ], "description": "The `AWS::Redshift::ScheduledAction` resource creates an Amazon Redshift Scheduled Action.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "createOnlyProperties": [ + "/properties/ScheduledActionName" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/ScheduledActionName" + ], "definitions": { + "ScheduledActionType": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "ResizeCluster": { + "$ref": "#/definitions/ResizeClusterMessage" + } + } + }, + { + "additionalProperties": false, + "properties": { + "PauseCluster": { + "$ref": "#/definitions/PauseClusterMessage" + } + } + }, + { + "additionalProperties": false, + "properties": { + "ResumeCluster": { + "$ref": "#/definitions/ResumeClusterMessage" + } + } + } + ], + "type": "object", + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, "ResizeClusterMessage": { "description": "Describes a resize cluster operation. For example, a scheduled action to run the `ResizeCluster` API operation.", + "additionalProperties": false, "type": "object", "properties": { - "ClusterIdentifier": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" - }, - "ClusterType": { - "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, "NodeType": { + "relationshipRef": { + "typeName": "AWS::Redshift::Cluster", + "propertyPath": "/properties/NodeType" + }, "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, "NumberOfNodes": { + "relationshipRef": { + "typeName": "AWS::Redshift::Cluster", + "propertyPath": "/properties/NumberOfNodes" + }, "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" }, + "ClusterType": { + "relationshipRef": { + "typeName": "AWS::Redshift::Cluster", + "propertyPath": "/properties/ClusterType" + }, + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "Classic": { "type": "boolean", "markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "ClusterIdentifier": { + "relationshipRef": { + "typeName": "AWS::Redshift::Cluster", + "propertyPath": "/properties/ClusterIdentifier" + }, + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, "required": [ "ClusterIdentifier" ], - "additionalProperties": false, "markdownDescription": "Describes a resize cluster operation. For example, a scheduled action to run the `ResizeCluster` API operation.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "PauseClusterMessage": { "description": "Describes a pause cluster operation. For example, a scheduled action to run the `PauseCluster` API operation.", + "additionalProperties": false, "type": "object", "properties": { "ClusterIdentifier": { + "relationshipRef": { + "typeName": "AWS::Redshift::Cluster", + "propertyPath": "/properties/ClusterIdentifier" + }, "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } @@ -46,14 +154,18 @@ "required": [ "ClusterIdentifier" ], - "additionalProperties": false, "markdownDescription": "Describes a pause cluster operation. For example, a scheduled action to run the `PauseCluster` API operation.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, "ResumeClusterMessage": { "description": "Describes a resume cluster operation. For example, a scheduled action to run the `ResumeCluster` API operation.", + "additionalProperties": false, "type": "object", "properties": { "ClusterIdentifier": { + "relationshipRef": { + "typeName": "AWS::Redshift::Cluster", + "propertyPath": "/properties/ClusterIdentifier" + }, "type": "string", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } @@ -61,54 +173,28 @@ "required": [ "ClusterIdentifier" ], - "additionalProperties": false, "markdownDescription": "Describes a resume cluster operation. For example, a scheduled action to run the `ResumeCluster` API operation.\n\n---\n\nRequired: No \nUpdate requires: No interruption" }, - "ScheduledActionType": { - "type": "object", - "oneOf": [ - { - "properties": { - "ResizeCluster": { - "$ref": "#/definitions/ResizeClusterMessage" - } - }, - "additionalProperties": false - }, - { - "properties": { - "PauseCluster": { - "$ref": "#/definitions/PauseClusterMessage" - } - }, - "additionalProperties": false - }, - { - "properties": { - "ResumeCluster": { - "$ref": "#/definitions/ResumeClusterMessage" - } - }, - "additionalProperties": false - } - ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" - }, "timestamp": { "type": "string", "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } }, "properties": { + "ScheduledActionDescription": { + "description": "The description of the scheduled action.", + "type": "string", + "markdownDescription": "The description of the scheduled action.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, "ScheduledActionName": { "description": "The name of the scheduled action. The name must be unique within an account.", "type": "string", "markdownDescription": "The name of the scheduled action. The name must be unique within an account.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" }, - "TargetAction": { - "description": "A JSON format string of the Amazon Redshift API operation with input parameters.", - "$ref": "#/definitions/ScheduledActionType", - "markdownDescription": "A JSON format string of the Amazon Redshift API operation with input parameters.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "EndTime": { + "description": "The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger.", + "$ref": "#/definitions/timestamp", + "markdownDescription": "The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, "Schedule": { "description": "The schedule in `at( )` or `cron( )` format.", @@ -120,87 +206,25 @@ "type": "string", "markdownDescription": "The IAM role to assume to run the target action.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" }, - "ScheduledActionDescription": { - "description": "The description of the scheduled action.", - "type": "string", - "markdownDescription": "The description of the scheduled action.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" - }, "StartTime": { "description": "The start time in UTC of the scheduled action. Before this time, the scheduled action does not trigger.", "$ref": "#/definitions/timestamp", "markdownDescription": "The start time in UTC of the scheduled action. Before this time, the scheduled action does not trigger.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, - "EndTime": { - "description": "The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger.", - "$ref": "#/definitions/timestamp", - "markdownDescription": "The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" - }, "Enable": { "description": "If true, the schedule is enabled. If false, the scheduled action does not trigger.", "type": "boolean", "markdownDescription": "If true, the schedule is enabled. If false, the scheduled action does not trigger.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "TargetAction": { + "description": "A JSON format string of the Amazon Redshift API operation with input parameters.", + "$ref": "#/definitions/ScheduledActionType", + "markdownDescription": "A JSON format string of the Amazon Redshift API operation with input parameters.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" } }, - "tagging": { - "taggable": false - }, - "additionalProperties": false, "required": [ "ScheduledActionName" ], - "primaryIdentifier": [ - "/properties/ScheduledActionName" - ], - "createOnlyProperties": [ - "/properties/ScheduledActionName" - ], - "readOnlyProperties": [ - "/properties/State", - "/properties/NextInvocations" - ], - "handlers": { - "create": { - "permissions": [ - "redshift:CreateScheduledAction", - "redshift:DescribeScheduledActions", - "redshift:DescribeTags", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:ResizeCluster", - "iam:PassRole" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeScheduledActions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeScheduledActions", - "redshift:ModifyScheduledAction", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:ResizeCluster", - "redshift:DescribeTags", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeScheduledActions", - "redshift:DeleteScheduledAction" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeScheduledActions" - ] - } - }, "attributes": { "State": { "description": "The state of the scheduled action.", @@ -213,8 +237,8 @@ }, "NextInvocations": { "description": "List of times when the scheduled action will run.", - "type": "array", "insertionOrder": false, + "type": "array", "items": { "$ref": "#/definitions/timestamp" }, diff --git a/server/schema/resources/aws-redshiftserverless-workgroup.json b/server/schema/resources/aws-redshiftserverless-workgroup.json index c5cc0e49..93d4e097 100644 --- a/server/schema/resources/aws-redshiftserverless-workgroup.json +++ b/server/schema/resources/aws-redshiftserverless-workgroup.json @@ -363,7 +363,8 @@ "ec2:DescribeAvailabilityZones", "redshift-serverless:CreateNamespace", "redshift-serverless:CreateWorkgroup", - "redshift-serverless:GetWorkgroup" + "redshift-serverless:GetWorkgroup", + "redshift-serverless:GetNamespace" ] }, "read": { @@ -404,6 +405,7 @@ "ec2:DescribeAccountAttributes", "ec2:DescribeAvailabilityZones", "redshift-serverless:GetWorkgroup", + "redshift-serverless:GetNamespace", "redshift-serverless:DeleteWorkgroup" ] }, diff --git a/server/schema/resources/aws-route53-hostedzone.json b/server/schema/resources/aws-route53-hostedzone.json index 559b7043..8dee417a 100644 --- a/server/schema/resources/aws-route53-hostedzone.json +++ b/server/schema/resources/aws-route53-hostedzone.json @@ -49,6 +49,10 @@ "CloudWatchLogsLogGroupArn": { "description": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53 is publishing logs to.", "type": "string", + "relationshipRef": { + "typeName": "AWS::Logs::LogGroup", + "propertyPath": "/properties/Arn" + }, "markdownDescription": "The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53 is publishing logs to.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" } }, @@ -65,6 +69,10 @@ "VPCId": { "description": "*Private hosted zones only:* The ID of an Amazon VPC.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", "type": "string", + "relationshipRef": { + "typeName": "AWS::EC2::VPC", + "propertyPath": "/properties/VpcId" + }, "markdownDescription": "*Private hosted zones only:* The ID of an Amazon VPC.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "VPCRegion": { @@ -104,8 +112,8 @@ }, "QueryLoggingConfig": { "$ref": "#/definitions/QueryLoggingConfig", - "description": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.\n DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:\n + Route 53 edge location that responded to the DNS query\n + Domain or subdomain that was requested\n + DNS record type, such as A or AAAA\n + DNS response code, such as ``NoError`` or ``ServFail`` \n \n + Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: For aws:SourceArn, supply the hosted zone ARN used in creating the query logging configuration. For example, aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID. For aws:SourceAccount, supply the account ID for the account that creates the query logging configuration. For example, aws:SourceAccount:111111111111. For more information, see The confused deputy problem in the IAM User Guide. You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the SDKs, or the . + Log Streams and Edge Locations When Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page. + Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. + Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. + Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. + How to Stop Logging If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig.", - "markdownDescription": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.\n DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:\n + Route 53 edge location that responded to the DNS query\n + Domain or subdomain that was requested\n + DNS record type, such as A or AAAA\n + DNS response code, such as ``NoError`` or ``ServFail`` \n \n + Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: For aws:SourceArn, supply the hosted zone ARN used in creating the query logging configuration. For example, aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID. For aws:SourceAccount, supply the account ID for the account that creates the query logging configuration. For example, aws:SourceAccount:111111111111. For more information, see The confused deputy problem in the IAM User Guide. You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the SDKs, or the . + Log Streams and Edge Locations When Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page. + Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. + Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. + Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. + How to Stop Logging If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + "description": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.\n DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:\n + Route 53 edge location that responded to the DNS query\n + Domain or subdomain that was requested\n + DNS record type, such as A or AAAA\n + DNS response code, such as ``NoError`` or ``ServFail`` \n \n + Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: For aws:SourceArn, supply the hosted zone ARN used in creating the query logging configuration. For example, aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID. For aws:SourceAccount, supply the account ID for the account that creates the query logging configuration. For example, aws:SourceAccount:111111111111. For more information, see The confused deputy problem in the IAM User Guide. You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the SDKs, or the . + Log Streams and Edge Locations When Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page. + Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. + Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. + Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. + How to Stop Logging If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig.", + "markdownDescription": "Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group.\n DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following:\n + Route 53 edge location that responded to the DNS query\n + Domain or subdomain that was requested\n + DNS record type, such as A or AAAA\n + DNS response code, such as ``NoError`` or ``ServFail`` \n \n + Log Group and Resource Policy Before you create a query logging configuration, perform the following operations. If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: You must create the log group in the us-east-1 region. You must use the same to create the log group and the hosted zone that you want to configure query logging for. When you create log groups for query logging, we recommend that you use a consistent prefix, for example: /aws/route53/hosted zone name In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of Resource, specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with *, for example: arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/* To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: For aws:SourceArn, supply the hosted zone ARN used in creating the query logging configuration. For example, aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID. For aws:SourceAccount, supply the account ID for the account that creates the query logging configuration. For example, aws:SourceAccount:111111111111. For more information, see The confused deputy problem in the IAM User Guide. You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the SDKs, or the . + Log Streams and Edge Locations When Route 53 finishes creating the configuration for DNS query logging, it does the following: Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: hosted zone ID/edge location code The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see \"The Route 53 Global Network\" on the Route 53 Product Details page. + Queries That Are Logged Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see Routing Internet Traffic to Your Website or Web Application in the Amazon Route 53 Developer Guide. + Log File Format For a list of the values in each query log and the format of each value, see Logging DNS Queries in the Amazon Route 53 Developer Guide. + Pricing For information about charges for query logs, see Amazon CloudWatch Pricing. + How to Stop Logging If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see DeleteQueryLoggingConfig.\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" }, "VPCs": { "description": "*Private hosted zones:* A complex type that contains information about the VPCs that are associated with the specified hosted zone.\n For public hosted zones, omit ``VPCs``, ``VPCId``, and ``VPCRegion``.", diff --git a/server/schema/resources/aws-route53resolver-firewallrulegroup.json b/server/schema/resources/aws-route53resolver-firewallrulegroup.json index 18aa9e59..d9ce58e7 100644 --- a/server/schema/resources/aws-route53resolver-firewallrulegroup.json +++ b/server/schema/resources/aws-route53resolver-firewallrulegroup.json @@ -66,6 +66,15 @@ "minLength": 1, "maxLength": 16, "markdownDescription": "Qtype\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 16 \nUpdate requires: No interruption" + }, + "FirewallDomainRedirectionAction": { + "description": "FirewallDomainRedirectionAction", + "type": "string", + "enum": [ + "INSPECT_REDIRECTION_DOMAIN", + "TRUST_REDIRECTION_DOMAIN" + ], + "markdownDescription": "FirewallDomainRedirectionAction\n\n---\n\nRequired: No \nType: String \nAllowed Values: INSPECT_REDIRECTION_DOMAIN | TRUST_REDIRECTION_DOMAIN \nUpdate requires: No interruption" } }, "required": [ diff --git a/server/schema/resources/aws-sso-application.json b/server/schema/resources/aws-sso-application.json new file mode 100644 index 00000000..ffa4e8c1 --- /dev/null +++ b/server/schema/resources/aws-sso-application.json @@ -0,0 +1,213 @@ +{ + "typeName": "AWS::SSO::Application", + "description": "Resource Type definition for Identity Center (SSO) Application", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-application", + "definitions": { + "Tag": { + "description": "The metadata that you apply to the Identity Center (SSO) Application to help you categorize and organize them.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[\\w+=,.@-]+$ \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "minLength": 0, + "maxLength": 256, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nPattern: ^[\\w+=,.@-]+$ \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "The metadata that you apply to the Identity Center (SSO) Application to help you categorize and organize them.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "SignInOptions": { + "description": "A structure that describes the sign-in options for an application portal", + "type": "object", + "properties": { + "Origin": { + "description": "This determines how IAM Identity Center navigates the user to the target application", + "type": "string", + "enum": [ + "IDENTITY_CENTER", + "APPLICATION" + ], + "markdownDescription": "This determines how IAM Identity Center navigates the user to the target application\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: IDENTITY_CENTER | APPLICATION \nUpdate requires: No interruption" + }, + "ApplicationUrl": { + "description": "The URL that accepts authentication requests for an application, this is a required parameter if the Origin parameter is APPLICATION", + "type": "string", + "minLength": 1, + "maxLength": 512, + "markdownDescription": "The URL that accepts authentication requests for an application, this is a required parameter if the Origin parameter is APPLICATION\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 512 \nPattern: ^http(s)?:\\/\\/[-a-zA-Z0-9+&@#\\/%?=~_|!:,.;]*[-a-zA-Z0-9+&bb@#\\/%?=~_|]$ \nUpdate requires: No interruption" + } + }, + "required": [ + "Origin" + ], + "additionalProperties": false, + "markdownDescription": "A structure that describes the sign-in options for an application portal\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PortalOptionsConfiguration": { + "description": "A structure that describes the options for the access portal associated with an application", + "type": "object", + "properties": { + "Visibility": { + "description": "Indicates whether this application is visible in the access portal", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "Indicates whether this application is visible in the access portal\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "SignInOptions": { + "description": "A structure that describes the sign-in options for the access portal", + "$ref": "#/definitions/SignInOptions", + "markdownDescription": "A structure that describes the sign-in options for the access portal\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + } + }, + "required": [], + "additionalProperties": false, + "markdownDescription": "A structure that describes the options for the access portal associated with an application\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "Name": { + "description": "The name you want to assign to this Identity Center (SSO) Application", + "type": "string", + "minLength": 0, + "maxLength": 255, + "markdownDescription": "The name you want to assign to this Identity Center (SSO) Application\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 255 \nPattern: ^[\\w+=,.@-]+$ \nUpdate requires: No interruption" + }, + "Description": { + "description": "The description information for the Identity Center (SSO) Application", + "type": "string", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "The description information for the Identity Center (SSO) Application\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + }, + "InstanceArn": { + "description": "The ARN of the instance of IAM Identity Center under which the operation will run", + "type": "string", + "minLength": 10, + "maxLength": 1224, + "markdownDescription": "The ARN of the instance of IAM Identity Center under which the operation will run\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: ^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$ \nUpdate requires: Replacement" + }, + "ApplicationProviderArn": { + "description": "The ARN of the application provider under which the operation will run", + "type": "string", + "minLength": 10, + "maxLength": 1224, + "markdownDescription": "The ARN of the application provider under which the operation will run\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: ^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::aws:applicationProvider/[a-zA-Z0-9-/]+$ \nUpdate requires: Replacement" + }, + "Status": { + "description": "Specifies whether the application is enabled or disabled", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "markdownDescription": "Specifies whether the application is enabled or disabled\n\n---\n\nRequired: No \nType: String \nAllowed Values: ENABLED | DISABLED \nUpdate requires: No interruption" + }, + "PortalOptions": { + "description": "A structure that describes the options for the portal associated with an application", + "$ref": "#/definitions/PortalOptionsConfiguration", + "markdownDescription": "A structure that describes the options for the portal associated with an application\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "description": "Specifies tags to be attached to the application", + "$ref": "#/definitions/Tag", + "markdownDescription": "Specifies tags to be attached to the application\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "maxItems": 75, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "required": [ + "Name", + "InstanceArn", + "ApplicationProviderArn" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags" + }, + "createOnlyProperties": [ + "/properties/InstanceArn", + "/properties/ApplicationProviderArn" + ], + "readOnlyProperties": [ + "/properties/ApplicationArn" + ], + "primaryIdentifier": [ + "/properties/ApplicationArn" + ], + "handlers": { + "create": { + "permissions": [ + "sso:CreateApplication", + "sso:DescribeApplication", + "sso:TagResource" + ] + }, + "read": { + "permissions": [ + "sso:DescribeApplication", + "sso:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "sso:UpdateApplication", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource", + "sso:DescribeApplication" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteApplication" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "InstanceArn": { + "$ref": "resource-schema.json#/properties/InstanceArn" + } + }, + "required": [ + "InstanceArn" + ] + }, + "permissions": [ + "sso:ListApplications" + ] + } + }, + "attributes": { + "ApplicationArn": { + "description": "The Application ARN that is returned upon creation of the Identity Center (SSO) Application", + "type": "string", + "minLength": 10, + "maxLength": 1224, + "markdownDescription": "The Application ARN that is returned upon creation of the Identity Center (SSO) Application\n\n---\n\nRequired: No \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: ^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16}$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-sso-applicationassignment.json b/server/schema/resources/aws-sso-applicationassignment.json new file mode 100644 index 00000000..007307c0 --- /dev/null +++ b/server/schema/resources/aws-sso-applicationassignment.json @@ -0,0 +1,82 @@ +{ + "typeName": "AWS::SSO::ApplicationAssignment", + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false + }, + "description": "Resource Type definition for SSO application access grant to a user or group.", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-application-assignment", + "properties": { + "ApplicationArn": { + "description": "The ARN of the application.", + "type": "string", + "minLength": 10, + "maxLength": 1224, + "markdownDescription": "The ARN of the application.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::\\d{12}:application/(sso)?ins-[a-zA-Z0-9-.]{16}/apl-[a-zA-Z0-9]{16} \nUpdate requires: Replacement" + }, + "PrincipalType": { + "description": "The entity type for which the assignment will be created.", + "type": "string", + "enum": [ + "USER", + "GROUP" + ], + "markdownDescription": "The entity type for which the assignment will be created.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: USER | GROUP \nUpdate requires: Replacement" + }, + "PrincipalId": { + "description": "An identifier for an object in IAM Identity Center, such as a user or group", + "type": "string", + "minLength": 1, + "maxLength": 47, + "markdownDescription": "An identifier for an object in IAM Identity Center, such as a user or group\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 47 \nPattern: ^([0-9a-f]{10}-|)[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$ \nUpdate requires: Replacement" + } + }, + "additionalProperties": false, + "required": [ + "ApplicationArn", + "PrincipalType", + "PrincipalId" + ], + "createOnlyProperties": [ + "/properties/ApplicationArn", + "/properties/PrincipalType", + "/properties/PrincipalId" + ], + "primaryIdentifier": [ + "/properties/ApplicationArn", + "/properties/PrincipalType", + "/properties/PrincipalId" + ], + "handlers": { + "create": { + "permissions": [ + "sso:CreateApplicationAssignment", + "sso:DescribeApplicationAssignment" + ] + }, + "read": { + "permissions": [ + "sso:DescribeApplicationAssignment" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteApplicationAssignment" + ] + }, + "list": { + "permissions": [ + "sso:ListApplicationAssignments" + ], + "handlerSchema": { + "properties": { + "ApplicationArn": { + "$ref": "resource-schema.json#/properties/ApplicationArn" + } + } + } + } + }, + "attributes": {} +} \ No newline at end of file diff --git a/server/schema/resources/aws-sso-instance.json b/server/schema/resources/aws-sso-instance.json new file mode 100644 index 00000000..48535e76 --- /dev/null +++ b/server/schema/resources/aws-sso-instance.json @@ -0,0 +1,137 @@ +{ + "typeName": "AWS::SSO::Instance", + "description": "Resource Type definition for Identity Center (SSO) Instance", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instance", + "definitions": { + "Tag": { + "description": "The metadata that you apply to the Identity Center (SSO) Instance to help you categorize and organize them.", + "type": "object", + "properties": { + "Key": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: [\\w+=,.@-]+ \nUpdate requires: No interruption" + }, + "Value": { + "type": "string", + "minLength": 0, + "maxLength": 256, + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 256 \nPattern: [\\w+=,.@-]+ \nUpdate requires: No interruption" + } + }, + "required": [ + "Key", + "Value" + ], + "additionalProperties": false, + "markdownDescription": "The metadata that you apply to the Identity Center (SSO) Instance to help you categorize and organize them.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "Name": { + "description": "The name you want to assign to this Identity Center (SSO) Instance", + "type": "string", + "minLength": 1, + "maxLength": 32, + "markdownDescription": "The name you want to assign to this Identity Center (SSO) Instance\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 32 \nPattern: ^[\\w+=,.@-]+$ \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "uniqueItems": false, + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 75, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "tagProperty": "/properties/Tags" + }, + "readOnlyProperties": [ + "/properties/InstanceArn", + "/properties/OwnerAccountId", + "/properties/IdentityStoreId", + "/properties/Status" + ], + "primaryIdentifier": [ + "/properties/InstanceArn" + ], + "handlers": { + "create": { + "permissions": [ + "sso:CreateInstance", + "sso:DescribeInstance", + "sso:TagResource", + "iam:CreateServiceLinkedRole", + "sso:TagInstance", + "sso:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "sso:DescribeInstance", + "sso:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "sso:UpdateInstance", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource", + "sso:TagInstance", + "sso:DescribeInstance" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteInstance" + ] + }, + "list": { + "permissions": [ + "sso:ListInstances" + ] + } + }, + "attributes": { + "InstanceArn": { + "description": "The SSO Instance ARN that is returned upon creation of the Identity Center (SSO) Instance", + "type": "string", + "minLength": 10, + "maxLength": 1224, + "markdownDescription": "The SSO Instance ARN that is returned upon creation of the Identity Center (SSO) Instance\n\n---\n\nRequired: No \nType: String \nMinimum Length: 10 \nMaximum Length: 1224 \nPattern: ^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$ \nUpdate requires: No interruption" + }, + "OwnerAccountId": { + "description": "The AWS accountId of the owner of the Identity Center (SSO) Instance", + "type": "string", + "minLength": 12, + "maxLength": 12, + "markdownDescription": "The AWS accountId of the owner of the Identity Center (SSO) Instance\n\n---\n\nRequired: No \nType: String \nMinimum Length: 12 \nMaximum Length: 12 \nPattern: ^\\d{12}?$ \nUpdate requires: No interruption" + }, + "IdentityStoreId": { + "description": "The ID of the identity store associated with the created Identity Center (SSO) Instance", + "type": "string", + "minLength": 1, + "maxLength": 64, + "markdownDescription": "The ID of the identity store associated with the created Identity Center (SSO) Instance\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nPattern: ^[a-zA-Z0-9-]*$ \nUpdate requires: No interruption" + }, + "Status": { + "description": "The status of the Identity Center (SSO) Instance, create_in_progress/delete_in_progress/active", + "type": "string", + "enum": [ + "CREATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "ACTIVE" + ], + "markdownDescription": "The status of the Identity Center (SSO) Instance, create_in_progress/delete_in_progress/active\n\n---\n\nRequired: No \nType: String \nAllowed Values: CREATE_IN_PROGRESS | DELETE_IN_PROGRESS | ACTIVE \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-stepfunctions-statemachinealias.json b/server/schema/resources/aws-stepfunctions-statemachinealias.json index 7476d841..53e15776 100644 --- a/server/schema/resources/aws-stepfunctions-statemachinealias.json +++ b/server/schema/resources/aws-stepfunctions-statemachinealias.json @@ -165,7 +165,8 @@ "cloudwatch:DescribeAlarms", "states:UpdateStateMachineAlias", "states:DescribeStateMachineAlias" - ] + ], + "timeoutInMinutes": 2160 }, "delete": { "permissions": [ diff --git a/server/schema/resources/aws-transfer-agreement.json b/server/schema/resources/aws-transfer-agreement.json index 327a8e8d..ace33ded 100644 --- a/server/schema/resources/aws-transfer-agreement.json +++ b/server/schema/resources/aws-transfer-agreement.json @@ -36,7 +36,7 @@ "type": "string", "minLength": 1, "maxLength": 200, - "markdownDescription": "A textual description for the agreement.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[\\w\\- ]*$ \nUpdate requires: No interruption" + "markdownDescription": "A textual description for the agreement.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[\\u0021-\\u007E]+$ \nUpdate requires: No interruption" }, "ServerId": { "description": "A unique identifier for the server.", @@ -63,7 +63,7 @@ "description": "Specifies the base directory for the agreement.", "type": "string", "maxLength": 1024, - "markdownDescription": "Specifies the base directory for the agreement.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 1024 \nPattern: ^$|/.* \nUpdate requires: No interruption" + "markdownDescription": "Specifies the base directory for the agreement.\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 1024 \nPattern: ^(|/.*)$ \nUpdate requires: No interruption" }, "AccessRole": { "description": "Specifies the access role for the agreement.", diff --git a/server/schema/resources/aws-transfer-certificate.json b/server/schema/resources/aws-transfer-certificate.json index eacd5e58..67f94729 100644 --- a/server/schema/resources/aws-transfer-certificate.json +++ b/server/schema/resources/aws-transfer-certificate.json @@ -35,30 +35,31 @@ "type": "string", "enum": [ "SIGNING", - "ENCRYPTION" + "ENCRYPTION", + "TLS" ], - "markdownDescription": "Specifies the usage type for the certificate.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: SIGNING | ENCRYPTION \nUpdate requires: No interruption" + "markdownDescription": "Specifies the usage type for the certificate.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: SIGNING | ENCRYPTION | TLS \nUpdate requires: No interruption" }, "Certificate": { "description": "Specifies the certificate body to be imported.", "type": "string", "minLength": 1, "maxLength": 16384, - "markdownDescription": "Specifies the certificate body to be imported.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 16384 \nPattern: ^[\t\n\r -\u00ff]* \nUpdate requires: Replacement" + "markdownDescription": "Specifies the certificate body to be imported.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 16384 \nPattern: ^[\\t\\n\\r\\u0020-\\u00FF]+$ \nUpdate requires: Replacement" }, "CertificateChain": { "description": "Specifies the certificate chain to be imported.", "type": "string", "minLength": 1, "maxLength": 2097152, - "markdownDescription": "Specifies the certificate chain to be imported.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2097152 \nPattern: ^[\t\n\r -\u00ff]* \nUpdate requires: Replacement" + "markdownDescription": "Specifies the certificate chain to be imported.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2097152 \nPattern: ^[\\t\\n\\r\\u0020-\\u00FF]+$ \nUpdate requires: Replacement" }, "PrivateKey": { "description": "Specifies the private key for the certificate.", "type": "string", "minLength": 1, "maxLength": 16384, - "markdownDescription": "Specifies the private key for the certificate.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 16384 \nPattern: ^[\t\n\r -\u00ff]* \nUpdate requires: Replacement" + "markdownDescription": "Specifies the private key for the certificate.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 16384 \nPattern: ^[\\t\\n\\r\\u0020-\\u00FF]+$ \nUpdate requires: Replacement" }, "ActiveDate": { "description": "Specifies the active date for the certificate.", @@ -75,7 +76,7 @@ "type": "string", "minLength": 1, "maxLength": 200, - "markdownDescription": "A textual description for the certificate.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[\\w\\- ]*$ \nUpdate requires: No interruption" + "markdownDescription": "A textual description for the certificate.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nPattern: ^[\\u0021-\\u007E]+$ \nUpdate requires: No interruption" }, "Tags": { "description": "Key-value pairs that can be used to group and search for certificates. Tags are metadata attached to certificates for any purpose.", @@ -190,7 +191,7 @@ "type": "string", "minLength": 0, "maxLength": 48, - "markdownDescription": "Specifies Certificate's serial.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 48 \nPattern: ^[\\p{XDigit}{2}:?]* \nUpdate requires: No interruption" + "markdownDescription": "Specifies Certificate's serial.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 48 \nPattern: ^[0-9a-fA-F{}:?]*$ \nUpdate requires: No interruption" }, "NotBeforeDate": { "description": "Specifies the not before date for the certificate.", diff --git a/server/schema/resources/aws-transfer-connector.json b/server/schema/resources/aws-transfer-connector.json index 49776b04..0e943dd5 100644 --- a/server/schema/resources/aws-transfer-connector.json +++ b/server/schema/resources/aws-transfer-connector.json @@ -67,7 +67,7 @@ "description": "The message subject for this AS2 connector configuration.", "minLength": 1, "maxLength": 1024, - "markdownDescription": "The message subject for this AS2 connector configuration.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nPattern: ^[\\p{Print}\\p{Blank}]+ \nUpdate requires: No interruption" + "markdownDescription": "The message subject for this AS2 connector configuration.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nPattern: ^[\\u0020-\\u007E\\t]+$ \nUpdate requires: No interruption" }, "Compression": { "type": "string", @@ -85,9 +85,10 @@ "AES128_CBC", "AES192_CBC", "AES256_CBC", - "NONE" + "NONE", + "DES_EDE3_CBC" ], - "markdownDescription": "Encryption algorithm for this AS2 connector configuration.\n\n---\n\nRequired: No \nType: String \nAllowed Values: AES128_CBC | AES192_CBC | AES256_CBC | NONE \nUpdate requires: No interruption" + "markdownDescription": "Encryption algorithm for this AS2 connector configuration.\n\n---\n\nRequired: No \nType: String \nAllowed Values: AES128_CBC | AES192_CBC | AES256_CBC | NONE | DES_EDE3_CBC \nUpdate requires: No interruption" }, "SigningAlgorithm": { "type": "string", @@ -183,6 +184,12 @@ "type": "string", "maxLength": 255, "markdownDescription": "URL for Connector\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 255 \nUpdate requires: No interruption" + }, + "SecurityPolicyName": { + "description": "Security policy for SFTP Connector", + "type": "string", + "maxLength": 50, + "markdownDescription": "Security policy for SFTP Connector\n\n---\n\nRequired: No \nType: String \nMaximum Length: 50 \nPattern: TransferSFTPConnectorSecurityPolicy-[A-Za-z0-9-]+ \nUpdate requires: No interruption" } }, "additionalProperties": false, @@ -192,7 +199,8 @@ ], "readOnlyProperties": [ "/properties/Arn", - "/properties/ConnectorId" + "/properties/ConnectorId", + "/properties/ServiceManagedEgressIpAddresses" ], "primaryIdentifier": [ "/properties/ConnectorId" @@ -250,6 +258,15 @@ "minLength": 19, "maxLength": 19, "markdownDescription": "A unique identifier for the connector.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 19 \nMaximum Length: 19 \nPattern: ^c-([0-9a-f]{17})$ \nUpdate requires: No interruption" + }, + "ServiceManagedEgressIpAddresses": { + "description": "The list of egress IP addresses of this connector. These IP addresses are assigned automatically when you create the connector.", + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$ \nUpdate requires: No interruption" + }, + "markdownDescription": "The list of egress IP addresses of this connector. These IP addresses are assigned automatically when you create the connector.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-transfer-profile.json b/server/schema/resources/aws-transfer-profile.json index 88fdc961..61f48595 100644 --- a/server/schema/resources/aws-transfer-profile.json +++ b/server/schema/resources/aws-transfer-profile.json @@ -42,7 +42,7 @@ "type": "string", "minLength": 1, "maxLength": 128, - "markdownDescription": "AS2 identifier agreed with a trading partner.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption" + "markdownDescription": "AS2 identifier agreed with a trading partner.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^[\\u0020-\\u007E\\s]*$ \nUpdate requires: No interruption" }, "ProfileType": { "description": "Enum specifying whether the profile is local or associated with a trading partner.", diff --git a/server/schema/resources/aws-transfer-workflow.json b/server/schema/resources/aws-transfer-workflow.json index 23ae2caa..b1343109 100644 --- a/server/schema/resources/aws-transfer-workflow.json +++ b/server/schema/resources/aws-transfer-workflow.json @@ -191,7 +191,7 @@ "enum": [ "PGP" ], - "markdownDescription": "Specifies which encryption method to use.\n\n---\n\nRequired: No \nType: String \nAllowed Values: PGP \nUpdate requires: No interruption" + "markdownDescription": "Specifies which encryption method to use.\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: PGP \nUpdate requires: No interruption" }, "OverwriteExisting": { "description": "A flag that indicates whether or not to overwrite an existing file of the same name. The default is FALSE.", @@ -210,6 +210,10 @@ "markdownDescription": "Specifies which file to use as input to the workflow step.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^\\$\\{(\\w+.)+\\w+\\}$ \nUpdate requires: No interruption" } }, + "required": [ + "DestinationFileLocation", + "Type" + ], "additionalProperties": false, "markdownDescription": "Details for a step that performs a file decryption.\n\n---\n\nRequired: No \nUpdate requires: No interruption" },