微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将范围内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 举报,一经查实,本站将立刻删除。