【发布时间】:2016-02-25 11:13:29
【问题描述】:
这是一个概念问题:
我们想为 Dynamo DB 表创建一个唯一的主键,同时在 AWS Lambda 上运行我们的代码。
如果我们使用 AWS Lambda 上的 Python 内置函数 uuid 为 dynamo DB 数据库创建唯一键,它是否有可能创建双倍键,例如,如果我们有 5-200 亿个项目我们的 dynamodb 数据库。
例如,我知道在正常应用程序中使用双 uuid 密钥的可能性极低,几乎是不可能的。
据我了解,每次运行 uuid 时,它都会通过在内存中保存一些先前的值来确保它不能创建双精度值。
但是我不确定 Lambda 是否只是使用同一个 python 控制台一遍又一遍地运行下面的函数(并保存 uuid 以确保其唯一性),或者它是否正在创建多个单独的控制台实例并分别运行它们(不是保存 uuid 的内存)。
虽然这是一个概念问题,但这里有一些示例代码:
from __future__ import print_function
from decimal import *
import boto3
import json
from locale import str
import uuid
def my_handler(event, context):
description = event['description']
spot_id = uuid.uuid4() #Unique identifier for spot
dynamodb = boto3.client('dynamodb')
tablesinfo = "sinfo"
dynamodb.put_item(
TableName = tablesinfo, Item = {
'spot_id':{'S' : str(spot_id)},
'description': {'S' : description}
}
)
return {'spot_id' : spot_id}
【问题讨论】:
-
您的代码示例不包括您生成 uuid 的部分。
-
@Oin 我更新了代码,我意识到它可能令人困惑,但这主要是一个基于概念的问题
-
你有这个问题的答案吗?我一次又一次地得到相同的 UUID
-
@Himanshu 不,我没有,但我假设如果您一次又一次地获得相同的 UUID,它必须在每次运行代码时运行新的单独实例,而不是将其保存在内存中
标签: python amazon-web-services amazon-dynamodb aws-lambda