DynamoDB环境搭建 #
一、环境搭建概述 #
DynamoDB 提供多种开发和测试环境选择:
| 环境 | 适用场景 | 特点 |
|---|---|---|
| AWS DynamoDB | 生产环境 | 完全托管,真实环境 |
| DynamoDB Local | 本地开发 | 免费,离线可用 |
| DynamoDB Accelerator | 测试环境 | AWS托管测试 |
二、AWS账户准备 #
2.1 创建AWS账户 #
text
步骤:
1. 访问 https://aws.amazon.com
2. 点击"创建AWS账户"
3. 填写账户信息
4. 选择支持计划(基础版免费)
5. 完成身份验证
2.2 IAM用户配置 #
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:*"
],
"Resource": "*"
}
]
}
2.3 访问密钥 #
text
获取访问密钥:
1. 登录AWS控制台
2. 进入IAM服务
3. 创建访问密钥
4. 保存Access Key ID和Secret Access Key
三、AWS CLI配置 #
3.1 安装AWS CLI #
macOS:
bash
# 使用Homebrew
brew install awscli
# 或使用安装包
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Windows:
powershell
# 使用MSI安装包
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
# 或使用Chocolatey
choco install awscli
Linux:
bash
# Ubuntu/Debian
sudo apt update
sudo apt install awscli
# CentOS/RHEL
sudo yum install awscli
# 或使用pip
pip install awscli
3.2 配置AWS CLI #
bash
# 配置凭证
aws configure
# 按提示输入:
AWS Access Key ID [None]: YOUR_ACCESS_KEY
AWS Secret Access Key [None]: YOUR_SECRET_KEY
Default region name [None]: us-east-1
Default output format [None]: json
3.3 验证配置 #
bash
# 查看配置
aws configure list
# 测试DynamoDB连接
aws dynamodb list-tables
# 查看当前身份
aws sts get-caller-identity
3.4 多配置文件 #
bash
# 添加新配置
aws configure --profile dev
# 使用指定配置
aws dynamodb list-tables --profile dev
# 配置文件位置
~/.aws/credentials
~/.aws/config
credentials文件示例:
ini
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[dev]
aws_access_key_id = AKIAI44QH8DHBEXAMPLE
aws_secret_access_key = je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
config文件示例:
ini
[default]
region = us-east-1
output = json
[profile dev]
region = us-west-2
output = json
四、DynamoDB Local本地环境 #
4.1 下载安装 #
方式一:直接下载
bash
# 下载DynamoDB Local
mkdir dynamodb-local
cd dynamodb-local
wget https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz
# 解压
tar -xzf dynamodb_local_latest.tar.gz
方式二:Docker(推荐)
bash
# 拉取镜像
docker pull amazon/dynamodb-local
# 运行容器
docker run -p 8000:8000 amazon/dynamodb-local
# 后台运行
docker run -d -p 8000:8000 --name dynamodb-local amazon/dynamodb-local
# 持久化数据
docker run -d -p 8000:8000 \
-v $(pwd)/dynamodb-data:/home/dynamodblocal/data \
--name dynamodb-local \
amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath ./data
4.2 启动DynamoDB Local #
bash
# Java方式启动
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
# 常用参数
java -jar DynamoDBLocal.jar \
-sharedDb \ # 共享数据库
-inMemory \ # 内存模式
-port 8000 \ # 端口
-dbPath ./data # 数据目录
4.3 连接本地DynamoDB #
bash
# 使用AWS CLI连接本地
aws dynamodb list-tables \
--endpoint-url http://localhost:8000
# 创建表
aws dynamodb create-table \
--table-name Users \
--attribute-definitions \
AttributeName=UserId,AttributeType=S \
--key-schema \
AttributeName=UserId,KeyType=HASH \
--billing-mode PAY_PER_REQUEST \
--endpoint-url http://localhost:8000
五、SDK环境配置 #
5.1 Node.js SDK #
bash
# 安装SDK
npm install @aws-sdk/client-dynamodb
npm install @aws-sdk/lib-dynamodb
# 或安装v2版本
npm install aws-sdk
JavaScript示例:
javascript
// ES Modules (v3)
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
const client = new DynamoDBClient({
region: 'us-east-1',
endpoint: 'http://localhost:8000', // 本地开发
credentials: {
accessKeyId: 'local',
secretAccessKey: 'local'
}
});
const docClient = DynamoDBDocumentClient.from(client);
javascript
// CommonJS (v2)
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({
region: 'us-east-1',
endpoint: 'http://localhost:8000'
});
const docClient = new AWS.DynamoDB.DocumentClient({
region: 'us-east-1',
endpoint: 'http://localhost:8000'
});
5.2 Python SDK (Boto3) #
bash
# 安装Boto3
pip install boto3
Python示例:
python
import boto3
# 连接AWS DynamoDB
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
# 连接本地DynamoDB
dynamodb_local = boto3.resource(
'dynamodb',
region_name='us-east-1',
endpoint_url='http://localhost:8000'
)
# 使用客户端
client = boto3.client('dynamodb', region_name='us-east-1')
5.3 Java SDK #
Maven依赖:
xml
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>dynamodb</artifactId>
<version>2.20.0</version>
</dependency>
Java示例:
java
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
DynamoDbClient client = DynamoDbClient.builder()
.region(Region.US_EAST_1)
.endpointOverride(URI.create("http://localhost:8000"))
.build();
5.4 Go SDK #
bash
# 安装SDK
go get github.com/aws/aws-sdk-go-v2/service/dynamodb
go get github.com/aws/aws-sdk-go-v2/service/dynamodbtypes
Go示例:
go
package main
import (
"context"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/dynamodb"
)
func main() {
cfg, err := config.LoadDefaultConfig(context.TODO(),
config.WithRegion("us-east-1"),
)
if err != nil {
panic(err)
}
client := dynamodb.NewFromConfig(cfg)
}
六、开发工具配置 #
6.1 VS Code扩展 #
text
推荐扩展:
├── AWS Toolkit
├── DynamoDB Explorer
└── YAML (for CloudFormation)
6.2 NoSQL Workbench #
下载安装:
text
1. 访问 https://aws.amazon.com/dynamodb/nosql-workbench/
2. 下载对应平台版本
3. 安装并启动
功能特点:
text
NoSQL Workbench功能:
├── 可视化数据建模
├── 查询构建器
├── 数据浏览
├── 导入/导出数据
└── 连接本地或云端DynamoDB
6.3 DynamoDB Admin (开源工具) #
bash
# 安装
npm install -g dynamodb-admin
# 运行
DYNAMO_ENDPOINT=http://localhost:8000 dynamodb-admin
# 访问
# http://localhost:8001
七、环境变量配置 #
7.1 常用环境变量 #
bash
# AWS凭证
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_SESSION_TOKEN=your_session_token # 临时凭证
# 区域配置
export AWS_DEFAULT_REGION=us-east-1
# 配置文件
export AWS_PROFILE=dev
# 本地DynamoDB
export DYNAMO_ENDPOINT=http://localhost:8000
7.2 使用.env文件 #
bash
# .env文件
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
DYNAMO_ENDPOINT=http://localhost:8000
javascript
// Node.js加载环境变量
require('dotenv').config();
const client = new DynamoDBClient({
region: process.env.AWS_DEFAULT_REGION,
endpoint: process.env.DYNAMO_ENDPOINT
});
八、测试环境配置 #
8.1 使用LocalStack #
bash
# 安装LocalStack
pip install localstack
# 启动
localstack start
# 或使用Docker
docker run -d -p 4566:4566 localstack/localstack
# 连接
aws dynamodb list-tables --endpoint-url http://localhost:4566
8.2 测试配置示例 #
javascript
// Jest测试配置
const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
const testConfig = {
region: 'us-east-1',
endpoint: process.env.DYNAMO_ENDPOINT || 'http://localhost:8000',
credentials: {
accessKeyId: 'test',
secretAccessKey: 'test'
}
};
beforeAll(async () => {
// 创建测试表
});
afterAll(async () => {
// 清理测试数据
});
九、最佳实践 #
9.1 环境隔离 #
text
推荐配置:
├── 开发环境:DynamoDB Local
├── 测试环境:AWS测试账户
├── 预发布环境:AWS预发布账户
└── 生产环境:AWS生产账户
9.2 配置管理 #
javascript
// 配置管理示例
const getConfig = () => {
const env = process.env.NODE_ENV || 'development';
const configs = {
development: {
endpoint: 'http://localhost:8000',
region: 'us-east-1'
},
test: {
endpoint: process.env.DYNAMO_ENDPOINT,
region: 'us-east-1'
},
production: {
region: process.env.AWS_REGION || 'us-east-1'
}
};
return configs[env];
};
9.3 安全建议 #
text
安全最佳实践:
├── 不要在代码中硬编码凭证
├── 使用IAM角色(EC2/Lambda)
├── 定期轮换访问密钥
├── 使用最小权限原则
└── 启用MFA保护
十、常见问题 #
10.1 连接问题 #
bash
# 检查AWS CLI配置
aws configure list
# 测试网络连接
aws dynamodb list-tables --debug
# 检查本地DynamoDB
curl http://localhost:8000
10.2 权限问题 #
bash
# 检查用户权限
aws iam get-user
aws iam list-attached-user-policies --user-name your-username
# 测试DynamoDB权限
aws dynamodb describe-limits
10.3 区域问题 #
bash
# 查看可用区域
aws ec2 describe-regions
# 切换区域
aws configure set region us-west-2
十一、总结 #
环境搭建要点:
| 环境 | 配置方式 | 适用场景 |
|---|---|---|
| AWS云端 | AWS CLI配置 | 生产环境 |
| DynamoDB Local | Docker/Java | 本地开发 |
| LocalStack | Docker | 集成测试 |
下一步,让我们学习DynamoDB的核心概念!
最后更新:2026-03-27