DynamoDB table 未在 serverless.yml 文件中创建
DynamoDB table not created in serverless.yml file
在 运行 sls offline start
之后出现错误 cannot do operation on a non-existent table
并尝试访问用户端点。 serverless.yml文件如下:
service:
name: digital-secret
plugins:
- serverless-dynamodb-local
- serverless-offline # must be last in the list
custom:
userTableName: 'users-table-${self:provider.stage}'
dynamoDb:
start:
migrate: true
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: us-east-2
iamRoleStatements:
- Effect: Allow
Action:
- 'dynamodb:Query'
- 'dynamodb:Scan'
- 'dynamodb:GetItem'
- 'dynamodb:PutItem'
- 'dynamodb:UpdateItem'
- 'dynamodb:DeleteItem'
Resource:
- { "Fn::GetAtt": ["usersTable", "Arn"] }
environment:
USERS_TABLE: ${self:custom.userTableName}
functions:
app:
handler: index.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
user:
handler: index.handler
events:
- http: 'GET /users/{proxy+}'
- http: 'POST /users'
resources:
Resources:
usersTable:
Type: 'AWS::DynamoDB::Table'
Properties:
TableName: ${self:custom.userTableName}
AttributeDefinitions:
- AttributeName: userId
AttributeType: S
KeySchema:
- AttributeName: userId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
有谁能帮忙指出这里有什么问题吗?我查看了文档和在线提供的许多不同示例,但我看到的与上面的没有什么不同。
serverless-dynamodb-local
文档说 custom
块的结构应如下所示:
custom:
dynamodb:
start:
migrate: true
你有 dynamoDb
而不是 dynamodb
如果其他人对此有疑问,我花了几个小时试图找出这个问题,那是因为我无意中弄错了 serverless.yml
中的 [资源部分]
Resources: <-- Needs to be lower case 'r'
Resources:
usersTable:
Type: 'AWS::DynamoDB::Table'
Properties:
...
在 运行 sls offline start
之后出现错误 cannot do operation on a non-existent table
并尝试访问用户端点。 serverless.yml文件如下:
service:
name: digital-secret
plugins:
- serverless-dynamodb-local
- serverless-offline # must be last in the list
custom:
userTableName: 'users-table-${self:provider.stage}'
dynamoDb:
start:
migrate: true
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: us-east-2
iamRoleStatements:
- Effect: Allow
Action:
- 'dynamodb:Query'
- 'dynamodb:Scan'
- 'dynamodb:GetItem'
- 'dynamodb:PutItem'
- 'dynamodb:UpdateItem'
- 'dynamodb:DeleteItem'
Resource:
- { "Fn::GetAtt": ["usersTable", "Arn"] }
environment:
USERS_TABLE: ${self:custom.userTableName}
functions:
app:
handler: index.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
user:
handler: index.handler
events:
- http: 'GET /users/{proxy+}'
- http: 'POST /users'
resources:
Resources:
usersTable:
Type: 'AWS::DynamoDB::Table'
Properties:
TableName: ${self:custom.userTableName}
AttributeDefinitions:
- AttributeName: userId
AttributeType: S
KeySchema:
- AttributeName: userId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
有谁能帮忙指出这里有什么问题吗?我查看了文档和在线提供的许多不同示例,但我看到的与上面的没有什么不同。
serverless-dynamodb-local
文档说 custom
块的结构应如下所示:
custom:
dynamodb:
start:
migrate: true
你有 dynamoDb
而不是 dynamodb
如果其他人对此有疑问,我花了几个小时试图找出这个问题,那是因为我无意中弄错了 serverless.yml
中的 [资源部分]Resources: <-- Needs to be lower case 'r'
Resources:
usersTable:
Type: 'AWS::DynamoDB::Table'
Properties:
...