You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地运行Node.js Serverless API并对接AWS控制台DynamoDB?

核心结论

不需要在本地部署DynamoDB,你完全可以让本地运行的Serverless API直接调用AWS控制台中的云端DynamoDB实例。

具体实现步骤

1. 配置本地AWS凭证

确保本地已配置有权限访问目标DynamoDB的AWS凭证:

  • 终端执行aws configure命令,按提示输入AWS Access Key ID、Secret Access Key,以及与云端DynamoDB一致的默认区域。
  • 或手动创建凭证文件:Linux/macOS路径为~/.aws/credentials,Windows路径为C:\Users\<你的用户名>\.aws\credentials,文件格式如下:
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

2. 调整Serverless配置文件(serverless.yml)

移除所有DynamoDB Local相关插件配置,确保provider区域与云端DynamoDB匹配,并配置正确的IAM权限:

service: your-api-service
provider:
  name: aws
  runtime: nodejs18.x
  region: us-east-1 # 替换为你的DynamoDB所在区域
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:${self:provider.region}:*:table/YourTableName" # 替换为你的DynamoDB表ARN
functions:
  yourFunction:
    handler: handler.yourFunction
    events:
      - httpApi:
          path: /your-path
          method: get
plugins:
  - serverless-offline # 用于本地运行API

3. 修改DynamoDB客户端代码

确保代码中的DynamoDB客户端连接云端服务而非本地实例,以下是两种SDK版本的示例:

AWS SDK v3

import { DynamoDBClient, GetItemCommand } from "@aws-sdk/client-dynamodb";

// SDK会自动根据本地凭证和区域配置连接云端DynamoDB
const client = new DynamoDBClient({ region: "us-east-1" });

export const yourFunction = async (event) => {
  const params = {
    TableName: "YourTableName",
    Key: {
      id: { S: event.pathParameters.id }
    }
  };

  try {
    const response = await client.send(new GetItemCommand(params));
    return {
      statusCode: 200,
      body: JSON.stringify(response.Item)
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify(error)
    };
  }
};

AWS SDK v2

const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' });

const dynamodb = new AWS.DynamoDB();

exports.yourFunction = async (event) => {
  // 业务逻辑实现
};

4. 本地启动API

先安装serverless-offline插件:

npm install serverless-offline --save-dev

然后执行命令启动本地API:

serverless offline start

默认情况下API会运行在http://localhost:3000,此时调用本地API,请求会直接转发到云端DynamoDB。

注意事项
  • 确认AWS凭证拥有目标DynamoDB表的操作权限,避免权限报错。
  • 本地调用云端DynamoDB会产生AWS服务费用,注意控制测试调用量。
  • 网络延迟会高于本地DynamoDB,测试时留意响应时长。

内容的提问来源于stack exchange,提问作者Navdeep Kaushal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:40:43