【发布时间】:2023-03-23 00:17:02
【问题描述】:
我正在学习使用无服务器框架来创建和管理 AWS 服务。我已经通过 Serverless 站点上的文档逐步部署了一个 Serverless 项目,但由于某种原因,我无法在 AWS 管理控制台中看到 DynamoDB 表。
我已检查我使用的 AWS 配置文件是否正确,当我从终端使用 cURL 时,我能够从表中发布和获取数据,并且能够在这些端点查看数据在浏览器中,但我无法在 serverless.yml 文件之外的任何地方看到对创建表的任何引用。这是为什么?请参阅下面的代码(此链接上的完整演示 repo:https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb)。
感谢您在此处了解细微差别的帮助。谢谢!
org: justinbell714
app: jb-test-from-docs
service: serverless-rest-api-with-dynamodb
frameworkVersion: ">=1.1.0 <2.0.0"
provider:
name: aws
runtime: nodejs10.x
environment:
DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE}"
functions:
create:
handler: todos/create.create
events:
- http:
path: todos
method: post
cors: true
list:
handler: todos/list.list
events:
- http:
path: todos
method: get
cors: true
get:
handler: todos/get.get
events:
- http:
path: todos/{id}
method: get
cors: true
update:
handler: todos/update.update
events:
- http:
path: todos/{id}
method: put
cors: true
delete:
handler: todos/delete.delete
events:
- http:
path: todos/{id}
method: delete
cors: true
resources:
Resources:
TodosDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
-
AttributeName: id
AttributeType: S
KeySchema:
-
AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:provider.environment.DYNAMODB_TABLE}
【问题讨论】:
-
确保创建表格的区域是您在 AWS 控制台中选择的区域。
-
哇。非常感谢马克。当我为弗吉尼亚(也是美国东部)进行简介时,我没有意识到我已经切换了俄亥俄(美国东部)。如果您想将您的评论分成一个单独的问题,我很乐意投票并选择最佳答案。
-
这可能不是你的错。 AWS 控制台倾向于为您切换区域。至少在我看来,us-east-1 用户似乎会定期进入 us-east-2。甚至还有一个方便的 Firefox 插件,可以根据当前区域为控制台标题着色:addons.mozilla.org/en-US/firefox/addon/…
-
哈哈。可能只需要获取一个类似的插件并感谢@jarmod 的提醒!
标签: amazon-web-services aws-lambda amazon-dynamodb serverless