如何用Python解码AWS Kinesis流记录事件?

2024-05-16 04:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个使用AWS Kinesis Data Stream的Python lambda。但我很难理解动觉记录事件的形状。例如:

{
    "Records": [
        {
            "kinesis": {
                "kinesisSchemaVersion": "1.0",
                "partitionKey": "1",
                "sequenceNumber": "49590338271490256608559692538361571095921575989136588898",
                "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==",
                "approximateArrivalTimestamp": 1545084650.987
            },
            "eventSource": "aws:kinesis",
            "eventVersion": "1.0",
            "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898",
            "eventName": "aws:kinesis:record",
            "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role",
            "awsRegion": "us-east-2",
            "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream"
        },
        {
            "kinesis": {
                "kinesisSchemaVersion": "1.0",
                "partitionKey": "1",
                "sequenceNumber": "49590338271490256608559692540925702759324208523137515618",
                "data": "VGhpcyBpcyBvbmx5IGEgdGVzdC4=",
                "approximateArrivalTimestamp": 1545084711.166
            },
            "eventSource": "aws:kinesis",
            "eventVersion": "1.0",
            "eventID": "shardId-000000000006:49590338271490256608559692540925702759324208523137515618",
            "eventName": "aws:kinesis:record",
            "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role",
            "awsRegion": "us-east-2",
            "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream"
        }
    ]
}

来源:Using AWS Lambda with Amazon Kinesis

问题

  • 我最初放在这个物体的动态流上的数据在哪里?在
  • 如何访问这些数据?在

Tags: lambdaawsdatastreamkinesisrolearnus
1条回答
网友
1楼 · 发布于 2024-05-16 04:44:22

放在流中的数据表示为每个记录的kinesis.data键上的Base64编码字符串。例如(截断):

{
    "Records": [
        {
            "kinesis": {
                ...
                "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==",
                ...
            },
            ...
        },
        {
            "kinesis": {
                ...
                "data": "VGhpcyBpcyBvbmx5IGEgdGVzdC4=",
                ...
            },
            ...
        }
    ]
}

要访问数据,请遍历每个Records对象,并使用Base64对kinesis.data值进行解码。在

^{pr2}$

注意:这个例子假设发送到kinesis流的数据最初是在kinesis b64编码之前utf-8编码的。在

相关问题 更多 >