CloudFrontのContinuous DeploymentでHeader-basedな振り分けをするときは「aws-cf-cd-」ではじまるヘッダを使おう

Header-basedでStaging Distributionへ振り分けを行う場合、その基準となるヘッダは「aws-cf-cd-」ではじまる必要があります。ドキュメントが更新されたタイミングや、現時点での設定のようすなどをまとめてみました。
2023.01.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。タイトルのとおりなのですが、CloudFrontのContinuous DeploymentでHeader-basedでStaging Distributionに振り分ける設定を使用するとき、振り分けの基準となるヘッダはaws-cf-cd-ではじまるものを使う必要がある、という話をまとめたエントリとなります。

CloudFront Continuous Deploymentリリース当時はヘッダのPrefixの指定などはなかったのですが、いつの間にやらaws-cf-cd-ではじめる必要が出てきたようです。ドキュメント更新のタイミングを確認しつつ、実際にマネジメントコンソールからStaging Distributionを作成、Continuous Deployment Policyを設定して挙動などを確認してみました。

CloudFront Developer GuideのContinuous Deploymentの項目を再確認していると……

事の発端はAmazon CloudFront Developer Guideの「Using CloudFront continuous deployment to safely test CDN configuration changes」のページを改めて確認していたときでした。

re:Inventのセッションで予告されていた?IPベースの振り分け、しれっとアップデートされていないかなぁ、などと眺めていたわけですね。そのとき、以下の項目が目に付きました。

「Understanding how continuous deployment works」 Using CloudFront continuous deployment to safely test CDN configuration changes - Amazon CloudFront

Staging Distributionへのリクエストの振り分けでHeader-basedを使う場合、そのヘッダにはaws-cf-cd-をPrefixとするように、という内容です。

このヘッダについての条件を確認したとき、「あれ、以前ブログにしたときにこのようなPrefixつけたっけか?」と疑問に思いました。まぁそんなときは確認したほうが早いのでサクッと確認してみます。はい、aws-cf-cd-なPrefixはヘッダにつけておらず、x-cf-cdというヘッダを使っていました。

Amazon CloudFrontのContinuous DeploymentでHeader-basedな振り分けをしてみた | DevelopersIO

リリース当時(2022年11月ごろ)は特にヘッダについての指定はなかったけど、途中から追加された、ということでしょうか。

Developer Guideの該当箇所の更新を確認してみる

CloudFront Continuous Deploymentのリリース当時(2022年11月ごろ)はたしかに、Prefixにaws-cf-cd-をつけないx-cf-cdという独自に定義したヘッダを使用していました。どこかで変更があったのでしょうか。まずはAmazon CloudFront Developer Guideの更新履歴(Document history)を確認してみます。「Continuous deployment」についての更新は2022/11/18のアップデート以降、更新履歴はないようです。

Document history - Amazon CloudFront

しかしDocument historyに載らなくてもアップデートされている可能性もあるはず、というこでInternet Archive Wayback Machineで確認してみます。

まずは最も古い記録、2022/11/25の段階のページです。このタイミングではまだaws-cf-cd- Prefixについての記載はありません。

Internet Archive Wayback Machine 2022/11/25 - Using CloudFront continuous deployment to safely test CDN configuration changes - Amazon CloudFront

続いて2022/12/01の段階です。このときもまだ、aws-cf-cd- Prefixについての記載はありませんね。

Internet Archive Wayback Machine 2022/12/01 - Using CloudFront continuous deployment to safely test CDN configuration changes - Amazon CloudFront

そして2022/12/16の段階です。この段階からaws-cf-cd- Prefixについての記載が登場しました。

Internet Archive Wayback Machine 2022/12/16 - Using CloudFront continuous deployment to safely test CDN configuration changes - Amazon CloudFront

つまり、2022/12/01から2022/12/16の間のどこかのタイミングで、Document historyに載らないかたちではありますがDeveloper Guideの該当箇所が更新され、aws-cf-cd- Prefixを使うようになった、ということになります。

改めてContinuous DeploymentでHeader-basedな振り分けを設定してみる

2022年12月前半のどこかのタイミングで、Amazon CloudFront Developer Guideにaws-cf-cd- Prefixについての記載が登場したことが確認できました。それでは、実際に設定する上ではどうなっているのでしょうか。「must contain the prefix aws-cf-cd-」ということでStaging Distributionへの振り分け用のヘッダは「必ずaws-cf-cd-ではじめる」必要があるようですが、それ以外を設定しようとするとどうなるか、実際にマネジメントコンソールでStaging Distributionを作成、Continuous Deployment Policyを設定して確認してみます。

まずはPrimaryとなるDistributionを作成しました。このDistributionのContinuous deploymentの項目、[Create Staging distribution]ボタンから進みます。

Staging Distributionの設定を行い「Step 3 Specify traffic details」の項目でTypeをHeader-basedに設定します。現れたHeaderとValueの入力欄に振り分け基準となる値を入力するわけですが、ここでリリース時(2022年11月)のブログと同様、以下の値を設定してみました。

  • Header
    • x-cf-cd
  • Value
    • true

さて、このまま設定はできるのでしょうか。

[Next]ボタン押下後、とりあえずはエラーなどは出現せず先に進めるようです。「Step 4 Reveiw and create」で内容を確認して[Create staging distribution」ボタンを押下します。

おっと!この[Create staging distribution]ボタン押下後にエラーとなってしまいました。「The parameter Header contains x-cf-cd that is not allowed.」と表示されていますね。

[Edit]ボタンで再度「Step 3 Specify traffic details」の項目に戻ります。ここでも「The parameter Header contains x-cf-cd that is not allowed.」と表示されています。

Developer Guideの記載の通り、aws-cf-cd- Prefixをつけたaws-cf-cd-stagingというヘッダにしました。

  • Header
    • aws-cf-cd-staging
  • Value
    • true

aws-cf-cd- Prefixをつけたaws-cf-cd-stagingというヘッダで、無事にStaging Distributionが作成できました。

さて、Staging Distribution作成時に途中でエラーとなってしまったのでおそらくだめだろうなと思いつつ、この作成後のStaging Distributionのcontinuous deployment policyの変更を試してみましょう。[Edit policy]ボタンで進めてみます。

Headerをaws-cf-cd- Prefixを含まない、x-cf-cdとして[Save changes]ボタンを押下してみます。

当然ですが、ここでもStaging Distribution作成時と同様のエラー「The parameter Header contains x-cf-cd that is not allowed.」が現れました。

まとめ

Amazon CloudFrontの注目の新機能、Continuous DeploymentでHeader-basedを使ってStaging Distributionに振り分けを行う際、Headerの指定にはaws-cf-cd-をPrefixにつける必要があるようになっている点をDeveloper Guideならびにマネジメントコンソールから確認してみました。

Developer Guideの記載については、Continuous Deploymentリリース当時はたしかにaws-cf-cd- Prefixが必須であるという記載はありませんでした。しかし2023/01/31 現時点ではこのaws-cf-cd- Prefixが必須で、Staging Distribution作成時またContinuous Deployment Policy変更時には指定をしないとエラーとなってしまいます。注意しておきましょう。