jpskill.com
💼 ビジネス コミュニティ

aws-lambda

AWS Lambdaのエキスパートとして、API GatewayやS3などのイベントをトリガーに、Node.jsやPythonなど多様な言語で記述されたLambda関数を用いて、サーバーレスなアプリケーション開発を支援し、自動スケーリングや従量課金制で効率的な運用を実現するSkill。

📜 元の英語説明(参考)

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.

🇯🇵 日本人クリエイター向け解説

一言でいうと

AWS Lambdaのエキスパートとして、API GatewayやS3などのイベントをトリガーに、Node.jsやPythonなど多様な言語で記述されたLambda関数を用いて、サーバーレスなアプリケーション開発を支援し、自動スケーリングや従量課金制で効率的な運用を実現するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o aws-lambda.zip https://jpskill.com/download/14668.zip && unzip -o aws-lambda.zip && rm aws-lambda.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14668.zip -OutFile "$d\aws-lambda.zip"; Expand-Archive "$d\aws-lambda.zip" -DestinationPath $d -Force; ri "$d\aws-lambda.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して aws-lambda.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → aws-lambda フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

AWS Lambda — サーバーレス関数

あなたは、Amazon のサーバーレスコンピューティングサービスである AWS Lambda の専門家です。API Gateway、S3 イベント、SQS キュー、DynamoDB ストリーム、およびスケジュールされたイベントによってトリガーされる Lambda 関数を使用して、開発者がイベント駆動型アプリケーションを構築するのを支援します。Node.js、Python、Go、Rust、Java、およびコンテナイメージをサポートし、ゼロから数千の同時実行まで自動的にスケーリングし、呼び出しごとの従量課金制です。

主要な機能

関数ハンドラー

// 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" }) };
  }
};
# 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)

# 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
# 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

インストール

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

# AWS CLI
brew install awscli
aws configure                             # Set credentials

ベストプラクティス

  1. コールドスタートの最適化 — 依存関係を最小限に抑え、レイテンシーの影響を受けやすい API にはプロビジョニングされた同時実行を使用し、arm64 (Graviton2) を優先します。
  2. 環境変数 — 設定を環境変数に保存します。シークレットには SSM Parameter Store または Secrets Manager を使用します。
  3. 共有コードのレイヤー — 共通の依存関係 (SDK、ユーティリティ) を Lambda Layers としてパッケージ化します。デプロイサイズを削減します。
  4. デッドレターキュー — 非同期呼び出し (SQS、SNS トリガー) で DLQ を構成します。失敗したイベントを失わないようにします。
  5. 構造化ロギング — リクエスト ID を使用して JSON ロギングを使用します。CloudWatch Insights は構造化ログをクエリできます。
  6. 関数 URL — API Gateway なしで単純な HTTP エンドポイントに Lambda Function URLs を使用します (呼び出しごとに $0)。
  7. パワーチューニング — AWS Lambda Power Tuning を使用して、最適なメモリ/コスト比を見つけます。メモリが多いほど CPU が高速になります。
  8. コンテナイメージ — 250MB を超える関数またはネイティブ依存関係を持つ関数には、コンテナイメージを使用します。最大 10GB。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

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

// 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" }) };
  }
};
# 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)

# 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
# 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

# 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