Amazon Route53でDNSベースのURL転送を設定する[終了]


140

Amazon Route53で転送を設定しようとしています。私の最後のDNSサービス(Nettica)では、リクエストを「aws.example.com」から「https://myaccount.signin.aws.amazon.com/console/」にルーティングできました。

この機能はRoute53でサポートされていますか?

Netticaはこれをどのように達成しますか?特別なA、CNAME、PTR、またはTXTレコードを挿入しますか?


URLを起点としてCloudfrontディストリビューションを作成することもできます。Route53からのCloudfrontディストリビューションをドメインに指定し、TLS証明書を正しく構成するようにしてください。
Deiwin 2018

回答:


325

私はSauravが説明したのとまったく同じ問題に直面していましたが、Route 53とS3以外を必要としないソリューションを見つける必要が本当にありました。私は自分のブログのハウツーガイドを作成し、自分の行動を詳しく説明しました。

これが私が思いついたものです。


目的

Amazon S3とAmazon Route 53で利用可能なツールのみを使用して、http://url-redirect-example.vivekmchawla.comhttpsにある「MyAccount」にエイリアスされたAWSコンソールのサインインページに自動的に転送するURLリダイレクトを作成します://myaccount.signin.aws.amazon.com/console/

このガイドでは、AmazonからのURLだけでなく、任意のURLへのURL転送の設定について説明します。特定のフォルダー(この例では「/ console」など)への転送を設定する方法、およびリダイレクトのプロトコルをHTTPからHTTPS(またはその逆)に変更する方法を学びます。


ステップ1:S3バケットを作成する

S3管理コンソールを開き、[バケットの作成]をクリックします

S3管理コンソールを開き、[バケットの作成]をクリックします。


ステップ2:S3バケットに名前を付ける

S3バケットに名前を付ける

  1. バケット名を選択します。このステップは本当に重要です!バケットには、転送用に設定するURLとまったく同じ名前を付ける必要があります。このガイドでは、「url-redirect-example.vivekmchawla.com」という名前を使用します。

  2. 最適な地域を選択してください。わからない場合は、デフォルトのままにします。

  3. ロギングの設定について心配する必要はありません。準備ができたら「作成」ボタンをクリックするだけです。


手順3:静的Webサイトホスティングを有効にし、ルーティングルールを指定する

静的Webサイトホスティングを有効にし、ルーティングルールを指定する

  1. プロパティウィンドウで、「静的Webサイトホスティング」の設定を開きます。
  2. 「ウェブサイトのホスティングを有効にする」オプションを選択します。
  3. 「インデックスドキュメント」の値を入力します。このオブジェクト(ドキュメント)はS3によって提供されることはなく、アップロードする必要もありません。任意の名前を使用してください。
  4. 「リダイレクトルールの編集」の設定を開きます。
  5. 次のXMLスニペット全体を貼り付けます。

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

上記のXMLの動作について知りたい場合は、「ルーティングルールを指定するための構文」AWMドキュメントにアクセスしてください。ボーナステクニック(ここでは取り上げません)は、宛先ホストの特定のページに転送することhttp://redirect-destination.com/console/special-page.htmlです。<ReplaceKeyWith>この機能が必要な場合は、要素についてお読みください。


ステップ4:リダイレクトバケットの「エンドポイント」をメモする

リダイレクトバケットのエンドポイントをメモします。

Amazonがこのバケット用に自動的に作成した静的ウェブサイトホスティングの「エンドポイント」をメモします。これは後で必要になるので、URL全体を強調表示し、コピーしてメモ帳に貼り付けます。

注意!この時点で実際にこのリンクをクリックして、リダイレクトルールが正しく入力されているかどうかを確認できますが、注意してください。その理由は...

<Hostname>リダイレクトルールのタグ内に間違った値を入力したとしましょう。たぶんmyaccount.amazon.com、の代わりに誤ってタイプしたのかもしれませんmyaccount.signin.aws.amazon.com。リンクをクリックしてエンドポイントURLをテストすると、AWSはブラウザーを間違ったアドレスにリダイレクトします。

間違いに気付いたら<Hostname>、リダイレクトルールでを編集してエラーを修正します。残念ながら、もう一度リンクをクリックしようとすると、誤ったアドレスにリダイレクトされる可能性が高くなります。<Hostname>エントリを修正しても、ブラウザは以前の(不正な!)エントリをキャッシュしています。これは、ChromeやFirefoxなどのブラウザーがデフォルトでキャッシュするHTTP 301(永続的)リダイレクトを使用しているために発生します。

エンドポイントURLをコピーして別のブラウザーに貼り付ける(または現在のブラウザーのキャッシュをクリアする)と、更新された<Hostname>エントリーが最終的に正しいものであるかどうかを確認する別の機会が得られます。

