Skip to content

Commit

Permalink
CloudFormation Template Schema upgrade (#374)
Browse files Browse the repository at this point in the history
  • Loading branch information
3 people authored Mar 21, 2024
1 parent 3876337 commit 5c2cdca
Show file tree
Hide file tree
Showing 188 changed files with 20,995 additions and 14,532 deletions.
16,014 changes: 8,127 additions & 7,887 deletions server/schema/resources.schema.json

Large diffs are not rendered by default.

288 changes: 184 additions & 104 deletions server/schema/resources/aws-acmpca-certificate.json

Large diffs are not rendered by default.

53 changes: 53 additions & 0 deletions server/schema/resources/aws-amplify-domain.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,21 @@
"maxLength": 1000,
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1000 \nPattern: ^$|^arn:.+:iam::\\d{12}:role.+ \nUpdate requires: No interruption"
},
"Certificate": {
"$ref": "#/definitions/Certificate"
},
"CertificateSettings": {
"$ref": "#/definitions/CertificateSettings"
},
"DomainName": {
"type": "string",
"maxLength": 255,
"markdownDescription": "\n\n---\n\nRequired: Yes \nType: String \nMaximum Length: 255 \nPattern: ^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])(\\.)?$ \nUpdate requires: Replacement"
},
"UpdateStatus": {
"type": "string",
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption"
},
"EnableAutoSubDomain": {
"type": "boolean",
"markdownDescription": "\n\n---\n\nRequired: No \nType: Boolean \nUpdate requires: No interruption"
Expand All @@ -45,6 +55,49 @@
}
},
"definitions": {
"CertificateSettings": {
"type": "object",
"additionalProperties": false,
"properties": {
"CertificateType": {
"type": "string",
"enum": [
"AMPLIFY_MANAGED",
"CUSTOM"
],
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: AMPLIFY_MANAGED | CUSTOM \nUpdate requires: No interruption"
},
"CustomCertificateArn": {
"type": "string",
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: ^arn:aws:acm:[a-z0-9-]+:\\d{12}:certificate\\/.+$ \nUpdate requires: No interruption"
}
},
"markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption"
},
"Certificate": {
"type": "object",
"additionalProperties": false,
"properties": {
"CertificateType": {
"type": "string",
"enum": [
"AMPLIFY_MANAGED",
"CUSTOM"
],
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nAllowed Values: AMPLIFY_MANAGED | CUSTOM \nUpdate requires: No interruption"
},
"CertificateArn": {
"type": "string",
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nPattern: \"^arn:aws:acm:[a-z0-9-]+:\\d{12}:certificate\\/.+$\" \nUpdate requires: No interruption"
},
"CertificateVerificationDNSRecord": {
"type": "string",
"maxLength": 1000,
"markdownDescription": "\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1000 \nUpdate requires: No interruption"
}
},
"markdownDescription": "\n\n---\n\nRequired: No \nUpdate requires: No interruption"
},
"SubDomainSetting": {
"type": "object",
"additionalProperties": false,
Expand Down
212 changes: 106 additions & 106 deletions server/schema/resources/aws-appconfig-configurationprofile.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,88 @@
{
"sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig",
"tagging": {
"taggable": true,
"tagOnCreate": true,
"tagUpdatable": true,
"tagProperty": "/properties/Tags",
"cloudFormationSystemTags": true
},
"handlers": {
"read": {
"permissions": [
"appconfig:GetConfigurationProfile",
"appconfig:ListTagsForResource"
]
},
"create": {
"permissions": [
"appconfig:CreateConfigurationProfile",
"appconfig:GetConfigurationProfile",
"appconfig:TagResource",
"appconfig:ListTagsForResource",
"iam:PassRole"
]
},
"update": {
"permissions": [
"appconfig:UpdateConfigurationProfile",
"appconfig:TagResource",
"appconfig:UntagResource",
"iam:PassRole"
]
},
"list": {
"permissions": [
"appconfig:ListConfigurationProfiles"
],
"handlerSchema": {
"properties": {
"ApplicationId": {
"$ref": "resource-schema.json#/properties/ApplicationId"
}
},
"required": [
"ApplicationId"
]
}
},
"delete": {
"permissions": [
"appconfig:DeleteConfigurationProfile"
]
}
},
"typeName": "AWS::AppConfig::ConfigurationProfile",
"readOnlyProperties": [
"/properties/ConfigurationProfileId",
"/properties/KmsKeyArn"
],
"description": "An example resource schema demonstrating some basic constructs and validation rules.",
"sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig",
"createOnlyProperties": [
"/properties/LocationUri",
"/properties/Type",
"/properties/ApplicationId"
],
"additionalProperties": false,
"primaryIdentifier": [
"/properties/ApplicationId",
"/properties/ConfigurationProfileId"
],
"definitions": {
"Validators": {
"description": "A list of methods for validating the configuration.",
"type": "object",
"additionalProperties": false,
"type": "object",
"properties": {
"Type": {
"type": "string",
"description": "AWS AppConfig supports validators of type JSON_SCHEMA and LAMBDA.",
"type": "string",
"markdownDescription": "AWS AppConfig supports validators of type JSON_SCHEMA and LAMBDA.\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption"
},
"Content": {
"type": "string",
"description": "Either the JSON Schema content or the Amazon Resource Name (ARN) of an Lambda function.",
"minLength": 0,
"description": "Either the JSON Schema content or the Amazon Resource Name (ARN) of an Lambda function.",
"type": "string",
"maxLength": 32768,
"markdownDescription": "Either the JSON Schema content or the Amazon Resource Name (ARN) of an Lambda function.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 32768 \nUpdate requires: No interruption"
}
Expand All @@ -25,174 +91,108 @@
},
"Tags": {
"description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.",
"additionalProperties": false,
"type": "object",
"properties": {
"Key": {
"type": "string",
"description": "The key-value string map. The tag key can be up to 128 characters and must not start with aws:.",
"minLength": 1,
"maxLength": 128,
"markdownDescription": "The key-value string map. The tag key can be up to 128 characters and must not start with aws:.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^(?!aws:.)[a-zA-Z0-9 +=._:/-]*$ \nUpdate requires: No interruption"
},
"Value": {
"type": "string",
"description": "The tag value can be up to 256 characters.",
"minLength": 0,
"description": "The tag value can be up to 256 characters.",
"type": "string",
"maxLength": 256,
"markdownDescription": "The tag value can be up to 256 characters.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 256 \nUpdate requires: No interruption"
},
"Key": {
"minLength": 1,
"description": "The key-value string map. The tag key can be up to 128 characters and must not start with aws:.",
"type": "string",
"maxLength": 128,
"markdownDescription": "The key-value string map. The tag key can be up to 128 characters and must not start with aws:.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nPattern: ^(?!aws:.)[a-zA-Z0-9 +=._:/-]*$ \nUpdate requires: No interruption"
}
},
"additionalProperties": false,
"markdownDescription": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.\n\n---\n\nRequired: No \nUpdate requires: No interruption"
}
},
"properties": {
"LocationUri": {
"type": "string",
"description": "A URI to locate the configuration. You can specify the AWS AppConfig hosted configuration store, Systems Manager (SSM) document, an SSM Parameter Store parameter, or an Amazon S3 object.",
"minLength": 1,
"description": "A URI to locate the configuration. You can specify the AWS AppConfig hosted configuration store, Systems Manager (SSM) document, an SSM Parameter Store parameter, or an Amazon S3 object.",
"type": "string",
"maxLength": 2048,
"markdownDescription": "A URI to locate the configuration. You can specify the AWS AppConfig hosted configuration store, Systems Manager (SSM) document, an SSM Parameter Store parameter, or an Amazon S3 object.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 2048 \nUpdate requires: Replacement"
},
"Type": {
"type": "string",
"description": "The type of configurations contained in the profile. When calling this API, enter one of the following values for Type: AWS.AppConfig.FeatureFlags, AWS.Freeform",
"type": "string",
"markdownDescription": "The type of configurations contained in the profile. When calling this API, enter one of the following values for Type: AWS.AppConfig.FeatureFlags, AWS.Freeform\n\n---\n\nRequired: No \nType: String \nPattern: ^[a-zA-Z\\.]+ \nUpdate requires: Replacement"
},
"Description": {
"KmsKeyIdentifier": {
"description": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.",
"type": "string",
"description": "A description of the configuration profile.",
"markdownDescription": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.\n\n---\n\nRequired: No \nType: String \nPattern: ^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}|alias/[a-zA-Z0-9/_-]{1,250}|arn:aws[a-zA-Z-]*:kms:[a-z]{2}(-gov|-iso(b?))?-[a-z]+-\\d{1}:\\d{12}:(key/[0-9a-f-]{36}|alias/[a-zA-Z0-9/_-]{1,250})$ \nUpdate requires: No interruption"
},
"Description": {
"minLength": 0,
"description": "A description of the configuration profile.",
"type": "string",
"maxLength": 1024,
"markdownDescription": "A description of the configuration profile.\n\n---\n\nRequired: No \nType: String \nMaximum Length: 1024 \nUpdate requires: No interruption"
},
"Validators": {
"type": "array",
"description": "A list of methods for validating the configuration.",
"maxItems": 2,
"uniqueItems": false,
"description": "A list of methods for validating the configuration.",
"insertionOrder": false,
"type": "array",
"items": {
"$ref": "#/definitions/Validators"
},
"insertionOrder": false,
"maxItems": 2,
"markdownDescription": "A list of methods for validating the configuration.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption"
},
"RetrievalRoleArn": {
"type": "string",
"description": "The ARN of an IAM role with permission to access the configuration at the specified LocationUri.",
"minLength": 20,
"description": "The ARN of an IAM role with permission to access the configuration at the specified LocationUri.",
"type": "string",
"maxLength": 2048,
"markdownDescription": "The ARN of an IAM role with permission to access the configuration at the specified LocationUri.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nPattern: ^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$ \nUpdate requires: No interruption"
},
"ApplicationId": {
"type": "string",
"description": "The application ID.",
"type": "string",
"markdownDescription": "The application ID.\n\n---\n\nRequired: Yes \nType: String \nPattern: [a-z0-9]{4,7} \nUpdate requires: Replacement"
},
"Tags": {
"type": "array",
"description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.",
"uniqueItems": false,
"description": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.",
"insertionOrder": false,
"type": "array",
"items": {
"$ref": "#/definitions/Tags"
},
"insertionOrder": false,
"markdownDescription": "Metadata to assign to the configuration profile. Tags help organize and categorize your AWS AppConfig resources. Each tag consists of a key and an optional value, both of which you define.\n\n---\n\nRequired: No \nType: Array \nUpdate requires: No interruption"
},
"Name": {
"type": "string",
"description": "A name for the configuration profile.",
"minLength": 1,
"description": "A name for the configuration profile.",
"type": "string",
"maxLength": 128,
"markdownDescription": "A name for the configuration profile.\n\n---\n\nRequired: Yes \nType: String \nMinimum Length: 1 \nMaximum Length: 128 \nUpdate requires: No interruption"
},
"KmsKeyIdentifier": {
"type": "string",
"description": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.",
"markdownDescription": "The AWS Key Management Service key identifier (key ID, key alias, or key ARN) provided when the resource was created or updated.\n\n---\n\nRequired: No \nType: String \nPattern: ^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}|alias/[a-zA-Z0-9/_-]{1,250}|arn:aws[a-zA-Z-]*:kms:[a-z]{2}(-gov|-iso(b?))?-[a-z]+-\\d{1}:\\d{12}:(key/[0-9a-f-]{36}|alias/[a-zA-Z0-9/_-]{1,250})$ \nUpdate requires: No interruption"
}
},
"additionalProperties": false,
"required": [
"LocationUri",
"ApplicationId",
"Name"
],
"createOnlyProperties": [
"/properties/LocationUri",
"/properties/Type",
"/properties/ApplicationId"
],
"primaryIdentifier": [
"/properties/ApplicationId",
"/properties/ConfigurationProfileId"
],
"readOnlyProperties": [
"/properties/ConfigurationProfileId",
"/properties/KmsKeyArn"
],
"handlers": {
"create": {
"permissions": [
"appconfig:CreateConfigurationProfile",
"appconfig:GetConfigurationProfile",
"appconfig:TagResource",
"appconfig:ListTagsForResource",
"iam:PassRole"
]
},
"read": {
"permissions": [
"appconfig:GetConfigurationProfile",
"appconfig:ListTagsForResource"
]
},
"update": {
"permissions": [
"appconfig:UpdateConfigurationProfile",
"appconfig:TagResource",
"appconfig:UntagResource",
"iam:PassRole"
]
},
"delete": {
"permissions": [
"appconfig:DeleteConfigurationProfile"
]
},
"list": {
"handlerSchema": {
"properties": {
"ApplicationId": {
"$ref": "resource-schema.json#/properties/ApplicationId"
}
},
"required": [
"ApplicationId"
]
},
"permissions": [
"appconfig:ListConfigurationProfiles"
]
}
},
"tagging": {
"taggable": true,
"tagOnCreate": true,
"tagUpdatable": true,
"cloudFormationSystemTags": true,
"tagProperty": "/properties/Tags"
},
"attributes": {
"ConfigurationProfileId": {
"type": "string",
"description": "The configuration profile ID",
"type": "string",
"markdownDescription": "The configuration profile ID\n\n---\n\nRequired: No \nType: String \nUpdate requires: No interruption"
},
"KmsKeyArn": {
"type": "string",
"description": "The Amazon Resource Name of the AWS Key Management Service key to encrypt new configuration data versions in the AWS AppConfig hosted configuration store. This attribute is only used for hosted configuration types. To encrypt data managed in other configuration stores, see the documentation for how to specify an AWS KMS key for that particular service.",
"minLength": 20,
"description": "The Amazon Resource Name of the AWS Key Management Service key to encrypt new configuration data versions in the AWS AppConfig hosted configuration store. This attribute is only used for hosted configuration types. To encrypt data managed in other configuration stores, see the documentation for how to specify an AWS KMS key for that particular service.",
"type": "string",
"maxLength": 2048,
"markdownDescription": "The Amazon Resource Name of the AWS Key Management Service key to encrypt new configuration data versions in the AWS AppConfig hosted configuration store. This attribute is only used for hosted configuration types. To encrypt data managed in other configuration stores, see the documentation for how to specify an AWS KMS key for that particular service.\n\n---\n\nRequired: No \nType: String \nMinimum Length: 20 \nMaximum Length: 2048 \nPattern: arn:(aws[a-zA-Z-]*)?:[a-z]+:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1})?:(\\d{12})?:[a-zA-Z0-9-_/:.]+ \nUpdate requires: No interruption"
}
Expand Down
Loading

0 comments on commit 5c2cdca

Please sign in to comment.