関数のテスト - Amazon CloudFront

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

関数のテスト

CloudFront 関数をライブステージ (本番環境) にデプロイする前に、関数をテストして、意図したとおりに動作することを確認できます。関数をテストするには、 CloudFront ディストリビューションが本番環境で受信できる HTTP リクエストまたはレスポンスを表すイベントオブジェクトを指定します。 CloudFront Functions は以下を実行します。

  1. 指定されたイベントオブジェクトを入力として使用して、関数を実行します。

  2. 関数の結果 (変更されたイベントオブジェクト) を、関数ログまたはエラーメッセージ、および関数のコンピューティング使用率とともに返します。コンピューティング使用率の詳細については、「コンピューティング使用率について」を参照してください。

イベントオブジェクトをセットアップする

関数をテストする前に、テストに使用するイベントオブジェクトをセットアップする必要があります。これには複数のオプションがあります。

オプション 1: イベントオブジェクトを保存せずにセットアップする

コンソールのビジュアルエディタ CloudFrontでイベントオブジェクトを設定し、保存することはできません。

このイベントオブジェクトを使用して、保存されていない場合でも、コンソールから関数を CloudFrontテストできます。

オプション 2: ビジュアルエディターでイベントオブジェクトを作成する

コンソールのビジュアルエディタ CloudFrontでイベントオブジェクトを設定し、保存することはできません。関数ごとに 10 個のイベントオブジェクトを作成して、例えば、考えられるさまざまな入力をテストできます。

この方法でイベントオブジェクトを作成すると、イベントオブジェクトを使用して CloudFront コンソールで関数をテストできます。AWS API や SDK を使用して関数をテストする場合には使用できません。

オプション 3: テキストエディターを使用してイベントオブジェクトを作成する

テキストエディターを使用して、イベントオブジェクトを JSON 形式で作成できます。イベントオブジェクトの構造については、「イベントの構造」を参照してください。

このイベントオブジェクトを使用して、CLI で関数をテストできます。ただし、コンソールで CloudFront関数をテストするために使用することはできません。

オプション 1 または 2 を使用して作成するには
  1. CloudFront コンソールで関数ページを表示し、テストする関数を選択します。

  2. 関数の詳細ページで、[テスト] タブを選択します。[関数をテスト] セクションには、[JSON を編集][関数のテスト] を含むボタンが表示されます。

  3. [イベントタイプ] を入力する:

    • 関数が HTTP リクエストを変更したり、リクエストに基づいてレスポンスを生成する場合は、[ビューワーリクエスト] を選択します。既に表示されている [リクエスト] セクションがこのタイプに適用されます。

    • または [ビューアーレスポンス] を選択します。既に表示されている [リクエスト] セクションがこのタイプに適用されます。さらに、[レスポンス] セクションが表示されます。

  4. イベントに含めるすべてのフィールドを入力します。作業中に [JSON を編集] を選択すると、未加工の JSON を表示できます。

  5. 必要に応じてイベントを保存します。

    JSON の編集 を選択して raw JSON をコピーし、 の外部にある独自のファイルに保存することもできます CloudFront。

オプション 3 を使用して作成するには

テキストエディタを使用してイベントオブジェクトを作成します。このファイルは、コンピューターが接続できるディレクトリに保存します。

必ず以下のガイドラインに従ってください。

  • distributionDomainNamedistributionIdrequestId の各フィールドは省略します。

  • ヘッダー、Cookie、クエリ文字列の名前は必ず小文字にしてください。

この方法でイベントオブジェクトを作成する方法の 1 つは、ビジュアルエディターを使用してサンプルを作成することです。サンプルが正しいフォーマットになっていることを確認できます。そして、未加工の JSON をコピーし、テキストエディターに貼り付け、ファイルを保存することができます。

イベントの構造の詳細については、「イベントの構造」を参照してください。

関数をテストする

CloudFront コンソールまたは を使用して関数をテストできますAWS CLI。

Console

CloudFront コンソールでは、コンソールを使用して作成した関数をテストできます。

関数をテストするには
  1. コンソールで CloudFront関数ページを表示し、テストする関数を選択します。

  2. 関数ページで、[Test] タブを選択します。[関数をテスト] セクションには、[JSON を編集][関数のテスト] を含むボタンが表示されます。

  3. 正しいイベントが表示されていることを確認します。

    現在表示されているイベントから切り替える場合は、[テストイベントを選択] フィールドで別のイベントを選択します。

  4. [関数をテスト] ボタンを選択します。コンソールには、関数ログを含む関数の出力が表示されます。また、コンピューティング使用率も表示されます。詳細については、「コンピューティング使用率について」を参照してください。

CLI

aws cloudfront test-function コマンドを使用して関数をテストできます。

  1. 次の例に示すようにコマンドを実行します。このファイルが含まれているのと同じディレクトリからコマンドを実行します。

    この例では、fileb:// 表記を使用してイベントオブジェクトファイルに渡します。コマンドを読みやすくするために改行も含まれています。

aws cloudfront test-function \ --name MaxAge \ --if-match ETVABCEXAMPLE \ --event-object fileb://event-maxage-test01.json \ --stage DEVELOPMENT

注記:

  • 関数は名前と ETag (if-match パラメータ内) で参照します。イベントオブジェクトはファイルシステム内のロケーションによって参照します。

  • ステージは、DEVELOPMENT または LIVE の場合があります。

コマンドが成功した場合は、以下のような出力が表示されます。

TestResult: ComputeUtilization: '21' FunctionErrorMessage: '' FunctionExecutionLogs: [] FunctionOutput: '{"response":{"headers":{"cloudfront-functions":{"value":"generated-by-CloudFront-Functions"},"location":{"value":"https://aws.amazon.com/cloudfront/"}},"statusDescription":"Found","cookies":{},"statusCode":302}}' FunctionSummary: FunctionConfig: Comment: MaxAge function Runtime: cloudfront-js-2.0 KeyValueStoreAssociations= \ {Quantity=1, \ Items=[{KeyValueStoreARN='arn:aws:cloudfront::1:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]}" \ FunctionMetadata: CreatedTime: '2021-04-18T20:38:56.915000+00:00' FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge LastModifiedTime: '2023-17-20T10:38:57.057000+00:00' Stage: DEVELOPMENT Name: MaxAge Status: UNPUBLISHED

注記:

  • FunctionExecutionLogs には、関数が console.log() ステートメントに書き込んだ (該当する場合) ログ行のリストが含まれます。

  • ComputeUtilization。「コンピューティング使用率について」を参照してください。

  • FunctionOutput には、関数が返したイベントオブジェクトが含まれます。

コンピューティング使用率について

コンピューティング使用率は、関数の実行にかかった時間 (最大許容時間に対するパーセンテージ) です。たとえば、値 35 は、関数が最大許容時間の 35% で完了したことを意味します。

関数が最大許容時間を継続的に超えると、 は関数を CloudFront スロットリングします。次のリストは、コンピューティング使用率の値に基づいて関数がスロットリングされる可能性を説明しています。

コンピューティング使用率値:

  • 1~50 — 関数は最大許容時間を十分に下回っており、スロットリングなしで実行する必要があります。

  • 51~70 — 関数が最大許容時間に近づいています。関数コードの最適化を検討してください。

  • 71~100 – 関数が最大許容時間に非常に近いか、それを超えています。ディストリビューションに関連付けると、この関数がスロットリング CloudFront される可能性があります。