安全のため、エンドポイントURLとリダイレクトルールをテストする場合は、Chromeの「シークレットモード」などのプライベートブラウジングセッションを開く必要があります。シークレットモードでエンドポイントURLをコピー、貼り付け、テストします。セッションを閉じると、キャッシュされたものはすべて消えます。


ステップ5:Route53管理コンソールを開き、ホストゾーン(ドメイン名)のレコードセットに移動します

Route 53 Management Consoleを開いて、レコードセットをホストゾーンに追加します

  1. バケットの作成時に使用したホストゾーン(ドメイン名)を選択します。バケットに「url-redirect-example.vivekmchawla.com」という名前を付けたので、vivekmchawla.comホストゾーンを選択します。
  2. 「Go to Record Sets」ボタンをクリックしてください。

ステップ6:[レコードセットを作成]ボタンをクリックします

[Create Record Set]ボタンをクリックします

[Create Record Set]をクリックすると、Route53管理コンソールの右側にある[Create Record Set]ウィンドウが開きます。


ステップ7:CNAMEレコードセットを作成する

CNAMEレコードセットを作成する

  1. [名前]フィールドに、S3バケットに名前を付けるときに使用したURLのホスト名部分を入力します。URLの「ホスト名の部分」は、ホストゾーンの名前の左側にあるすべてのものです。S3バケットに「url-redirect-example.vivekmchawla.com」という名前を付け、ホストゾーンは「vivekmchawla.com」であるため、入力する必要があるホスト名の部分は「url-redirect-example」です。

  2. このレコードセットのタイプとして「CNAME-正規名」を選択します。

  3. [値]には、ステップ3で作成したS3バケットのエンドポイントURLを貼り付けます。

  4. 「Create Record Set」ボタンをクリックします。エラーがないと仮定すると、ホストゾーンのレコードセットのリストに新しいCNAMEレコードが表示されます。


ステップ8:新しいURLリダイレクトをテストする

新しいブラウザタブを開き、先ほど設定したURLを入力します。私にとっては、それはhttp://url-redirect-example.vivekmchawla.comです。すべてが正常に機能した場合は、AWSサインインページに直接移動する必要があります。

myaccount.signin.aws.amazon.comリダイレクトの宛先URLとしてエイリアスを使用したため、Amazonはアクセスしようとしているアカウントを正確に認識し、そこに直接アクセスします。これは、従業員や請負業者に短くてクリーンなブランドのAWSログインリンクを提供する場合に非常に便利です。

すべて完了! URLを転送すると、AWSサインインページに移動します。


結論

私は個人的にさまざまなAWSサービスが大好きですが、DNS管理をAmazon Route 53に移行することを決めた場合、簡単なURL転送の欠如はイライラすることがあります。このガイドがホストゾーンのURL転送の設定を少し簡単にしてくれたことを願っています。

詳細については、AWSドキュメントサイトの次のページをご覧ください。

乾杯!


15
この完全にスマートなソリューションの+1-時間を割いてそのような叙事詩的段階的なガイドをまとめてくれてありがとう、私はそれに応じて将来の読者をあなたの読者に紹介するように私の答えを更新しました!
Steffen Opel

23
注:ルートドメインのリダイレクトが必要な場合:example.org-> example.com-「エイリアス:はい」を有効にしてAレコードを使用する以外はすべて同じことを行います。次に、バケットをターゲットとして選択します。
JaredBroad 2013年

10
素晴らしいソリューション。しかし、元のURLにhttpsを使用すると問題が発生します。私がリダイレクトしているバケットがdev.example.comの場合、リダイレクトはhttp:// dev.example.comに対しては適切に機能しますが、https:// dev.example.comに対しては失敗します。この問題の解決策が見つかりません。
グレッグ

4
@Gregこれは、AmazonがS3のHTTPSを処理する方法に関係している可能性があると思います。残念ながら、CNAMEを使用してS3バケットにアクセスする場合、Amazonが「* .example.com」の証明書をホストしていないため、「https」を追加してSSLを強制することはできません。S3は接続を許可しないため、リダイレクトロジックに到達することはありません。残念ながら、これに対する回避策はありません。
Vivek M. Chawla 2013

17
buckerオプションの下に、「すべてのリクエストを別のホスト名にリダイレクトする」という新しいオプションがあります。私はそこにIAMサインインURLを配置しましたが、XMLを必要とせずに魅力的に機能しました。
ダンミロン

145

AWSサポートはより簡単なソリューションを指摘しました。これは基本的に、@ Vivek M. Chawlaによって提案されたアイデアと同じですが、よりシンプルな実装です。

