関数をディストリビューションに関連付ける
ディストリビューションで関数を使用するには、関数をディストリビューションの 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 エッジロケーションで稼働していることを示します。これには通常数分かかります。