Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

aws-lambda-python-integration

AWS Lambda へのPythonデプロイにおけるコールドスタート最適化を含む統合パターンを提供します。AWS Chalice またはraw Pythonアプローチの選択、API GatewayやALBとの連携設定、サーバーレスPythonアプリケーションの実装など、PythonをAWS Lambdaにデプロイする際に活用してください。「create lambda python」「deploy python lambda」「chalice lambda aws」「python lambda cold start」などの場面でトリガーされます。

description の原文を見る

Provides AWS Lambda integration patterns for Python with cold start optimization. Use when deploying Python functions to AWS Lambda, choosing between AWS Chalice and raw Python approaches, optimizing cold starts, configuring API Gateway or ALB integration, or implementing serverless Python applications. Triggers include "create lambda python", "deploy python lambda", "chalice lambda aws", "python lambda cold start", "aws lambda python performance", "python serverless framework".

SKILL.md 本文

AWS Lambda Python インテグレーション

冷却開始の最適化とクリーンなアーキテクチャを備えた、高性能な AWS Lambda 関数を Python で作成するパターン。

概要

AWS Chalice(フル機能フレームワーク)と Raw Python(最小限のオーバーヘッド)の 2 つのアプローチを使用した AWS Lambda Python インテグレーション。どちらも API Gateway/ALB インテグレーションをサポートし、本番対応の設定が可能です。

使用する場面

このスキルは以下の場合に使用してください:

  • Python で新しい Lambda 関数を作成する
  • 既存の Python アプリケーションを Lambda に移行する
  • Python Lambda の冷却開始パフォーマンスを最適化する
  • フレームワークベースと最小限の Python アプローチの選択
  • API Gateway または ALB インテグレーションを設定する
  • Python Lambda のデプロイパイプラインを設定する

手順

1. アプローチの選択

アプローチ冷却開始最適な用途複雑さ
AWS Chalice< 200msREST API、迅速な開発、組み込みルーティング
Raw Python< 100msシンプルなハンドラ、最大限の制御、最小限の依存関係

2. プロジェクト構造

AWS Chalice の構造

my-chalice-app/
├── app.py                    # ルーティング付きメインアプリケーション
├── requirements.txt          # 依存関係
├── .chalice/
│   ├── config.json          # Chalice 設定
│   └── deploy/              # デプロイアーティファクト
├── chalicelib/              # 追加モジュール
│   ├── __init__.py
│   └── services.py
└── tests/
    └── test_app.py

Raw Python の構造

my-lambda-function/
├── lambda_function.py       # ハンドラエントリーポイント
├── requirements.txt         # 依存関係
├── template.yaml            # SAM/CloudFormation テンプレート
└── src/                     # 追加モジュール
    ├── __init__.py
    ├── handlers.py
    └── utils.py

3. 実装例

詳細な実装ガイドは「参考資料」セクションを参照してください。簡単な例:

AWS Chalice:

from chalice import Chalice
app = Chalice(app_name='my-api')

@app.route('/')
def index():
    return {'message': 'Hello from Chalice!'}

Raw Python:

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps({'message': 'Hello from Lambda!'})
    }

コア概念

冷却開始の最適化

主な戦略:

  1. モジュールレベルで初期化 - ウォーム呼び出し間で永続化
  2. 遅延ロードを使用 - 必要になるまで重いインポートを遅延
  3. boto3 クライアントをキャッシュ - 呼び出し間で接続を再利用

詳細なパターンは「Raw Python Lambda」を参照してください。

接続管理

モジュールレベルでクライアントを作成して再利用:

_dynamodb = None

def get_table():
    global _dynamodb
    if _dynamodb is None:
        _dynamodb = boto3.resource('dynamodb').Table('my-table')
    return _dynamodb

環境設定

class Config:
    TABLE_NAME = os.environ.get('TABLE_NAME')
    DEBUG = os.environ.get('DEBUG', 'false').lower() == 'true'

    @classmethod
    def validate(cls):
        if not cls.TABLE_NAME:
            raise ValueError("TABLE_NAME required")

ベストプラクティス

メモリとタイムアウト設定

  • メモリ: シンプルなハンドラは 256MB から開始、複雑な操作は 512MB
  • タイムアウト: 予想処理時間に基づいて設定
    • シンプルなハンドラ: 3~5 秒
    • DB 呼び出し付き API: 10~15 秒
    • データ処理: 30~60 秒

依存関係

requirements.txt は最小限に保つ:

# AWS SDK コア - 常に必要
boto3>=1.35.0

# 必要なものだけ追加
requests>=2.32.0  # 外部 API を呼び出す場合
pydantic>=2.5.0   # データ検証を使用する場合

エラーハンドリング

リクエスト ID と共に適切な HTTP コードを返す:

def lambda_handler(event, context):
    try:
        result = process_event(event)
        return {'statusCode': 200, 'body': json.dumps(result)}
    except ValueError as e:
        return {'statusCode': 400, 'body': json.dumps({'error': str(e)})}
    except Exception as e:
        print(f"Error: {str(e)}")  # CloudWatch にログ
        return {'statusCode': 500, 'body': json.dumps({'error': 'Internal error'})}

