将范围内python函数的输出/部分响应合并到一张表中

问题描述

我在下面有一个关于 lambda 函数的 python 脚本。这将调用另一个在 s3 存储桶上创建日志文件的 lambda。 s3 路径的格式基于当前日期和时间,如下面的脚本所示。对象或日志文件名基于对另一个 lambda 的调用请求 ID,我从该 lambda 的响应中获得。

import json
import boto3
import os
import time
import datetime
from boto3 import client

client = boto3.client("lambda")
s3 = boto3.client("s3")

def lambda_handler(event,context):
    for _ in range(5):

        response = client.invoke(
            FunctionName=FUNCTION_NAME,InvocationType="Event",Payload=json.dumps(INPUTPARAMS),)

        print(response)

        ResponseMetadata = json.dumps(response["ResponseMetadata"])
        ResponseMetadata2 = json.loads(ResponseMetadata)
        ReqID = ResponseMetadata2["RequestId"]

        now = datetime.datetime.now()

        folder = "runtime/S/{tenant}/{year}/{month}/{day}/{hour}".format(
            tenant=tenant,year=now.year,month=now.month,day=now.day,hour=now.hour,)

        key = "{folder}/{ReqID}_log.txt".format(folder=folder,ReqID=ReqID)

        time.sleep(90) #need sleep because of delay of creation of logfile in s3

        fileobj = s3.get_object(Bucket="BUCKETNAME",Key=key)
        fileData = fileobj["Body"].read()
        print(fileData)
        
        data = json.loads(fileData)
        fields = data["fields"]
        inbound = fields["inbound"]
        outbound = fields["outbound"]
        inboundoutbound = {"inbound": inbound,"outbound": outbound}
        table = tabulate([inboundoutbound],headers="keys",tablefmt="psql")
        print(table)

这个 lambda 的输出(表格)如下所示。因此,它创建了 5 个单独的表,因为我使用了 [for _ in range(5):] 但我想将它们组合在一个表中。我使用 [for _ in range(5):] 因为我想以至少 60 秒的间隔调用另一个 lambda 5 次,因此睡眠也有助于在 s3 上进行调用和读取文件的时间。

+-----------+------------+

|入境|出站|

|-----------+------------|

| 3671 | 8742 |

+-----------+------------+

screenshot of table which looks better than pasted values above

我对 python 和 lambda 很陌生,我尝试使用 temp 来保存输出并合并/附加它们,但我的代码不起作用。

我需要将它们组合在一张表中,然后通过 SNS 将其发送到电子邮件。我可以完成这部分,但无法组合表或入站出站的值。

请帮忙。同样,我在这里很新,愿意学习。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...