python - 我正在使用 Flask,我想向 DynamoDB 表中插入一个项目,endpoint_url 应该是什么?
问题描述
我有 DynamoDB,我的表定义如下:
dynamodb = boto3.resource('dynamodb', region_name='us-east-2', endpoint_url="https://dynamodb.us-east-2.amazonaws.com")
table = dynamodb.Table('Customers')
在进行一些处理之后,我能够以编程方式获取这 4 个属性的值。单击按钮后(并执行一些最终返回 URL 的其他操作),我想调用此 table.put_item 函数。但是,我收到 500 内部服务器错误。
table.put_item(
Item={
'Name': name,
'Active': active,
'Amount': amount,
'Key': key
}
)
AWS 文档基本上建议端点应该是这个端点,但我肯定遗漏了一些东西,因为我必须以某种方式指定它应该指向我的 DynamoDB 表。
注意:我链接到的教程确实要求运行aws configure
和插入我的密钥。但是,首先,我输入了我的密钥,但它未能通过身份验证。其次,我要添加此功能的 Flask 应用程序部署在 Elastic Beanstalk 实例中,因此我需要找到将其链接起来的通用方法,而不仅仅是本地测试。
解决方案
如果您正在与真正的 DynamoDB 服务通信,则不应指定端点。它仅与DynamoDB Local相关,这是一个用于本地测试的本地、独立的 DynamoDB 模拟器(以降低针对真实 DynamoDB 运行的成本和/或在无需 Internet 连接的情况下进行本地开发)。
只需执行以下操作(与 us-east-2 中的真实 DynamoDB 服务对话):
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-east-2')
table = dynamodb.Table('Customers')
推荐阅读
- node.js - Sequelize:无法对列 UpdatedAt 进行更新
- javascript - 突变通过 react-adopt 触发两次
- javascript - 想要获取数组键的值
- python - Sphinx 快速入门有限选项
- r - 将矩阵的季度回报转换为年度回报
- javascript - POST https://www....?action=getclientRecords 在获取数据时显示错误 500
- c# - 如何通过将 curl 更改为 WWWform 来统一使用 curl
- ios - 带有选择闪烁选项的 Swift UITableview 单元格复选标记
- node.js - 使用无服务器从 Swagger UI 中隐藏 OPTIONS 端点
- html - 我收到错误 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.4.7/$injector/modulerr (只是一个要测试的 hello world 应用程序)