gpt4 book ai didi

python - 使用 Lambda-python 对 DynamoDB 表的 sed 识别响应

转载 作者:行者123 更新时间:2023-12-01 01:11:28 26 4
gpt4 key购买 nike

我正在使用 Lambda 来检测人脸,并希望将响应发送到 Dynamotable。这是我正在使用的代码:

rekognition = boto3.client('rekognition', region_name='us-east-1')
dynamodb = boto3.client('dynamodb', region_name='us-east-1')



# --------------- Helper Functions to call Rekognition APIs ------------------


def detect_faces(bucket, key):
response = rekognition.detect_faces(Image={"S3Object": {"Bucket": bucket,
"Name": key}}, Attributes=['ALL'])
TableName = 'table_test'
for face in response['FaceDetails']:
table_response = dynamodb.put_item(TableName=TableName, Item='{0} - {1}%')


return response

我的问题出在这一行:

 for face in response['FaceDetails']:
table_response = dynamodb.put_item(TableName=TableName, Item= {'key:{'S':'value'}, {'S':'Value')

我可以在控制台中看到结果。我不想将特定项目添加到表中 - 我需要将整个响应传输到表中。

请执行以下操作:1. 在表中添加什么作为键和分区键?2.如何将整个响应传输到表中

我已经被困在这个问题上三天了,但无法找出任何结果。请帮忙!

           ******************* EDIT *******************

我尝试了这段代码:

rekognition = boto3.client('rekognition', region_name='us-east-1')




# --------------- Helper Functions to call Rekognition APIs ------------------


def detect_faces(bucket, key):
response = rekognition.detect_faces(Image={"S3Object": {"Bucket": bucket,
"Name": key}}, Attributes=['ALL'])
TableName = 'table_test'
for face in response['FaceDetails']:
face_id = str(uuid.uuid4())
Age = face["AgeRange"]
Gender = face["Gender"]
print('Generating new DynamoDB record, with ID: ' + face_id)
print('Input Age: ' + Age)
print('Input Gender: ' + Gender)
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(os.environ['test_table'])
table.put_item(
Item={
'id' : face_id,
'Age' : Age,
'Gender' : Gender
}
)


return response

它给了我两个错误:

1. Error processing object xxx.jpg
2. cannot concatenate 'str' and 'dict' objects

你能帮忙吗?

最佳答案

在 DynamoDB 中创建表时,您必须至少指定一个分区键。转到您的 DynamoDB 表并获取您的分区键。拥有它后,您可以创建一个新对象,其中包含此分区键及其上的某些值以及您想要传递的对象本身。在 DynamoDB 表中创建新项目时,分区键始终是必须的。

您的 JSON 对象应如下所示:

{
"myPartitionKey": "myValue",
"attr1": "val1",
"attr2:" "val2"
}

编辑:OP更新他的问题后,这里有一些新信息:

对于问题1)

您确定您尝试处理的图像是有效的吗?如果它是损坏的文件,Rekognition 将失败并抛出该错误。

对于问题2)

您无法在 Python 中将字符串与字典连接起来。您的年龄和性别变量是字典,而不是字符串。因此,您需要访问这些字典中的内部属性。它们具有“值”属性。我不是 Python 开发人员,但您需要访问 Gender 对象内的 Value 属性。然而,Age 对象具有“Low”和“High”属性。

您可以在docs中查看完整的属性列表。

希望这有帮助!

关于python - 使用 Lambda-python 对 DynamoDB 表的 sed 识别响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com