Amazon Web Services ブログ
Amazon CloudFront の CNAME を管理するための新しい API と機能について
Amazon CloudFront は、ListConflictingAliases と AssociateAlias という 2 つの新しい API のリリースを発表しました。これらの API は、 CNAMEAlreadyExists エラーコードが発生した際に、代替ドメイン名(CNAME)を探したり、移動させたりする必要がある場合に便利です。さらに、アカウント間でワイルドカードの CNAME を使用する際に、より多くのユースケースで利用することが可能になりました。API について詳細を紹介する前に、このブログではまず CNAMEAlreadyExists エラーコードの背景を少し説明し、CloudFront ディストリビューションで CNAME 管理の自由度を高める方法について説明します。
新しいユースケース
以前は、 CNAME (test.example.com など)をディストリビューションに追加しようとすると、 2 つのシナリオで CNAMEAlreadyExists エラーコードが返されていました。 1 つ目は、その完全に一致する CNAME (test.example.com)が別のディストリビューションに存在している場合、 2 つ目は、同じレベルのワイルドカード CNAME (*.example.com)が別の AWS アカウントのディストリビューションに存在している場合です。ドメイン検証が導入される前は、ディストリビューションに CNAME を追加する際に、2 つ目の動作であるクロスアカウントのワイルドカード制限を使って、ドメインの CNAME が異なるアカウントで追加されていないことを確認する必要がありました。ドメイン検証が導入されたことで、有効で信頼できる証明書を使ってドメインに対する所有権を証明した場合にのみ CNAME が追加されるため、この方法は必要ではなくなりました。
現在では、あるアカウントではワイルドカードの CNAME を、別のアカウントでは特定の CNAME を使用できるようになりました。この変更により、新しくこれらの CNAME を使った作業、委任、管理をできるようになりました。例えば、大規模な組織で、様々なアプリケーションを複数のアカウントを使用しているチームがある場合、アカウント A で特定のドメイン(api.example.com など)を使用し、アカウント B ではワイルドカード(*.example.com)を使用して他のすべてのトラフィックを誘導することができます。また、特定の CNAME (saas.example.com など)の使用を SaaS プロバイダーのアカウントに委任することもできます。その他の利用法としては、 2 つの異なるアカウントにあるディストリビューション間で、アクティブにトラフィックを提供している Zone Apex ではないドメインの CNAME を移行するために、ワイルドカードを使用することができます。
この新機能に加えて、 2 つの新しい API である ListConflictingAliases と AssociateAlias が CNAME 管理プロセスをさらに促進します。要約すると、CNAMEAlreadyExists エラーコードに遭遇した場合、これらの API はどのディストリビューションが CNAME を持っているかを表示し、特定の条件の下では 1 回のアップデートで CNAME を移行先のディストリビューションにアトミックに移動させることができます。それでは、それぞれの API の主な機能をご紹介します。
ListConflictingAliases のご紹介
まず、ListConflictingAliases API からご紹介します。この API は、特定のサブドメインまたはワイルドカードのいずれかの指定された CNAME を識別し、CloudFront ディストリビューション上に存在するその CNAME と一致、または重複する CNAME のリストを返します。さらに、この API は、これらの CNAME が配置されているディストリビューション ID およびアカウント ID に関する情報も返します。重要な注意点として、 API レスポンスに含まれるディストリビューション ID およびアカウント ID は、 AWS アカウントおよびリソースの特定から保護する必要性と、フォローアップの調査や議論を行うために十分な情報を提供する必要性とのバランスをとるために、一部難読化されている(*でマスクされている)ことに留意する必要があります。この API を使用するには、IAM ロールが GetDistribution と ListConflictingAliases の権限を持っている必要があります。
AssociateAlias のご紹介
2 つ目の API は AssociateAlias です。この API は、トラフィックを中断することなく、 1 回のアトミックなアップデートで、指定された CNAME を移行元のディストリビューションから移行先のディストリビューションに移動させます。同じアカウント内で CNAME を移動させる場合、手順は簡単です。アカウントをまたいだ CNAME の移動は、ディストリビューションの状態や、両方のアカウントにアクセスできるかどうかにより異なってきます。
同一アカウント内での CNAME 移動
同じアカウント内の 2 つのディストリビューション間で CNAME を移動させようとしている場合、この API を使用することにより CNAME を完全に制御して移動させることができます。お客様の IAM ロールは、移行元と移行先の両方のディストリビューションに対して UpdateDistribution パーミッションを持ち、移行先のディストリビューションに対して AssociateAlias パーミッションを持っている必要があります。さらに、CloudFront は移行先のディストリビューションの証明書がドメイン検証基準を満たしていることを確認し、ドメインの所有権を確認するために必要な TXT レコードを DNS のチェックで確認します。この方法については、デベロッパーガイドのターゲットディストリビューションを設定するを参照してください。
アカウント間での CNAME 移動
移行元のディストリビューションが無効な状態にある場合、上記のように API を使用して CNAME を移行先のディストリビューションに移動させることができます。ただし、このシナリオで IAM ロールが必要とするのは、移行先のディストリビューションに対する UpdateDistribution と AssociateAlias のパーミッションだけです。CloudFront は、前述した同様のドメイン検証と DNS チェックを行います。
移行元のディストリビューションがまだアクティブな状態である場合、AssociateAlias の外に 2 つのアプローチがあります。まず、CNAME が Zone Apex ドメイン(example.com など)ではなく、両方のアカウントにアクセスできる場合、クロスアカウントのワイルドカード制限が解除された今では、ワイルドカードを使用して 2 つのアカウント間で代替ドメイン名を移動させることができます。ただし、CNAME が Zone Apex ドメインの場合、または移行元のアカウントにアクセスできない場合は、2 つ目のアプローチとして、デベロッパーガイドの AWS Support にお問い合わせいただき、代替ドメイン名を移動するセクションに記載されている手順に従ってください。
今後の展開
今回紹介した新しい機能が、CNAME の移行管理に役立つことを願っています。AWS では、アカウント間でアクティブな移行元のディストリビューションから CNAME を移動させるリクエストを有効にできる方法を検討しています。この一環として、お客様のワークロードのセキュリティと可用性の運用基準を維持しつつ、より柔軟性とコントロールを提供することに適切なバランスがとれるように常に取り組んでいます。詳細については、今後の発表をお待ちください。
この新しい機能と API の詳細については、デベロッパーガイドの代替ドメイン名を別のディストリビューションに移動するや、API リファレンスの ListConflictingAlias と AssociateAlias を参照してください。
原文はこちら。翻訳はソリューションアーキテクトの長谷川が担当しました。