From 87b8459ea7946c4d4e61ebb129e926e2500a46b0 Mon Sep 17 00:00:00 2001 From: kddejong <36457093+kddejong@users.noreply.github.com> Date: Fri, 19 Jul 2024 08:03:44 +0000 Subject: [PATCH] CloudFormation Template Schema upgrade https://github.com/aws-cloudformation/cloudformation-template-schema/tree/main --- server/schema/resources.schema.json | 207 +++- server/schema/resources/aws-bedrock-flow.json | 966 ++++++++++++++++++ .../resources/aws-bedrock-flowalias.json | 180 ++++ .../resources/aws-bedrock-flowversion.json | 836 +++++++++++++++ .../schema/resources/aws-bedrock-prompt.json | 371 +++++++ .../resources/aws-bedrock-promptversion.json | 309 ++++++ .../aws-controltower-enabledcontrol.json | 2 + .../resources/aws-dms-replicationconfig.json | 27 +- server/schema/resources/aws-ec2-instance.json | 4 +- .../aws-ec2-trafficmirrorfilterrule.json | 39 +- ...2-transitgatewayroutetableassociation.json | 74 +- ...ws-entityresolution-idmappingworkflow.json | 2 +- server/schema/resources/aws-lambda-alias.json | 151 ++- .../resources/aws-neptune-dbcluster.json | 15 +- .../aws-organizations-organization.json | 4 +- .../schema/resources/aws-rds-dbcluster.json | 12 +- .../aws-sagemaker-mlflowtrackingserver.json | 173 ++++ .../resources/aws-shield-protectiongroup.json | 7 +- 18 files changed, 3278 insertions(+), 101 deletions(-) create mode 100644 server/schema/resources/aws-bedrock-flow.json create mode 100644 server/schema/resources/aws-bedrock-flowalias.json create mode 100644 server/schema/resources/aws-bedrock-flowversion.json create mode 100644 server/schema/resources/aws-bedrock-prompt.json create mode 100644 server/schema/resources/aws-bedrock-promptversion.json create mode 100644 server/schema/resources/aws-sagemaker-mlflowtrackingserver.json diff --git a/server/schema/resources.schema.json b/server/schema/resources.schema.json index 83704d3c..bf6182c2 100644 --- a/server/schema/resources.schema.json +++ b/server/schema/resources.schema.json @@ -651,6 +651,37 @@ ], "additionalProperties": false }, + "AWS_Bedrock_PromptVersion": { + "type": "object", + "markdownDescription": "Definition of AWS::Bedrock::PromptVersion Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-promptversion.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Bedrock::PromptVersion" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::Bedrock::PromptVersion Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-promptversion.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-bedrock-promptversion.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_RDS_EventSubscription": { "type": "object", "markdownDescription": "The ``AWS::RDS::EventSubscription`` resource allows you to receive notifications for Amazon Relational Database Service events through the Amazon Simple Notification Service (Amazon SNS). For more information, see [Using Amazon RDS Event Notification](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html) in the *Amazon RDS User Guide*. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-eventsubscription.html)", @@ -2071,6 +2102,37 @@ ], "additionalProperties": false }, + "AWS_Bedrock_Prompt": { + "type": "object", + "markdownDescription": "Definition of AWS::Bedrock::Prompt Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-prompt.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Bedrock::Prompt" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::Bedrock::Prompt Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-prompt.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-bedrock-prompt.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_BillingConductor_BillingGroup": { "type": "object", "markdownDescription": "A billing group is a set of linked account which belong to the same end customer. It can be seen as a virtual consolidated billing family. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-billingconductor-billinggroup.html)", @@ -3741,6 +3803,37 @@ ], "additionalProperties": false }, + "AWS_SageMaker_MlflowTrackingServer": { + "type": "object", + "markdownDescription": "Resource Type definition for AWS::SageMaker::MlflowTrackingServer \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-mlflowtrackingserver.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::SageMaker::MlflowTrackingServer" + ], + "markdownEnumDescriptions": [ + "Resource Type definition for AWS::SageMaker::MlflowTrackingServer \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-mlflowtrackingserver.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-sagemaker-mlflowtrackingserver.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_Lambda_LayerVersion": { "type": "object", "markdownDescription": "Resource Type definition for AWS::Lambda::LayerVersion \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversion.html)", @@ -18401,7 +18494,8 @@ } }, "required": [ - "Type" + "Type", + "Properties" ] }, { @@ -27511,6 +27605,37 @@ ], "additionalProperties": false }, + "AWS_Bedrock_Flow": { + "type": "object", + "markdownDescription": "Definition of AWS::Bedrock::Flow Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-flow.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Bedrock::Flow" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::Bedrock::Flow Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-flow.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-bedrock-flow.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_PCAConnectorAD_DirectoryRegistration": { "type": "object", "markdownDescription": "Definition of AWS::PCAConnectorAD::DirectoryRegistration Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pcaconnectorad-directoryregistration.html)", @@ -30074,6 +30199,37 @@ ], "additionalProperties": false }, + "AWS_Bedrock_FlowVersion": { + "type": "object", + "markdownDescription": "Definition of AWS::Bedrock::FlowVersion Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-flowversion.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Bedrock::FlowVersion" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::Bedrock::FlowVersion Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-flowversion.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-bedrock-flowversion.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_SSMContacts_ContactChannel": { "type": "object", "markdownDescription": "Resource Type definition for AWS::SSMContacts::ContactChannel \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssmcontacts-contactchannel.html)", @@ -31400,6 +31556,37 @@ ], "additionalProperties": false }, + "AWS_Bedrock_FlowAlias": { + "type": "object", + "markdownDescription": "Definition of AWS::Bedrock::FlowAlias Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-flowalias.html)", + "allOf": [ + { + "type": "object", + "properties": { + "Type": { + "type": "string", + "enum": [ + "AWS::Bedrock::FlowAlias" + ], + "markdownEnumDescriptions": [ + "Definition of AWS::Bedrock::FlowAlias Resource Type \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-flowalias.html)" + ] + }, + "Properties": { + "$ref": "resources/aws-bedrock-flowalias.json" + } + }, + "required": [ + "Type", + "Properties" + ] + }, + { + "$ref": "resource.attributes.schema.json#/definitions/ResourceAttributes" + } + ], + "additionalProperties": false + }, "AWS_VpcLattice_ServiceNetworkServiceAssociation": { "type": "object", "markdownDescription": "Associates a service with a service network. \n[Docs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-vpclattice-servicenetworkserviceassociation.html)", @@ -39796,6 +39983,9 @@ { "$ref": "#/definitions/AWS_EntityResolution_PolicyStatement" }, + { + "$ref": "#/definitions/AWS_Bedrock_PromptVersion" + }, { "$ref": "#/definitions/AWS_RDS_EventSubscription" }, @@ -39934,6 +40124,9 @@ { "$ref": "#/definitions/AWS_MSK_ClusterPolicy" }, + { + "$ref": "#/definitions/AWS_Bedrock_Prompt" + }, { "$ref": "#/definitions/AWS_BillingConductor_BillingGroup" }, @@ -40096,6 +40289,9 @@ { "$ref": "#/definitions/AWS_Athena_PreparedStatement" }, + { + "$ref": "#/definitions/AWS_SageMaker_MlflowTrackingServer" + }, { "$ref": "#/definitions/AWS_Lambda_LayerVersion" }, @@ -42409,6 +42605,9 @@ { "$ref": "#/definitions/AWS_EC2_VerifiedAccessInstance" }, + { + "$ref": "#/definitions/AWS_Bedrock_Flow" + }, { "$ref": "#/definitions/AWS_PCAConnectorAD_DirectoryRegistration" }, @@ -42658,6 +42857,9 @@ { "$ref": "#/definitions/AWS_Batch_ComputeEnvironment" }, + { + "$ref": "#/definitions/AWS_Bedrock_FlowVersion" + }, { "$ref": "#/definitions/AWS_SSMContacts_ContactChannel" }, @@ -42787,6 +42989,9 @@ { "$ref": "#/definitions/AWS_Connect_QuickConnect" }, + { + "$ref": "#/definitions/AWS_Bedrock_FlowAlias" + }, { "$ref": "#/definitions/AWS_VpcLattice_ServiceNetworkServiceAssociation" }, diff --git a/server/schema/resources/aws-bedrock-flow.json b/server/schema/resources/aws-bedrock-flow.json new file mode 100644 index 00000000..696d8746 --- /dev/null +++ b/server/schema/resources/aws-bedrock-flow.json @@ -0,0 +1,966 @@ +{ + "typeName": "AWS::Bedrock::Flow", + "description": "Definition of AWS::Bedrock::Flow Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", + "definitions": { + "ConditionFlowNodeConfiguration": { + "type": "object", + "description": "Condition flow node configuration", + "properties": { + "Conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowCondition" + }, + "maxItems": 5, + "minItems": 1, + "description": "List of conditions in a condition node", + "insertionOrder": true, + "markdownDescription": "List of conditions in a condition node\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Conditions" + ], + "additionalProperties": false, + "markdownDescription": "Condition flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowCondition": { + "type": "object", + "description": "Condition branch for a condition node", + "properties": { + "Name": { + "type": "string", + "description": "Name of a condition in a flow", + "markdownDescription": "Name of a condition in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Expression": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "description": "Expression for a condition in a flow", + "markdownDescription": "Expression for a condition in a flow\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + } + }, + "required": [ + "Name" + ], + "additionalProperties": false, + "markdownDescription": "Condition branch for a condition node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowConditionalConnectionConfiguration": { + "type": "object", + "description": "Conditional connection configuration", + "properties": { + "Condition": { + "type": "string", + "description": "Name of a condition in a flow", + "markdownDescription": "Name of a condition in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "Condition" + ], + "additionalProperties": false, + "markdownDescription": "Conditional connection configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowConnection": { + "type": "object", + "description": "Flow connection", + "properties": { + "Type": { + "$ref": "#/definitions/FlowConnectionType" + }, + "Name": { + "type": "string", + "description": "Name of a connection in a flow", + "markdownDescription": "Name of a connection in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$ \nUpdate requires: No interruption" + }, + "Source": { + "type": "string", + "description": "Name of a node in a flow", + "markdownDescription": "Name of a node in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Target": { + "type": "string", + "description": "Name of a node in a flow", + "markdownDescription": "Name of a node in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Configuration": { + "$ref": "#/definitions/FlowConnectionConfiguration" + } + }, + "required": [ + "Name", + "Source", + "Target", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Flow connection\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowConnectionConfiguration": { + "description": "Connection configuration", + "oneOf": [ + { + "type": "object", + "title": "Data", + "properties": { + "Data": { + "$ref": "#/definitions/FlowDataConnectionConfiguration" + } + }, + "required": [ + "Data" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Conditional", + "properties": { + "Conditional": { + "$ref": "#/definitions/FlowConditionalConnectionConfiguration" + } + }, + "required": [ + "Conditional" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Connection configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "FlowConnectionType": { + "type": "string", + "description": "Connection type", + "enum": [ + "Data", + "Conditional" + ], + "markdownDescription": "Connection type\n\n---\n\nRequired: No \nType: String \nAllowed Values: Data | Conditional \nUpdate requires: No interruption" + }, + "FlowDataConnectionConfiguration": { + "type": "object", + "description": "Data connection configuration", + "properties": { + "SourceOutput": { + "type": "string", + "description": "Name of a node output in a flow", + "markdownDescription": "Name of a node output in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "TargetInput": { + "type": "string", + "description": "Name of a node input in a flow", + "markdownDescription": "Name of a node input in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "SourceOutput", + "TargetInput" + ], + "additionalProperties": false, + "markdownDescription": "Data connection configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowDefinition": { + "type": "object", + "description": "Flow definition", + "properties": { + "Nodes": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowNode" + }, + "maxItems": 20, + "description": "List of nodes in a flow", + "insertionOrder": true, + "markdownDescription": "List of nodes in a flow\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Connections": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowConnection" + }, + "maxItems": 20, + "description": "List of connections", + "insertionOrder": true, + "markdownDescription": "List of connections\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Flow definition\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNode": { + "type": "object", + "description": "Internal mixin for flow node", + "properties": { + "Name": { + "type": "string", + "description": "Name of a node in a flow", + "markdownDescription": "Name of a node in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/FlowNodeType" + }, + "Configuration": { + "$ref": "#/definitions/FlowNodeConfiguration" + }, + "Inputs": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowNodeInput" + }, + "maxItems": 5, + "description": "List of node inputs in a flow", + "insertionOrder": true, + "markdownDescription": "List of node inputs in a flow\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Outputs": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowNodeOutput" + }, + "maxItems": 5, + "description": "List of node outputs in a flow", + "insertionOrder": true, + "markdownDescription": "List of node outputs in a flow\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Name", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Internal mixin for flow node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeConfiguration": { + "description": "Node configuration in a flow", + "oneOf": [ + { + "type": "object", + "title": "Input", + "properties": { + "Input": { + "$ref": "#/definitions/InputFlowNodeConfiguration" + } + }, + "required": [ + "Input" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Output", + "properties": { + "Output": { + "$ref": "#/definitions/OutputFlowNodeConfiguration" + } + }, + "required": [ + "Output" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "KnowledgeBase", + "properties": { + "KnowledgeBase": { + "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration" + } + }, + "required": [ + "KnowledgeBase" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Condition", + "properties": { + "Condition": { + "$ref": "#/definitions/ConditionFlowNodeConfiguration" + } + }, + "required": [ + "Condition" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Lex", + "properties": { + "Lex": { + "$ref": "#/definitions/LexFlowNodeConfiguration" + } + }, + "required": [ + "Lex" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Prompt", + "properties": { + "Prompt": { + "$ref": "#/definitions/PromptFlowNodeConfiguration" + } + }, + "required": [ + "Prompt" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "LambdaFunction", + "properties": { + "LambdaFunction": { + "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration" + } + }, + "required": [ + "LambdaFunction" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Node configuration in a flow\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "FlowNodeIODataType": { + "type": "string", + "description": "Type of input/output for a node in a flow", + "enum": [ + "String", + "Number", + "Boolean", + "Object", + "Array" + ], + "markdownDescription": "Type of input/output for a node in a flow\n\n---\n\nRequired: No \nType: String \nAllowed Values: String | Number | Boolean | Object | Array \nUpdate requires: No interruption" + }, + "FlowNodeInput": { + "type": "object", + "description": "Input to a node in a flow", + "properties": { + "Name": { + "type": "string", + "description": "Name of a node input in a flow", + "markdownDescription": "Name of a node input in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + }, + "Expression": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "description": "Expression for a node input in a flow", + "markdownDescription": "Expression for a node input in a flow\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + } + }, + "required": [ + "Expression", + "Name", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Input to a node in a flow\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeOutput": { + "type": "object", + "description": "Output of a node in a flow", + "properties": { + "Name": { + "type": "string", + "description": "Name of a node output in a flow", + "markdownDescription": "Name of a node output in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + } + }, + "required": [ + "Name", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Output of a node in a flow\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeType": { + "type": "string", + "description": "Flow node types", + "enum": [ + "Input", + "Output", + "KnowledgeBase", + "Condition", + "Lex", + "Prompt", + "LambdaFunction" + ], + "markdownDescription": "Flow node types\n\n---\n\nRequired: No \nType: String \nAllowed Values: Input | Output | KnowledgeBase | Condition | Lex | Prompt | LambdaFunction \nUpdate requires: No interruption" + }, + "FlowStatus": { + "type": "string", + "description": "Schema Type for Flow APIs", + "enum": [ + "Failed", + "Prepared", + "Preparing", + "NotPrepared" + ], + "markdownDescription": "Schema Type for Flow APIs\n\n---\n\nRequired: No \nType: String \nAllowed Values: Failed | Prepared | Preparing | NotPrepared \nUpdate requires: No interruption" + }, + "InputFlowNodeConfiguration": { + "type": "object", + "description": "Input flow node configuration", + "additionalProperties": false, + "markdownDescription": "Input flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "KnowledgeBaseFlowNodeConfiguration": { + "type": "object", + "description": "Knowledge base flow node configuration", + "properties": { + "KnowledgeBaseId": { + "type": "string", + "maxLength": 10, + "description": "Identifier of the KnowledgeBase", + "markdownDescription": "Identifier of the KnowledgeBase\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 10 \nPattern: ^[0-9a-zA-Z]+$ \nUpdate requires: No interruption" + }, + "ModelId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN or name of a Bedrock model.", + "markdownDescription": "ARN or name of a Bedrock model.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$ \nUpdate requires: No interruption" + } + }, + "required": [ + "KnowledgeBaseId" + ], + "additionalProperties": false, + "markdownDescription": "Knowledge base flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "LambdaFunctionFlowNodeConfiguration": { + "type": "object", + "description": "Lambda function flow node configuration", + "properties": { + "LambdaArn": { + "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" + } + }, + "required": [ + "LambdaArn" + ], + "additionalProperties": false, + "markdownDescription": "Lambda function flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "LexFlowNodeConfiguration": { + "type": "object", + "description": "Lex flow node configuration", + "properties": { + "BotAliasArn": { + "type": "string", + "maxLength": 78, + "description": "ARN of a Lex bot alias", + "markdownDescription": "ARN of a Lex bot alias\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 78 \nPattern: ^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$ \nUpdate requires: No interruption" + }, + "LocaleId": { + "type": "string", + "maxLength": 10, + "minLength": 1, + "description": "Lex bot locale id", + "markdownDescription": "Lex bot locale id\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 10 \nUpdate requires: No interruption" + } + }, + "required": [ + "BotAliasArn", + "LocaleId" + ], + "additionalProperties": false, + "markdownDescription": "Lex flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "OutputFlowNodeConfiguration": { + "type": "object", + "description": "Output flow node configuration", + "additionalProperties": false, + "markdownDescription": "Output flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeConfiguration": { + "type": "object", + "description": "Prompt flow node configuration", + "properties": { + "SourceConfiguration": { + "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "additionalProperties": false, + "markdownDescription": "Prompt flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeInlineConfiguration": { + "type": "object", + "description": "Inline prompt configuration for prompt node", + "properties": { + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "ModelId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN or name of a Bedrock model.", + "markdownDescription": "ARN or name of a Bedrock model.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$ \nUpdate requires: No interruption" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + } + }, + "required": [ + "ModelId", + "TemplateConfiguration", + "TemplateType" + ], + "additionalProperties": false, + "markdownDescription": "Inline prompt configuration for prompt node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeResourceConfiguration": { + "type": "object", + "description": "Resource prompt configuration for prompt node", + "properties": { + "PromptArn": { + "type": "string", + "description": "ARN of a prompt resource possibly with a version", + "markdownDescription": "ARN of a prompt resource possibly with a version\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$ \nUpdate requires: No interruption" + } + }, + "required": [ + "PromptArn" + ], + "additionalProperties": false, + "markdownDescription": "Resource prompt configuration for prompt node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeSourceConfiguration": { + "description": "Prompt source configuration for prompt node", + "oneOf": [ + { + "type": "object", + "title": "Resource", + "properties": { + "Resource": { + "$ref": "#/definitions/PromptFlowNodeResourceConfiguration" + } + }, + "required": [ + "Resource" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Inline", + "properties": { + "Inline": { + "$ref": "#/definitions/PromptFlowNodeInlineConfiguration" + } + }, + "required": [ + "Inline" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Prompt source configuration for prompt node\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Model inference configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptInputVariable": { + "type": "object", + "description": "Input variable", + "properties": { + "Name": { + "type": "string", + "description": "Name for an input variable", + "markdownDescription": "Name for an input variable\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Input variable\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptModelInferenceConfiguration": { + "type": "object", + "description": "Prompt model inference configuration", + "properties": { + "Temperature": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Controls randomness, higher values increase diversity", + "markdownDescription": "Controls randomness, higher values increase diversity\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopP": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Cumulative probability cutoff for token selection", + "markdownDescription": "Cumulative probability cutoff for token selection\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopK": { + "type": "number", + "maximum": 500, + "minimum": 0, + "description": "Sample from the k most likely next tokens", + "markdownDescription": "Sample from the k most likely next tokens\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "MaxTokens": { + "type": "number", + "maximum": 4096, + "minimum": 0, + "description": "Maximum length of output", + "markdownDescription": "Maximum length of output\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "StopSequences": { + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 4, + "minItems": 0, + "description": "List of stop sequences", + "insertionOrder": true, + "markdownDescription": "List of stop sequences\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Prompt model inference configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Prompt template configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptTemplateType": { + "type": "string", + "description": "Prompt template type", + "enum": [ + "TEXT" + ], + "markdownDescription": "Prompt template type\n\n---\n\nRequired: No \nType: String \nAllowed Values: TEXT \nUpdate requires: No interruption" + }, + "S3Location": { + "type": "object", + "description": "A bucket, key and optional version pointing to an S3 object containing a UTF-8 encoded JSON string Definition with the same schema as the Definition property of this resource", + "properties": { + "Bucket": { + "type": "string", + "maxLength": 63, + "minLength": 3, + "description": "A bucket in S3", + "markdownDescription": "A bucket in S3\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \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, + "description": "A object key in S3", + "markdownDescription": "A object key in S3\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" + }, + "Version": { + "type": "string", + "maxLength": 1024, + "minLength": 1, + "description": "The version of the the S3 object to use", + "markdownDescription": "The version of the the S3 object to use\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" + } + }, + "required": [ + "Bucket", + "Key" + ], + "additionalProperties": false, + "markdownDescription": "A bucket, key and optional version pointing to an S3 object containing a UTF-8 encoded JSON string Definition with the same schema as the Definition property of this resource\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "DefinitionSubstitutions": { + "type": "object", + "description": "When supplied with DefinitionString or DefinitionS3Location, substrings in the definition matching ${keyname} will be replaced with the associated value from this map", + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9]+$": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ] + } + }, + "minProperties": 1, + "maxProperties": 500, + "markdownDescription": "When supplied with DefinitionString or DefinitionS3Location, substrings in the definition matching ${keyname} will be replaced with the associated value from this map\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TextPromptTemplateConfiguration": { + "type": "object", + "description": "Configuration for text prompt template", + "properties": { + "Text": { + "type": "string", + "maxLength": 200000, + "minLength": 1, + "description": "Prompt content for String prompt template", + "markdownDescription": "Prompt content for String prompt template\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 200000 \nUpdate requires: No interruption" + }, + "InputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 5, + "minItems": 0, + "description": "List of input variables", + "insertionOrder": true, + "markdownDescription": "List of input variables\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false, + "markdownDescription": "Configuration for text prompt template\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TagsMap": { + "type": "object", + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "description": "Value of a tag", + "markdownDescription": "Value of a tag\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^[a-zA-Z0-9\\s._:/=+@-]*$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "A map of tag keys and values\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "Definition": { + "$ref": "#/definitions/FlowDefinition" + }, + "DefinitionString": { + "type": "string", + "description": "A JSON string containing a Definition with the same schema as the Definition property of this resource", + "maxLength": 512000, + "markdownDescription": "A JSON string containing a Definition with the same schema as the Definition property of this resource\n\n---\n\nRequired: No \nType: String \nMaximum Length: 512000 \nUpdate requires: No interruption" + }, + "DefinitionS3Location": { + "$ref": "#/definitions/S3Location" + }, + "DefinitionSubstitutions": { + "$ref": "#/definitions/DefinitionSubstitutions" + }, + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "description": "Description of the flow", + "markdownDescription": "Description of the flow\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: No interruption" + }, + "ExecutionRoleArn": { + "type": "string", + "maxLength": 2048, + "description": "ARN of a IAM role", + "markdownDescription": "ARN of a IAM role\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$ \nUpdate requires: No interruption" + }, + "Name": { + "type": "string", + "description": "Name for the flow", + "markdownDescription": "Name for the flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "CustomerEncryptionKeyArn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "A KMS key ARN", + "markdownDescription": "A KMS key ARN\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$ \nUpdate requires: No interruption" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "TestAliasTags": { + "$ref": "#/definitions/TagsMap" + } + }, + "required": [ + "ExecutionRoleArn", + "Name" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/Status", + "/properties/UpdatedAt", + "/properties/Version" + ], + "writeOnlyProperties": [ + "/properties/DefinitionString", + "/properties/DefinitionS3Location", + "/properties/DefinitionSubstitutions" + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "additionalIdentifiers": [ + [ + "/properties/Id" + ] + ], + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateFlow", + "bedrock:GetFlow", + "bedrock:PrepareFlow", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "bedrock:GetFlow", + "bedrock:ListTagsForResource", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateFlow", + "bedrock:GetFlow", + "bedrock:PrepareFlow", + "iam:PassRole", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteFlow", + "bedrock:GetFlow" + ] + }, + "list": { + "permissions": [ + "bedrock:ListFlows" + ] + } + }, + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ] + }, + "additionalProperties": false, + "attributes": { + "Arn": { + "type": "string", + "maxLength": 1011, + "minLength": 20, + "description": "Arn representation of the Flow", + "markdownDescription": "Arn representation of the Flow\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 1011 \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "CreatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Id": { + "type": "string", + "description": "Identifier for a Flow", + "markdownDescription": "Identifier for a Flow\n\n---\n\nRequired: No \nType: String \nPattern: ^[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/FlowStatus" + }, + "UpdatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Version": { + "type": "string", + "maxLength": 5, + "minLength": 5, + "description": "Draft Version.", + "markdownDescription": "Draft Version.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 5 \nMaximum Length: 5 \nPattern: ^DRAFT$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-flowalias.json b/server/schema/resources/aws-bedrock-flowalias.json new file mode 100644 index 00000000..95cd022e --- /dev/null +++ b/server/schema/resources/aws-bedrock-flowalias.json @@ -0,0 +1,180 @@ +{ + "typeName": "AWS::Bedrock::FlowAlias", + "description": "Definition of AWS::Bedrock::FlowAlias Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", + "definitions": { + "FlowAliasRoutingConfigurationListItem": { + "type": "object", + "description": "Details about the routing configuration for a Flow alias.", + "properties": { + "FlowVersion": { + "type": "string", + "maxLength": 1, + "minLength": 1, + "description": "Version.", + "markdownDescription": "Version.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1 \nPattern: ^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Details about the routing configuration for a Flow alias.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TagsMap": { + "type": "object", + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "description": "Value of a tag", + "markdownDescription": "Value of a tag\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^[a-zA-Z0-9\\s._:/=+@-]*$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "A map of tag keys and values\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "FlowArn": { + "type": "string", + "maxLength": 2048, + "description": "Arn representation of the Flow", + "markdownDescription": "Arn representation of the Flow\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$ \nUpdate requires: Replacement" + }, + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "description": "Description of the Resource.", + "markdownDescription": "Description of the Resource.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: No interruption" + }, + "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" + }, + "RoutingConfiguration": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowAliasRoutingConfigurationListItem" + }, + "maxItems": 1, + "minItems": 1, + "description": "Routing configuration for a Flow alias.", + "insertionOrder": true, + "markdownDescription": "Routing configuration for a Flow alias.\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + } + }, + "required": [ + "Name", + "FlowArn", + "RoutingConfiguration" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/FlowId", + "/properties/Id", + "/properties/UpdatedAt" + ], + "createOnlyProperties": [ + "/properties/FlowArn" + ], + "primaryIdentifier": [ + "/properties/Arn", + "/properties/FlowArn" + ], + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateFlowAlias", + "bedrock:GetFlowAlias", + "bedrock:TagResource", + "bedrock:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "bedrock:GetFlowAlias", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdateFlowAlias", + "bedrock:GetFlowAlias", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteFlowAlias" + ] + }, + "list": { + "permissions": [ + "bedrock:ListFlowAliases" + ], + "handlerSchema": { + "properties": { + "FlowArn": { + "$ref": "resource-schema.json#/properties/FlowArn" + } + }, + "required": [ + "FlowArn" + ] + } + } + }, + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ] + }, + "additionalProperties": false, + "attributes": { + "Arn": { + "type": "string", + "maxLength": 2048, + "description": "Arn of the Flow Alias", + "markdownDescription": "Arn of the Flow Alias\n\n---\n\nRequired: No \nType: String \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}/alias/[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "CreatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "FlowId": { + "type": "string", + "description": "Identifier for a flow resource.", + "markdownDescription": "Identifier for a flow resource.\n\n---\n\nRequired: No \nType: String \nPattern: ^[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "Id": { + "type": "string", + "maxLength": 10, + "minLength": 10, + "description": "Id for a Flow Alias generated at the server side.", + "markdownDescription": "Id for a Flow Alias generated at the server side.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 10 \nMaximum Length: 10 \nPattern: ^(\\bTSTALIASID\\b|[0-9a-zA-Z]+)$ \nUpdate requires: No interruption" + }, + "UpdatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-flowversion.json b/server/schema/resources/aws-bedrock-flowversion.json new file mode 100644 index 00000000..811d4d71 --- /dev/null +++ b/server/schema/resources/aws-bedrock-flowversion.json @@ -0,0 +1,836 @@ +{ + "typeName": "AWS::Bedrock::FlowVersion", + "description": "Definition of AWS::Bedrock::FlowVersion Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-flows", + "definitions": { + "ConditionFlowNodeConfiguration": { + "type": "object", + "description": "Condition flow node configuration", + "properties": { + "Conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowCondition" + }, + "maxItems": 5, + "minItems": 1, + "description": "List of conditions in a condition node", + "insertionOrder": true, + "markdownDescription": "List of conditions in a condition node\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Conditions" + ], + "additionalProperties": false, + "markdownDescription": "Condition flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowCondition": { + "type": "object", + "description": "Condition branch for a condition node", + "properties": { + "Name": { + "type": "string", + "description": "Name of a condition in a flow", + "markdownDescription": "Name of a condition in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Expression": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "description": "Expression for a condition in a flow", + "markdownDescription": "Expression for a condition in a flow\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + } + }, + "required": [ + "Name" + ], + "additionalProperties": false, + "markdownDescription": "Condition branch for a condition node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowConditionalConnectionConfiguration": { + "type": "object", + "description": "Conditional connection configuration", + "properties": { + "Condition": { + "type": "string", + "description": "Name of a condition in a flow", + "markdownDescription": "Name of a condition in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "Condition" + ], + "additionalProperties": false, + "markdownDescription": "Conditional connection configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowConnection": { + "type": "object", + "description": "Flow connection", + "properties": { + "Type": { + "$ref": "#/definitions/FlowConnectionType" + }, + "Name": { + "type": "string", + "description": "Name of a connection in a flow", + "markdownDescription": "Name of a connection in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,100}$ \nUpdate requires: No interruption" + }, + "Source": { + "type": "string", + "description": "Name of a node in a flow", + "markdownDescription": "Name of a node in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Target": { + "type": "string", + "description": "Name of a node in a flow", + "markdownDescription": "Name of a node in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Configuration": { + "$ref": "#/definitions/FlowConnectionConfiguration" + } + }, + "required": [ + "Name", + "Source", + "Target", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Flow connection\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowConnectionConfiguration": { + "description": "Connection configuration", + "oneOf": [ + { + "type": "object", + "title": "Data", + "properties": { + "Data": { + "$ref": "#/definitions/FlowDataConnectionConfiguration" + } + }, + "required": [ + "Data" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Conditional", + "properties": { + "Conditional": { + "$ref": "#/definitions/FlowConditionalConnectionConfiguration" + } + }, + "required": [ + "Conditional" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Connection configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "FlowConnectionType": { + "type": "string", + "description": "Connection type", + "enum": [ + "Data", + "Conditional" + ], + "markdownDescription": "Connection type\n\n---\n\nRequired: No \nType: String \nAllowed Values: Data | Conditional \nUpdate requires: No interruption" + }, + "FlowDataConnectionConfiguration": { + "type": "object", + "description": "Data connection configuration", + "properties": { + "SourceOutput": { + "type": "string", + "description": "Name of a node output in a flow", + "markdownDescription": "Name of a node output in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "TargetInput": { + "type": "string", + "description": "Name of a node input in a flow", + "markdownDescription": "Name of a node input in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "SourceOutput", + "TargetInput" + ], + "additionalProperties": false, + "markdownDescription": "Data connection configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowDefinition": { + "type": "object", + "description": "Flow definition", + "properties": { + "Nodes": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowNode" + }, + "maxItems": 20, + "description": "List of nodes in a flow", + "insertionOrder": true, + "markdownDescription": "List of nodes in a flow\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Connections": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowConnection" + }, + "maxItems": 20, + "description": "List of connections", + "insertionOrder": true, + "markdownDescription": "List of connections\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Flow definition\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNode": { + "type": "object", + "description": "Internal mixin for flow node", + "properties": { + "Name": { + "type": "string", + "description": "Name of a node in a flow", + "markdownDescription": "Name of a node in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/FlowNodeType" + }, + "Configuration": { + "$ref": "#/definitions/FlowNodeConfiguration" + }, + "Inputs": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowNodeInput" + }, + "maxItems": 5, + "description": "List of node inputs in a flow", + "insertionOrder": true, + "markdownDescription": "List of node inputs in a flow\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Outputs": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowNodeOutput" + }, + "maxItems": 5, + "description": "List of node outputs in a flow", + "insertionOrder": true, + "markdownDescription": "List of node outputs in a flow\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Name", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Internal mixin for flow node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeConfiguration": { + "description": "Node configuration in a flow", + "oneOf": [ + { + "type": "object", + "title": "Input", + "properties": { + "Input": { + "$ref": "#/definitions/InputFlowNodeConfiguration" + } + }, + "required": [ + "Input" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Output", + "properties": { + "Output": { + "$ref": "#/definitions/OutputFlowNodeConfiguration" + } + }, + "required": [ + "Output" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "KnowledgeBase", + "properties": { + "KnowledgeBase": { + "$ref": "#/definitions/KnowledgeBaseFlowNodeConfiguration" + } + }, + "required": [ + "KnowledgeBase" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Condition", + "properties": { + "Condition": { + "$ref": "#/definitions/ConditionFlowNodeConfiguration" + } + }, + "required": [ + "Condition" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Lex", + "properties": { + "Lex": { + "$ref": "#/definitions/LexFlowNodeConfiguration" + } + }, + "required": [ + "Lex" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Prompt", + "properties": { + "Prompt": { + "$ref": "#/definitions/PromptFlowNodeConfiguration" + } + }, + "required": [ + "Prompt" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "LambdaFunction", + "properties": { + "LambdaFunction": { + "$ref": "#/definitions/LambdaFunctionFlowNodeConfiguration" + } + }, + "required": [ + "LambdaFunction" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Node configuration in a flow\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "LexFlowNodeConfiguration": { + "type": "object", + "description": "Lex flow node configuration", + "properties": { + "BotAliasArn": { + "type": "string", + "maxLength": 78, + "description": "ARN of a Lex bot alias", + "markdownDescription": "ARN of a Lex bot alias\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 78 \nPattern: ^arn:aws(|-us-gov):lex:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:bot-alias/[0-9a-zA-Z]+/[0-9a-zA-Z]+$ \nUpdate requires: No interruption" + }, + "LocaleId": { + "type": "string", + "maxLength": 10, + "minLength": 1, + "description": "Lex bot locale id", + "markdownDescription": "Lex bot locale id\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 10 \nUpdate requires: No interruption" + } + }, + "required": [ + "BotAliasArn", + "LocaleId" + ], + "additionalProperties": false, + "markdownDescription": "Lex flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeIODataType": { + "type": "string", + "description": "Type of input/output for a node in a flow", + "enum": [ + "String", + "Number", + "Boolean", + "Object", + "Array" + ], + "markdownDescription": "Type of input/output for a node in a flow\n\n---\n\nRequired: No \nType: String \nAllowed Values: String | Number | Boolean | Object | Array \nUpdate requires: No interruption" + }, + "FlowNodeInput": { + "type": "object", + "description": "Input to a node in a flow", + "properties": { + "Name": { + "type": "string", + "description": "Name of a node input in a flow", + "markdownDescription": "Name of a node input in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + }, + "Expression": { + "type": "string", + "maxLength": 64, + "minLength": 1, + "description": "Expression for a node input in a flow", + "markdownDescription": "Expression for a node input in a flow\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 64 \nUpdate requires: No interruption" + } + }, + "required": [ + "Expression", + "Name", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Input to a node in a flow\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeOutput": { + "type": "object", + "description": "Output of a node in a flow", + "properties": { + "Name": { + "type": "string", + "description": "Name of a node output in a flow", + "markdownDescription": "Name of a node output in a flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^[a-zA-Z]([_]?[0-9a-zA-Z]){1,50}$ \nUpdate requires: No interruption" + }, + "Type": { + "$ref": "#/definitions/FlowNodeIODataType" + } + }, + "required": [ + "Name", + "Type" + ], + "additionalProperties": false, + "markdownDescription": "Output of a node in a flow\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "FlowNodeType": { + "type": "string", + "description": "Flow node types", + "enum": [ + "Input", + "Output", + "KnowledgeBase", + "Condition", + "Lex", + "Prompt", + "LambdaFunction" + ], + "markdownDescription": "Flow node types\n\n---\n\nRequired: No \nType: String \nAllowed Values: Input | Output | KnowledgeBase | Condition | Lex | Prompt | LambdaFunction \nUpdate requires: No interruption" + }, + "FlowStatus": { + "type": "string", + "description": "Schema Type for Flow APIs", + "enum": [ + "Failed", + "Prepared", + "Preparing", + "NotPrepared" + ], + "markdownDescription": "Schema Type for Flow APIs\n\n---\n\nRequired: No \nType: String \nAllowed Values: Failed | Prepared | Preparing | NotPrepared \nUpdate requires: No interruption" + }, + "InputFlowNodeConfiguration": { + "type": "object", + "description": "Input flow node configuration", + "additionalProperties": false, + "markdownDescription": "Input flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "KnowledgeBaseFlowNodeConfiguration": { + "type": "object", + "description": "Knowledge base flow node configuration", + "properties": { + "KnowledgeBaseId": { + "type": "string", + "maxLength": 10, + "description": "Identifier of the KnowledgeBase", + "markdownDescription": "Identifier of the KnowledgeBase\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 10 \nPattern: ^[0-9a-zA-Z]+$ \nUpdate requires: No interruption" + }, + "ModelId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN or name of a Bedrock model.", + "markdownDescription": "ARN or name of a Bedrock model.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$ \nUpdate requires: No interruption" + } + }, + "required": [ + "KnowledgeBaseId" + ], + "additionalProperties": false, + "markdownDescription": "Knowledge base flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "LambdaFunctionFlowNodeConfiguration": { + "type": "object", + "description": "Lambda function flow node configuration", + "properties": { + "LambdaArn": { + "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" + } + }, + "required": [ + "LambdaArn" + ], + "additionalProperties": false, + "markdownDescription": "Lambda function flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "OutputFlowNodeConfiguration": { + "type": "object", + "description": "Output flow node configuration", + "additionalProperties": false, + "markdownDescription": "Output flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeConfiguration": { + "type": "object", + "description": "Prompt flow node configuration", + "properties": { + "SourceConfiguration": { + "$ref": "#/definitions/PromptFlowNodeSourceConfiguration" + } + }, + "required": [ + "SourceConfiguration" + ], + "additionalProperties": false, + "markdownDescription": "Prompt flow node configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeInlineConfiguration": { + "type": "object", + "description": "Inline prompt configuration for prompt node", + "properties": { + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "ModelId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN or name of a Bedrock model.", + "markdownDescription": "ARN or name of a Bedrock model.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$ \nUpdate requires: No interruption" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + } + }, + "required": [ + "ModelId", + "TemplateConfiguration", + "TemplateType" + ], + "additionalProperties": false, + "markdownDescription": "Inline prompt configuration for prompt node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeResourceConfiguration": { + "type": "object", + "description": "Resource prompt configuration for prompt node", + "properties": { + "PromptArn": { + "type": "string", + "description": "ARN of a prompt resource possibly with a version", + "markdownDescription": "ARN of a prompt resource possibly with a version\n\n---\n\nRequired: Yes \nType: String \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}(?::[0-9]{1,5})?)$ \nUpdate requires: No interruption" + } + }, + "required": [ + "PromptArn" + ], + "additionalProperties": false, + "markdownDescription": "Resource prompt configuration for prompt node\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptFlowNodeSourceConfiguration": { + "description": "Prompt source configuration for prompt node", + "oneOf": [ + { + "type": "object", + "title": "Resource", + "properties": { + "Resource": { + "$ref": "#/definitions/PromptFlowNodeResourceConfiguration" + } + }, + "required": [ + "Resource" + ], + "additionalProperties": false + }, + { + "type": "object", + "title": "Inline", + "properties": { + "Inline": { + "$ref": "#/definitions/PromptFlowNodeInlineConfiguration" + } + }, + "required": [ + "Inline" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Prompt source configuration for prompt node\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Model inference configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptInputVariable": { + "type": "object", + "description": "Input variable", + "properties": { + "Name": { + "type": "string", + "description": "Name for an input variable", + "markdownDescription": "Name for an input variable\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Input variable\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptModelInferenceConfiguration": { + "type": "object", + "description": "Prompt model inference configuration", + "properties": { + "Temperature": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Controls randomness, higher values increase diversity", + "markdownDescription": "Controls randomness, higher values increase diversity\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopP": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Cumulative probability cutoff for token selection", + "markdownDescription": "Cumulative probability cutoff for token selection\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopK": { + "type": "number", + "maximum": 500, + "minimum": 0, + "description": "Sample from the k most likely next tokens", + "markdownDescription": "Sample from the k most likely next tokens\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "MaxTokens": { + "type": "number", + "maximum": 4096, + "minimum": 0, + "description": "Maximum length of output", + "markdownDescription": "Maximum length of output\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "StopSequences": { + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 4, + "minItems": 0, + "description": "List of stop sequences", + "insertionOrder": true, + "markdownDescription": "List of stop sequences\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Prompt model inference configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Prompt template configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptTemplateType": { + "type": "string", + "description": "Prompt template type", + "enum": [ + "TEXT" + ], + "markdownDescription": "Prompt template type\n\n---\n\nRequired: No \nType: String \nAllowed Values: TEXT \nUpdate requires: No interruption" + }, + "TextPromptTemplateConfiguration": { + "type": "object", + "description": "Configuration for text prompt template", + "properties": { + "Text": { + "type": "string", + "maxLength": 200000, + "minLength": 1, + "description": "Prompt content for String prompt template", + "markdownDescription": "Prompt content for String prompt template\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 200000 \nUpdate requires: No interruption" + }, + "InputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 5, + "minItems": 0, + "description": "List of input variables", + "insertionOrder": true, + "markdownDescription": "List of input variables\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false, + "markdownDescription": "Configuration for text prompt template\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "FlowArn": { + "type": "string", + "description": "Arn representation of the Flow", + "markdownDescription": "Arn representation of the Flow\n\n---\n\nRequired: Yes \nType: String \nPattern: ^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:flow/[0-9a-zA-Z]{10}$ \nUpdate requires: Replacement" + }, + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "description": "Description of the flow version", + "markdownDescription": "Description of the flow version\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: Replacement" + } + }, + "required": [ + "FlowArn" + ], + "readOnlyProperties": [ + "/properties/CreatedAt", + "/properties/Definition", + "/properties/ExecutionRoleArn", + "/properties/FlowId", + "/properties/Name", + "/properties/Status", + "/properties/Version" + ], + "createOnlyProperties": [ + "/properties/Description", + "/properties/FlowArn" + ], + "primaryIdentifier": [ + "/properties/FlowArn", + "/properties/Version" + ], + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateFlowVersion", + "bedrock:GetFlowVersion" + ] + }, + "read": { + "permissions": [ + "bedrock:GetFlowVersion" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteFlowVersion", + "bedrock:GetFlowVersion" + ] + }, + "list": { + "permissions": [ + "bedrock:ListFlowVersions" + ], + "handlerSchema": { + "properties": { + "FlowArn": { + "$ref": "resource-schema.json#/properties/FlowArn" + } + }, + "required": [ + "FlowArn" + ] + } + }, + "update": { + "permissions": [ + "noservice:NoAction" + ] + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false, + "attributes": { + "CreatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Definition": { + "$ref": "#/definitions/FlowDefinition" + }, + "ExecutionRoleArn": { + "type": "string", + "maxLength": 2048, + "description": "ARN of a IAM role", + "markdownDescription": "ARN of a IAM role\n\n---\n\nRequired: No \nType: String \nMaximum Length: 2048 \nPattern: ^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?.+$ \nUpdate requires: No interruption" + }, + "FlowId": { + "type": "string", + "description": "Identifier for a Flow", + "markdownDescription": "Identifier for a Flow\n\n---\n\nRequired: No \nType: String \nPattern: ^[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "Name": { + "type": "string", + "description": "Name for the flow", + "markdownDescription": "Name for the flow\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "Status": { + "$ref": "#/definitions/FlowStatus" + }, + "Version": { + "type": "string", + "description": "Numerical Version.", + "markdownDescription": "Numerical Version.\n\n---\n\nRequired: No \nType: String \nPattern: ^[0-9]{1,5}$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-prompt.json b/server/schema/resources/aws-bedrock-prompt.json new file mode 100644 index 00000000..244309ff --- /dev/null +++ b/server/schema/resources/aws-bedrock-prompt.json @@ -0,0 +1,371 @@ +{ + "typeName": "AWS::Bedrock::Prompt", + "description": "Definition of AWS::Bedrock::Prompt Resource Type", + "definitions": { + "PromptTemplateType": { + "type": "string", + "description": "Prompt template type", + "enum": [ + "TEXT" + ], + "markdownDescription": "Prompt template type\n\n---\n\nRequired: No \nType: String \nAllowed Values: TEXT \nUpdate requires: No interruption" + }, + "PromptVariant": { + "type": "object", + "description": "Prompt variant", + "properties": { + "Name": { + "type": "string", + "description": "Name for a variant.", + "markdownDescription": "Name for a variant.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "ModelId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN or name of a Bedrock model.", + "markdownDescription": "ARN or name of a Bedrock model.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$ \nUpdate requires: No interruption" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + } + }, + "required": [ + "Name", + "TemplateType" + ], + "additionalProperties": false, + "markdownDescription": "Prompt variant\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TextPromptTemplateConfiguration": { + "type": "object", + "description": "Configuration for text prompt template", + "properties": { + "Text": { + "type": "string", + "maxLength": 200000, + "minLength": 1, + "description": "Prompt content for String prompt template", + "markdownDescription": "Prompt content for String prompt template\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200000 \nUpdate requires: No interruption" + }, + "TextS3Location": { + "$ref": "#/definitions/TextS3Location" + }, + "InputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 5, + "minItems": 0, + "description": "List of input variables", + "insertionOrder": true, + "markdownDescription": "List of input variables\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [], + "additionalProperties": false, + "markdownDescription": "Configuration for text prompt template\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Prompt template configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "TextS3Location": { + "type": "object", + "description": "The identifier for the S3 resource.", + "properties": { + "Bucket": { + "type": "string", + "maxLength": 63, + "minLength": 3, + "description": "A bucket in S3", + "markdownDescription": "A bucket in S3\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 3 \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, + "description": "A object key in S3", + "markdownDescription": "A object key in S3\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" + }, + "Version": { + "type": "string", + "maxLength": 1024, + "minLength": 1, + "description": "The version of the the S3 object to use", + "markdownDescription": "The version of the the S3 object to use\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 1024 \nUpdate requires: No interruption" + } + }, + "required": [ + "Bucket", + "Key" + ], + "additionalProperties": false, + "markdownDescription": "The identifier for the S3 resource.\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptModelInferenceConfiguration": { + "type": "object", + "description": "Prompt model inference configuration", + "properties": { + "Temperature": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Controls randomness, higher values increase diversity", + "markdownDescription": "Controls randomness, higher values increase diversity\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopP": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Cumulative probability cutoff for token selection", + "markdownDescription": "Cumulative probability cutoff for token selection\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopK": { + "type": "number", + "maximum": 500, + "minimum": 0, + "description": "Sample from the k most likely next tokens", + "markdownDescription": "Sample from the k most likely next tokens\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "MaxTokens": { + "type": "number", + "maximum": 4096, + "minimum": 0, + "description": "Maximum length of output", + "markdownDescription": "Maximum length of output\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "StopSequences": { + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 4, + "minItems": 0, + "description": "List of stop sequences", + "insertionOrder": true, + "markdownDescription": "List of stop sequences\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Prompt model inference configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Model inference configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptInputVariable": { + "type": "object", + "description": "Input variable", + "properties": { + "Name": { + "type": "string", + "description": "Name for an input variable", + "markdownDescription": "Name for an input variable\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Input variable\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TagsMap": { + "type": "object", + "description": "A map of tag keys and values", + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "type": "string", + "maxLength": 256, + "minLength": 0, + "description": "Value of a tag", + "markdownDescription": "Value of a tag\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nPattern: ^[a-zA-Z0-9\\s._:/=+@-]*$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "A map of tag keys and values\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "DefaultVariant": { + "type": "string", + "description": "Name for a variant.", + "markdownDescription": "Name for a variant.\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "description": "Name for a prompt resource.", + "markdownDescription": "Name for a prompt resource.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: No interruption" + }, + "Name": { + "type": "string", + "description": "Name for a prompt resource.", + "markdownDescription": "Name for a prompt resource.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "Variants": { + "type": "array", + "items": { + "$ref": "#/definitions/PromptVariant" + }, + "maxItems": 3, + "minItems": 0, + "description": "List of prompt variants", + "insertionOrder": true, + "markdownDescription": "List of prompt variants\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "CustomerEncryptionKeyArn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "A KMS key ARN", + "markdownDescription": "A KMS key ARN\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$ \nUpdate requires: No interruption" + } + }, + "required": [ + "Name" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/Id", + "/properties/UpdatedAt", + "/properties/Version" + ], + "writeOnlyProperties": [ + "/properties/Variants/*/TemplateConfiguration/Text/TextS3Location" + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "handlers": { + "create": { + "permissions": [ + "bedrock:CreatePrompt", + "bedrock:GetPrompt", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "read": { + "permissions": [ + "bedrock:GetPrompt", + "bedrock:ListTagsForResource", + "kms:Decrypt" + ] + }, + "update": { + "permissions": [ + "bedrock:UpdatePrompt", + "bedrock:GetPrompt", + "s3:GetObject", + "s3:GetObjectVersion", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "kms:GenerateDataKey", + "kms:Decrypt" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeletePrompt", + "bedrock:GetPrompt" + ] + }, + "list": { + "permissions": [ + "bedrock:ListPrompts" + ] + } + }, + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true, + "permissions": [ + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource" + ] + }, + "additionalProperties": false, + "attributes": { + "Arn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN of a prompt resource possibly with a version", + "markdownDescription": "ARN of a prompt resource possibly with a version\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10})$ \nUpdate requires: No interruption" + }, + "CreatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Id": { + "type": "string", + "description": "Identifier for a Prompt", + "markdownDescription": "Identifier for a Prompt\n\n---\n\nRequired: No \nType: String \nPattern: ^[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "UpdatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Version": { + "type": "string", + "maxLength": 5, + "minLength": 5, + "description": "Draft Version.", + "markdownDescription": "Draft Version.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 5 \nMaximum Length: 5 \nPattern: ^DRAFT$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-bedrock-promptversion.json b/server/schema/resources/aws-bedrock-promptversion.json new file mode 100644 index 00000000..d8033042 --- /dev/null +++ b/server/schema/resources/aws-bedrock-promptversion.json @@ -0,0 +1,309 @@ +{ + "typeName": "AWS::Bedrock::PromptVersion", + "description": "Definition of AWS::Bedrock::PromptVersion Resource Type", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-prompts", + "definitions": { + "PromptTemplateType": { + "type": "string", + "description": "Prompt template type", + "enum": [ + "TEXT" + ], + "markdownDescription": "Prompt template type\n\n---\n\nRequired: No \nType: String \nAllowed Values: TEXT \nUpdate requires: No interruption" + }, + "PromptVariant": { + "type": "object", + "description": "Prompt variant", + "properties": { + "Name": { + "type": "string", + "description": "Name for a variant.", + "markdownDescription": "Name for a variant.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "TemplateType": { + "$ref": "#/definitions/PromptTemplateType" + }, + "TemplateConfiguration": { + "$ref": "#/definitions/PromptTemplateConfiguration" + }, + "ModelId": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN or name of a Bedrock model.", + "markdownDescription": "ARN or name of a Bedrock model.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|([0-9]{12}:provisioned-model/[a-z0-9]{12})))|([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.:]?[a-z0-9-]{1,63}))|(([0-9a-zA-Z][_-]?)+)$ \nUpdate requires: No interruption" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/PromptInferenceConfiguration" + } + }, + "required": [ + "Name", + "TemplateType" + ], + "additionalProperties": false, + "markdownDescription": "Prompt variant\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "TextPromptTemplateConfiguration": { + "type": "object", + "description": "Configuration for text prompt template", + "properties": { + "Text": { + "type": "string", + "maxLength": 200000, + "minLength": 1, + "description": "Prompt content for String prompt template", + "markdownDescription": "Prompt content for String prompt template\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 200000 \nUpdate requires: No interruption" + }, + "InputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/PromptInputVariable" + }, + "maxItems": 5, + "minItems": 1, + "description": "List of input variables", + "insertionOrder": true, + "markdownDescription": "List of input variables\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false, + "markdownDescription": "Configuration for text prompt template\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptTemplateConfiguration": { + "description": "Prompt template configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/TextPromptTemplateConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Prompt template configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptModelInferenceConfiguration": { + "type": "object", + "description": "Prompt model inference configuration", + "properties": { + "Temperature": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Controls randomness, higher values increase diversity", + "markdownDescription": "Controls randomness, higher values increase diversity\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopP": { + "type": "number", + "maximum": 1, + "minimum": 0, + "description": "Cumulative probability cutoff for token selection", + "markdownDescription": "Cumulative probability cutoff for token selection\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "TopK": { + "type": "number", + "maximum": 500, + "minimum": 0, + "description": "Sample from the k most likely next tokens", + "markdownDescription": "Sample from the k most likely next tokens\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "MaxTokens": { + "type": "number", + "maximum": 4096, + "minimum": 0, + "description": "Maximum length of output", + "markdownDescription": "Maximum length of output\n\n---\n\nRequired: No \nType: Number \nUpdate requires: No interruption" + }, + "StopSequences": { + "type": "array", + "items": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "maxItems": 4, + "minItems": 0, + "description": "List of stop sequences", + "insertionOrder": true, + "markdownDescription": "List of stop sequences\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Prompt model inference configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "PromptInferenceConfiguration": { + "description": "Model inference configuration", + "oneOf": [ + { + "type": "object", + "title": "Text", + "properties": { + "Text": { + "$ref": "#/definitions/PromptModelInferenceConfiguration" + } + }, + "required": [ + "Text" + ], + "additionalProperties": false + } + ], + "markdownDescription": "Model inference configuration\n\n---\n\nRequired: No \nType: \nUpdate requires: No interruption" + }, + "PromptInputVariable": { + "type": "object", + "description": "Input variable", + "properties": { + "Name": { + "type": "string", + "description": "Name for an input variable", + "markdownDescription": "Name for an input variable\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + } + }, + "additionalProperties": false, + "markdownDescription": "Input variable\n\n---\n\nRequired: No \nUpdate requires: No interruption" + } + }, + "properties": { + "PromptArn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN of a prompt resource possibly with a version", + "markdownDescription": "ARN of a prompt resource possibly with a version\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10})$ \nUpdate requires: Replacement" + }, + "Description": { + "type": "string", + "maxLength": 200, + "minLength": 1, + "description": "Description for a prompt version resource.", + "markdownDescription": "Description for a prompt version resource.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 200 \nUpdate requires: Replacement" + } + }, + "required": [ + "PromptArn" + ], + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CreatedAt", + "/properties/PromptId", + "/properties/UpdatedAt", + "/properties/Version", + "/properties/Name", + "/properties/DefaultVariant", + "/properties/Variants" + ], + "primaryIdentifier": [ + "/properties/Arn" + ], + "createOnlyProperties": [ + "/properties/PromptArn", + "/properties/Description" + ], + "handlers": { + "create": { + "permissions": [ + "bedrock:CreatePromptVersion", + "bedrock:GetPrompt" + ] + }, + "read": { + "permissions": [ + "bedrock:GetPrompt" + ] + }, + "update": { + "permissions": [ + "noservice:NoAction" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeletePrompt", + "bedrock:GetPrompt" + ] + }, + "list": { + "permissions": [ + "bedrock:ListPrompts" + ], + "handlerSchema": { + "properties": { + "PromptArn": { + "$ref": "resource-schema.json#/properties/PromptArn" + } + }, + "required": [ + "PromptArn" + ] + } + } + }, + "tagging": { + "taggable": false + }, + "additionalProperties": false, + "attributes": { + "Arn": { + "type": "string", + "maxLength": 2048, + "minLength": 1, + "description": "ARN of a prompt version resource", + "markdownDescription": "ARN of a prompt version resource\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^(arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:[0-9]{12}:prompt/[0-9a-zA-Z]{10}:[0-9]{1,20})$ \nUpdate requires: No interruption" + }, + "CreatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "PromptId": { + "type": "string", + "description": "Identifier for a Prompt", + "markdownDescription": "Identifier for a Prompt\n\n---\n\nRequired: No \nType: String \nPattern: ^[0-9a-zA-Z]{10}$ \nUpdate requires: No interruption" + }, + "UpdatedAt": { + "type": "string", + "description": "Time Stamp.", + "format": "date-time", + "markdownDescription": "Time Stamp.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + }, + "Version": { + "type": "string", + "maxLength": 5, + "minLength": 1, + "description": "Version.", + "markdownDescription": "Version.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 5 \nPattern: ^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$ \nUpdate requires: No interruption" + }, + "Variants": { + "type": "array", + "items": { + "$ref": "#/definitions/PromptVariant" + }, + "maxItems": 3, + "minItems": 1, + "description": "List of prompt variants", + "insertionOrder": true, + "markdownDescription": "List of prompt variants\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + }, + "DefaultVariant": { + "type": "string", + "description": "Name for a variant.", + "markdownDescription": "Name for a variant.\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + }, + "Name": { + "type": "string", + "description": "Name for a prompt resource.", + "markdownDescription": "Name for a prompt resource.\n\n---\n\nRequired: No \nType: String \nPattern: ^([0-9a-zA-Z][_-]?){1,100}$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-controltower-enabledcontrol.json b/server/schema/resources/aws-controltower-enabledcontrol.json index 0e9e99c6..313f10bf 100644 --- a/server/schema/resources/aws-controltower-enabledcontrol.json +++ b/server/schema/resources/aws-controltower-enabledcontrol.json @@ -161,6 +161,8 @@ }, "delete": { "permissions": [ + "controltower:ListEnabledControls", + "controltower:GetEnabledControl", "controltower:GetControlOperation", "controltower:DisableControl", "organizations:UpdatePolicy", diff --git a/server/schema/resources/aws-dms-replicationconfig.json b/server/schema/resources/aws-dms-replicationconfig.json index 59cfcdab..7beac57f 100644 --- a/server/schema/resources/aws-dms-replicationconfig.json +++ b/server/schema/resources/aws-dms-replicationconfig.json @@ -85,17 +85,17 @@ "ReplicationConfigIdentifier": { "description": "A unique identifier of replication configuration", "type": "string", - "markdownDescription": "A unique identifier of replication configuration\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "A unique identifier of replication configuration\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "SourceEndpointArn": { "description": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration", "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The Amazon Resource Name (ARN) of the source endpoint for this AWS DMS Serverless replication configuration\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "TargetEndpointArn": { "description": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration", "type": "string", - "markdownDescription": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "The Amazon Resource Name (ARN) of the target endpoint for this AWS DMS Serverless replication configuration\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" }, "ReplicationType": { "description": "The type of AWS DMS Serverless replication to provision using this replication configuration", @@ -105,7 +105,7 @@ "full-load-and-cdc", "cdc" ], - "markdownDescription": "The type of AWS DMS Serverless replication to provision using this replication configuration\n\n---\n\nRequired: No \nType: String \nAllowed Values: full-load | full-load-and-cdc | cdc \nUpdate requires: No interruption" + "markdownDescription": "The type of AWS DMS Serverless replication to provision using this replication configuration\n\n---\n\nRequired: Yes \nType: String \nAllowed Values: full-load | full-load-and-cdc | cdc \nUpdate requires: No interruption" }, "ComputeConfig": { "$ref": "#/definitions/ComputeConfig" @@ -128,7 +128,7 @@ "TableMappings": { "description": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration", "type": "object", - "markdownDescription": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "JSON table mappings for AWS DMS Serverless replications that are provisioned using this replication configuration\n\n---\n\nRequired: Yes \nUpdate requires: No interruption" }, "Tags": { "type": "array", @@ -161,9 +161,22 @@ "tagOnCreate": true, "tagUpdatable": true, "cloudFormationSystemTags": false, - "tagProperty": "/properties/Tags" + "tagProperty": "/properties/Tags", + "permissions": [ + "dms:AddTagsToResource", + "dms:ListTagsForResource", + "dms:RemoveTagsFromResource" + ] }, "additionalProperties": false, + "required": [ + "ReplicationConfigIdentifier", + "SourceEndpointArn", + "TargetEndpointArn", + "ReplicationType", + "ComputeConfig", + "TableMappings" + ], "handlers": { "create": { "permissions": [ @@ -186,7 +199,7 @@ "permissions": [ "dms:ModifyReplicationConfig", "dms:AddTagsToResource", - "dms:RemoveTagsToResource", + "dms:RemoveTagsFromResource", "dms:ListTagsForResource", "iam:CreateServiceLinkedRole", "iam:AttachRolePolicy", diff --git a/server/schema/resources/aws-ec2-instance.json b/server/schema/resources/aws-ec2-instance.json index 714607d7..d2166718 100644 --- a/server/schema/resources/aws-ec2-instance.json +++ b/server/schema/resources/aws-ec2-instance.json @@ -165,8 +165,8 @@ } }, "writeOnlyProperties": [ - "/properties/BlockDeviceMappings/*/BlockDeviceMapping/NoDevice", - "/properties/BlockDeviceMappings/*/BlockDeviceMapping/VirtualName", + "/properties/BlockDeviceMappings/*/NoDevice", + "/properties/BlockDeviceMappings/*/VirtualName", "/properties/LicenseSpecification", "/properties/AdditionalInfo", "/properties/Ipv6AddressCount", diff --git a/server/schema/resources/aws-ec2-trafficmirrorfilterrule.json b/server/schema/resources/aws-ec2-trafficmirrorfilterrule.json index cde050b8..7b104c4e 100644 --- a/server/schema/resources/aws-ec2-trafficmirrorfilterrule.json +++ b/server/schema/resources/aws-ec2-trafficmirrorfilterrule.json @@ -40,6 +40,14 @@ "Protocol": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: No \nType: Integer \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "uniqueItems": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "markdownDescription": "\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" } }, "definitions": { @@ -47,18 +55,37 @@ "type": "object", "additionalProperties": false, "properties": { - "FromPort": { + "ToPort": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" }, - "ToPort": { + "FromPort": { "type": "integer", "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" } }, "required": [ - "ToPort", - "FromPort" + "FromPort", + "ToPort" + ], + "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + }, + "Tag": { + "type": "object", + "additionalProperties": false, + "properties": { + "Value": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + }, + "Key": { + "type": "string", + "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + } + }, + "required": [ + "Value", + "Key" ], "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" } @@ -74,10 +101,10 @@ "createOnlyProperties": [ "/properties/TrafficMirrorFilterId" ], - "readOnlyProperties": [ + "primaryIdentifier": [ "/properties/Id" ], - "primaryIdentifier": [ + "readOnlyProperties": [ "/properties/Id" ], "attributes": { diff --git a/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json b/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json index 35f4b417..fddaea6b 100644 --- a/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json +++ b/server/schema/resources/aws-ec2-transitgatewayroutetableassociation.json @@ -1,26 +1,12 @@ { + "tagging": { + "taggable": false, + "tagOnCreate": false, + "tagUpdatable": false, + "cloudFormationSystemTags": false + }, "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": "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": "The ID of transit gateway attachment.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" - } - }, - "definitions": {}, - "replacementStrategy": "delete_then_create", - "required": [ - "TransitGatewayRouteTableId", - "TransitGatewayAttachmentId" - ], "createOnlyProperties": [ "/properties/TransitGatewayRouteTableId", "/properties/TransitGatewayAttachmentId" @@ -29,31 +15,27 @@ "/properties/TransitGatewayRouteTableId", "/properties/TransitGatewayAttachmentId" ], - "tagging": { - "taggable": false, - "tagOnCreate": false, - "tagUpdatable": false, - "cloudFormationSystemTags": false - }, + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", "handlers": { - "create": { - "permissions": [ - "ec2:AssociateTransitGatewayRouteTable", - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, "read": { "permissions": [ "ec2:GetTransitGatewayRouteTableAssociations" ] }, - "delete": { + "create": { "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations", - "ec2:DisassociateTransitGatewayRouteTable" + "ec2:AssociateTransitGatewayRouteTable", + "ec2:GetTransitGatewayRouteTableAssociations" ] }, "list": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ], "handlerSchema": { "properties": { "TransitGatewayRouteTableId": { @@ -63,11 +45,29 @@ "required": [ "TransitGatewayRouteTableId" ] - }, + } + }, + "delete": { "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" ] } }, + "additionalProperties": false, + "definitions": {}, + "properties": { + "TransitGatewayRouteTableId": { + "description": "The ID of transit gateway route table.", + "type": "string", + "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": "The ID of transit gateway attachment.\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: Replacement" + } + }, + "replacementStrategy": "delete_then_create", "attributes": {} } \ No newline at end of file diff --git a/server/schema/resources/aws-entityresolution-idmappingworkflow.json b/server/schema/resources/aws-entityresolution-idmappingworkflow.json index 31c8fb3f..ab876e2f 100644 --- a/server/schema/resources/aws-entityresolution-idmappingworkflow.json +++ b/server/schema/resources/aws-entityresolution-idmappingworkflow.json @@ -194,7 +194,7 @@ "ProviderServiceArn": { "type": "string", "description": "Arn of the Provider Service being used.", - "markdownDescription": "Arn of the Provider Service being used.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^arn:(aws|aws-us-gov|aws-cn):entityresolution:([A-Za-z0-9]+(-[A-Za-z0-9]+)+)::providerservice/[A-Za-z0-9]+/[A-Za-z0-9]+$ \nUpdate requires: No interruption" + "markdownDescription": "Arn of the Provider Service being used.\n\n---\n\nRequired: Yes \nType: String \nPattern: ^arn:(aws|aws-us-gov|aws-cn):(entityresolution):([a-z]{2}-[a-z]{1,10}-[0-9])::providerservice/([a-zA-Z0-9_-]{1,255})/([a-zA-Z0-9_-]{1,255})$ \nUpdate requires: No interruption" }, "ProviderConfiguration": { "type": "object", diff --git a/server/schema/resources/aws-lambda-alias.json b/server/schema/resources/aws-lambda-alias.json index b26a430b..ab9a4814 100644 --- a/server/schema/resources/aws-lambda-alias.json +++ b/server/schema/resources/aws-lambda-alias.json @@ -1,84 +1,101 @@ { "typeName": "AWS::Lambda::Alias", "description": "Resource Type definition for AWS::Lambda::Alias", - "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" - } - }, + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-lambda", "definitions": { "ProvisionedConcurrencyConfiguration": { "type": "object", + "description": "A provisioned concurrency configuration for a function's alias.", "additionalProperties": false, "properties": { "ProvisionedConcurrentExecutions": { "type": "integer", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Integer \nUpdate requires: No interruption" + "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" } }, "required": [ "ProvisionedConcurrentExecutions" ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "A provisioned concurrency configuration for a function's alias.\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", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: Number \nUpdate requires: No interruption" + "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" }, "FunctionVersion": { "type": "string", - "markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nUpdate requires: No interruption" + "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" } }, "required": [ "FunctionVersion", "FunctionWeight" ], - "markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption" + "markdownDescription": "The traffic-shifting configuration of a Lambda function alias.\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": "\n\n---\n\nRequired: Yes \nType: Array \nUpdate requires: No interruption" + "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" } }, - "required": [ - "AdditionalVersionWeights" - ], - "markdownDescription": "\n\n---\n\nRequired: No \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" } }, + "tagging": { + "taggable": false + }, + "additionalProperties": false, "required": [ "FunctionName", "FunctionVersion", @@ -89,15 +106,71 @@ "/properties/FunctionName" ], "primaryIdentifier": [ - "/properties/Id" + "/properties/AliasArn" ], "readOnlyProperties": [ - "/properties/Id" + "/properties/AliasArn" ], + "propertyTransform": { + "/properties/FunctionName": "$split(FunctionName, \":\")[-1] $OR FunctionName" + }, + "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": { - "Id": { + "AliasArn": { + "description": "Lambda Alias ARN generated by the service.", "type": "string", - "markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" + "markdownDescription": "Lambda Alias ARN generated by the service.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption" } } } \ No newline at end of file diff --git a/server/schema/resources/aws-neptune-dbcluster.json b/server/schema/resources/aws-neptune-dbcluster.json index 727b6445..5cd44374 100644 --- a/server/schema/resources/aws-neptune-dbcluster.json +++ b/server/schema/resources/aws-neptune-dbcluster.json @@ -295,7 +295,8 @@ "rds:ModifyDBCluster", "rds:RestoreDBClusterFromSnapshot", "rds:RestoreDBClusterToPointInTime", - "kms:*" + "kms:CreateGrant", + "kms:DescribeKey" ], "timeoutInMinutes": 2160 }, @@ -303,7 +304,8 @@ "permissions": [ "rds:DescribeDBClusters", "rds:ListTagsForResource", - "kms:*" + "kms:CreateGrant", + "kms:DescribeKey" ], "timeoutInMinutes": 2160 }, @@ -323,7 +325,8 @@ "rds:RemoveFromGlobalCluster", "rds:RemoveRoleFromDBCluster", "rds:RemoveTagsFromResource", - "kms:*" + "kms:CreateGrant", + "kms:DescribeKey" ], "timeoutInMinutes": 2160 }, @@ -336,7 +339,8 @@ "rds:ListTagsForResource", "rds:RemoveFromGlobalCluster", "rds:CreateDBClusterSnapshot", - "kms:*" + "kms:CreateGrant", + "kms:DescribeKey" ], "timeoutInMinutes": 2160 }, @@ -344,7 +348,8 @@ "permissions": [ "rds:DescribeDBClusters", "rds:ListTagsForResource", - "kms:*" + "kms:CreateGrant", + "kms:DescribeKey" ], "timeoutInMinutes": 2160 } diff --git a/server/schema/resources/aws-organizations-organization.json b/server/schema/resources/aws-organizations-organization.json index 0e63f055..7edb84b0 100644 --- a/server/schema/resources/aws-organizations-organization.json +++ b/server/schema/resources/aws-organizations-organization.json @@ -44,7 +44,9 @@ ] }, "update": { - "permissions": [] + "permissions": [ + "organizations:DescribeOrganization" + ] } }, "readOnlyProperties": [ diff --git a/server/schema/resources/aws-rds-dbcluster.json b/server/schema/resources/aws-rds-dbcluster.json index d0b957aa..1f010f9e 100644 --- a/server/schema/resources/aws-rds-dbcluster.json +++ b/server/schema/resources/aws-rds-dbcluster.json @@ -501,7 +501,6 @@ "/properties/Endpoint", "/properties/Endpoint/Address", "/properties/Endpoint/Port", - "/properties/ReadEndpoint/Port", "/properties/ReadEndpoint/Address", "/properties/MasterUserSecret/SecretArn", "/properties/StorageThroughput" @@ -606,6 +605,17 @@ ] } }, + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": true, + "tagProperty": "/properties/Tags", + "permissions": [ + "rds:AddTagsToResource", + "rds:RemoveTagsFromResource" + ] + }, "attributes": { "Endpoint": { "$ref": "#/definitions/Endpoint", diff --git a/server/schema/resources/aws-sagemaker-mlflowtrackingserver.json b/server/schema/resources/aws-sagemaker-mlflowtrackingserver.json new file mode 100644 index 00000000..fe52db96 --- /dev/null +++ b/server/schema/resources/aws-sagemaker-mlflowtrackingserver.json @@ -0,0 +1,173 @@ +{ + "typeName": "AWS::SageMaker::MlflowTrackingServer", + "description": "Resource Type definition for AWS::SageMaker::MlflowTrackingServer", + "additionalProperties": false, + "properties": { + "TrackingServerName": { + "type": "string", + "description": "The name of the MLFlow Tracking Server.", + "minLength": 1, + "maxLength": 256, + "markdownDescription": "The name of the MLFlow Tracking Server.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 256 \nPattern: ^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,255}$ \nUpdate requires: Replacement" + }, + "TrackingServerSize": { + "type": "string", + "description": "The size of the MLFlow Tracking Server.", + "enum": [ + "Small", + "Medium", + "Large" + ], + "markdownDescription": "The size of the MLFlow Tracking Server.\n\n---\n\nRequired: No \nType: String \nAllowed Values: Small | Medium | Large \nUpdate requires: No interruption" + }, + "MlflowVersion": { + "type": "string", + "description": "The MLFlow Version used on the MLFlow Tracking Server.", + "minLength": 1, + "maxLength": 32, + "markdownDescription": "The MLFlow Version used on the MLFlow Tracking Server.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 32 \nPattern: ^\\d+(\\.\\d+)+$ \nUpdate requires: Some interruptions" + }, + "RoleArn": { + "type": "string", + "description": "The Amazon Resource Name (ARN) of an IAM role that enables Amazon SageMaker to perform tasks on behalf of the customer.", + "minLength": 20, + "maxLength": 2048, + "markdownDescription": "The Amazon Resource Name (ARN) of an IAM role that enables Amazon SageMaker to perform tasks on behalf of the customer.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nPattern: ^arn:aws[a-z\\-]*:iam::\\d{12}:role\\/?[a-zA-Z_0-9+=,.@\\-_\\/]+$ \nUpdate requires: Some interruptions" + }, + "ArtifactStoreUri": { + "type": "string", + "description": "The Amazon S3 URI for MLFlow Tracking Server artifacts.", + "minLength": 1, + "maxLength": 2048, + "markdownDescription": "The Amazon S3 URI for MLFlow Tracking Server artifacts.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nPattern: ^s3:\\/\\/([^\\/]+)\\/?(.*)$ \nUpdate requires: No interruption" + }, + "AutomaticModelRegistration": { + "type": "boolean", + "description": "A flag to enable Automatic SageMaker Model Registration.", + "markdownDescription": "A flag to enable Automatic SageMaker Model Registration.\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption" + }, + "WeeklyMaintenanceWindowStart": { + "type": "string", + "description": "The start of the time window for maintenance of the MLFlow Tracking Server in UTC time.", + "maxLength": 9, + "markdownDescription": "The start of the time window for maintenance of the MLFlow Tracking Server in UTC time.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 9 \nPattern: ^(Mon|Tue|Wed|Thu|Fri|Sat|Sun):([01]\\d|2[0-3]):([0-5]\\d)$ \nUpdate requires: No interruption" + }, + "Tags": { + "type": "array", + "minItems": 1, + "maxItems": 50, + "description": "An array of key-value pairs to apply to this resource.", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "markdownDescription": "An array of key-value pairs to apply to this resource.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption" + } + }, + "definitions": { + "Tag": { + "type": "object", + "additionalProperties": false, + "description": "A key-value pair to associate with a resource.", + "properties": { + "Value": { + "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 -. ", + "maxLength": 256, + "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 \nMaximum Length: 256 \nUpdate requires: No interruption" + }, + "Key": { + "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": 128, + "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: 128 \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" + } + }, + "required": [ + "TrackingServerName", + "ArtifactStoreUri", + "RoleArn" + ], + "conditionalCreateOnlyProperties": [ + "/properties/MlflowVersion", + "/properties/RoleArn" + ], + "createOnlyProperties": [ + "/properties/TrackingServerName" + ], + "primaryIdentifier": [ + "/properties/TrackingServerName" + ], + "readOnlyProperties": [ + "/properties/TrackingServerArn" + ], + "tagging": { + "taggable": true, + "tagOnCreate": true, + "tagUpdatable": true, + "cloudFormationSystemTags": false, + "tagProperty": "/properties/Tags", + "permissions": [ + "sagemaker:AddTags", + "sagemaker:ListTags", + "sagemaker:DeleteTags" + ] + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateMlflowTrackingServer", + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:AddTags", + "sagemaker:ListTags", + "iam:PassRole" + ], + "timeoutInMinutes": 65 + }, + "read": { + "permissions": [ + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:ListTags" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateMlflowTrackingServer", + "sagemaker:DescribeMlflowTrackingServer", + "sagemaker:ListTags", + "sagemaker:AddTags", + "sagemaker:DeleteTags", + "iam:PassRole" + ], + "timeoutInMinutes": 65 + }, + "delete": { + "permissions": [ + "sagemaker:DeleteMlflowTrackingServer", + "sagemaker:DescribeMlflowTrackingServer" + ], + "timeoutInMinutes": 65 + }, + "list": { + "permissions": [ + "sagemaker:ListMlflowTrackingServers" + ] + } + }, + "attributes": { + "TrackingServerArn": { + "description": "The Amazon Resource Name (ARN) of the MLFlow Tracking Server.", + "type": "string", + "maxLength": 2048, + "markdownDescription": "The Amazon Resource Name (ARN) of the MLFlow Tracking Server.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 2048 \nPattern: ^arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:mlflow-tracking-server/.*$ \nUpdate requires: No interruption" + } + } +} \ No newline at end of file diff --git a/server/schema/resources/aws-shield-protectiongroup.json b/server/schema/resources/aws-shield-protectiongroup.json index b6dbeef9..ffe8b1d4 100644 --- a/server/schema/resources/aws-shield-protectiongroup.json +++ b/server/schema/resources/aws-shield-protectiongroup.json @@ -15,7 +15,12 @@ "tagging": { "taggable": true, "tagProperty": "/properties/Tags", - "cloudFormationSystemTags": false + "cloudFormationSystemTags": false, + "permissions": [ + "shield:ListTagsForResource", + "shield:UntagResource", + "shield:TagResource" + ] }, "additionalProperties": false, "required": [