自動化されたテストとの統合 - AWS Serverless Application Model

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

自動化されたテストとの統合

Lambda 関数をローカルで実行することによってコードを手動でテストするには、sam local invoke コマンドを使用できます。を使用すると AWS SAMCLI、クラウドにデプロイする前にローカルの Lambda 関数に対してテストを実行することで、自動統合テストを簡単に作成できます。 AWS

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

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

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

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

    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 SDK も同様の設定です)。

    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 SDK AWS Lambda AWS がクラウドで接続するように設定されます。