无法使用在Greengrass上运行的AWS Lambda将对象放入S3

时间:2019-07-19 12:12:05

标签: python-2.7 amazon-s3 boto3 greengrass

我正在尝试使用在边缘设备上运行的AWS Greengrass和Lambda将一些传感器数据从RPi存储到S3。我的代码现在非常基础,目的是检查S3写入。虽然当我尝试在Greengrass中运行代码时我的lambda出现了异常(尽管当我从控制台运行Lambda时它可以工作)。

我不明白为什么只有Lambda会发生这种情况 在Greengrass环境中运行,但没有给我同样的问题 单独运行Lambda时,我们将不胜感激。

我没有运气试图在Raspberry Pi中重新安装Greengrass,还检查了Lambda权限,但对我来说似乎都是正确的。

import greengrasssdk
import platform
from threading import Timer
from botocore.exceptions import ClientError
import time
import boto3,logging
some_binary_data = b'Here we have some more data from BB'
s3 = boto3.resource('s3')
object = s3.Object('XXXXXX','Testing')
object.put(Body=some_binary_data)


Error Message:
The code abends while executing object.put(Body=some_binary_data)
[2019-07-19T11:13:19.749+02:00]
[FATAL]-lambda_runtime.py:353,Failed to initialize Lambda runtime due to 
exception: An HTTP Client raised and unhandled exception:
'module' object has no attribute 'wait_for_read'.

1 个答案:

答案 0 :(得分:0)

任何运气能解决您的问题吗? 我遇到了与boto3.client(“ s3”)相同的问题,客户端无法启动。但是相同的代码对我的dynamodb客户端有效。真的很奇怪

s3_client = boto3.client('s3')
logging.debug("s3_upload: client loaded.")
s3_client.upload_file(img_local_path, S3_BUCKET, S3_KEY+file_name)