関数をディストリビューションに関連付ける
ディストリビューションで関数を使用するには、関数をディストリビューションの 1 つ以上のキャッシュ動作に関連付けます。関数を複数のディストリビューションの複数のキャッシュ動作に関連付けることができます。
関数は以下のいずれかに関連付けることができます。
関数をキャッシュ動作に関連付ける場合は、イベントタイプを選択する必要があります。CloudFront がいつ関数を実行するかは、イベントタイプで決まります。
次のイベントタイプを選択できます。
CloudFront Functions では、オリジン向けのイベントタイプ (オリジンリクエストとオリジンレスポンス) を使用することはできません。代わりに Lambda@Edge を使用できます。詳細については、「Lambda@Edge 関数をトリガーできる CloudFront イベント」を参照してください。
関数をディストリビューションに関連付けるには、CloudFront コンソールまたは AWS Command Line Interface (AWS CLI) を使用できます。次の手順は、関数を既存のキャッシュ動作に関連付ける方法を示しています。
- Console
-
CloudFront は関数に ディストリビューションを関連付けます。関連付けられたディストリビューションのデプロイが完了するまで数分待ちます。関数の詳細ページで [ディストリビューションを表示] を選択すると、進行状況を確認できます。
- CLI
-
関数を既存のキャッシュ動作に関連付けるには
-
コマンドラインウィンドウを開きます。
-
次のコードを使用して、関数に関連付けるキャッシュ動作を持つディストリビューションのディストリビューション設定を保存します。このコマンドは、ディストリビューション設定を dist-config.yaml
という名前のファイルに保存します。このコマンドを使用するには、次の操作を行います。
aws cloudfront get-distribution-config \
--id DistributionID
\
--output yaml > dist-config.yaml
コマンドが正常に完了した場合、AWS CLI は出力を返しません。
-
作成した dist-config.yaml
という名前のファイルを開きます。ファイルを編集して以下の変更を加えます。
-
ETag
フィールドの名前を IfMatch
に変更しますが、フィールドの値は変更しないでください。
-
キャッシュ動作で、FunctionAssociations
という名前のオブジェクトを見つけます。このオブジェクトを更新して、関数の関連付けを追加します。関数を関連付ける YAML 構文は、次の例のようになります。
-
次の例は、ビューワーリクエストイベントタイプ (トリガー) を示しています。ビューアレスポンスイベントタイプを使用するには、viewer-request
を viewer-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
-
変更が完了したら、ファイルを保存します。
-
関数の関連付けを追加してディストリビューションを更新するには、次のコマンドを使用します。このコマンドを使用するには、次の操作を行います。
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
ディストリビューションが再デプロイされる間に、ディストリビューションの Status
は InProgress
に変更されます。新しいディストリビューション設定が CloudFront エッジロケーションに到達すると、エッジロケーションは関連する関数の使用を開始します。ディストリビューションのデプロイが完了すると、Status
は Deployed
に戻ります。これは、関連する CloudFront 関数が世界中のすべての CloudFront エッジロケーションで稼働していることを示します。これには通常数分かかります。