[{"data":1,"prerenderedAt":64},["ShallowReactive",2],{"snippet-integration-docdb-to-lambda":3},{"id":4,"title":5,"contributors":6,"description":8,"extension":9,"gitHub":10,"introBox":13,"languages":17,"meta":23,"resources":24,"services":25,"snippets":28,"stem":60,"tags":61,"type":62,"__hash__":63},"snippets\u002Fsnippets\u002Fintegration-docdb-to-lambda.json","Integration of Amazon DocumentDB with AWS Lambda",[7],"content\u002Fcontributors\u002Fabhishek-agawane.json","This snippet demonstrates how to integrate Amazon DocumentDB with an AWS Lambda function.","json",{"template":11},{"repoURL":12},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-snippets\u002Ftree\u002Fmain\u002Fintegration-docdb-to-lambda",{"headline":14,"text":15},"How it works",[16],"Amazon DocumentDB (with MongoDB compatibility) is a fast, scalable, highly available, and fully managed document database service that supports MongoDB workloads. AWS Lambda can be easily integrated with Amazon DocumentDB to build serverless applications that leverage the power of a fully managed document database",[18,19,20,21,22],"Python","Go","Ruby","Javascript","Java",{},null,[26,27],"lambda","DocumentDB",[29],{"title":30,"codeTabs":31},"Runtimes",[32,39,44,50,55],{"id":18,"title":33,"description":34,"snippets":35},"Copy the code into your Lambda function","Follow the AWS Lambda instructions for packaging with dependencies and uploading in .zip format.",[36],{"language":37,"code":38},"py","import json\n\ndef lambda_handler(event, context):\n    for record in event.get('events', []):\n        log_document_db_event(record)\n    return 'OK'\n\ndef log_document_db_event(record):\n    event_data = record.get('event', {})\n    operation_type = event_data.get('operationType', 'Unknown')\n    db = event_data.get('ns', {}).get('db', 'Unknown')\n    collection = event_data.get('ns', {}).get('coll', 'Unknown')\n    full_document = event_data.get('fullDocument', {})\n\n    print(f\"Operation type: {operation_type}\")\n    print(f\"db: {db}\")\n    print(f\"collection: {collection}\")\n    print(\"Full document:\", json.dumps(full_document, indent=2))",{"id":19,"title":33,"description":34,"snippets":40},[41],{"language":42,"code":43},"go","\u002F\u002F Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n\u002F\u002F SPDX-License-Identifier: Apache-2.0\n\npackage main\n\nimport (\n\t\"context\"\n\t\"encoding\u002Fjson\"\n\t\"fmt\"\n\n\t\"github.com\u002Faws\u002Faws-lambda-go\u002Flambda\"\n)\n\ntype Event struct {\n\tEvents []Record `json:\"events\"`\n}\n\ntype Record struct {\n\tEvent struct {\n\t\tOperationType string `json:\"operationType\"`\n\t\tNS            struct {\n\t\t\tDB   string `json:\"db\"`\n\t\t\tColl string `json:\"coll\"`\n\t\t} `json:\"ns\"`\n\t\tFullDocument interface{} `json:\"fullDocument\"`\n\t} `json:\"event\"`\n}\n\nfunc main() {\n\tlambda.Start(handler)\n}\n\nfunc handler(ctx context.Context, event Event) (string, error) {\n\tfmt.Println(\"Loading function\")\n\tfor _, record := range event.Events {\n\t\tlogDocumentDBEvent(record)\n\t}\n\n\treturn \"OK\", nil\n}\n\nfunc logDocumentDBEvent(record Record) {\n\tfmt.Printf(\"Operation type: %s\\n\", record.Event.OperationType)\n\tfmt.Printf(\"db: %s\\n\", record.Event.NS.DB)\n\tfmt.Printf(\"collection: %s\\n\", record.Event.NS.Coll)\n\tdocBytes, _ := json.MarshalIndent(record.Event.FullDocument, \"\", \"  \")\n\tfmt.Printf(\"Full document: %s\\n\", string(docBytes))\n}\n",{"id":20,"title":33,"description":45,"snippets":46},"Follow the AWS Lambda instructions for packaging with ruby dependencies with Ruby gem and bundler.",[47],{"language":48,"code":49},"ruby","require 'json'\n\ndef lambda_handler(event:, context:)\n  event['events'].each do |record|\n    log_document_db_event(record)\n  end\n  'OK'\nend\n\ndef log_document_db_event(record)\n  event_data = record['event'] || {}\n  operation_type = event_data['operationType'] || 'Unknown'\n  db = event_data.dig('ns', 'db') || 'Unknown'\n  collection = event_data.dig('ns', 'coll') || 'Unknown'\n  full_document = event_data['fullDocument'] || {}\n\n  puts \"Operation type: #{operation_type}\"\n  puts \"db: #{db}\"\n  puts \"collection: #{collection}\"\n  puts \"Full document: #{JSON.pretty_generate(full_document)}\"\nend",{"id":21,"title":33,"description":34,"snippets":51},[52],{"language":53,"code":54},"js","console.log('Loading function');\nexports.handler = async (event, context) =&#62; {\n    event.events.forEach(record =&#62; {\n        logDocumentDBEvent(record);\n    });\n    return 'OK';\n};\n\nconst logDocumentDBEvent = (record) =&#62; {\n    console.log('Operation type: ' + record.event.operationType);\n    console.log('db: ' + record.event.ns.db);\n    console.log('collection: ' + record.event.ns.coll);\n    console.log('Full document:', JSON.stringify(record.event.fullDocument, null, 2));\n};\n\n",{"id":22,"title":33,"description":34,"snippets":56},[57],{"language":58,"code":59},"java","import java.util.List;\nimport java.util.Map;\n\nimport com.amazonaws.services.lambda.runtime.Context;\nimport com.amazonaws.services.lambda.runtime.RequestHandler;\n\npublic class Example implements RequestHandler&#60;Map&#60;String, Object&#62;, String&#62; {\n\n    @SuppressWarnings(\"unchecked\")\n    @Override\n    public String handleRequest(Map&#60;String, Object&#62; event, Context context) {\n        List&#60;Map&#60;String, Object&#62;&#62; events = (List&#60;Map&#60;String, Object&#62;&#62;) event.get(\"events\");\n        for (Map&#60;String, Object&#62; record : events) {\n            Map&#60;String, Object&#62; eventData = (Map&#60;String, Object&#62;) record.get(\"event\");\n            processEventData(eventData);\n        }\n\n        return \"OK\";\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void processEventData(Map&#60;String, Object&#62; eventData) {\n        String operationType = (String) eventData.get(\"operationType\");\n        System.out.println(\"operationType: %s\".formatted(operationType));\n\n        Map&#60;String, Object&#62; ns = (Map&#60;String, Object&#62;) eventData.get(\"ns\");\n\n        String db = (String) ns.get(\"db\");\n        System.out.println(\"db: %s\".formatted(db));\n        String coll = (String) ns.get(\"coll\");\n        System.out.println(\"coll: %s\".formatted(coll));\n\n        Map&#60;String, Object&#62; fullDocument = (Map&#60;String, Object&#62;) eventData.get(\"fullDocument\");\n        System.out.println(\"fullDocument: %s\".formatted(fullDocument));\n    }\n\n}\n","snippets\u002Fintegration-docdb-to-lambda",[],"Integration","9t7I8BRpsaXEHP-dAhzVbjmxJK-pW_tLbtqJUZptSB0",1790678109969]