← スキル一覧に戻る

serverless-aws
by stevenmays
tooling
⭐ 10🍴 2📅 2026年1月22日
SKILL.md
name: serverless-aws description: Patterns for AWS Lambda, DynamoDB, SQS, and Secrets Manager. Use when working on serverless AWS projects.
Serverless AWS Skill
Patterns for AWS Lambda, DynamoDB, SQS, and Secrets Manager.
When to Use
Apply when working on serverless AWS projects using Lambda functions.
Lambda Handler Structure
export async function handle(event: AWSLambda.APIGatewayProxyEvent) {
try {
return await handleInternal(event);
} catch (error) {
await trace.error(error, { headers: event.headers, body: event.body });
return createErrorResponse(error);
}
}
async function handleInternal(event: AWSLambda.APIGatewayProxyEvent) {
const isAuthenticated = await authenticateRequest(event);
if (!isAuthenticated) return unauthorizedResponse();
const body = JSON.parse(event.body);
assert(isValidInput(body), 'Invalid request body');
return processRequest(body);
}
Cold Start Optimization
Initialize clients outside handler:
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
const dynamoClient = new DynamoDBClient({ region: 'us-east-1' });
let configCache: Config;
export async function handle(event: any) {
if (!configCache) configCache = await loadConfig();
return process(event, configCache);
}
SQS Processing
export async function handle(event: SQSEvent) {
assert(event.Records.length === 1, 'Expected single record');
const record = event.Records[0];
const message = JSON.parse(record.body);
const type = record.messageAttributes?.type?.stringValue;
switch (type) {
case 'ORDER_UPDATE': return handleOrderUpdate(message);
case 'CUSTOMER_SYNC': return handleCustomerSync(message);
default: console.warn('Unknown message type', type);
}
}
External API Calls
export async function callExternalAPI(endpoint: string, data: any) {
const config = await getServiceConfig();
try {
const response = await fetch(`${config.base_url}${endpoint}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${config.api_key}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
if (!response.ok) {
throw new StatusCodeError(response.status, await response.text());
}
return response.json();
} catch (error) {
await trace.error('External API call failed', { endpoint, error });
throw error;
}
}
Deduplication
const processedEvents = new Map<string, number>();
function isDuplicate(eventId: string): boolean {
const now = Date.now();
const fiveMinutesAgo = now - (5 * 60 * 1000);
// Clean old entries
for (const [id, timestamp] of processedEvents.entries()) {
if (timestamp < fiveMinutesAgo) {
processedEvents.delete(id);
}
}
if (processedEvents.has(eventId)) return true;
processedEvents.set(eventId, now);
return false;
}
スコア
総合スコア
40/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です