@awsless/cli 0.0.46-next.0 → 0.0.46-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/app.json CHANGED
@@ -1 +1 @@
1
- {"$ref":"#/definitions/app","definitions":{"app":{"type":"object","properties":{"$schema":{"type":"string"},"name":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"App name.","markdownDescription":"App name."},"region":{"type":"string","enum":["us-east-2","us-east-1","us-west-1","us-west-2","af-south-1","ap-east-1","ap-south-2","ap-southeast-3","ap-southeast-4","ap-south-1","ap-northeast-3","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1","eu-central-1","eu-west-1","eu-west-2","eu-south-1","eu-west-3","eu-south-2","eu-north-1","eu-central-2","me-south-1","me-central-1","sa-east-1"],"description":"The AWS region to deploy to.","markdownDescription":"The AWS region to deploy to."},"profile":{"type":"string","description":"The AWS profile to deploy to.","markdownDescription":"The AWS profile to deploy to."},"protect":{"type":"boolean","default":false,"description":"Protect your app & stacks from being deleted.\n\n@default false","markdownDescription":"Protect your app & stacks from being deleted.\n\n@default ```false```"},"removal":{"type":"string","enum":["remove","retain"],"default":"remove","description":"Configure how your resources are handled when they have to be removed.\n\nremove: Removes all underlying resources.\nretain: Retains the following resources: stores, tables, auth, searchs, and caches.\n\n@default \"remove\"","markdownDescription":"Configure how your resources are handled when they have to be removed.\n\nremove: Removes all underlying resources.\nretain: Retains the following resources: stores, tables, auth, searchs, and caches.\n\n@default ```\"remove\"```"},"defaults":{"type":"object","properties":{"onFailure":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]},{"type":"object","properties":{"consumer":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]},"notify":{"anyOf":[{"type":"string","format":"email"},{"type":"array","items":{"type":"string","format":"email"}}],"description":"Receive an email notification when consuming failure entries goes wrong.","markdownDescription":"Receive an email notification when consuming failure entries goes wrong."}},"required":["consumer"],"additionalProperties":false}],"description":"Defining a onFailure handler will add a global onFailure handler for the following resources:\n- Tasks\n- Crons\n- Queues\n- Topics\n- Pubsub\n- Table streams","markdownDescription":"Defining a onFailure handler will add a global onFailure handler for the following resources:\n- Tasks\n- Crons\n- Queues\n- Topics\n- Pubsub\n- Table streams"},"onErrorLog":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]},{"type":"object","properties":{"consumer":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]}},"required":["consumer"],"additionalProperties":false}],"description":"Define a subscription on all Lambda functions logs.","markdownDescription":"Define a subscription on all Lambda functions logs."},"auth":{"type":"object","additionalProperties":{"type":"object","properties":{"allowUserRegistration":{"type":"boolean","default":true,"description":"Specifies whether users can create an user account or if only the administrator can.","markdownDescription":"Specifies whether users can create an user account or if only the administrator can."},"groups":{"type":"array","items":{"type":"string"},"default":[],"description":"Specifies a list of groups that a user can belong to.","markdownDescription":"Specifies a list of groups that a user can belong to."},"username":{"type":"object","properties":{"caseSensitive":{"type":"boolean","default":false,"description":"Specifies whether username case sensitivity will be enabled. When usernames and email addresses are case insensitive, users can sign in as the same user when they enter a different capitalization of their user name.","markdownDescription":"Specifies whether username case sensitivity will be enabled. When usernames and email addresses are case insensitive, users can sign in as the same user when they enter a different capitalization of their user name."}},"additionalProperties":false,"default":{},"description":"The username policy.","markdownDescription":"The username policy."},"password":{"type":"object","properties":{"minLength":{"type":"integer","minimum":6,"maximum":99,"default":12,"description":"Required users to have at least the minimum password length.","markdownDescription":"Required users to have at least the minimum password length."},"uppercase":{"type":"boolean","default":true,"description":"Required users to use at least one uppercase letter in their password.","markdownDescription":"Required users to use at least one uppercase letter in their password."},"lowercase":{"type":"boolean","default":true,"description":"Required users to use at least one lowercase letter in their password.","markdownDescription":"Required users to use at least one lowercase letter in their password."},"numbers":{"type":"boolean","default":true,"description":"Required users to use at least one number in their password.","markdownDescription":"Required users to use at least one number in their password."},"symbols":{"type":"boolean","default":true,"description":"Required users to use at least one symbol in their password.","markdownDescription":"Required users to use at least one symbol in their password."},"temporaryPasswordValidity":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"7 days","description":"The duration a temporary password is valid. If the user doesn't sign in during this time, an administrator must reset their password.","markdownDescription":"The duration a temporary password is valid. If the user doesn't sign in during this time, an administrator must reset their password."}},"additionalProperties":false,"default":{},"description":"The password policy.","markdownDescription":"The password policy."},"validity":{"type":"object","properties":{"idToken":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"1 hour","description":"The ID token time limit. After this limit expires, your user can't use their ID token.","markdownDescription":"The ID token time limit. After this limit expires, your user can't use their ID token."},"accessToken":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"1 hour","description":"The access token time limit. After this limit expires, your user can't use their access token.","markdownDescription":"The access token time limit. After this limit expires, your user can't use their access token."},"refreshToken":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"365 days","description":"The refresh token time limit. After this limit expires, your user can't use their refresh token.","markdownDescription":"The refresh token time limit. After this limit expires, your user can't use their refresh token."}},"additionalProperties":false,"default":{},"description":"Specifies the validity duration for every JWT token.","markdownDescription":"Specifies the validity duration for every JWT token."}},"additionalProperties":false},"default":{},"description":"Define the authenticatable users in your app.","markdownDescription":"Define the authenticatable users in your app."},"domains":{"type":"object","additionalProperties":{"type":"object","properties":{"domain":{"type":"string","pattern":"[a-z\\-\\_\\.]","description":"Define the domain name","markdownDescription":"Define the domain name"},"dns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"[a-z\\-\\_\\.]","description":"Enter a fully qualified domain name, for example, www.example.com. You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical.","markdownDescription":"Enter a fully qualified domain name, for example, www.example.com. You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical."},"type":{"type":"string","enum":["A","AAAA","CAA","CNAME","DS","MX","NAPTR","NS","PTR","SOA","SPF","SRV","TXT"],"description":"The DNS record type.","markdownDescription":"The DNS record type."},"ttl":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The resource record cache time to live (TTL).","markdownDescription":"The resource record cache time to live (TTL)."},"records":{"type":"array","items":{"type":"string"},"description":"One or more values that correspond with the value that you specified for the Type property.","markdownDescription":"One or more values that correspond with the value that you specified for the Type property."}},"required":["type","ttl","records"],"additionalProperties":false},"description":"Define the domain dns records","markdownDescription":"Define the domain dns records"}},"required":["domain"],"additionalProperties":false},"description":"Define the domains for your application.","markdownDescription":"Define the domains for your application."},"function":{"type":"object","properties":{"runtime":{"anyOf":[{"anyOf":[{"type":"string","enum":["nodejs18.x","nodejs20.x","nodejs22.x","nodejs24.x"]},{"type":"string","const":"container"}]},{"type":"string"}],"description":"The identifier of the function's runtime.","markdownDescription":"The identifier of the function's runtime.","default":"nodejs24.x"},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function.","default":"index.default"},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},"format":{"type":"string","enum":["text","json"],"description":"The format in which Lambda sends your function's application and system logs to CloudWatch. Select between plain text and structured JSON.","markdownDescription":"The format in which Lambda sends your function's application and system logs to CloudWatch. Select between plain text and structured JSON."},"system":{"type":"string","enum":["debug","info","warn"],"description":"Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where DEBUG is the highest level and WARN is the lowest.","markdownDescription":"Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where DEBUG is the highest level and WARN is the lowest."},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"],"description":"Set this property to filter the application logs for your function that Lambda sends to CloudWatch. Lambda only sends application logs at the selected level of detail and lower, where TRACE is the highest level and FATAL is the lowest.","markdownDescription":"Set this property to filter the application logs for your function that Lambda sends to CloudWatch. Lambda only sends application logs at the selected level of detail and lower, where TRACE is the highest level and FATAL is the lowest."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true},"timeout":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The amount of time that Lambda allows a function to run before stopping it. You can specify a size value from 1 second to 15 minutes.","markdownDescription":"The amount of time that Lambda allows a function to run before stopping it. You can specify a size value from 1 second to 15 minutes.","default":"15 minutes"},"memorySize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"The amount of memory available to the function at runtime. Increasing the function memory also increases its CPU allocation. The value can be any multiple of 1 MB. You can specify a size value from 128 MB to 10 GB.","markdownDescription":"The amount of memory available to the function at runtime. Increasing the function memory also increases its CPU allocation. The value can be any multiple of 1 MB. You can specify a size value from 128 MB to 10 GB.","default":"1024 MB"},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the function supports.","markdownDescription":"The instruction set architecture that the function supports.","default":"arm64"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variable key-value pairs.","markdownDescription":"Environment variable key-value pairs."},"permissions":{"anyOf":[{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false},{"type":"array","items":{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false}}],"description":"Add IAM permissions to your function.","markdownDescription":"Add IAM permissions to your function."}},"additionalProperties":false,"default":{}},"instance":{"type":"object","properties":{"image":{"type":"string","description":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}","markdownDescription":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}"},"cpu":{"type":"number","enum":[0.25,0.5,1,2,4,8,16],"description":"The number of virtual CPU units (vCPU) used by the instance. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","markdownDescription":"The number of virtual CPU units (vCPU) used by the instance. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","default":0.25},"memorySize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"The amount of memory (in MiB) used by the instance. Valid memory values depend on the CPU configuration.","markdownDescription":"The amount of memory (in MiB) used by the instance. Valid memory values depend on the CPU configuration.","default":"512 MB"},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the instance supports.","markdownDescription":"The instruction set architecture that the instance supports.","default":"arm64"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variable key-value pairs.","markdownDescription":"Environment variable key-value pairs."},"permissions":{"anyOf":[{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false},{"type":"array","items":{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false}}],"description":"Add IAM permissions to your instance.","markdownDescription":"Add IAM permissions to your instance."},"healthCheck":{"type":"object","properties":{"path":{"type":"string","description":"The path that the container runs to determine if it is healthy.","markdownDescription":"The path that the container runs to determine if it is healthy."},"interval":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The time period in seconds between each health check execution.","markdownDescription":"The time period in seconds between each health check execution."},"retries":{"type":"integer","minimum":1,"maximum":10,"description":"The number of times to retry a failed health check before the container is considered unhealthy.","markdownDescription":"The number of times to retry a failed health check before the container is considered unhealthy."},"startPeriod":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The optional grace period to provide containers time to bootstrap before failed health checks count towards the maximum number of retries.","markdownDescription":"The optional grace period to provide containers time to bootstrap before failed health checks count towards the maximum number of retries."},"timeout":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The time period in seconds to wait for a health check to succeed before it is considered a failure.","markdownDescription":"The time period in seconds to wait for a health check to succeed before it is considered a failure."}},"required":["path","interval","retries","startPeriod","timeout"],"additionalProperties":false,"description":"The health check command and associated configuration parameters for the container.","markdownDescription":"The health check command and associated configuration parameters for the container."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true}},"additionalProperties":false,"default":{}},"job":{"type":"object","properties":{"image":{"type":"string","description":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}","markdownDescription":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}"},"persistentStorage":{"type":"boolean","description":"Mount persistent storage for the job at a fixed internal path.","markdownDescription":"Mount persistent storage for the job at a fixed internal path."},"cpu":{"type":"number","enum":[0.25,0.5,1,2,4,8,16],"description":"The number of virtual CPU units (vCPU) used by the job. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","markdownDescription":"The number of virtual CPU units (vCPU) used by the job. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","default":0.25},"memorySize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"The amount of memory (in MiB) used by the job. Valid memory values depend on the CPU configuration.","markdownDescription":"The amount of memory (in MiB) used by the job. Valid memory values depend on the CPU configuration.","default":"512 MB"},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the job supports.","markdownDescription":"The instruction set architecture that the job supports.","default":"arm64"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variable key-value pairs.","markdownDescription":"Environment variable key-value pairs."},"permissions":{"anyOf":[{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false},{"type":"array","items":{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false}}],"description":"Add IAM permissions to your job.","markdownDescription":"Add IAM permissions to your job."},"timeout":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The maximum time the job is allowed to run before being stopped.","markdownDescription":"The maximum time the job is allowed to run before being stopped."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true}},"additionalProperties":false,"default":{}},"queue":{"type":"object","properties":{"retentionPeriod":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The number of seconds that Amazon SQS retains a message. You can specify a duration from 1 minute to 14 days.","markdownDescription":"The number of seconds that Amazon SQS retains a message. You can specify a duration from 1 minute to 14 days.","default":"7 days"},"receiveMessageWaitTime":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"Long-polling wait time. You can specify a duration from 1 to 20 seconds.","markdownDescription":"Long-polling wait time. You can specify a duration from 1 to 20 seconds."},"maxMessageSize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"Message size limit. You can specify a size from 1 KB to 256 KB.","markdownDescription":"Message size limit. You can specify a size from 1 KB to 256 KB.","default":"256 KB"},"batchSize":{"type":"integer","minimum":1,"maximum":10,"description":"The maximum number of records per batch. FIFO queues are capped at 10.","markdownDescription":"The maximum number of records per batch. FIFO queues are capped at 10.","default":10}},"additionalProperties":false,"default":{}},"rest":{"type":"object","additionalProperties":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The domain id to link your API with.","markdownDescription":"The domain id to link your API with."},"subDomain":{"type":"string"}},"additionalProperties":false},"description":"Define your global REST API's.","markdownDescription":"Define your global REST API's."},"rpc":{"type":"object","additionalProperties":{"type":"object","properties":{"router":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The router id to link your RPC API with.","markdownDescription":"The router id to link your RPC API with."},"path":{"type":"string","pattern":"^\\/","description":"The path inside the router to link your RPC API to.","markdownDescription":"The path inside the router to link your RPC API to."},"auth":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}],"description":"The authentication handler for your RPC API.","markdownDescription":"The authentication handler for your RPC API."}},"required":["router","path"],"additionalProperties":false},"description":"Define the global RPC API's.","markdownDescription":"Define the global RPC API's."},"pubsub":{"type":"object","additionalProperties":{"type":"object","properties":{"auth":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}],"description":"The authorizer that validates the client auth token and returns the allowed topics.","markdownDescription":"The authorizer that validates the client auth token and returns the allowed topics."},"router":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The router id to route pubsub traffic through.","markdownDescription":"The router id to route pubsub traffic through."},"path":{"type":"string","pattern":"^\\/","default":"/ws","description":"The base path on the router that exposes the pubsub endpoint.","markdownDescription":"The base path on the router that exposes the pubsub endpoint."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true}},"required":["auth","router"],"additionalProperties":false},"description":"Define the pubsub API for your app. Backed by a websocket server on AWS Fargate.","markdownDescription":"Define the pubsub API for your app. Backed by a websocket server on AWS Fargate."},"alerts":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","format":"email"},{"type":"array","items":{"type":"string","format":"email"}}]},"description":"Define the alerts in your app. Alerts are a way to send messages to one or more email addresses.","markdownDescription":"Define the alerts in your app. Alerts are a way to send messages to one or more email addresses."},"topics":{"type":"array","items":{"type":"string","minLength":3,"maxLength":256,"pattern":"^[a-z0-9\\-]+$","description":"Define event topic name.","markdownDescription":"Define event topic name."},"description":"Define the event topics for your app.","markdownDescription":"Define the event topics for your app."},"layers":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},"runtimes":{"type":"array","items":{"type":"string","enum":["nodejs18.x","nodejs20.x","nodejs22.x"],"description":"The identifier of the function's runtime.","markdownDescription":"The identifier of the function's runtime."}},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the function supports.","markdownDescription":"The instruction set architecture that the function supports."},"packages":{"type":"array","items":{"type":"string"},"description":"Define the package names that are available bundled in the layer. Those packages are not bundled while bundling the lambda.","markdownDescription":"Define the package names that are available bundled in the layer. Those packages are not bundled while bundling the lambda."}},"required":["file"],"additionalProperties":false}]},"description":"Define the lambda layers in your stack.","markdownDescription":"Define the lambda layers in your stack."},"router":{"type":"object","additionalProperties":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The domain id to link your Router.","markdownDescription":"The domain id to link your Router."},"subDomain":{"type":"string"},"waf":{"type":"object","properties":{"rateLimiter":{"type":"object","properties":{"limit":{"type":"number","minimum":10,"maximum":2000000000,"default":10,"description":"The limit on requests during the specified evaluation window for a single aggregation instance for the rate-based rule.","markdownDescription":"The limit on requests during the specified evaluation window for a single aggregation instance for the rate-based rule."},"window":{"type":"string","enum":["1 minute","2 minutes","5 minutes","10 minutes"],"default":"5 minutes","description":"The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time.","markdownDescription":"The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time."},"visibility":{"type":"boolean","default":false,"description":"Whether to enable CloudWatch metrics for the WAF rule.","markdownDescription":"Whether to enable CloudWatch metrics for the WAF rule."}},"additionalProperties":false,"description":"A rate-based rule counts incoming requests and rate limits requests when they are coming at too fast a rate.","markdownDescription":"A rate-based rule counts incoming requests and rate limits requests when they are coming at too fast a rate."},"ddosProtection":{"type":"object","properties":{"sensitivity":{"type":"object","properties":{"challenge":{"type":"string","enum":["low","medium","high"],"default":"low","description":"The sensitivity level for challenge requests.","markdownDescription":"The sensitivity level for challenge requests."},"block":{"type":"string","enum":["low","medium","high"],"default":"low","description":"The sensitivity level for block requests.","markdownDescription":"The sensitivity level for block requests."}},"additionalProperties":false},"exemptUriRegex":{"type":"string","default":"^$"},"visibility":{"type":"boolean","default":false,"description":"Whether to enable CloudWatch metrics for the WAF rule.","markdownDescription":"Whether to enable CloudWatch metrics for the WAF rule."}},"required":["sensitivity"],"additionalProperties":false,"description":"Provides protection against DDoS attacks targeting the application layer, also known as Layer 7 attacks. Uses 50 WCU.","markdownDescription":"Provides protection against DDoS attacks targeting the application layer, also known as Layer 7 attacks. Uses 50 WCU."},"botProtection":{"type":"object","properties":{"inspectionLevel":{"type":"string","enum":["common","targeted"],"default":"common"},"visibility":{"type":"boolean","default":false,"description":"Whether to enable CloudWatch metrics for the WAF rule.","markdownDescription":"Whether to enable CloudWatch metrics for the WAF rule."}},"additionalProperties":false,"description":"Provides protection against automated bots that can consume excess resources, skew business metrics, cause downtime, or perform malicious activities. Bot Control provides additional visibility through Amazon CloudWatch and generates labels that you can use to control bot traffic to your applications. Uses 50 WCU.","markdownDescription":"Provides protection against automated bots that can consume excess resources, skew business metrics, cause downtime, or perform malicious activities. Bot Control provides additional visibility through Amazon CloudWatch and generates labels that you can use to control bot traffic to your applications. Uses 50 WCU."},"captchaImmunityTime":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"5 minutes","description":"The amount of time that a CAPTCHA timestamp is considered valid by AWS WAF. The default setting is 5 minutes.","markdownDescription":"The amount of time that a CAPTCHA timestamp is considered valid by AWS WAF. The default setting is 5 minutes."},"challengeImmunityTime":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"5 minutes","description":"The amount of time that a challenge timestamp is considered valid by AWS WAF. The default setting is 5 minutes.","markdownDescription":"The amount of time that a challenge timestamp is considered valid by AWS WAF. The default setting is 5 minutes."}},"additionalProperties":false,"description":"WAF settings for the router. Each rule consumes Web ACL capacity units (WCUs). The total WCUs for a web ACL can't exceed 5000. Using over 1500 WCUs affects your costs.","markdownDescription":"WAF settings for the router. Each rule consumes Web ACL capacity units (WCUs). The total WCUs for a web ACL can't exceed 5000. Using over 1500 WCUs affects your costs."},"geoRestrictions":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2},"default":[],"description":"Specifies a blacklist of countries that should be blocked.","markdownDescription":"Specifies a blacklist of countries that should be blocked."},"errors":{"type":"object","properties":{"400":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `400 Bad Request` response.","markdownDescription":"Customize a `400 Bad Request` response."},"403":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `403 Forbidden` response.","markdownDescription":"Customize a `403 Forbidden` response."},"404":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `404 Not Found` response.","markdownDescription":"Customize a `404 Not Found` response."},"405":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `405 Method Not Allowed` response.","markdownDescription":"Customize a `405 Method Not Allowed` response."},"414":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `414 Request-URI` response.","markdownDescription":"Customize a `414 Request-URI` response."},"416":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `416 Range Not` response.","markdownDescription":"Customize a `416 Range Not` response."},"500":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `500 Internal Server` response.","markdownDescription":"Customize a `500 Internal Server` response."},"501":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `501 Not Implemented` response.","markdownDescription":"Customize a `501 Not Implemented` response."},"502":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `502 Bad Gateway` response.","markdownDescription":"Customize a `502 Bad Gateway` response."},"503":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `503 Service Unavailable` response.","markdownDescription":"Customize a `503 Service Unavailable` response."},"504":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `504 Gateway Timeout` response.","markdownDescription":"Customize a `504 Gateway Timeout` response."}},"additionalProperties":false,"description":"Customize the error responses for specific HTTP status codes.","markdownDescription":"Customize the error responses for specific HTTP status codes."},"cors":{"type":"object","properties":{"override":{"type":"boolean","default":false},"maxAge":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"365 days"},"exposeHeaders":{"type":"array","items":{"type":"string"}},"credentials":{"type":"boolean","default":false},"headers":{"type":"array","items":{"type":"string"},"default":["*"]},"origins":{"type":"array","items":{"type":"string"},"default":["*"]},"methods":{"type":"array","items":{"type":"string","enum":["GET","DELETE","HEAD","OPTIONS","PATCH","POST","PUT","ALL"]},"default":["ALL"]}},"additionalProperties":false,"description":"Specify the cors headers.","markdownDescription":"Specify the cors headers."},"passwordAuth":{"type":"object","properties":{"password":{"type":"string","description":"Password.","markdownDescription":"Password."}},"required":["password"],"additionalProperties":false,"description":"Enable password authentication for the router.\nYou can authenicate by adding a \"authorization\" header with the value \"Password [YOUR_PASSWORD]\".","markdownDescription":"Enable password authentication for the router.\nYou can authenicate by adding a \"authorization\" header with the value \"Password [YOUR_PASSWORD]\"."},"basicAuth":{"type":"object","properties":{"username":{"type":"string","description":"Basic auth username.","markdownDescription":"Basic auth username."},"password":{"type":"string","description":"Basic auth password.","markdownDescription":"Basic auth password."}},"required":["username","password"],"additionalProperties":false,"description":"Enable basic authentication for the router.","markdownDescription":"Enable basic authentication for the router."},"cache":{"type":"object","properties":{"cookies":{"type":"array","items":{"type":"string"},"description":"Specifies the cookies that CloudFront includes in the cache key.","markdownDescription":"Specifies the cookies that CloudFront includes in the cache key."},"headers":{"type":"array","items":{"type":"string"},"description":"Specifies the headers that CloudFront includes in the cache key.","markdownDescription":"Specifies the headers that CloudFront includes in the cache key."},"queries":{"type":"array","items":{"type":"string"},"description":"Specifies the query values that CloudFront includes in the cache key.","markdownDescription":"Specifies the query values that CloudFront includes in the cache key."}},"additionalProperties":false,"description":"Specifies the cookies, headers, and query values that CloudFront includes in the cache key.","markdownDescription":"Specifies the cookies, headers, and query values that CloudFront includes in the cache key."}},"additionalProperties":false},"description":"Define the global Router. Backed by AWS CloudFront.","markdownDescription":"Define the global Router. Backed by AWS CloudFront."}},"additionalProperties":false,"default":{},"description":"Default properties\n\n@default {}","markdownDescription":"Default properties\n\n@default ```{}```"}},"required":["name","region","profile"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#","title":"Awsless App Config"}
1
+ {"$ref":"#/definitions/app","definitions":{"app":{"type":"object","properties":{"$schema":{"type":"string"},"name":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"App name.","markdownDescription":"App name."},"region":{"type":"string","enum":["us-east-2","us-east-1","us-west-1","us-west-2","af-south-1","ap-east-1","ap-south-2","ap-southeast-3","ap-southeast-4","ap-south-1","ap-northeast-3","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1","eu-central-1","eu-west-1","eu-west-2","eu-south-1","eu-west-3","eu-south-2","eu-north-1","eu-central-2","me-south-1","me-central-1","sa-east-1"],"description":"The AWS region to deploy to.","markdownDescription":"The AWS region to deploy to."},"profile":{"type":"string","description":"The AWS profile to deploy to.","markdownDescription":"The AWS profile to deploy to."},"protect":{"type":"boolean","default":false,"description":"Protect your app & stacks from being deleted.\n\n@default false","markdownDescription":"Protect your app & stacks from being deleted.\n\n@default ```false```"},"removal":{"type":"string","enum":["remove","retain"],"default":"remove","description":"Configure how your resources are handled when they have to be removed.\n\nremove: Removes all underlying resources.\nretain: Retains the following resources: stores, tables, auth, searchs, and caches.\n\n@default \"remove\"","markdownDescription":"Configure how your resources are handled when they have to be removed.\n\nremove: Removes all underlying resources.\nretain: Retains the following resources: stores, tables, auth, searchs, and caches.\n\n@default ```\"remove\"```"},"defaults":{"type":"object","properties":{"onFailure":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]},{"type":"object","properties":{"consumer":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]},"notify":{"anyOf":[{"type":"string","format":"email"},{"type":"array","items":{"type":"string","format":"email"}}],"description":"Receive an email notification when consuming failure entries goes wrong.","markdownDescription":"Receive an email notification when consuming failure entries goes wrong."}},"required":["consumer"],"additionalProperties":false}],"description":"Defining a onFailure handler will add a global onFailure handler for the following resources:\n- Tasks\n- Crons\n- Queues\n- Topics\n- Pubsub\n- Table streams","markdownDescription":"Defining a onFailure handler will add a global onFailure handler for the following resources:\n- Tasks\n- Crons\n- Queues\n- Topics\n- Pubsub\n- Table streams"},"onErrorLog":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]},{"type":"object","properties":{"consumer":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}]}},"required":["consumer"],"additionalProperties":false}],"description":"Define a subscription on all Lambda functions logs.","markdownDescription":"Define a subscription on all Lambda functions logs."},"auth":{"type":"object","additionalProperties":{"type":"object","properties":{"allowUserRegistration":{"type":"boolean","default":true,"description":"Specifies whether users can create an user account or if only the administrator can.","markdownDescription":"Specifies whether users can create an user account or if only the administrator can."},"groups":{"type":"array","items":{"type":"string"},"default":[],"description":"Specifies a list of groups that a user can belong to.","markdownDescription":"Specifies a list of groups that a user can belong to."},"username":{"type":"object","properties":{"caseSensitive":{"type":"boolean","default":false,"description":"Specifies whether username case sensitivity will be enabled. When usernames and email addresses are case insensitive, users can sign in as the same user when they enter a different capitalization of their user name.","markdownDescription":"Specifies whether username case sensitivity will be enabled. When usernames and email addresses are case insensitive, users can sign in as the same user when they enter a different capitalization of their user name."}},"additionalProperties":false,"default":{},"description":"The username policy.","markdownDescription":"The username policy."},"password":{"type":"object","properties":{"minLength":{"type":"integer","minimum":6,"maximum":99,"default":12,"description":"Required users to have at least the minimum password length.","markdownDescription":"Required users to have at least the minimum password length."},"uppercase":{"type":"boolean","default":true,"description":"Required users to use at least one uppercase letter in their password.","markdownDescription":"Required users to use at least one uppercase letter in their password."},"lowercase":{"type":"boolean","default":true,"description":"Required users to use at least one lowercase letter in their password.","markdownDescription":"Required users to use at least one lowercase letter in their password."},"numbers":{"type":"boolean","default":true,"description":"Required users to use at least one number in their password.","markdownDescription":"Required users to use at least one number in their password."},"symbols":{"type":"boolean","default":true,"description":"Required users to use at least one symbol in their password.","markdownDescription":"Required users to use at least one symbol in their password."},"temporaryPasswordValidity":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"7 days","description":"The duration a temporary password is valid. If the user doesn't sign in during this time, an administrator must reset their password.","markdownDescription":"The duration a temporary password is valid. If the user doesn't sign in during this time, an administrator must reset their password."}},"additionalProperties":false,"default":{},"description":"The password policy.","markdownDescription":"The password policy."},"validity":{"type":"object","properties":{"idToken":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"1 hour","description":"The ID token time limit. After this limit expires, your user can't use their ID token.","markdownDescription":"The ID token time limit. After this limit expires, your user can't use their ID token."},"accessToken":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"1 hour","description":"The access token time limit. After this limit expires, your user can't use their access token.","markdownDescription":"The access token time limit. After this limit expires, your user can't use their access token."},"refreshToken":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"365 days","description":"The refresh token time limit. After this limit expires, your user can't use their refresh token.","markdownDescription":"The refresh token time limit. After this limit expires, your user can't use their refresh token."}},"additionalProperties":false,"default":{},"description":"Specifies the validity duration for every JWT token.","markdownDescription":"Specifies the validity duration for every JWT token."}},"additionalProperties":false},"default":{},"description":"Define the authenticatable users in your app.","markdownDescription":"Define the authenticatable users in your app."},"domains":{"type":"object","additionalProperties":{"type":"object","properties":{"domain":{"type":"string","pattern":"[a-z\\-\\_\\.]","description":"Define the domain name","markdownDescription":"Define the domain name"},"dns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"[a-z\\-\\_\\.]","description":"Enter a fully qualified domain name, for example, www.example.com. You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical.","markdownDescription":"Enter a fully qualified domain name, for example, www.example.com. You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats www.example.com (without a trailing dot) and www.example.com. (with a trailing dot) as identical."},"type":{"type":"string","enum":["A","AAAA","CAA","CNAME","DS","MX","NAPTR","NS","PTR","SOA","SPF","SRV","TXT"],"description":"The DNS record type.","markdownDescription":"The DNS record type."},"ttl":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The resource record cache time to live (TTL).","markdownDescription":"The resource record cache time to live (TTL)."},"records":{"type":"array","items":{"type":"string"},"description":"One or more values that correspond with the value that you specified for the Type property.","markdownDescription":"One or more values that correspond with the value that you specified for the Type property."}},"required":["type","ttl","records"],"additionalProperties":false},"description":"Define the domain dns records","markdownDescription":"Define the domain dns records"}},"required":["domain"],"additionalProperties":false},"description":"Define the domains for your application.","markdownDescription":"Define the domains for your application."},"function":{"type":"object","properties":{"runtime":{"anyOf":[{"anyOf":[{"type":"string","enum":["nodejs18.x","nodejs20.x","nodejs22.x","nodejs24.x"]},{"type":"string","const":"container"}]},{"type":"string"}],"description":"The identifier of the function's runtime.","markdownDescription":"The identifier of the function's runtime.","default":"nodejs24.x"},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function.","default":"index.default"},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},"format":{"type":"string","enum":["text","json"],"description":"The format in which Lambda sends your function's application and system logs to CloudWatch. Select between plain text and structured JSON.","markdownDescription":"The format in which Lambda sends your function's application and system logs to CloudWatch. Select between plain text and structured JSON."},"system":{"type":"string","enum":["debug","info","warn"],"description":"Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where DEBUG is the highest level and WARN is the lowest.","markdownDescription":"Set this property to filter the system logs for your function that Lambda sends to CloudWatch. Lambda only sends system logs at the selected level of detail and lower, where DEBUG is the highest level and WARN is the lowest."},"level":{"type":"string","enum":["trace","debug","info","warn","error","fatal"],"description":"Set this property to filter the application logs for your function that Lambda sends to CloudWatch. Lambda only sends application logs at the selected level of detail and lower, where TRACE is the highest level and FATAL is the lowest.","markdownDescription":"Set this property to filter the application logs for your function that Lambda sends to CloudWatch. Lambda only sends application logs at the selected level of detail and lower, where TRACE is the highest level and FATAL is the lowest."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true},"timeout":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The amount of time that Lambda allows a function to run before stopping it. You can specify a size value from 1 second to 15 minutes.","markdownDescription":"The amount of time that Lambda allows a function to run before stopping it. You can specify a size value from 1 second to 15 minutes.","default":"15 minutes"},"memorySize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"The amount of memory available to the function at runtime. Increasing the function memory also increases its CPU allocation. The value can be any multiple of 1 MB. You can specify a size value from 128 MB to 10 GB.","markdownDescription":"The amount of memory available to the function at runtime. Increasing the function memory also increases its CPU allocation. The value can be any multiple of 1 MB. You can specify a size value from 128 MB to 10 GB.","default":"1024 MB"},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the function supports.","markdownDescription":"The instruction set architecture that the function supports.","default":"arm64"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variable key-value pairs.","markdownDescription":"Environment variable key-value pairs."},"permissions":{"anyOf":[{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false},{"type":"array","items":{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false}}],"description":"Add IAM permissions to your function.","markdownDescription":"Add IAM permissions to your function."}},"additionalProperties":false,"default":{}},"instance":{"type":"object","properties":{"image":{"type":"string","description":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}","markdownDescription":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}"},"cpu":{"type":"number","enum":[0.25,0.5,1,2,4,8,16],"description":"The number of virtual CPU units (vCPU) used by the instance. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","markdownDescription":"The number of virtual CPU units (vCPU) used by the instance. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","default":0.25},"memorySize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"The amount of memory (in MiB) used by the instance. Valid memory values depend on the CPU configuration.","markdownDescription":"The amount of memory (in MiB) used by the instance. Valid memory values depend on the CPU configuration.","default":"512 MB"},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the instance supports.","markdownDescription":"The instruction set architecture that the instance supports.","default":"arm64"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variable key-value pairs.","markdownDescription":"Environment variable key-value pairs."},"permissions":{"anyOf":[{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false},{"type":"array","items":{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false}}],"description":"Add IAM permissions to your instance.","markdownDescription":"Add IAM permissions to your instance."},"healthCheck":{"type":"object","properties":{"path":{"type":"string","description":"The path that the container runs to determine if it is healthy.","markdownDescription":"The path that the container runs to determine if it is healthy."},"interval":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The time period in seconds between each health check execution.","markdownDescription":"The time period in seconds between each health check execution."},"retries":{"type":"integer","minimum":1,"maximum":10,"description":"The number of times to retry a failed health check before the container is considered unhealthy.","markdownDescription":"The number of times to retry a failed health check before the container is considered unhealthy."},"startPeriod":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The optional grace period to provide containers time to bootstrap before failed health checks count towards the maximum number of retries.","markdownDescription":"The optional grace period to provide containers time to bootstrap before failed health checks count towards the maximum number of retries."},"timeout":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The time period in seconds to wait for a health check to succeed before it is considered a failure.","markdownDescription":"The time period in seconds to wait for a health check to succeed before it is considered a failure."}},"required":["path","interval","retries","startPeriod","timeout"],"additionalProperties":false,"description":"The health check command and associated configuration parameters for the container.","markdownDescription":"The health check command and associated configuration parameters for the container."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true}},"additionalProperties":false,"default":{}},"job":{"type":"object","properties":{"image":{"type":"string","description":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}","markdownDescription":"The URL of the container image to use. Default: public.ecr.aws/aws-cli/aws-cli:{architecture}"},"persistentStorage":{"type":"boolean","description":"Mount persistent storage for the job at a fixed internal path.","markdownDescription":"Mount persistent storage for the job at a fixed internal path."},"cpu":{"type":"number","enum":[0.25,0.5,1,2,4,8,16],"description":"The number of virtual CPU units (vCPU) used by the job. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","markdownDescription":"The number of virtual CPU units (vCPU) used by the job. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16 vCPU.","default":0.25},"memorySize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"The amount of memory (in MiB) used by the job. Valid memory values depend on the CPU configuration.","markdownDescription":"The amount of memory (in MiB) used by the job. Valid memory values depend on the CPU configuration.","default":"512 MB"},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the job supports.","markdownDescription":"The instruction set architecture that the job supports.","default":"arm64"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variable key-value pairs.","markdownDescription":"Environment variable key-value pairs."},"permissions":{"anyOf":[{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false},{"type":"array","items":{"type":"object","properties":{"effect":{"type":"string","enum":["allow","deny"],"default":"allow"},"actions":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"resources":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]},{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^arn\\:"},{"type":"string","const":"*"}]}}]}},"required":["actions","resources"],"additionalProperties":false}}],"description":"Add IAM permissions to your job.","markdownDescription":"Add IAM permissions to your job."},"timeout":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The maximum time the job is allowed to run before being stopped.","markdownDescription":"The maximum time the job is allowed to run before being stopped."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true}},"additionalProperties":false,"default":{}},"queue":{"type":"object","properties":{"retentionPeriod":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The number of seconds that Amazon SQS retains a message. You can specify a duration from 1 minute to 14 days.","markdownDescription":"The number of seconds that Amazon SQS retains a message. You can specify a duration from 1 minute to 14 days.","default":"7 days"},"receiveMessageWaitTime":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"Long-polling wait time. You can specify a duration from 1 to 20 seconds.","markdownDescription":"Long-polling wait time. You can specify a duration from 1 to 20 seconds."},"maxMessageSize":{"type":"string","pattern":"^[0-9]+ (B|KB|MB|GB|TB|PB)$","description":"Message size limit. You can specify a size from 1 KB to 256 KB.","markdownDescription":"Message size limit. You can specify a size from 1 KB to 256 KB.","default":"256 KB"},"batchSize":{"type":"integer","minimum":1,"maximum":10,"description":"The maximum number of records per batch. FIFO queues are capped at 10.","markdownDescription":"The maximum number of records per batch. FIFO queues are capped at 10.","default":10}},"additionalProperties":false,"default":{}},"rest":{"type":"object","additionalProperties":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The domain id to link your API with.","markdownDescription":"The domain id to link your API with."},"subDomain":{"type":"string"}},"additionalProperties":false},"description":"Define your global REST API's.","markdownDescription":"Define your global REST API's."},"rpc":{"type":"object","additionalProperties":{"type":"object","properties":{"router":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The router id to link your RPC API with.","markdownDescription":"The router id to link your RPC API with."},"path":{"type":"string","pattern":"^\\/","description":"The path inside the router to link your RPC API to.","markdownDescription":"The path inside the router to link your RPC API to."},"auth":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}],"description":"The authentication handler for your RPC API.","markdownDescription":"The authentication handler for your RPC API."}},"required":["router","path"],"additionalProperties":false},"description":"Define the global RPC API's.","markdownDescription":"Define the global RPC API's."},"pubsub":{"type":"object","additionalProperties":{"type":"object","properties":{"auth":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"code":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}],"description":"The file path of the function code.","markdownDescription":"The file path of the function code."},"minify":{"type":"boolean","description":"Minify the function code.","markdownDescription":"Minify the function code.","default":true},"external":{"type":"array","items":{"type":"string"},"description":"A list of external packages that won't be included in the bundle.","markdownDescription":"A list of external packages that won't be included in the bundle."},"importAsString":{"type":"array","items":{"type":"string"},"description":"A list of glob patterns, which specifies the files that should be imported as string.","markdownDescription":"A list of glob patterns, which specifies the files that should be imported as string."}},"required":["file"],"additionalProperties":false}],"description":"Specify the code of your function.","markdownDescription":"Specify the code of your function."},"handler":{"type":"string","description":"The name of the exported method within your code that Lambda calls to run your function.","markdownDescription":"The name of the exported method within your code that Lambda calls to run your function."}},"required":["code"],"additionalProperties":false}],"description":"The authorizer that validates the client auth token and returns the allowed topics.","markdownDescription":"The authorizer that validates the client auth token and returns the allowed topics."},"router":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The router id to route pubsub traffic through.","markdownDescription":"The router id to route pubsub traffic through."},"path":{"type":"string","pattern":"^\\/","default":"/ws","description":"The base path on the router that exposes the pubsub endpoint.","markdownDescription":"The base path on the router that exposes the pubsub endpoint."},"log":{"anyOf":[{"type":"boolean"},{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."},{"type":"object","properties":{"retention":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The log retention duration.","markdownDescription":"The log retention duration."}},"additionalProperties":false}],"description":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","markdownDescription":"Enable logging to a CloudWatch log group. Providing a duration value will set the log retention time.","default":true}},"required":["auth","router"],"additionalProperties":false},"description":"Define the pubsub API for your app. Backed by a websocket server on AWS Fargate.","markdownDescription":"Define the pubsub API for your app. Backed by a websocket server on AWS Fargate."},"alerts":{"type":"object","additionalProperties":{"anyOf":[{"type":"string","format":"email"},{"type":"array","items":{"type":"string","format":"email"}}]},"description":"Define the alerts in your app. Alerts are a way to send messages to one or more email addresses.","markdownDescription":"Define the alerts in your app. Alerts are a way to send messages to one or more email addresses."},"topics":{"type":"array","items":{"type":"string","minLength":3,"maxLength":256,"pattern":"^[a-z0-9\\-]+$","description":"Define event topic name.","markdownDescription":"Define event topic name."},"description":"Define the event topics for your app.","markdownDescription":"Define the event topics for your app."},"layers":{"type":"object","additionalProperties":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},{"type":"object","properties":{"file":{"anyOf":[{"type":"string"},{"type":"object","properties":{"nocheck":{"type":"string","description":"Specifies a local file without checking if the file exists.","markdownDescription":"Specifies a local file without checking if the file exists."}},"required":["nocheck"],"additionalProperties":false}]},"runtimes":{"type":"array","items":{"type":"string","enum":["nodejs18.x","nodejs20.x","nodejs22.x"],"description":"The identifier of the function's runtime.","markdownDescription":"The identifier of the function's runtime."}},"architecture":{"type":"string","enum":["x86_64","arm64"],"description":"The instruction set architecture that the function supports.","markdownDescription":"The instruction set architecture that the function supports."},"packages":{"type":"array","items":{"type":"string"},"description":"Define the package names that are available bundled in the layer. Those packages are not bundled while bundling the lambda.","markdownDescription":"Define the package names that are available bundled in the layer. Those packages are not bundled while bundling the lambda."}},"required":["file"],"additionalProperties":false}]},"description":"Define the lambda layers in your stack.","markdownDescription":"Define the lambda layers in your stack."},"router":{"type":"object","additionalProperties":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":24,"pattern":"^[a-z0-9\\-]+$","description":"The domain id to link your Router.","markdownDescription":"The domain id to link your Router."},"subDomain":{"type":"string"},"redirectWww":{"type":"boolean","default":false,"description":"Redirect all www subdomain requests to your root domain.","markdownDescription":"Redirect all www subdomain requests to your root domain."},"waf":{"type":"object","properties":{"rateLimiter":{"type":"object","properties":{"limit":{"type":"number","minimum":10,"maximum":2000000000,"default":10,"description":"The limit on requests during the specified evaluation window for a single aggregation instance for the rate-based rule.","markdownDescription":"The limit on requests during the specified evaluation window for a single aggregation instance for the rate-based rule."},"window":{"type":"string","enum":["1 minute","2 minutes","5 minutes","10 minutes"],"default":"5 minutes","description":"The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time.","markdownDescription":"The amount of time, in seconds, that AWS WAF should include in its request counts, looking back from the current time."},"visibility":{"type":"boolean","default":false,"description":"Whether to enable CloudWatch metrics for the WAF rule.","markdownDescription":"Whether to enable CloudWatch metrics for the WAF rule."}},"additionalProperties":false,"description":"A rate-based rule counts incoming requests and rate limits requests when they are coming at too fast a rate.","markdownDescription":"A rate-based rule counts incoming requests and rate limits requests when they are coming at too fast a rate."},"ddosProtection":{"type":"object","properties":{"sensitivity":{"type":"object","properties":{"challenge":{"type":"string","enum":["low","medium","high"],"default":"low","description":"The sensitivity level for challenge requests.","markdownDescription":"The sensitivity level for challenge requests."},"block":{"type":"string","enum":["low","medium","high"],"default":"low","description":"The sensitivity level for block requests.","markdownDescription":"The sensitivity level for block requests."}},"additionalProperties":false},"exemptUriRegex":{"type":"string","default":"^$"},"visibility":{"type":"boolean","default":false,"description":"Whether to enable CloudWatch metrics for the WAF rule.","markdownDescription":"Whether to enable CloudWatch metrics for the WAF rule."}},"required":["sensitivity"],"additionalProperties":false,"description":"Provides protection against DDoS attacks targeting the application layer, also known as Layer 7 attacks. Uses 50 WCU.","markdownDescription":"Provides protection against DDoS attacks targeting the application layer, also known as Layer 7 attacks. Uses 50 WCU."},"botProtection":{"type":"object","properties":{"inspectionLevel":{"type":"string","enum":["common","targeted"],"default":"common"},"visibility":{"type":"boolean","default":false,"description":"Whether to enable CloudWatch metrics for the WAF rule.","markdownDescription":"Whether to enable CloudWatch metrics for the WAF rule."}},"additionalProperties":false,"description":"Provides protection against automated bots that can consume excess resources, skew business metrics, cause downtime, or perform malicious activities. Bot Control provides additional visibility through Amazon CloudWatch and generates labels that you can use to control bot traffic to your applications. Uses 50 WCU.","markdownDescription":"Provides protection against automated bots that can consume excess resources, skew business metrics, cause downtime, or perform malicious activities. Bot Control provides additional visibility through Amazon CloudWatch and generates labels that you can use to control bot traffic to your applications. Uses 50 WCU."},"captchaImmunityTime":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"5 minutes","description":"The amount of time that a CAPTCHA timestamp is considered valid by AWS WAF. The default setting is 5 minutes.","markdownDescription":"The amount of time that a CAPTCHA timestamp is considered valid by AWS WAF. The default setting is 5 minutes."},"challengeImmunityTime":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"5 minutes","description":"The amount of time that a challenge timestamp is considered valid by AWS WAF. The default setting is 5 minutes.","markdownDescription":"The amount of time that a challenge timestamp is considered valid by AWS WAF. The default setting is 5 minutes."}},"additionalProperties":false,"description":"WAF settings for the router. Each rule consumes Web ACL capacity units (WCUs). The total WCUs for a web ACL can't exceed 5000. Using over 1500 WCUs affects your costs.","markdownDescription":"WAF settings for the router. Each rule consumes Web ACL capacity units (WCUs). The total WCUs for a web ACL can't exceed 5000. Using over 1500 WCUs affects your costs."},"geoRestrictions":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2},"default":[],"description":"Specifies a blacklist of countries that should be blocked.","markdownDescription":"Specifies a blacklist of countries that should be blocked."},"errors":{"type":"object","properties":{"400":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `400 Bad Request` response.","markdownDescription":"Customize a `400 Bad Request` response."},"403":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `403 Forbidden` response.","markdownDescription":"Customize a `403 Forbidden` response."},"404":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `404 Not Found` response.","markdownDescription":"Customize a `404 Not Found` response."},"405":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `405 Method Not Allowed` response.","markdownDescription":"Customize a `405 Method Not Allowed` response."},"414":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `414 Request-URI` response.","markdownDescription":"Customize a `414 Request-URI` response."},"416":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `416 Range Not` response.","markdownDescription":"Customize a `416 Range Not` response."},"500":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `500 Internal Server` response.","markdownDescription":"Customize a `500 Internal Server` response."},"501":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `501 Not Implemented` response.","markdownDescription":"Customize a `501 Not Implemented` response."},"502":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `502 Bad Gateway` response.","markdownDescription":"Customize a `502 Bad Gateway` response."},"503":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `503 Service Unavailable` response.","markdownDescription":"Customize a `503 Service Unavailable` response."},"504":{"anyOf":[{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},{"type":"object","properties":{"path":{"type":"string","description":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.","markdownDescription":"The path to the custom error page that you want to return to the viewer when your origin returns the HTTP status code specified.\n- We recommend that you store custom error pages in an Amazon S3 bucket.\nIf you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable."},"statusCode":{"type":"integer","exclusiveMinimum":0,"description":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down.","markdownDescription":"The HTTP status code that you want CloudFront to return to the viewer along with the custom error page.\nThere are a variety of reasons that you might want CloudFront to return a status code different from the status code that your origin returned to CloudFront, for example:\n- Some Internet devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx and 5xx and prevent the response from being returned to the viewer.\nIf you substitute 200, the response typically won't be intercepted.\n- If you don't care about distinguishing among different client errors or server errors, you can specify 400 or 500 as the ResponseCode for all 4xx or 5xx errors.\n- You might want to return a 200 status code (OK) and static website so your customers don't know that your website is down."},"minTTL":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","description":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available.","markdownDescription":"The minimum amount of time, that you want to cache the error response. When this time period has elapsed, CloudFront queries your origin to see whether the problem that caused the error has been resolved and the requested object is now available."}},"required":["path"],"additionalProperties":false}],"description":"Customize a `504 Gateway Timeout` response.","markdownDescription":"Customize a `504 Gateway Timeout` response."}},"additionalProperties":false,"description":"Customize the error responses for specific HTTP status codes.","markdownDescription":"Customize the error responses for specific HTTP status codes."},"cors":{"type":"object","properties":{"override":{"type":"boolean","default":false},"maxAge":{"type":"string","pattern":"^[0-9]+ (seconds?|minutes?|hours?|days?|weeks?)$","default":"365 days"},"exposeHeaders":{"type":"array","items":{"type":"string"}},"credentials":{"type":"boolean","default":false},"headers":{"type":"array","items":{"type":"string"},"default":["*"]},"origins":{"type":"array","items":{"type":"string"},"default":["*"]},"methods":{"type":"array","items":{"type":"string","enum":["GET","DELETE","HEAD","OPTIONS","PATCH","POST","PUT","ALL"]},"default":["ALL"]}},"additionalProperties":false,"description":"Specify the cors headers.","markdownDescription":"Specify the cors headers."},"passwordAuth":{"type":"object","properties":{"password":{"type":"string","description":"Password.","markdownDescription":"Password."}},"required":["password"],"additionalProperties":false,"description":"Enable password authentication for the router.\nYou can authenicate by adding a \"authorization\" header with the value \"Password [YOUR_PASSWORD]\".","markdownDescription":"Enable password authentication for the router.\nYou can authenicate by adding a \"authorization\" header with the value \"Password [YOUR_PASSWORD]\"."},"basicAuth":{"type":"object","properties":{"username":{"type":"string","description":"Basic auth username.","markdownDescription":"Basic auth username."},"password":{"type":"string","description":"Basic auth password.","markdownDescription":"Basic auth password."}},"required":["username","password"],"additionalProperties":false,"description":"Enable basic authentication for the router.","markdownDescription":"Enable basic authentication for the router."},"cache":{"type":"object","properties":{"cookies":{"type":"array","items":{"type":"string"},"description":"Specifies the cookies that CloudFront includes in the cache key.","markdownDescription":"Specifies the cookies that CloudFront includes in the cache key."},"headers":{"type":"array","items":{"type":"string"},"description":"Specifies the headers that CloudFront includes in the cache key.","markdownDescription":"Specifies the headers that CloudFront includes in the cache key."},"queries":{"type":"array","items":{"type":"string"},"description":"Specifies the query values that CloudFront includes in the cache key.","markdownDescription":"Specifies the query values that CloudFront includes in the cache key."}},"additionalProperties":false,"description":"Specifies the cookies, headers, and query values that CloudFront includes in the cache key.","markdownDescription":"Specifies the cookies, headers, and query values that CloudFront includes in the cache key."}},"additionalProperties":false},"description":"Define the global Router. Backed by AWS CloudFront.","markdownDescription":"Define the global Router. Backed by AWS CloudFront."}},"additionalProperties":false,"default":{},"description":"Default properties\n\n@default {}","markdownDescription":"Default properties\n\n@default ```{}```"}},"required":["name","region","profile"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#","title":"Awsless App Config"}