Deploying Custom Domain Rest API
AWSOfficialPublished by AWS
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a comprehensive procedure for deploying a Regional REST API on AWS. It automates the end-to-end setup, including ACM certificate provisioning, IAM role creation, Lambda function deployment, API Gateway configuration with a request-based authorizer, custom domain mapping, and Route 53 DNS record creation. The workflow ensures all components are correctly linked and secured with TLS 1.2, providing a ready-to-use API endpoint.
What it does
- Provisions and validates ACM certificates for custom domains.
- Creates and configures IAM roles for Lambda execution.
- Deploys Lambda functions for both the backend logic and request authorization.
- Sets up a Regional REST API in API Gateway with custom authorizer integration.
- Configures custom domain names and base path mappings.
- Automates Route 53 A-alias record creation for domain routing.
When to use it
- When you need to deploy a new REST API on AWS with a custom domain.
- When implementing a request-based Lambda authorizer for API security.
- When you require a repeatable, CLI-driven deployment process for Regional API Gateway endpoints.
- When setting up a new environment that requires integrated DNS and TLS certificate management.
Advantages
- Reduces manual configuration errors by automating multi-step AWS resource provisioning.
- Ensures consistent deployment patterns across different AWS regions.
- Provides a clear, structured approach to integrating API Gateway, Lambda, and Route 53.
- Includes built-in validation steps to confirm resource creation and connectivity.
Usage examples
- “Deploy a new REST API for api.example.com in us-east-2 using hosted zone Z2OJLYMUO9EFXC.”
- The agent will prompt for confirmation, verify required tools, and execute the full deployment pipeline, resulting in a live API endpoint accessible via the custom domain.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/aws/deploying-custom-domain-rest-api/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip deploying-custom-domain-rest-api.zip -d .agents/skills
Documentation by AWS
Custom Domain REST API with Lambda and Request Authorizer
Overview
This SOP deploys a REST API with a Regional custom domain name, a Lambda backend function, and a request-based Lambda authorizer. It handles ACM certificate provisioning, IAM role creation, Lambda function deployment, API Gateway REST API creation with a custom authorizer, custom domain configuration, base path mapping, and Route 53 DNS setup.
The architecture includes:
An API Gateway REST API with an endpoint type of REGIONAL
A request-based Lambda authorizer that validates headers, query string parameters, and stage variables
A Lambda backend function at
GET /exampleA custom domain name with TLS 1.2
A base path mapping connecting the custom domain to the API stage
A Route 53 A-alias record pointing the custom domain to the API Gateway Regional endpoint
Important: This SOP uses Regional endpoints. If the user requests a private endpoint, inform them that this skill covers Regional endpoints only. Private endpoints require VPC endpoint configuration.
Parameters
custom_domain_name (required): Fully qualified domain name for the API (e.g.,
api.example.com)region (required): AWS Region for all resources. The ACM certificate must be in this same Region for Regional endpoints
hosted_zone_id (required): Route 53 hosted zone ID for the domain
acm_certificate_arn (optional): ARN of an existing ACM certificate covering the custom domain. If not provided, Step 2 creates one
stage_name (optional, default: "dev"): API Gateway stage name
Constraints for parameter acquisition:
You MUST ask for all required parameters upfront in a single prompt rather than one at a time
You MUST support multiple input methods (direct input, file path, URL)
You MUST confirm successful acquisition of all parameters before proceeding
You MUST inform the user that this skill uses hardcoded demo authorization values (headerValue1, queryValue1, stageValue1) that are NOT suitable for production. For production, use AWS Secrets Manager or Systems Manager Parameter Store to manage authorization credentials. See: https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html
You MUST validate that custom_domain_name is a valid FQDN
Steps
0. Verify Dependencies
Constraints:
You MUST verify the following tools are available: aws-cli, python3, sed, node (v22+)
You MUST inform the user about any missing tools with a clear message
You MUST ask if the user wants to proceed despite missing tools
You MUST respect the customer's decision to abort at any point
You MUST explain to the customer what step is being executed, why, and which tool is being called
1. Retrieve AWS Account ID
This step MUST be performed before all other steps.
Constraints:
You MUST retrieve the account ID with:
aws sts get-caller-identity --query 'Account' --output textYou MUST store the result as {account_id} and reuse it in all subsequent steps that reference {account_id}
You MUST abort if credentials are not configured
2. Request ACM Certificate
Skip this step if acm_certificate_arn is already provided.
Constraints:
You MUST request the certificate with:
aws acm request-certificate --domain-name {custom_domain_name} --validation-method DNS --region {region}You MUST capture the CertificateArn from the response
You MUST retrieve the DNS validation record with:
aws acm describe-certificate --certificate-arn {cert_arn} --query 'Certificate.DomainValidationOptions[0].ResourceRecord' --region {region}You MUST create the validation CNAME in Route 53 with:
aws route53 change-resource-record-sets --hosted-zone-id {hosted_zone_id} --change-batch '{"Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"{validation_name}","Type":"CNAME","TTL":300,"ResourceRecords":[{"Value":"{validation_value}"}]}}]}'You MUST wait for certificate validation with:
aws acm wait certificate-validated --certificate-arn {cert_arn} --region {region}The wait command may take up to 30 minutes. If it times out, check status manually with:
aws acm describe-certificate --certificate-arn {cert_arn} --query 'Certificate.Status' --region {region}and retry the wait if status is still PENDING_VALIDATIONYou MUST NOT proceed until the certificate status is ISSUED
You MUST store the certificate ARN as acm_certificate_arn for use in Step 7
3. Create IAM Execution Roles
Constraints:
You MUST create two IAM roles: one for the authorizer Lambda and one for the example function Lambda
Both roles use the same trust policy from
scripts/lambda-trust-policy.json. The trust policy includes anaws:SourceAccountcondition scoped to the user's account IDYou MUST create a working copy of the trust policy and replace the
ACCOUNT_IDplaceholder with the actual account ID from Step 1. Use:sed 's/ACCOUNT_ID/{account_id}/' scripts/lambda-trust-policy.json > /tmp/lambda-trust-policy.jsonYou MUST create the authorizer role with:
aws iam create-role --role-name request-authorizer-role --assume-role-policy-document file:///tmp/lambda-trust-policy.jsonYou MUST attach the basic execution policy to the authorizer role with:
aws iam attach-role-policy --role-name request-authorizer-role --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRoleYou MUST create the example function role with:
aws iam create-role --role-name example-function-role --assume-role-policy-document file:///tmp/lambda-trust-policy.jsonYou MUST attach the basic execution policy to the example function role with:
aws iam attach-role-policy --role-name example-function-role --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRoleYou MUST capture the role ARNs from each create-role response for use in Step 4
You MUST wait at least 10 seconds after role creation before creating Lambda functions because IAM role propagation is eventually consistent
4. Create and Deploy Lambda Functions
Constraints:
You MUST create two Lambda functions: the request authorizer and the example function
For the authorizer function:
You MUST create the function with inline code. First write the code to a file and package it:
python3 -c "import zipfile,io,base64; z=io.BytesIO(); f=zipfile.ZipFile(z,'w'); f.writestr('index.mjs', open('scripts/authorizer.mjs').read()); f.close(); open('/tmp/authorizer.zip','wb').write(z.getvalue())"Then create the function with:
aws lambda create-function --function-name request-authorizer --runtime nodejs22.x --handler index.handler --role {authorizer_role_arn} --zip-file fileb:///tmp/authorizer.zip --timeout 10 --region {region}
For the example function:
You MUST create the function with inline code. First write the code to a file and package it:
python3 -c "import zipfile,io; z=io.BytesIO(); f=zipfile.ZipFile(z,'w'); f.writestr('index.mjs', open('scripts/example_function.mjs').read()); f.close(); open('/tmp/example_function.zip','wb').write(z.getvalue())"Then create the function with:
aws lambda create-function --function-name example-function --runtime nodejs22.x --handler index.handler --role {example_role_arn} --zip-file fileb:///tmp/example_function.zip --timeout 10 --region {region}
You MUST verify each function was created by calling:
aws lambda get-function --function-name {function_name} --region {region}
5. Create REST API with Request Authorizer
Constraints:
You MUST create the REST API with:
aws apigateway create-rest-api --name custom-domain-api --endpoint-configuration types=REGIONAL --region {region}You MUST capture the API id and get the root resource ID with:
aws apigateway get-resources --rest-api-id {api_id} --region {region}You MUST create the request-based Lambda authorizer with:
aws apigateway create-authorizer --rest-api-id {api_id} --name request-authorizer --type REQUEST --authorizer-uri 'arn:aws:apigateway:{region}:lambda:path/2015-03-31/functions/arn:aws:lambda:{region}:{account_id}:function:request-authorizer/invocations' --identity-source 'method.request.header.HeaderAuth1,method.request.querystring.QueryString1,context.stage' --region {region}You MUST capture the authorizer ID from the response
You MUST grant API Gateway permission to invoke the authorizer with:
aws lambda add-permission --function-name request-authorizer --statement-id apigateway-auth-invoke --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn 'arn:aws:execute-api:{region}:{account_id}:{api_id}/authorizers/{authorizer_id}' --region {region}You MUST create the /example resource with:
aws apigateway create-resource --rest-api-id {api_id} --parent-id {root_resource_id} --path-part example --region {region}You MUST create the GET method with:
aws apigateway put-method --rest-api-id {api_id} --resource-id {example_resource_id} --http-method GET --authorization-type CUSTOM --authorizer-id {authorizer_id} --region {region}You MUST create the Lambda proxy integration with:
aws apigateway put-integration --rest-api-id {api_id} --resource-id {example_resource_id} --http-method GET --type AWS_PROXY --integration-http-method POST --uri 'arn:aws:apigateway:{region}:lambda:path/2015-03-31/functions/arn:aws:lambda:{region}:{account_id}:function:example-function/invocations' --region {region}You MUST grant API Gateway permission to invoke the example function with:
aws lambda add-permission --function-name example-function --statement-id apigateway-invoke --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn 'arn:aws:execute-api:{region}:{account_id}:{api_id}/*/GET/example' --region {region}You MUST NOT create the deployment until all resources, methods, and integrations are configured
You MUST configure request validation to reject malformed query parameters and headers by validating that QueryString1 and HeaderAuth1 match expected patterns and enforcing size limits
6. Deploy the API
Constraints:
You MUST create the deployment with:
aws apigateway create-deployment --rest-api-id {api_id} --stage-name {stage_name} --region {region}You MUST set the stage variable required by the authorizer with:
aws apigateway update-stage --rest-api-id {api_id} --stage-name {stage_name} --patch-operations op=replace,path=/variables/StageVar1,value=stageValue1 --region {region}You MUST verify the deployment and stage variable by calling:
aws apigateway get-stage --rest-api-id {api_id} --stage-name {stage_name} --region {region}and confirming StageVar1 is present in the variablesYou MUST enable access logging on the stage. First create the log group:
aws logs create-log-group --log-group-name api-gw-access-logs --region {region}. Then enable logging with format:aws apigateway update-stage --rest-api-id {api_id} --stage-name {stage_name} --patch-operations op=replace,path=/accessLogSettings/destinationArn,value=arn:aws:logs:{region}:{account_id}:log-group:api-gw-access-logs op=replace,path=/accessLogSettings/format,value='{"requestId":"$context.requestId","ip":"$context.identity.sourceIp","requestTime":"$context.requestTime","httpMethod":"$context.httpMethod","resourcePath":"$context.resourcePath","status":"$context.status"}' --region {region}
7. Create Custom Domain and Base Path Mapping
Constraints:
You MUST create the custom domain with:
aws apigateway create-domain-name --domain-name {custom_domain_name} --regional-certificate-arn {acm_certificate_arn} --endpoint-configuration types=REGIONAL --security-policy TLS_1_2 --region {region}You MUST capture the regionalDomainName and regionalHostedZoneId from the response for use in Step 8
You MUST create the base path mapping with:
aws apigateway create-base-path-mapping --domain-name {custom_domain_name} --rest-api-id {api_id} --stage {stage_name} --base-path '(none)' --region {region}You MUST verify the domain was created by calling:
aws apigateway get-domain-name --domain-name {custom_domain_name} --region {region}You MUST NOT downgrade the security policy below TLS_1_2
8. Create Route 53 DNS Record
Constraints:
You MUST create a working copy of
scripts/dns-record.jsonwith placeholders replaced:sed -e 's/CUSTOM_DOMAIN_NAME/{custom_domain_name}/' -e 's/REGIONAL_DOMAIN_NAME/{regional_domain_name}/' -e 's/REGIONAL_HOSTED_ZONE_ID/{regional_hosted_zone_id}/' scripts/dns-record.json > /tmp/dns-record.jsonThe command is:
aws route53 change-resource-record-sets --hosted-zone-id {hosted_zone_id} --change-batch file:///tmp/dns-record.jsonYou MUST use the regionalDomainName and regionalHostedZoneId captured from Step 7, not the user's hosted zone ID for the AliasTarget
You MUST use an A-alias record (not CNAME) when using Route 53 as the DNS provider
You SHOULD inform the user that DNS propagation can take up to 48 hours
9. Validate Final Setup
Constraints:
You SHOULD run
scripts/validate.sh {custom_domain_name} {api_id} {region}to check all resourcesYou MUST inform the user to test with:
curl 'https://{custom_domain_name}/example?QueryString1=queryValue1' -H 'HeaderAuth1: headerValue1'You MUST explain that the expected response is a 200 with
{"message": "Hello from the example function!"}You MUST explain that requests missing the correct HeaderAuth1 header or QueryString1 query parameter will be denied by the authorizer
You MUST provide a summary of all created resources including:
ACM certificate ARN
IAM role ARNs
Lambda function ARNs
REST API ID and stage name
Authorizer ID
Custom domain name and Regional domain name
Route 53 DNS record
Examples
Example Input
custom_domain_name: api.example.com
region: us-east-2
hosted_zone_id: Z2OJLYMUO9EFXC
stage_name: prodExample Output
ACM certificate issued for api.example.com
ARN: arn:aws:acm:us-east-2:123456789012:certificate/abc-123
IAM roles created
Authorizer: arn:aws:iam::123456789012:role/request-authorizer-role
Example: arn:aws:iam::123456789012:role/example-function-role
Lambda functions deployed
Authorizer: arn:aws:lambda:us-east-2:123456789012:function:request-authorizer
Example: arn:aws:lambda:us-east-2:123456789012:function:example-function
REST API deployed
API ID: a1b2c3d4e5
Stage: prod (StageVar1=stageValue1)
Authorizer: request-authorizer (REQUEST type)
Custom domain configured
Domain: api.example.com
Regional endpoint: d-abc123.execute-api.us-east-2.amazonaws.com
TLS: 1.2
Route 53 DNS record created
A-alias: api.example.com -> d-abc123.execute-api.us-east-2.amazonaws.com
Test command (authorized):
curl 'https://api.example.com/example?QueryString1=queryValue1' -H 'HeaderAuth1: headerValue1'
Test command (denied):
curl 'https://api.example.com/example'Troubleshooting
Certificate Stuck in PENDING_VALIDATION
Verify the DNS validation CNAME record exists in Route 53 by running aws acm describe-certificate --certificate-arn {arn} --query 'Certificate.DomainValidationOptions'. Ensure the CNAME was created in the correct hosted zone.
403 Forbidden on API Calls
The request authorizer checks three values: HeaderAuth1 header must be headerValue1, QueryString1 query parameter must be queryValue1, and stage variable StageVar1 must be stageValue1. Verify all three are present and correct. Check CloudWatch Logs for the authorizer function for detailed error messages.
401 Unauthorized
API Gateway returns 401 when the authorizer function cannot be invoked. Verify the Lambda permission was added for API Gateway to invoke the authorizer. Check that the authorizer URI is correct.
Missing Authentication Token (403)
The request path doesn't match a configured resource. Verify the /example resource exists with aws apigateway get-resources --rest-api-id {api_id}. Ensure the API was deployed after creating all resources.
Custom Domain Returns No Response
DNS propagation can take up to 48 hours. Check with dig {custom_domain_name}. Verify the A-alias record points to the correct regionalDomainName and regionalHostedZoneId from the create-domain-name response.
Stage Variable Not Set
If the authorizer denies all requests, verify the stage variable was set with aws apigateway get-stage --rest-api-id {api_id} --stage-name {stage_name} --query 'variables'. The StageVar1 variable must be set to stageValue1.
IAM Role Not Found When Creating Lambda
IAM role propagation is eventually consistent. Wait at least 10 seconds after role creation before creating Lambda functions. Verify the role ARN with aws iam get-role --role-name {role_name}.
Base Path Mapping Not Working
Verify with aws apigateway get-base-path-mappings --domain-name {custom_domain_name}. The base path (none) maps the domain root to the stage. Ensure the deployment to the stage completed successfully.
Security Considerations
The hardcoded authorization values (
headerValue1,queryValue1,stageValue1) in the Lambda authorizer are for demonstration only and are NOT suitable for production. Replace with proper authentication mechanisms (JWT validation, API keys from AWS Secrets Manager, or OAuth) before deploying to production.Enable request throttling on the API stage to prevent abuse. Configure rate and burst limits with:
aws apigateway update-stage --rest-api-id {api_id} --stage-name {stage_name} --patch-operations op=replace,path=/throttle/rateLimit,value=1000 op=replace,path=/throttle/burstLimit,value=2000Enable CloudWatch Logs encryption for Lambda log groups. Associate a KMS key with:
aws logs associate-kms-key --log-group-name /aws/lambda/request-authorizer --kms-key-arn <KMS_KEY_ARN>Protect the public API with AWS WAF to mitigate common exploits (SQL injection, XSS, rate-based rules):
aws wafv2 associate-web-acl --web-acl-arn <WAF_ACL_ARN> --resource-arn arn:aws:apigateway:{region}::/restapis/{api_id}/stages/{stage_name}
Additional Resources
Files
- ATTRIBUTION.mdAdded by AutoGineer954 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md18.8 KiB
- scripts/authorizer.mjsScript3.5 KiB
- scripts/dns-record.json330 B
- scripts/example_function.mjsScript445 B
- scripts/lambda-trust-policy.json304 B
- scripts/validate.shScript1.9 KiB
LICENSE
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs network access, Needs an API key, Needs Python, Needs Node.js
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- AWS
- Publisher
- AWS (Official)
- Source
- aws/agent-toolkit-for-aws · skills/specialized-skills/serverless-skills/deploying-custom-domain-rest-api · commit 0a218f8
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by AWS or AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download deploying-custom-domain-rest-api.zip