我正在使用Flask,并且想将一个项目插入DynamoDB表中,endpoint_url应该是什么?

时间:2019-01-31 22:50:43

标签: python amazon-web-services amazon-dynamodb boto3

我有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 docs基本上建议端点应该是这个端点,但是我肯定会丢失一些东西,因为我必须以某种方式指定它应该指向我的DynamoDB表。

注意:我链接到的教程确实要求运行aws configure并插入我的密钥。但是,首先,我放了我的密钥,并且它无法通过身份验证。其次,我要添加此功能的Flask应用程序部署在Elastic Beanstalk实例中,因此,我需要找到链接此链接的方法以用于一般目的,而不仅仅是用于本地测试。

1 个答案:

答案 0 :(得分:2)

如果要与真正的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')