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本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
aws-lambda.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
aws-lambdaフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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
ベストプラクティス
- コールドスタートの最適化 — 依存関係を最小限に抑え、レイテンシーの影響を受けやすい API にはプロビジョニングされた同時実行を使用し、arm64 (Graviton2) を優先します。
- 環境変数 — 設定を環境変数に保存します。シークレットには SSM Parameter Store または Secrets Manager を使用します。
- 共有コードのレイヤー — 共通の依存関係 (SDK、ユーティリティ) を Lambda Layers としてパッケージ化します。デプロイサイズを削減します。
- デッドレターキュー — 非同期呼び出し (SQS、SNS トリガー) で DLQ を構成します。失敗したイベントを失わないようにします。
- 構造化ロギング — リクエスト ID を使用して JSON ロギングを使用します。CloudWatch Insights は構造化ログをクエリできます。
- 関数 URL — API Gateway なしで単純な HTTP エンドポイントに Lambda Function URLs を使用します (呼び出しごとに $0)。
- パワーチューニング — AWS Lambda Power Tuning を使用して、最適なメモリ/コスト比を見つけます。メモリが多いほど CPU が高速になります。
- コンテナイメージ — 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
- Cold start optimization — Minimize dependencies, use provisioned concurrency for latency-sensitive APIs, prefer arm64 (Graviton2)
- Environment variables — Store config in env vars; use SSM Parameter Store or Secrets Manager for secrets
- Layers for shared code — Package common dependencies (SDKs, utilities) as Lambda Layers; reduce deployment size
- Dead letter queues — Configure DLQ on async invocations (SQS, SNS triggers); don't lose failed events
- Structured logging — Use JSON logging with request ID; CloudWatch Insights can query structured logs
- Function URLs — Use Lambda Function URLs for simple HTTP endpoints without API Gateway ($0 per invocation)
- Power tuning — Use AWS Lambda Power Tuning to find optimal memory/cost ratio; more memory = faster CPU
- Container images — Use container images for functions >250MB or with native dependencies; up to 10GB