Support
Quality
Security
License
Reuse
kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample Here
Get all kandi verified functions for this library.
An extremely fast bundler for the web
See all related Code Snippets
QUESTION
Serverless Offline & DynamoDB throws Local UnknownEndpoint: Inaccessible host: localhost at port 8000 Service may not be available in localhost region
Asked 2022-Apr-11 at 10:19I'm playin around with Serverless and I have no luck getting serverless-offline
to work with serverless-dynamodb-local
.
I have very minimal setup, it takes 3minutes to reproduce, I did it like this:
sls create -t aws-nodejs-typescript --path folder-name
npm i
npm install --save serverless-dynamodb-local
npm install serverless-offline --save-dev
sls dynamodb install
Now I update serverless.ts
file like
plugins: [
'serverless-esbuild',
'serverless-dynamodb-local',
'serverless-offline'
],
custom
add DynamoDB config like custom: {
esbuild: { ... },
dynamodb: {
stages: ['dev'],
start: {
migrate: true
}
}
resources: {
Resources: {
usersTable: {
Type: 'AWS::DynamoDB::Table',
Properties: {
TableName: 'firstTable',
AttributeDefinitions: [{
AttributeName: 'id',
AttributeType: 'S',
}],
KeySchema: [{
AttributeName: 'id',
KeyType: 'HASH'
}],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1
}
}
}
}
}
Now I try to spin it all up by running sls offline start -s dev
and it throws error below (execution won't stop)
(this error is logically not thrown if I remove migrate: true
from serverless.ts
)
Dynamodb Local Started, Visit: http://localhost:8000/shell
UnknownEndpoint: Inaccessible host: `localhost' at port `8000'. This service may not be available in the `localhost' region.: DynamoDB - Error -
Environment: darwin, node 17.3.1, framework 3.12.0 (local), plugin 6.2.1, SDK 4.3.2
Docs: docs.serverless.com
Support: forum.serverless.com
Bugs: github.com/serverless/serverless/issues
Error:
UnknownEndpoint: Inaccessible host: `localhost' at port `8000'. This service may not be available in the `localhost' region.
at Request.ENOTFOUND_ERROR (...node_modules/aws-sdk/lib/event_listeners.js:529:46)
at Request.callListeners (...node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (...node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (...node_modules/aws-sdk/lib/request.js:686:14)
at error (...node_modules/aws-sdk/lib/event_listeners.js:361:22)
at ClientRequest.<anonymous> (...node_modules/aws-sdk/lib/http/node.js:99:9)
at ClientRequest.emit (node:events:390:28)
at ClientRequest.emit (node:domain:475:12)
at Socket.socketErrorListener (node:_http_client:442:9)
at Socket.emit (node:events:390:28)
at Socket.emit (node:domain:475:12)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
Even though error is thrown, I'm still able to successfully execute
> aws dynamodb list-tables --endpoint-url http://localhost:8000 --region localhost
{
"TableNames": []
}
I didn't change any other code than described above. I'd guess it will be something really basic, like I'm missing some config or something somewhere, but I can't find anything in docs or other posts that would help.
Any ideas welcome.
...and since I know some version had troubles in the past here is package.json
I'm running with
"engines": {
"node": ">=14.15.0"
},
"dependencies": {
"@middy/core": "^2.5.3",
"@middy/http-json-body-parser": "^2.5.3",
"serverless-dynamodb-local": "^0.2.40"
},
"devDependencies": {
"@serverless/typescript": "^3.0.0",
"@types/aws-lambda": "^8.10.71",
"@types/node": "^14.14.25",
"esbuild": "^0.14.11",
"json-schema-to-ts": "^1.5.0",
"serverless": "^3.0.0",
"serverless-esbuild": "^1.23.3",
"serverless-offline": "^8.5.0",
"ts-node": "^10.4.0",
"tsconfig-paths": "^3.9.0",
"typescript": "^4.1.3"
},
here's full serverless.ts
if it helps
const serverlessConfiguration: AWS = {
service: 'aws-onboarding-api',
frameworkVersion: '3',
plugins: [
'serverless-esbuild',
'serverless-dynamodb-local',
'serverless-offline'
],
provider: {
name: 'aws',
runtime: 'nodejs14.x',
apiGateway: {
minimumCompressionSize: 1024,
shouldStartNameWithService: true,
},
environment: {
AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1',
NODE_OPTIONS: '--enable-source-maps --stack-trace-limit=1000',
},
},
// import the function via paths
functions: { hello },
package: { individually: true },
custom: {
esbuild: {
bundle: true,
minify: false,
sourcemap: true,
exclude: ['aws-sdk'],
target: 'node14',
define: { 'require.resolve': undefined },
platform: 'node',
concurrency: 10,
},
dynamodb: {
stages: ['dev'],
start: {
migrate: true
}
}
},
resources: {
Resources: {
usersTable: {
Type: 'AWS::DynamoDB::Table',
Properties: {
TableName: 'firstTable',
AttributeDefinitions: [{
AttributeName: 'id',
AttributeType: 'S',
}],
KeySchema: [{
AttributeName: 'id',
KeyType: 'HASH'
}],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1
}
}
}
}
}
};
ANSWER
Answered 2022-Apr-11 at 10:19Turns out it's most likely an environment issue of my MacBook. My friend tried exactly the same code on his computer and it was working for him.
Still if anyone has an idea why this might be happening let me know please.
EDIT:
So turned out it was a problem with my node version, I was running v17.3.1
. After switching to v16.4.0
it works like a charm. 🥳
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
No vulnerabilities reported
Save this library and start creating your kit
See Similar Libraries in
Save this library and start creating your kit
Open Weaver – Develop Applications Faster with Open Source