Beta Acid

exploring-azure-functions-and-aws-lambda-image

Exploring Azure Functions and AWS Lambda

  • Development
Gabe_profile_picture

Gabriel Valério

March 20, 2025 • 8 min read

As a developer working with cloud services, I've found that serverless computing makes my life much easier. Instead of managing servers, I can focus on writing code that matters. Let me share my experience with Azure Functions and AWS Lambda - two popular serverless platforms I use regularly.

Azure Functions: Microsoft's Serverless Offering

Azure Functions is Microsoft's offering in the serverless space. It's designed to be easy to use, especially if you're already familiar with Microsoft's ecosystem. Setting up an Azure Function is relatively straightforward. With tools like Visual Studio Code, you can create, debug, and deploy functions quickly.

Here's an example of an Azure Function built to process image uploads:

import { AzureFunction, Context, HttpRequest } from "@azure/functions";
import sharp from "sharp";

const imageProcessor: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    const imageBuffer = Buffer.from(req.body, 'base64');
    
    try {
        // Resize the image to a thumbnail
        const thumbnail = await sharp(imageBuffer)
            .resize(200, 200, { fit: 'cover' })
            .jpeg({ quality: 80 })
            .toBuffer();
            
        context.res = {
            status: 200,
            body: thumbnail.toString('base64'),
            headers: {
                'Content-Type': 'image/jpeg'
            }
        };
    } catch (error) {
        context.res = {
            status: 400,
            body: "Failed to process image"
        };
    }
};

This function takes an uploaded image, creates a thumbnail version, and sends it back. Just a few lines of code, and you have a fully functional endpoint.

AWS Lambda: Amazon's Serverless Service

AWS Lambda is Amazon's serverless offering. It's been around longer and has a more mature ecosystem. Lambda functions are event-driven, meaning they can be triggered by a variety of events, from HTTP requests to changes in an S3 bucket.

Here's an example Lambda function that helps moderate user comments:

import { DynamoDB } from 'aws-sdk';
import { ComprehendClient, DetectSentimentCommand } from '@aws-sdk/client-comprehend';

export const handler = async (event: any): Promise<any> => {
    const comment = event.body?.comment;
    if (!comment) {
        return {
            statusCode: 400,
            body: JSON.stringify({ error: 'Comment is required' })
        };
    }

    const comprehend = new ComprehendClient({ region: 'us-east-1' });
    
    try {
        // Analyze comment sentiment
        const sentiment = await comprehend.send(new DetectSentimentCommand({
            Text: comment,
            LanguageCode: 'en'
        }));
        
        // Store comments that aren't negative
        if (sentiment.Sentiment !== 'NEGATIVE') {
            const dynamo = new DynamoDB.DocumentClient();
            await dynamo.put({
                TableName: 'Comments',
                Item: {
                    id: Date.now().toString(),
                    comment,
                    sentiment: sentiment.Sentiment
                }
            }).promise();
        }

        return {
            statusCode: 200,
            body: JSON.stringify({
                approved: sentiment.Sentiment !== 'NEGATIVE',
                sentiment: sentiment.Sentiment
            })
        };
    } catch (error) {
        console.error('Error:', error);
        return {
            statusCode: 500,
            body: JSON.stringify({ error: 'Failed to process comment' })
        };
    }
};

This function analyzes incoming comments using Amazon Comprehend to detect negative content, storing only appropriate comments in a database. It's a super helpful way of automating moderation quickly and cheaply.

Which One Should You Choose?

Both services are solid choices, but here's what I've found:

Azure Functions works best when:

  • You're already using other Microsoft services like Azure SQL, Azure AI services, etc.
  • You need tight integration with Azure DevOps
  • You want built-in dependency injection and middleware support
  • Azure provides a set of tools that you can use such as a CLI or even easier, a VS Code extension to simplify and automate your deployments.

AWS Lambda shines when:

  • You need a wide variety of event triggers
  • You want to use Amazon's AI services such as SQS, S3, Step Functions, etc.
  • Cost is a major factor (Lambda's pricing can be more granular)
  • AWS provides a great CLI to work with CloudFormation templates and automate your deployment process: sam.

Ultimately, the choice between Azure Functions and AWS Lambda will depend on your specific needs and preferences. If you're deeply integrated with Microsoft services, Azure Functions might be the better choice. If you're already using AWS, then AWS Lambda would be more seamless to adopt.

Final Thoughts

At Beta Acid, we understand that every project is unique, and what works for one client might not work for another. That's why we're committed to working with the best tools for the job, whether that's Azure Functions, AWS Lambda, or another technology entirely. Our goal is to deliver solutions that meet our clients' needs effectively and efficiently.

If you're considering serverless computing for your next project, we'd love to hear from you. Whether you're leaning towards Azure Functions or AWS Lambda, or if you're still deciding, we're here to help you navigate the options and find the best fit for your needs. Let's work together to bring your vision to life.