from src import app # Example event JSON for Lambda event = { "eventSource": "aws:kafka", "eventSourceArn": "arn:aws:kafka:us-east-1:103233932089:cluster/dev-managed-kafka-cdc-destination/194e93a4-1a4e-4e96-85bd-99b4ebce8df0-11", "bootstrapServers": "b-2.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,b-1.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094,b-3.dev-managed-kafka-cdc.rk4es0.c11.kafka.us-east-1.amazonaws.com:9094", "records": { "cdc.musicGraphV5.hasAsset-0": [ { "topic": "cdc.musicGraphV5.hasAsset", "partition": 0, "offset": 506, "timestamp": 1738238756024, "timestampType": "CREATE_TIME", "key": "U3RydWN0e2lkPUNSMjFQSjl5ZTBFQ3ZEd3NjVmxtOUVJQUFBQUFBQU9udEFBQUFBQUFBQUFBQUFBQmxMY2FoTGc9LHR4SWQ9MjM5NTQwLHNlcT0wLG1ldGFkYXRhPVN0cnVjdHthdXRoZW50aWNhdGVkVXNlcj1ucGF0ZWwsZXhlY3V0aW5nVXNlcj1ucGF0ZWwsY29ubmVjdGlvblR5cGU9Ym9sdCxjb25uZWN0aW9uQ2xpZW50PTE5Mi4xNjguNDEuMjI0OjYyMDAzLGNvbm5lY3Rpb25TZXJ2ZXI9MTAuMTAxLjUuNjA6NzY4NyxzZXJ2ZXJJZD0wMzA5ZDI0MSxjYXB0dXJlTW9kZT1GVUxMLHR4U3RhcnRUaW1lPVN0cnVjdHtUWkRUPTIwMjUtMDEtMzBUMTI6MDU6NTUuMzI5Wn0sdHhDb21taXRUaW1lPVN0cnVjdHtUWkRUPTIwMjUtMDEtMzBUMTI6MDU6NTYuMDI0Wn0sdHhNZXRhZGF0YT1TdHJ1Y3R7YXBwPVN0cnVjdHtTPW5lbzRqLWJyb3dzZXJfdjUuMjYuMX0sdHlwZT1TdHJ1Y3R7Uz11c2VyLWRpcmVjdH19LGRhdGFiYXNlTmFtZT1TdHJ1Y3R7Uz1ncmFwaC5kYn19LGV2ZW50PVN0cnVjdHtlbGVtZW50SWQ9NToxZGI1M2M5Zi03MjdiLTQxMDItYmMzYy0yYzcxNTk2NmY0NDI6MTE1Mjk0MDE5NjM1MTE4NDQ4NCxldmVudFR5cGU9UkVMQVRJT05TSElQLG9wZXJhdGlvbj1ERUxFVEUsdHlwZT1IQVNfQVNTRVQsc3RhcnQ9U3RydWN0e2VsZW1lbnRJZD00OjFkYjUzYzlmLTcyN2ItNDEwMi1iYzNjLTJjNzE1OTY2ZjQ0Mjo0NjY2NTMxNixsYWJlbHM9W09yY2hhcmQsIFRyYWNrXSxrZXlzPVN0cnVjdHtUcmFjaz1bU3RydWN0e2lkPVN0cnVjdHtJNjQ9NTgyMjA1NTV9fV19fSxlbmQ9U3RydWN0e2VsZW1lbnRJZD00OjFkYjUzYzlmLTcyN2ItNDEwMi1iYzNjLTJjNzE1OTY2ZjQ0Mjo0NjY2NTMxNSxsYWJlbHM9W09yY2hhcmRBc3NldF0sa2V5cz1TdHJ1Y3R7T3JjaGFyZEFzc2V0PVtTdHJ1Y3R7ZXh0ZW5zaW9uPVN0cnVjdHtTPWZsYWN9LHNvdXJjZT1TdHJ1Y3R7Uz1vd3MtYXNzZXRzLWRifSxmaWxlbmFtZT1TdHJ1Y3R7Uz1yYW1ib319LCBTdHJ1Y3R7aWQ9U3RydWN0e1M9NDhlYjlhNmQtYzdjNi00ZGExLWExZDMtNjgwYjkzOWI3OWU4fX1dfX0sa2V5cz1bXSxzdGF0ZT1TdHJ1Y3R7YmVmb3JlPVN0cnVjdHtwcm9wZXJ0aWVzPXtjcmVhdGVkQXQ9U3RydWN0e1RaRFQ9MjAyNS0wMS0zMFQxMTo1NzoxMi44OTlafSwgbGFzdE1vZGlmaWVkQXQ9U3RydWN0e1RaRFQ9MjAyNS0wMS0zMFQxMTo1NzoxMi44OTlafSwgY3JlYXRlZEJ5PVN0cnVjdHtTPXRlc3QtbmFtfSwgbGFzdE1vZGlmaWVkQnk9U3RydWN0e1M9dGVzdC1uYW19fX19fX0=", "value": "eyJpZCI6IkNSMjFQSjl5ZTBFQ3ZEd3NjVmxtOUVJQUFBQUFBQU9udEFBQUFBQUFBQUFBQUFBQmxMY2FoTGc9IiwidHhJZCI6MjM5NTQwLCJzZXEiOjAsIm1ldGFkYXRhIjp7ImF1dGhlbnRpY2F0ZWRVc2VyIjoibnBhdGVsIiwiZXhlY3V0aW5nVXNlciI6Im5wYXRlbCIsImNvbm5lY3Rpb25UeXBlIjoiYm9sdCIsImNvbm5lY3Rpb25DbGllbnQiOiIxOTIuMTY4LjQxLjIyNDo2MjAwMyIsImNvbm5lY3Rpb25TZXJ2ZXIiOiIxMC4xMDEuNS42MDo3Njg3Iiwic2VydmVySWQiOiIwMzA5ZDI0MSIsImNhcHR1cmVNb2RlIjoiRlVMTCIsInR4U3RhcnRUaW1lIjp7IkIiOm51bGwsIkk2NCI6bnVsbCwiRjY0IjpudWxsLCJTIjpudWxsLCJCQSI6bnVsbCwiVExEIjpudWxsLCJUTERUIjpudWxsLCJUTFQiOm51bGwsIlRaRFQiOiIyMDI1LTAxLTMwVDEyOjA1OjU1LjMyOVoiLCJUT1QiOm51bGwsIlREIjpudWxsLCJTUCI6bnVsbCwiTEIiOm51bGwsIkxJNjQiOm51bGwsIkxGNjQiOm51bGwsIkxTIjpudWxsLCJMVExEIjpudWxsLCJMVExEVCI6bnVsbCwiTFRMVCI6bnVsbCwiTFpEVCI6bnVsbCwiTFRPVCI6bnVsbCwiTFREIjpudWxsLCJMU1AiOm51bGx9LCJ0eENvbW1pdFRpbWUiOnsiQiI6bnVsbCwiSTY0IjpudWxsLCJGNjQiOm51bGwsIlMiOm51bGwsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6IjIwMjUtMDEtMzBUMTI6MDU6NTYuMDI0WiIsIlRPVCI6bnVsbCwiVEQiOm51bGwsIlNQIjpudWxsLCJMQiI6bnVsbCwiTEk2NCI6bnVsbCwiTEY2NCI6bnVsbCwiTFMiOm51bGwsIkxUTEQiOm51bGwsIkxUTERUIjpudWxsLCJMVExUIjpudWxsLCJMWkRUIjpudWxsLCJMVE9UIjpudWxsLCJMVEQiOm51bGwsIkxTUCI6bnVsbH0sInR4TWV0YWRhdGEiOnsiYXBwIjp7IkIiOm51bGwsIkk2NCI6bnVsbCwiRjY0IjpudWxsLCJTIjoibmVvNGotYnJvd3Nlcl92NS4yNi4xIiwiQkEiOm51bGwsIlRMRCI6bnVsbCwiVExEVCI6bnVsbCwiVExUIjpudWxsLCJUWkRUIjpudWxsLCJUT1QiOm51bGwsIlREIjpudWxsLCJTUCI6bnVsbCwiTEIiOm51bGwsIkxJNjQiOm51bGwsIkxGNjQiOm51bGwsIkxTIjpudWxsLCJMVExEIjpudWxsLCJMVExEVCI6bnVsbCwiTFRMVCI6bnVsbCwiTFpEVCI6bnVsbCwiTFRPVCI6bnVsbCwiTFREIjpudWxsLCJMU1AiOm51bGx9LCJ0eXBlIjp7IkIiOm51bGwsIkk2NCI6bnVsbCwiRjY0IjpudWxsLCJTIjoidXNlci1kaXJlY3QiLCJCQSI6bnVsbCwiVExEIjpudWxsLCJUTERUIjpudWxsLCJUTFQiOm51bGwsIlRaRFQiOm51bGwsIlRPVCI6bnVsbCwiVEQiOm51bGwsIlNQIjpudWxsLCJMQiI6bnVsbCwiTEk2NCI6bnVsbCwiTEY2NCI6bnVsbCwiTFMiOm51bGwsIkxUTEQiOm51bGwsIkxUTERUIjpudWxsLCJMVExUIjpudWxsLCJMWkRUIjpudWxsLCJMVE9UIjpudWxsLCJMVEQiOm51bGwsIkxTUCI6bnVsbH19LCJkYXRhYmFzZU5hbWUiOnsiQiI6bnVsbCwiSTY0IjpudWxsLCJGNjQiOm51bGwsIlMiOiJncmFwaC5kYiIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfX0sImV2ZW50Ijp7ImVsZW1lbnRJZCI6IjU6MWRiNTNjOWYtNzI3Yi00MTAyLWJjM2MtMmM3MTU5NjZmNDQyOjExNTI5NDAxOTYzNTExODQ0ODQiLCJldmVudFR5cGUiOiJSRUxBVElPTlNISVAiLCJvcGVyYXRpb24iOiJERUxFVEUiLCJ0eXBlIjoiSEFTX0FTU0VUIiwic3RhcnQiOnsiZWxlbWVudElkIjoiNDoxZGI1M2M5Zi03MjdiLTQxMDItYmMzYy0yYzcxNTk2NmY0NDI6NDY2NjUzMTYiLCJsYWJlbHMiOlsiT3JjaGFyZCIsIlRyYWNrIl0sImtleXMiOnsiVHJhY2siOlt7ImlkIjp7IkIiOm51bGwsIkk2NCI6NTgyMjA1NTUsIkY2NCI6bnVsbCwiUyI6bnVsbCwiQkEiOm51bGwsIlRMRCI6bnVsbCwiVExEVCI6bnVsbCwiVExUIjpudWxsLCJUWkRUIjpudWxsLCJUT1QiOm51bGwsIlREIjpudWxsLCJTUCI6bnVsbCwiTEIiOm51bGwsIkxJNjQiOm51bGwsIkxGNjQiOm51bGwsIkxTIjpudWxsLCJMVExEIjpudWxsLCJMVExEVCI6bnVsbCwiTFRMVCI6bnVsbCwiTFpEVCI6bnVsbCwiTFRPVCI6bnVsbCwiTFREIjpudWxsLCJMU1AiOm51bGx9fV19fSwiZW5kIjp7ImVsZW1lbnRJZCI6IjQ6MWRiNTNjOWYtNzI3Yi00MTAyLWJjM2MtMmM3MTU5NjZmNDQyOjQ2NjY1MzE1IiwibGFiZWxzIjpbIk9yY2hhcmRBc3NldCJdLCJrZXlzIjp7Ik9yY2hhcmRBc3NldCI6W3siZXh0ZW5zaW9uIjp7IkIiOm51bGwsIkk2NCI6bnVsbCwiRjY0IjpudWxsLCJTIjoiZmxhYyIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfSwic291cmNlIjp7IkIiOm51bGwsIkk2NCI6bnVsbCwiRjY0IjpudWxsLCJTIjoib3dzLWFzc2V0cy1kYiIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfSwiZmlsZW5hbWUiOnsiQiI6bnVsbCwiSTY0IjpudWxsLCJGNjQiOm51bGwsIlMiOiJyYW1ibyIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfSwiaWQiOm51bGx9LHsiZXh0ZW5zaW9uIjpudWxsLCJzb3VyY2UiOm51bGwsImZpbGVuYW1lIjpudWxsLCJpZCI6eyJCIjpudWxsLCJJNjQiOm51bGwsIkY2NCI6bnVsbCwiUyI6IjQ4ZWI5YTZkLWM3YzYtNGRhMS1hMWQzLTY4MGI5MzliNzllOCIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfX1dfX0sImtleXMiOltdLCJzdGF0ZSI6eyJiZWZvcmUiOnsicHJvcGVydGllcyI6eyJjcmVhdGVkQXQiOnsiQiI6bnVsbCwiSTY0IjpudWxsLCJGNjQiOm51bGwsIlMiOm51bGwsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6IjIwMjUtMDEtMzBUMTE6NTc6MTIuODk5WiIsIlRPVCI6bnVsbCwiVEQiOm51bGwsIlNQIjpudWxsLCJMQiI6bnVsbCwiTEk2NCI6bnVsbCwiTEY2NCI6bnVsbCwiTFMiOm51bGwsIkxUTEQiOm51bGwsIkxUTERUIjpudWxsLCJMVExUIjpudWxsLCJMWkRUIjpudWxsLCJMVE9UIjpudWxsLCJMVEQiOm51bGwsIkxTUCI6bnVsbH0sImxhc3RNb2RpZmllZEF0Ijp7IkIiOm51bGwsIkk2NCI6bnVsbCwiRjY0IjpudWxsLCJTIjpudWxsLCJCQSI6bnVsbCwiVExEIjpudWxsLCJUTERUIjpudWxsLCJUTFQiOm51bGwsIlRaRFQiOiIyMDI1LTAxLTMwVDExOjU3OjEyLjg5OVoiLCJUT1QiOm51bGwsIlREIjpudWxsLCJTUCI6bnVsbCwiTEIiOm51bGwsIkxJNjQiOm51bGwsIkxGNjQiOm51bGwsIkxTIjpudWxsLCJMVExEIjpudWxsLCJMVExEVCI6bnVsbCwiTFRMVCI6bnVsbCwiTFpEVCI6bnVsbCwiTFRPVCI6bnVsbCwiTFREIjpudWxsLCJMU1AiOm51bGx9LCJjcmVhdGVkQnkiOnsiQiI6bnVsbCwiSTY0IjpudWxsLCJGNjQiOm51bGwsIlMiOiJ0ZXN0LW5hbSIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfSwibGFzdE1vZGlmaWVkQnkiOnsiQiI6bnVsbCwiSTY0IjpudWxsLCJGNjQiOm51bGwsIlMiOiJ0ZXN0LW5hbSIsIkJBIjpudWxsLCJUTEQiOm51bGwsIlRMRFQiOm51bGwsIlRMVCI6bnVsbCwiVFpEVCI6bnVsbCwiVE9UIjpudWxsLCJURCI6bnVsbCwiU1AiOm51bGwsIkxCIjpudWxsLCJMSTY0IjpudWxsLCJMRjY0IjpudWxsLCJMUyI6bnVsbCwiTFRMRCI6bnVsbCwiTFRMRFQiOm51bGwsIkxUTFQiOm51bGwsIkxaRFQiOm51bGwsIkxUT1QiOm51bGwsIkxURCI6bnVsbCwiTFNQIjpudWxsfX19LCJhZnRlciI6bnVsbH19fQ==", "headers": [ { "neo4j.source.cdc.id": [ 67, 82, 50, 49, 80, 74, 57, 121, 101, 48, 69, 67, 118, 68, 119, 115, 99, 86, 108, 109, 57, 69, 73, 65, 65, 65, 65, 65, 65, 65, 79, 110, 116, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 108, 76, 99, 97, 104, 76, 103, 61 ] }, { "neo4j.source.cdc.tx-id": [ 50, 51, 57, 53, 52, 48 ] }, { "neo4j.source.cdc.tx-seq": [ 48 ] } ] } ] } } # Context (mock or use an empty object) context = {} # Run the handler response = app.handler(event, context) print(response)