を使用してローカル統合テストを自動化する AWS SAM - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用してローカル統合テストを自動化する AWS SAM

を使用したテストの概要 sam local invoke を使用してコードを手動でテストすることもできますが、 では自動統合テストを使用してコードをテスト AWS SAM することもできます。統合テストは、開発サイクルの早い段階で問題を検出し、コードの品質を向上させ、コストを削減しながら時間を節約するのに役立ちます。

で自動統合テストを作成するには AWS SAM、まずローカル Lambda 関数に対してテストを実行してから AWS クラウドにデプロイします。を使用したテストの概要 sam local start-lambda コマンドは、Lambda 呼び出しエンドポイントをエミュレートするローカルエンドポイントを起動します。これは、自動化されたテストから呼び出すことができます。このエンドポイントは Lambda 呼び出しエンドポイントをエミュレートするため、テストを 1 回記述し、ローカル Lambda 関数またはデプロイされた Lambda 関数に対して (変更なしで) テストを実行できます。CI/CD パイプライン内のデプロイされた AWS SAM スタックに対しても、同じテストを実行できます。

プロセスの仕組みは以下のとおりです。

  1. ローカル Lambda エンドポイントを起動する。

    AWS SAM テンプレートを含む ディレクトリで次のコマンドを実行して、ローカル Lambda エンドポイントを起動します。

    sam local start-lambda

    このコマンドは、http://127.0.0.1:3001 をエミュレートする AWS Lambdaでローカルエンドポイントを起動します。自動化されたテストは、このローカル Lambda エンドポイントに対して実行できます。 AWS CLI または SDK を使用してこのエンドポイントを呼び出すと、リクエストで指定された Lambda 関数がローカルで実行され、レスポンスが返されます。

  2. ローカル Lambda エンドポイントに対して統合テストを実行する。

    統合テストでは、 AWS SDK を使用してテストデータで Lambda 関数を呼び出し、応答を待機し、応答が期待どおりであることを確認します。統合テストをローカルで実行するには、前のステップで起動したローカル Lambda エンドポイントを呼び出すための Lambda Invoke API コールを送信するように AWS SDK を設定する必要があります。

    Python の例を次に示します (他の言語の AWS SDKsの設定は似ています)。

    import boto3 import botocore # Set "running_locally" flag if you are running the integration test locally running_locally = True if running_locally: # Create Lambda SDK client to connect to appropriate Lambda endpoint lambda_client = boto3.client('lambda', region_name="us-west-2", endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=botocore.client.Config( signature_version=botocore.UNSIGNED, read_timeout=15, retries={'max_attempts': 0}, ) ) else: lambda_client = boto3.client('lambda') # Invoke your Lambda function as you normally usually do. The function will run # locally if it is configured to do so response = lambda_client.invoke(FunctionName="HelloWorldFunction") # Verify the response assert response == "Hello World"

    このコードは、running_locallyFalse に設定することによって、デプロイされた Lambda 関数のテストに使用できます。これにより、 AWS クラウド AWS Lambda で に接続するように AWS SDK がセットアップされます。