InconsistentQuantities error when deploying with @sls-next/serverless-component@1.18.0-alpha.5^
See original GitHub issueDescribe the bug
Iβm currently using @sls-next/serverless-component@1.17.0
with apex
domain settings ( full serverless yml below )
Iβm trying to use the custom header feature as mentioned in https://github.com/serverless-nextjs/serverless-next.js/issues/587#issuecomment-706606394. so I tried to use @sls-next/serverless-component@1.18.0-alpha.5
( and also @sls-next/serverless-component@1.18.0-alpha.22
)
However, when I try to deploy it, I get InconsistentQuantities
error in CI. Probably happens if I run it locally too.
Actual behavior
I get the following error as itβs trying to deploy:
InconsistentQuantities: The specified quantity of Aliases (1) does not match the actual quantity supplied (2)
Expected behavior
It should deploy without error
Steps to reproduce
Hereβs a version of my serverless yml without all the credentials:
org: MY_ORG
name: MY_APP
app-one:
component: "@sls-next/serverless-component@1.18.0-alpha.5"
inputs:
bucketName: my-bucket-name
domain: ${env.APP_DOMAIN}
domainType: apex
description: description here
memory: 512
timeout:
defaultLambda: 20
verbose: true
build:
cmd: yarn
env:
NODE_ENV: production
Screenshots/Code/Logs
Hereβs the log when it fails ( v1.18.0-alpha.5 and v1.18.0-alpha.22 ):
DEBUG β Analyzing the template's components dependencies.
DEBUG β Creating the template's components graph.
DEBUG β Syncing template state.
DEBUG β Executing the template's components graph.
DEBUG β Resolving the template's static variables.
DEBUG β Collecting components from the template.
DEBUG β Downloading any NPM components found in the template.
...
DEBUG β Deploying bucket bucket-name in region us-east-1.
DEBUG β Checking if bucket bucket-name exists.
DEBUG β Setting acceleration to "true" for bucket bucket-name.
DEBUG β Bucket bucket-name was successfully deployed to the us-east-1 region.
...
DEBUG β Starting deployment of lambda aaaa-bbbb to the us-east-1 region.
DEBUG β Syncing role aaaa-dddd in region us-east-1.
DEBUG β Saved state for role aaaa-dddd.
DEBUG β Role aaaa-dddd was successfully deployed to region us-east-1.
DEBUG β Deployed role arn is arn:aws:iam::***:role/aaaa-dddd.
DEBUG β Packaging lambda code from /github/workspace/services/app-one/.serverless_nextjs/default-lambda.
...
DEBUG β Uploading aaaa-bbbb lambda code.
DEBUG β Updating aaaa-bbbb lambda config.
DEBUG β Successfully deployed lambda aaaa-bbbb in the us-east-1 region.
DEBUG β Starting deployment of CloudFront distribution to the us-east-1 region.
DEBUG β Updating CloudFront distribution of ID CLOUDFRONT-VH.
DEBUG β CloudFront deployed successfully with URL: https://zzz.cloudfront.net.
DEBUG β Starting Domain component deployment.
DEBUG β Validating inputs.
DEBUG β Formatting domains and identifying cloud services being used.
DEBUG β Getting the Hosted Zone ID for the domain myapp.com.
DEBUG β Searching for an AWS ACM Certificate based on the domain: myapp.com.
DEBUG β Checking the status of AWS ACM Certificate.
DEBUG β Adding www.myapp.com domain to CloudFront distribution with URL "https://zzz.cloudfront.net"
{ InconsistentQuantities: The specified quantity of Aliases (1) does not match the actual quantity supplied (2).
at Request.extractError (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/protocol/rest_xml.js:53:29)
at Request.callListeners (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/request.js:690:12)
at Request.callListeners (/github/home/.serverless/components/registry/npm/@sls-next/serverless-component@1.18.0-alpha.22/node_modules/aws-sdk/lib/sequential_executor.js:116:18)
message:
'The specified quantity of Aliases (1) does not match the actual quantity supplied (2).',
code: 'InconsistentQuantities',
time: 2020-10-29T13:14:07.318Z,
requestId: '...',
statusCode: 400,
retryable: false,
retryDelay: 60.609886564301775 }
25h
120s βΊ app-one βΊ InconsistentQuantities: The specified quantity of Aliases (1) does not match the actual quantity supplied (2).
I downgraded back to version 1.17.0 and it works. Hereβs the log for comparison:
DEBUG β Resolving the template's static variables.
DEBUG β Collecting components from the template.
DEBUG β Downloading any NPM components found in the template.
DEBUG β Analyzing the template's components dependencies.
DEBUG β Creating the template's components graph.
DEBUG β Syncing template state.
DEBUG β Executing the template's components graph.
...
DEBUG β Deploying bucket bucket-name in region us-east-1.
DEBUG β Checking if bucket bucket-name exists.
DEBUG β Setting acceleration to "true" for bucket bucket-name.
DEBUG β Bucket bucket-name was successfully deployed to the us-east-1 region.
...
DEBUG β Starting deployment of lambda aaaa-bbbb to the us-east-1 region.
DEBUG β Syncing role aaaa-dddd in region us-east-1.
DEBUG β Saved state for role aaaa-dddd.
DEBUG β Role aaaa-dddd was successfully deployed to region us-east-1.
DEBUG β Deployed role arn is arn:aws:iam::***:role/aaaa-dddd.
DEBUG β Packaging lambda code from /github/workspace/services/app-one/.serverless_nextjs/default-lambda.
...
DEBUG β Uploading aaaa-bbbb lambda code.
DEBUG β Updating aaaa-bbbb lambda config.
DEBUG β Successfully deployed lambda aaaa-bbbb in the us-east-1 region.
DEBUG β Starting deployment of CloudFront distribution to the us-east-1 region.
DEBUG β Updating CloudFront distribution of ID CLOUDFRONT-VH.
DEBUG β CloudFront deployed successfully with URL: https://zzz.cloudfront.net.
DEBUG β Starting Domain component deployment.
DEBUG β Validating inputs.
DEBUG β Formatting domains and identifying cloud services being used.
DEBUG β Getting the Hosted Zone ID for the domain myapp.com.
DEBUG β Searching for an AWS ACM Certificate based on the domain: myapp.com.
DEBUG β Checking the status of AWS ACM Certificate.
DEBUG β Adding www.myapp.com domain to CloudFront distribution with URL "https://zzz.cloudfront.net"
DEBUG β Configuring DNS for distribution "https://zzz.cloudfront.net".
app-one:
appUrl: https://myapp.com
bucketName: bucket-name
distributionId: CLOUDFRONT-VH
25h
104s βΊ app-one βΊ done
Versions
- OS/Environment: Linux ( github actions )
- @sls-next/serverless-component version: 1.18.0-alpha.5, 1.18.0-alpha.22
- Next.js version: 9.5.4
Additional context
Iβm using apex
as the domainType
with the manual workaround to redirect www
-> apex domain
Checklist
- You have reviewed the README and FAQs, which answers several common questions.
- Please first try using the latest
@sls-next/serverless-component
release version, which may have already fixed your issue. Note that the oldserverless-next.js
component and theserverless-next.js
plugin are deprecated and no longer maintained.
Issue Analytics
- State:
- Created 3 years ago
- Comments:11
Top GitHub Comments
Sure, no worries. The domain sub component just doesnβt have unit tests - not that itβs hard to test. I think perhaps it was imported from somewhere else
@eddeee888 please try the latest published alpha, which has this change: https://github.com/serverless-nextjs/serverless-next.js/pull/731 and let us know if you are facing any issues. This should revert the change that may have been causing issues. (back to 1.17 behavior).
Unfortunately the domain component that handles the
domain
input is not unit tested and may not too well for more complex domain/certificate setup.If you are having issues, I suggest to not use the
domain
input and instead manage domain and certificate outside of this component (e.g using Terraform).I also recently added
inputs.cloudfront.certificate
to let you specify a certificate without usingdomain
input (check README under CloudFront inputs section). Then you can actually useinputs.cloudfront.certificate
andinputs.cloudfront.aliases
together for this purpose.