Skip to content
Back to skills

Aws Lambda

ASecurity

You are an expert in AWS Lambda, Amazon's serverless compute service. You help developers build event-driven applications using Lambda functions triggered by API Gateway, S3 events, SQS queues, DynamoDB streams, and scheduled events — with support for Node.js, Python, Go, Rust, Java, and container images, automatic scaling from zero to thousands of concurrent executions, and pay-per-invocation pricing.

  • 142 stars
  • 0 votes
  • 1 copy
  • 4 views
  • Added May 27, 2026
devopstypescriptpythonrustgojavabashnodenodejsawsapi

Works with

  • terminal
  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add TerminalSkills/skills --skill aws-lambda --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aws Lambda?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Aws Lambda
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/terminalskills-aws-lambda/badge)](https://www.skillsdirectory.com/skills/terminalskills-aws-lambda)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: aws-lambda
description: >-
  You are an expert in AWS Lambda, Amazon's serverless compute service. You
  help developers build event-driven applications using Lambda functions
  triggered by API Gateway, S3 events, SQS queues, DynamoDB streams, and
  scheduled events — with support for Node.js, Python, Go, Rust, Java, and
  container images, automatic scaling from zero to thousands of concurrent
  executions, and pay-per-invocation pricing.
license: Apache-2.0
compatibility: ''
metadata:
  author: terminal-skills
  version: 1.0.0
  category: Cloud & Serverless
  tags:
    - serverless
    - aws
    - functions
    - api-gateway
    - event-driven
    - cloud
---

# AWS Lambda — Serverless Functions

You are an expert in AWS Lambda, Amazon's serverless compute service. You help developers build event-driven applications using Lambda functions triggered by API Gateway, S3 events, SQS queues, DynamoDB streams, and scheduled events — with support for Node.js, Python, Go, Rust, Java, and container images, automatic scaling from zero to thousands of concurrent executions, and pay-per-invocation pricing.

## Core Capabilities

### Function Handlers

```typescript
// handler.ts — API Gateway Lambda (Node.js/TypeScript)
import { APIGatewayProxyHandlerV2 } from "aws-lambda";

export const handler: APIGatewayProxyHandlerV2 = async (event) => {
  const { httpMethod, pathParameters, body, queryStringParameters } = event;

  try {
    switch (httpMethod) {
      case "GET": {
        const id = pathParameters?.id;
        if (id) {
          const item = await db.get({ TableName: "users", Key: { id } });
          return { statusCode: 200, body: JSON.stringify(item.Item) };
        }
        const items = await db.scan({ TableName: "users" });
        return { statusCode: 200, body: JSON.stringify(items.Items) };
      }
      case "POST": {
        const data = JSON.parse(body || "{}");
        await db.put({ TableName: "users", Item: { id: uuid(), ...data } });
        return { statusCode: 201, body: JSON.stringify({ created: true }) };
      }
      default:
        return { statusCode: 405, body: "Method not allowed" };
    }
  } catch (error) {
    console.error(error);
    return { statusCode: 500, body: JSON.stringify({ error: "Internal error" }) };
  }
};
```

```python
# handler.py — S3 event trigger (Python)
import json
import boto3
from PIL import Image
import io

s3 = boto3.client("s3")

def handler(event, context):
    """Process uploaded images: resize and create thumbnails.

    Triggered by S3 PutObject events on the uploads/ prefix.
    """
    for record in event["Records"]:
        bucket = record["s3"]["bucket"]["name"]
        key = record["s3"]["object"]["key"]

        # Download original
        response = s3.get_object(Bucket=bucket, Key=key)
        image = Image.open(io.BytesIO(response["Body"].read()))

        # Create thumbnail
        image.thumbnail((300, 300))
        buffer = io.BytesIO()
        image.save(buffer, format="JPEG", quality=85)
        buffer.seek(0)

        # Upload thumbnail
        thumb_key = key.replace("uploads/", "thumbnails/")
        s3.put_object(
            Bucket=bucket,
            Key=thumb_key,
            Body=buffer,
            ContentType="image/jpeg",
        )

    return {"statusCode": 200, "processed": len(event["Records"])}
```

### Infrastructure as Code (SAM)

```yaml
# template.yaml — AWS SAM template
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31

Globals:
  Function:
    Runtime: nodejs20.x
    Timeout: 30
    MemorySize: 256
    Environment:
      Variables:
        TABLE_NAME: !Ref UsersTable

Resources:
  ApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: dist/handler.handler
      Events:
        GetUsers:
          Type: Api
          Properties:
            Path: /users
            Method: get
        CreateUser:
          Type: Api
          Properties:
            Path: /users
            Method: post
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref UsersTable

  ImageProcessor:
    Type: AWS::Serverless::Function
    Properties:
      Handler: handler.handler
      Runtime: python3.12
      MemorySize: 1024
      Timeout: 60
      Events:
        S3Upload:
          Type: S3
          Properties:
            Bucket: !Ref UploadsBucket
            Events: s3:ObjectCreated:*
            Filter:
              S3Key:
                Rules:
                  - Name: prefix
                    Value: uploads/
      Policies:
        - S3CrudPolicy:
            BucketName: !Ref UploadsBucket

  UsersTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: users
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
      KeySchema:
        - AttributeName: id
          KeyType: HASH

  UploadsBucket:
    Type: AWS::S3::Bucket
```

```bash
# Deploy with SAM
sam build
sam deploy --guided                       # First time
sam deploy                                # Subsequent
sam local start-api                       # Local development
sam logs --tail --name ApiFunction         # Stream logs
```

## Installation

```bash
# SAM CLI
brew install aws-sam-cli
# Or: pip install aws-sam-cli

# AWS CLI
brew install awscli
aws configure                             # Set credentials
```

## Best Practices

1. **Cold start optimization** — Minimize dependencies, use provisioned concurrency for latency-sensitive APIs, prefer arm64 (Graviton2)
2. **Environment variables** — Store config in env vars; use SSM Parameter Store or Secrets Manager for secrets
3. **Layers for shared code** — Package common dependencies (SDKs, utilities) as Lambda Layers; reduce deployment size
4. **Dead letter queues** — Configure DLQ on async invocations (SQS, SNS triggers); don't lose failed events
5. **Structured logging** — Use JSON logging with request ID; CloudWatch Insights can query structured logs
6. **Function URLs** — Use Lambda Function URLs for simple HTTP endpoints without API Gateway ($0 per invocation)
7. **Power tuning** — Use AWS Lambda Power Tuning to find optimal memory/cost ratio; more memory = faster CPU
8. **Container images** — Use container images for functions >250MB or with native dependencies; up to 10GB

Files in this skill

  • SKILL.md6.2 KB
  • _scores.json1.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.