带有DynamoDB连接问题的无服务器lambda功能



我正在使用无服务器框架来代码AWS lambda函数。我需要从HTML页面获取表单数据,并使用AWS lambda将其保存到DynamoDB。因此,我也用NodeJS和API端点编写了代码。最后,我将应用程序部署到AWS。因此,当我尝试同时使用Curl和Postman发布数据时,它显示了"内部服务器错误"

以下是相关的代码片段。

handler.js

const params = {
    TableName: process.env.DYNAMODB_TABLE,
    Item: {
      id: uuid.v1(),
      name: data.name,
      phone: data.phone,
      checked: false,
      createdAt: timestamp,
      updatedAt: timestamp,
    },
  };

serverless.yml

provider:
  name: aws
  runtime: nodejs6.10
  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}"

我不确定在哪里定义Dynamo表名以及它是由自动运行代码时创建的?我遵循了此GitHub repo -https://github.com/serverless/examples/tree/master/master/aws-node-node-node-rest-api-with-dynamodb

您的当前serverless.yml不定定义并为您创建DynamoDB表。

您可以通过在serverless配置的resources部分中定义它来做到这一点。

provider:
  name: aws
  runtime: nodejs6.10
  environment:
    DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}-phones
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: arn:aws:dynamodb:*:*:*

resources:
  Resources:
    phonesTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:service}-${opt:stage, self:provider.stage}-phones
        AttributeDefinitions:
          - AttributeName: id
            AttributeType: S
        KeySchema:
          - AttributeName: id
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1

参考:https://serverless.com/framework/docs/providers/aws/guide/resources/

最新更新