関数をディストリビューションに関連付ける - Amazon CloudFront

関数をディストリビューションに関連付ける

ディストリビューションで関数を使用するには、関数をディストリビューションの 1 つ以上のキャッシュ動作に関連付けます。関数を複数のディストリビューションの複数のキャッシュ動作に関連付けることができます。

関数は以下のいずれかに関連付けることができます。

  • 既存のキャッシュ動作

  • 既存のディストリビューションの新しいキャッシュ動作

  • 新しいディストリビューションの新しいキャッシュ動作

関数をキャッシュ動作に関連付ける場合は、イベントタイプを選択する必要があります。CloudFront がいつ関数を実行するかは、イベントタイプで決まります。

次のイベントタイプを選択できます。

  • ビューワーリクエスト - CloudFront がビューワーからリクエストを受信するとこの関数が実行されます。

  • ビューワーレスポンス - CloudFront がビューワーにレスポンスを返す前にこの関数が実行されます。

CloudFront Functions では、オリジン向けのイベントタイプ (オリジンリクエストとオリジンレスポンス) を使用することはできません。代わりに Lambda@Edge を使用できます。詳細については、「Lambda@Edge 関数をトリガーできる CloudFront イベント」を参照してください。

注記

関数を関連付ける前に、その関数をステージ LIVE に公開する必要があります。

関数をディストリビューションに関連付けるには、CloudFront コンソールまたは AWS Command Line Interface (AWS CLI) を使用できます。次の手順は、関数を既存のキャッシュ動作に関連付ける方法を示しています。

Console
関数を既存のキャッシュ動作に関連付けるには
  1. CloudFront コンソール (https://console.aws.amazon.com/cloudfront/v4/home#/functions) にサインインし、[関数] ページを選択します。

  2. 関連付ける関数を選択します。

  3. [関数] ページで、[発行] タブを選択します。

  4. [関数を発行] を選択します。

  5. [Add association] を選択します。表示されるダイアログで、ディストリビューション、イベントタイプ、および/またはキャッシュ動作を選択します。

    イベントタイプでは、この関数を実行するタイミングを選択します。

    • ビューワーリクエスト – CloudFront がリクエストを受信するたびに関数を実行します。

    • ビューワーレスポンス – CloudFront がレスポンスを返すたびに関数を実行します。

  6. 設定を保存するには、[関連付けを追加] を選択します。

CloudFront は関数に ディストリビューションを関連付けます。関連付けられたディストリビューションのデプロイが完了するまで数分待ちます。関数の詳細ページで [ディストリビューションを表示] を選択すると、進行状況を確認できます。

CLI
関数を既存のキャッシュ動作に関連付けるには
  1. コマンドラインウィンドウを開きます。

  2. 次のコードを使用して、関数に関連付けるキャッシュ動作を持つディストリビューションのディストリビューション設定を保存します。このコマンドは、ディストリビューション設定を dist-config.yaml という名前のファイルに保存します。このコマンドを使用するには、次の操作を行います。

    • DistributionID をディストリビューションの ID に置き換えます。

    • コマンドを 1 行で実行します。この例では、例を読みやすくするために改行されています。

    aws cloudfront get-distribution-config \ --id DistributionID \ --output yaml > dist-config.yaml

    コマンドが正常に完了した場合、AWS CLI は出力を返しません。

  3. 作成した dist-config.yaml という名前のファイルを開きます。ファイルを編集して以下の変更を加えます。

    1. ETag フィールドの名前を IfMatch に変更しますが、フィールドの値は変更しないでください。

    2. キャッシュ動作で、FunctionAssociations という名前のオブジェクトを見つけます。このオブジェクトを更新して、関数の関連付けを追加します。関数を関連付ける YAML 構文は、次の例のようになります。

      • 次の例は、ビューワーリクエストイベントタイプ (トリガー) を示しています。ビューアレスポンスイベントタイプを使用するには、viewer-requestviewer-response に置き換えます。

      • arn:aws:cloudfront::111122223333:function/ExampleFunction は、このキャッシュ動作に関連付ける関数の Amazon リソースネーム (ARN) に置き換えます。関数 ARN を取得するには、aws cloudfront list-functions コマンドを使用します。

      FunctionAssociations: Items: - EventType: viewer-request FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction Quantity: 1
    3. 変更が完了したら、ファイルを保存します。

  4. 関数の関連付けを追加してディストリビューションを更新するには、次のコマンドを使用します。このコマンドを使用するには、次の操作を行います。

    • DistributionID をディストリビューションの ID に置き換えます。

    • コマンドを 1 行で実行します。この例では、例を読みやすくするために改行されています。

    aws cloudfront update-distribution \ --id DistributionID \ --cli-input-yaml file://dist-config.yaml

    コマンドが正常に完了すると、関数の関連付けで更新されたばかりのディストリビューションを説明する次のような出力が表示されます。次の出力例は、読みやすくするために切り詰めています。

    Distribution: ARN: arn:aws:cloudfront::111122223333:distribution/EBEDLT3BGRBBW ... truncated ... DistributionConfig: ... truncated ... DefaultCacheBehavior: ... truncated ... FunctionAssociations: Items: - EventType: viewer-request FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction Quantity: 1 ... truncated ... DomainName: d111111abcdef8.cloudfront.net Id: EDFDVBD6EXAMPLE LastModifiedTime: '2021-04-19T22:39:09.158000+00:00' Status: InProgress ETag: E2VJGGQEG1JT8S

ディストリビューションが再デプロイされる間に、ディストリビューションの StatusInProgress に変更されます。新しいディストリビューション設定が CloudFront エッジロケーションに到達すると、エッジロケーションは関連する関数の使用を開始します。ディストリビューションのデプロイが完了すると、StatusDeployed に戻ります。これは、関連する CloudFront 関数が世界中のすべての CloudFront エッジロケーションで稼働していることを示します。これには通常数分かかります。