如何使用生产环境的SAM template.yaml在本地创建DynamoDB表?
用SAM模板在本地创建DynamoDB表的方法
前提条件
- 已安装AWS SAM CLI
- 本地DynamoDB已通过命令
docker run -p 8000:8000 amazon/dynamodb-local成功启动
步骤1:配置本地DynamoDB端点
让SAM CLI指向本地运行的DynamoDB实例,有两种方式:
临时配置(当前会话生效)
执行环境变量设置命令:
export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:8000
持久配置(永久生效)
编辑~/.aws/config文件,添加以下内容:
[default] endpoint_url_dynamodb = http://localhost:8000
步骤2:部署SAM模板到本地
运行SAM部署命令,指定模板文件和自定义的本地栈名称:
sam deploy --template-file template.yaml --stack-name local-dynamodb-stack --capabilities CAPABILITY_IAM --no-confirm-changeset --region us-east-1
参数说明:
--stack-name:自定义本地栈名称,可随意命名--region:本地DynamoDB对区域无严格要求,但需指定合法AWS区域(如us-east-1)--capabilities CAPABILITY_IAM:若模板包含IAM相关资源,必须添加此参数授权
步骤3:验证表创建结果
用AWS CLI查询本地DynamoDB的表列表:
aws dynamodb list-tables --endpoint-url http://localhost:8000
或用SAM CLI查看本地栈的资源:
sam list resources --stack-name local-dynamodb-stack
额外技巧:仅创建DynamoDB表(跳过其他资源)
若模板包含Lambda等其他资源,只想单独创建DynamoDB表,可使用CloudFormation命令并过滤资源类型:
aws cloudformation deploy --template-file template.yaml --stack-name local-dynamo-only --capabilities CAPABILITY_IAM --no-confirm-changeset --region us-east-1 --resource-types AWS::DynamoDB::Table,AWS::Serverless::SimpleTable
注:需同时包含AWS::DynamoDB::Table和SAM简化的AWS::Serverless::SimpleTable类型,确保所有表资源都被创建。
内容的提问来源于stack exchange,提问作者Andreas Lundgren
相关产品推荐
相关产品推荐

