[{"data":1,"prerenderedAt":99},["ShallowReactive",2],{"snippet-integration-sqs-to-lambda":3},{"id":4,"title":5,"contributors":6,"description":5,"extension":10,"gitHub":11,"introBox":14,"languages":18,"meta":26,"resources":27,"services":31,"snippets":34,"stem":95,"tags":96,"type":97,"__hash__":98},"snippets\u002Fsnippets\u002Fintegration-sqs-to-lambda.json","Sample Amazon SQS function code",[7,8,9],"content\u002Fcontributors\u002Fmohammed-tomeh.json","content\u002Fcontributors\u002Fgirish-b.json","content\u002Fcontributors\u002Fsanskar.json","json",{"template":12},{"repoURL":13},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-snippets\u002Ftree\u002Fmain\u002Fintegration-sqs-to-lambda",{"headline":15,"text":16},"How it works",[17],"The Lambda function retrieves a batch of SQS messages from the event parameter that it receives. The function logs the content of each message. This snippet demostrates SQS Lambda integration without batch item handling.",[19,20,21,22,23,24,25],"Node.js",".NET","TypeScript","Java","Ruby","Python","Go",{},{"bullets":28},[29],{"text":5,"link":30},"https:\u002F\u002Fdocs.aws.amazon.com\u002Flambda\u002Flatest\u002Fdg\u002Fwith-sqs-create-package.html",[32,33],"lambda-event-functions","sqs",[35],{"title":36,"codeTabs":37},"Runtimes",[38,45,52,59,66,73,80,87],{"id":19,"title":39,"description":40,"snippets":41},"Usage Example with Node:","Sample Amazon SQS function code using JavaScript without batch item handling.",[42],{"language":43,"code":44},"js","exports.handler = async (event, context) =&#62; {\n  for (const message of event.Records) {\n    await processMessageAsync(message);\n  }\n  console.info(\"done\");\n};\n\nasync function processMessageAsync(message) {\n  try {\n    console.log(`Processed message ${message.body}`);\n    \u002F\u002F TODO: Do interesting work based on the new message\n    await Promise.resolve(1); \u002F\u002FPlaceholder for actual async work\n  } catch (err) {\n    console.error(\"An error occurred\");\n    throw err;\n  }\n}\n",{"id":20,"title":46,"description":47,"snippets":48},"Usage Example with .NET:","Sample Amazon SQS function code using .NET without batch item handling.",[49],{"language":50,"code":51},"dotnet","﻿using Amazon.Lambda.Core;\nusing Amazon.Lambda.SQSEvents;\n\n\n\u002F\u002F Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.\n[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]\n\nnamespace SqsIntegrationSampleCode\n{\n    public async Task FunctionHandler(SQSEvent evnt, ILambdaContext context)\n    {\n        foreach (var message in evnt.Records)\n        {\n            await ProcessMessageAsync(message, context);\n        }\n\n        context.Logger.LogInformation(\"done\");\n    }\n\n    private async Task ProcessMessageAsync(SQSEvent.SQSMessage message, ILambdaContext context)\n    {\n        try\n        {\n            context.Logger.LogInformation($\"Processed message {message.Body}\");\n\n            \u002F\u002F TODO: Do interesting work based on the new message\n            await Task.CompletedTask;\n        }\n        catch (Exception e)\n        {\n            \u002F\u002FYou can use Dead Letter Queue to handle failures. By configuring a Lambda DLQ.\n            context.Logger.LogError($\"An error occurred\");\n            throw;\n        }\n\n    }\n}\n",{"id":21,"title":53,"description":54,"snippets":55},"Usage Example with TypeScript:","Sample Amazon SQS function code using TypeScript without batch item handling.",[56],{"language":57,"code":58},"ts","import { SQSEvent, Context, SQSHandler, SQSRecord } from \"aws-lambda\";\n\nexport const functionHandler: SQSHandler = async (\n  event: SQSEvent,\n  context: Context\n): Promise&#60;void&#62; =&#62; {\n  for (const message of event.Records) {\n    await processMessageAsync(message);\n  }\n  console.info(\"done\");\n};\n\nasync function processMessageAsync(message: SQSRecord): Promise&#60;any&#62; {\n  try {\n    console.log(`Processed message ${message.body}`);\n    \u002F\u002F TODO: Do interesting work based on the new message\n    await Promise.resolve(1); \u002F\u002FPlaceholder for actual async work\n  } catch (err) {\n    console.error(\"An error occurred\");\n    throw err;\n  }\n}\n",{"id":22,"title":60,"description":61,"snippets":62},"Usage Example with Java:","Sample Amazon SQS function code using Java without batch item handling.",[63],{"language":64,"code":65},"java","import com.amazonaws.services.lambda.runtime.Context;\nimport com.amazonaws.services.lambda.runtime.RequestHandler;\nimport com.amazonaws.services.lambda.runtime.events.SQSEvent;\nimport com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;\n\npublic class Function implements RequestHandler&#60;SQSEvent, Void&#62; {\n    @Override\n    public Void handleRequest(SQSEvent sqsEvent, Context context) {\n        for (SQSMessage msg : sqsEvent.getRecords()) {\n            processMessage(msg, context);\n        }\n        context.getLogger().log(\"done\");\n        return null;\n    }\n\n    private void processMessage(SQSMessage msg, Context context) {\n        try {\n            context.getLogger().log(\"Processed message \" + msg.getBody());\n\n            \u002F\u002F TODO: Do interesting work based on the new message\n\n        } catch (Exception e) {\n            context.getLogger().log(\"An error occurred\");\n            throw e;\n        }\n\n    }\n}",{"id":23,"title":67,"description":68,"snippets":69},"Usage Example with Ruby:","Sample Amazon SQS function code using Ruby without batch item handling.",[70],{"language":71,"code":72},"rb","def lambda_handler(event:, context:)\n  event['Records'].each do |message|\n    process_message(message)\n  end\n  puts \"done\"\nend\n\ndef process_message(message)\n  begin\n    puts \"Processed message #{message['body']}\"\n    # TODO: Do interesting work based on the new message\n  rescue StandardError =&#62; err\n    puts \"An error occurred\"\n    raise err\n  end\nend",{"id":24,"title":74,"description":75,"snippets":76},"Usage Example with Python:","Sample Amazon SQS function code using Python without batch item handling.",[77],{"language":78,"code":79},"py","def lambda_handler(event, context):\n    for message in event['Records']:\n        process_message(message)\n    print(\"done\")\n\ndef process_message(message):\n    try:\n        print(f\"Processed message {message['body']}\")\n        # TODO: Do interesting work based on the new message\n    except Exception as err:\n        print(\"An error occurred\")\n        raise err\n",{"id":25,"title":81,"description":82,"snippets":83},"Usage Example with Golang:","Sample Amazon SQS function code using Golang without batch item handling.",[84],{"language":85,"code":86},"go","package integration_sqs_to_lambda\n\nimport (\n\t\"fmt\"\n\t\"github.com\u002Faws\u002Faws-lambda-go\u002Fevents\"\n\t\"github.com\u002Faws\u002Faws-lambda-go\u002Flambda\"\n)\n\nfunc handler(event events.SQSEvent) error {\n\tfor _, record := range event.Records {\n\t\terr := processMessage(record)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tfmt.Println(\"done\")\n\treturn nil\n}\n\nfunc processMessage(record events.SQSMessage) error {\n\tfmt.Printf(\"Processed message %s\\n\", record.Body)\n\t\u002F\u002F TODO: Do interesting work based on the new message\n\treturn nil\n}\n\nfunc main() {\n\tlambda.Start(handler)\n}\n",{"id":88,"title":89,"description":90,"snippets":91},"Rust","Usage Example with Rust:","Sample Amazon SQS function code using Rust without batch item handling.",[92],{"language":93,"code":94},"rust","use aws_lambda_events::event::sqs::SqsEvent;\nuse lambda_runtime::{run, service_fn, Error, LambdaEvent};\n\nasync fn function_handler(event: LambdaEvent&#60;SqsEvent&#62;) -&#62; Result&#60;(), Error&#62; {\n    event.payload.records.iter().for_each(|record| {\n        \u002F\u002F process the record\n        tracing::info!(\"Message body: {}\", record.body.as_deref().unwrap_or_default())\n    });\n\n    Ok(())\n}\n\n#[tokio::main]\nasync fn main() -&#62; Result&#60;(), Error&#62; {\n    tracing_subscriber::fmt()\n        .with_max_level(tracing::Level::INFO)\n        \u002F\u002F disable printing the name of the module in every log line.\n        .with_target(false)\n        \u002F\u002F disabling time is handy because CloudWatch will add the ingestion time.\n        .without_time()\n        .init();\n\n    run(service_fn(function_handler)).await\n}","snippets\u002Fintegration-sqs-to-lambda",[],"Integration","xl1H8rmRMg08wqP0eVwkQot5KlKY1wT_VorW36tqujA",1792578864357]