AWS S3:

  1. 次のように、完全なドメインで名前が付けられたバケットを作成します aws.example.com
  2. バケットのプロパティで、Redirect all requests to another host nameURLを選択して入力します。 https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. レコードセットタイプAを作成しますYes。エイリアスをに変更します。Alias Targetフィールドをクリックし、前のステップで作成したS3バケットを選択します。

リファレンス:アマゾンウェブサービスを使用してドメインをリダイレクトする方法

AWS公式ドキュメント:Amazon Route 53を使用してドメインを別のドメインにリダイレクトする方法はありますか?


16
これは、HTTPでは機能しますがHTTPSでは機能しません。
mythofechelon

@mythofechelonどういう意味ですか?これまでのところ、httpsには何の問題もありません。ドメインでhttpsを使用する場合(例:https:// aws.example.com)、これを行うにはssl証明書を備えたサーバーが必要になるため、これはまったく別の問題です。
Roberto Schneiders


2
このRedirect all requests to another host nameオプションはまだ存在しますか?バケットのプロパティに移動すると、表示されません。
エイダン

1
これは正解である必要があります。CNAMEの代わりにパフォーマンス目的でエイリアスを使用してAWS内のコンポーネントを参照する方が適切です(これは機能しますが、最善のアプローチではありません)。
ダグラスフィゲロア

11

nginxを使用して、awsサインインページへの301リダイレクトを処理することができました。

nginx confフォルダーに移動します(私の場合は、有効なconfファイル/etc/nginx/sites-availableへのシンボリックリンクを作成し/etc/nginx/sites-enabledます)。

次にリダイレクトパスを追加します

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

nginxを使用している場合は、ゾーンの頂点(example.com)を処理するために追加のサーバーブロック(Apacheの用語ではvirtualhosts)があるか、またはセットアップされている可能性があります。それらの1つがデフォルトのサーバーとして設定されていることを確認してください。

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

Route 53で、A recordfor aws.example.comを追加し、ゾーンの頂点に使用されているのと同じIPに値を設定します。


さらに良いのは、エイリアスレコードを使用して、このマシンの前にあるエラスティックロードバランサーをポイントすることです。
不正行為者

9

更新

以下の私の元の答えはまだ有効であり、そのままではAmazon Route 53を介してDNSベースのURL転送が利用できない原因を理解するのに役立つかもしれませんが、その間に紹介したVivek M. Chawlaの非常にスマートな間接ソリューションをチェックすることを強くお勧めしますAmazon S3によるウェブサイトリダイレクトのサポートと自己完結型サーバーの実現、したがってAWS内での無料のソリューションはそれだけです。

  • そのようなリダイレクトを生成する自動化ソリューションの実装は読者の課題として残されていますが、ソリューションを公開してVivekの壮大な答えに敬意を表してください;)

元の回答

Netticaはこのためのカスタムリダイレクトソリューションを実行している必要があります。これが問題です。

aws.example.comforのようなCNAMEエイリアスを作成することもできますmyaccount.signin.aws.amazon.comが、DNSはconsoleこの例のようにサブディレクトリのエイリアスを公式にサポートしていません。

  • AWSがヒットしたときhttps://myaccount.signin.aws.amazon.com/(私が試したところ)、デフォルトでこれを単純に行うようには見えないのは残念です。加えて、彼らの側で設定するのはかなり簡単なはずです。

そのため、いくつかのDNSプロバイダーは、サブディレクトリへのリダイレクトを可能にするカスタムソリューションを実装しているようです。私は、彼らが基本的に自分のドメインのCNAMEエイリアスを促進していて、すぐにHTTP 3xx Redirectionを介してそこから最終的な宛先にリダイレクトしていると思います

したがって、同じ結果を得るには、これらのリダイレクトを実行するHTTPサービスを実行する必要があります。これは、当然期待される単純なソリューションではありません。多分/うまくいけば誰かがまだよりスマートなアプローチを思い付くことができます。


3
CNAMEはエイリアスであり、リダイレクトしません。
ejain

@ejain-もちろん、あなたは正しいです、私はそれに応じてこれを修正しました(当時の通知を見逃していたに違いありません)。この誤解を招く可能性のある表現を指摘していただきありがとうございます。
Steffen Opel

0

単純なアプローチでも問題が解決しない場合は、空のバケットを作成してRedirect all requests to another host nameから、コンソールの[プロパティ]の[静的Webホスティング]に移動します。あなたがroute53、のために1に2つのAレコードを設定されていることを確認final-destination.comしてのために1 redirect-to.final-destination.com。これらのそれぞれの設定は同じですが、名前は異なるため、バケット/ URLに設定した名前と一致します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.