View a markdown version of this page

関数を作成する - Amazon CloudFront

関数を作成する

関数は 2 段階で作成します。

  1. 関数コードを JavaScript として作成します。CloudFront コンソールのデフォルトの例を使用することも、独自に記述することもできます。詳細については、以下の各トピックを参照してください。

  2. CloudFront を使用して関数を作成し、コードを含めます。コードは関数内にあります (リファレンスとしてではありません)。

Console
関数を作成するには
  1. CloudFront コンソール (https://console.aws.amazon.com/cloudfront/v4/home#/functions) にサインインし、[関数] ページを選択します。

  2. [関数の作成] を選択してください。

  3. AWS アカウント内での一意な関数名を入力し、Java Script バージョンを選択して、[続行] を選択します。新しい関数の詳細ページが表示されます。

    注記

    関数で [キーと値のペア] を使用する場合は、Java Script ランタイム 2.0 を選択する必要があります。

    タグを使用して関数を作成するときに TaggingConflict (HTTP 409) エラーが発生した場合は、数分待ってから再試行するか、最初にタグなしで関数を作成し、後からタグを追加してください。

  4. [関数コード] セクションで、[ビルド] タブを選択し、関数コードを入力します。[ビルド] タブに含まれるサンプルコードは、関数コードの基本的な構文を示しています。

  5. [Save changes] (変更の保存) をクリックします。

  6. 関数コードでキーと値のペアを使用する場合は、キー値ストアを関連付ける必要があります。

    キー値ストアは、関数の作成時に関連付けることができます。または、後で関数を更新して関連付けることもできます。

    キーと値のストアを今すぐ関連付けるには、次の手順に従います。

    • [KeyValueStore を関連付け] セクションに移動して、[既存の KeyValueStore を関連付け] を選択します。

    • 関数のキーと値のペアを含むキーバリューストアを選択し、[KeyValueStore を関連付ける] を選択します。

    CloudFront はストアを直ちに関数に関連付けます。関数を保存する必要はありません。

CLI

CLI を使用する場合、通常は最初に関数コードをファイルに作成し、次に AWS CLI を使用して関数を作成します。

関数を作成するには
  1. 関数コードをファイルに作成し、コンピュータが接続できるディレクトリに保存します。

  2. 次の例に示すようにコマンドを実行します。この例では、fileb:// 表記を使用してファイルを渡します。コマンドを読みやすくするために改行も含まれています。

    aws cloudfront create-function \ --name MaxAge \ --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \ --function-code fileb://function-max-age-v1.js
    注意事項
    • Runtime – Java Script のバージョン。関数でキーと値のペアを使用するには、バージョン 2.0 を指定する必要があります。

    • KeyValueStoreAssociations – 関数がキーと値のペアを使用する場合、関数の初回作成時にキー値ストアを関連付けることができます。または、update-function を使用して後で関連付けることもできます。各関数に関連付けることができるキー値ストアは 1 つだけのため、Quantity は常に 1 です。

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

    ETag: ETVABCEXAMPLE FunctionSummary: FunctionConfig: Comment: Max Age 2 years Runtime: cloudfront-js-2.0 KeyValueStoreAssociations= \ {Quantity=1, \ Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333: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-11-19T20:38:56.915000+00:00' Stage: DEVELOPMENT Name: MaxAge Status: UNPUBLISHED Location: https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront:::function/MaxAge

    ほとんどの情報はリクエストから繰り返されます。その他の情報は CloudFront によって追加されます。

    注意事項
    • ETag – この値は、キー値ストアを変更するたびに変わります。この値と関数名を使用して、以後、この関数を参照します。必ず現在の ETag を使用してください。

    • FunctionARN – CloudFront 関数の ARN。

    • 111122223333 – AWS アカウント。

    • Stage – 関数のステージ (LIVE または DEVELOPMENT)。

    • Status – 関数のステータス (PUBLISHED または UNPUBLISHED)。

関数を作成すると、DEVELOPMENT ステージに追加されます。関数は、テストしてから発行することをお勧めします。関数を発行すると、関数のステージは LIVE に変わります。

関数作成時の TaggingConflict エラー

CloudFront Functions は、同じ名前の関数に ARN を再利用します。タグを使用して関数を作成すると、TaggingConflict (HTTP 409) エラーが発生することがあります。これは、以下のシナリオで発生する可能性があります。

  • 関数の削除後 – 削除直後に同じ名前とタグを持つ関数を再作成した場合。

  • 作成の試行が失敗した後 – 以前の作成リクエストが失敗した場合 (例: 無効なパラメータ、無効な KVS 関連付け、CloudFormation スタックのロールバックの失敗など)。

TaggingConflict エラーが発生した場合は、次のことができます。

  • 数分待ってから、オペレーションを再試行してください。

  • 別の関数名を使用します。これにより、ARN 再利用の競合を完全に回避できます。

  • テンプレートで KeyValueStore と、それを参照する関数の両方を作成する場合は、明示的な DependsOn を追加して、関数を作成する前に KVS が完全にプロビジョニングされるようにします。