json - 使用 boto3 从 S3 存储桶中的 JSON 文件中提取元素
问题描述
我创建了一个 AWS Python Lambda,它模拟数据并将其作为消息发送到相关的 AWS IoT 主题。
我不想从 lambda 中的 os.environ 读取 Client_ID,而是想从我使用 boto3 存储在 S3 中的 JSON 文件中提取它们
解决方案
您应该考虑使用“S3 Select”,它允许您直接在 S3 中查询文件,而无需将文件下载到系统。在 boto3 中,它被称为select_object_content。我根据您的信息和 boto3 页面在下面构建了一个示例。
response = client.select_object_content(
Bucket='mybucketname',
Key='simulated/config/IoT-sim-config.json',
Expression="SELECT s.* FROM S3Object s WHERE s.client_id = 'Sim_1'", # You will need to fiddle with the quotes on the SQL here.
ExpressionType='SQL',
InputSerialization={
'JSON': {
'Type': 'DOCUMENT'
}
},
OutputSerialization={
'JSON': {
'RecordDelimiter': ','
}
}
)
推荐阅读
- c# - rabbitmq频道应该留给消费者吗?
- javascript - “未定义”类型上不存在属性“句柄”-反应上下文和打字稿
- python - 函数恰好需要 2 个参数 3(给定)python cx_orcale 插入错误
- angular - 类型错误:“xxx”不是函数
- ios - 如果不满足某个条件,你怎么能忽略一个通用链接?
- java - 为什么当未接受的套接字发送消息时,套接字不会抛出错误?
- java - 基于用户对象的 mxGraph 自定义 Swing 画布
- c++ - 是否可以限制访问包含的课程?
- python-3.x - python3.7 & pandas - 使用行中的列值作为查找值返回不同的列值
- javascript - 每秒递减一次 laravel