1

我正在尝试使用在边缘设备上运行的 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'.
4

1 回答 1

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)
于 2020-03-10T20:58:33.257 回答