構造化されたエラーパターンは「Raw Python Lambda」を参照してください。

ログ記録

CloudWatch Insights 用に構造化ログを使用:

import logging, json
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# 構造化ログ
logger.info(json.dumps({
    'eventType': 'REQUEST',
    'requestId': context.aws_request_id,
    'path': event.get('path')
}))

高度なパターンは「Raw Python Lambda」を参照してください。

デプロイオプション

クイックスタート

検証チェックポイント: デプロイ前に必ず serverless print または sam validate を実行して、設定エラーを早期に検出してください。

Serverless Framework:

# serverless.yml
service: my-python-api
provider:
  name: aws
  runtime: python3.12  # または python3.11
functions:
  api:
    handler: lambda_function.lambda_handler
    events:
      - http:
          path: /{proxy+}
          method: ANY

AWS SAM:

# template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Resources:
  ApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: ./
      Handler: lambda_function.lambda_handler
      Runtime: python3.12  # または python3.11
      Events:
        ApiEvent:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: ANY

AWS Chalice:

chalice new-project my-api
cd my-api
chalice local 8080  # 本番にデプロイする前にローカルでテスト
chalice deploy --stage dev

検証チェックポイント: 本番にデプロイする前に chalice local または sam local invoke でローカルテストしてください。

CI/CD を含む完全なデプロイ設定、環境固有の設定、および高度な SAM/Serverless パターンについては、「Serverless デプロイ」を参照してください。

制約と警告

Lambda の制限

  • デプロイパッケージ: 最大 250MB(非圧縮)(50MB 圧縮)
  • メモリ: 128MB~10GB
  • タイムアウト: 最大 15 分
  • 並行実行: デフォルト 1000(調整可能)
  • 環境変数: 合計 4KB

Python 固有の考慮事項

  • 冷却開始: Python は優れた冷却開始パフォーマンスを備えています。モジュールレベルで重いインポートを避けてください
  • 依存関係: requirements.txt は最小限に保ち、共有依存関係は Lambda Layers を使用してください
  • ネイティブ依存関係: Amazon Linux 2(x86_64 または arm64)用にコンパイルする必要があります

よくある落とし穴

  1. モジュールレベルで重いライブラリをインポート - 常に必要でない場合は関数レベルに遅延
  2. Lambda コンテキストを処理しない - context.get_remaining_time_in_millis() を使用してタイムアウト認識を有効にする
  3. 入力を検証しない - 常にイベントデータを検証とサニタイズ
  4. 機密データを出力 - ログと CloudWatch に注意してください

エラー復旧: デプロイが失敗した場合は、CloudWatch ログで初期化エラーを確認し、sam logs を実行して問題を診断してください。

セキュリティの考慮事項

  • 認証情報をハードコードしない。IAM ロールと環境変数を使用
  • すべての入力データを検証
  • 最小権限 IAM ポリシーを使用
  • 監査ログ用に CloudTrail を有効化

参考資料

特定のトピックの詳細ガイド:

  • AWS Chalice - Chalice の完全セットアップ、ルーティング、ミドルウェア、デプロイ
  • Raw Python Lambda - 最小限のハンドラパターン、モジュールキャッシング、パッケージング
  • Serverless デプロイ - Serverless Framework、SAM、CI/CD パイプライン
  • Lambda テスト - pytest、moto、SAM Local、localstack

例 1: AWS Chalice REST API を作成

入力:

TodoDo アプリケーション用の AWS Chalice を使用して Python Lambda REST API を作成

プロセス:

  1. chalice new-project で Chalice プロジェクトを初期化
  2. CRUD 操作用のルーティングを設定
  3. DynamoDB インテグレーションを設定
  4. デプロイステージを設定
  5. chalice deploy でデプロイ

出力:

  • 完全な Chalice プロジェクト構造
  • CRUD エンドポイント付き REST API
  • DynamoDB テーブル設定
  • デプロイ設定

例 2: Raw Python の冷却開始を最適化

入力:

My Python Lambda has slow cold start, how do I optimize it?

プロセス:

  1. インポートと初期化コードを分析
  2. 重いインポートを関数内に移動(遅延ロード)
  3. boto3 クライアントをモジュールレベルでキャッシュ
  4. 不要な依存関係を削除
  5. 必要に応じてプロビジョニングされた並行性を使用

出力:

  • 遅延ロードでリファクターされたコード
  • < 100ms に最適化された冷却開始
  • 依存関係分析

例 3: GitHub Actions でデプロイ

入力:

SAM を使用して Python Lambda の CI/CD を設定

プロセス:

  1. GitHub Actions ワークフローを作成
  2. Python 環境と依存関係を設定
  3. カバレッジで pytest を実行
  4. SAM でパッケージ化
  5. dev/prod ステージにデプロイ

出力:

  • 完全な .github/workflows/deploy.yml
  • マルチステージパイプライン
  • 統合テスト自動化

バージョン

バージョン: 1.0.0

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
giuseppe-trisciuoglio
リポジトリ
giuseppe-trisciuoglio/developer-kit
ライセンス
MIT
最終更新
不明

Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: giuseppe-trisciuoglio · giuseppe-trisciuoglio/developer-kit · ライセンス: MIT