You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda使用aioboto3操作DynamoDB遇AttributeError问题求助

解决aioboto3调用DynamoDB时的AttributeError问题

问题根源

你遇到的AttributeError: 'ResourceCreatorContext' object has no attribute 'Table'是因为aioboto3的资源创建逻辑和boto3存在差异:

  • boto3中Session().resource('dynamodb')直接返回资源实例,可直接调用Table方法
  • aioboto3中Session().resource('dynamodb')返回的是ResourceCreatorContext上下文对象,必须先通过await或async with获取实际的DynamoDB资源实例,才能访问Table属性

修正代码

以下是修复后的完整代码,同时解决了原代码中item为None时访问item['date']会抛出异常的问题:

import os
import json
import asyncio
import datetime
import aioboto3


def get_hello(event, context):
    loop = asyncio.get_event_loop()
    return loop.run_until_complete(get_hello_async(event, context))


async def get_hello_async(event, context):
    name = event['queryStringParameters']['name']

    item = await get_item(name)

    if item and item.get('date'):
        date = datetime.datetime.fromtimestamp(item['date'] / 1000)
        message = 'Was greeted on {}'.format(date.strftime('%m/%d/%Y, %H:%M:%S'))
        return {
            'statusCode': 200,
            'headers': {
                'Access-Control-Allow-Origin': '*',
            },
            'body': json.dumps(message)
        }
    else:
        return {
            'statusCode': 404,
            'headers': {
                'Access-Control-Allow-Origin': '*',
            },
            'body': json.dumps('No greeting record found')
        }


async def get_item(name):
    # 使用async with上下文管理器获取并管理DynamoDB资源
    async with aioboto3.Session().resource('dynamodb') as dynamodb:
        table = dynamodb.Table(os.environ['TABLE_NAME'])
        record = await table.get_item(Key={'name': name})
        return record.get('Item')

关键修改点

  1. 资源实例获取:用async with上下文管理器获取DynamoDB资源实例,避免直接操作ResourceCreatorContext对象
  2. 空值安全处理:添加item and item.get('date')的判断,防止item为None时触发KeyError
  3. 资源生命周期管理:async with会自动处理资源的关闭,避免资源泄漏

内容的提问来源于stack exchange,提问作者Eduardo G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:30:18