web-dev-qa-db-ja.com

Amazon Route53でDNSベースのURL転送をセットアップする

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

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

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

131
Saurav

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

ここに私が思いついたものがあります。


目的

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

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


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

Open the S3 Management Console and click "Create Bucket"

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


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

Name your S3 Bucket

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

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

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


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

Enable Static Website Hosting and Specify Routing Rules

  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:リダイレクトバケットの「エンドポイント」を書き留めます

Make a note of your Redirect Bucket's Endpoint

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管理コンソールを開き、ホストゾーン(ドメイン名)のレコードセットに移動します

Open the Route 53 Management Console to Add Record Sets to your Hosted Zone

  1. バケットを作成したときに使用したホストゾーン(ドメイン名)を選択します。バケットに「url-redirect-example.vivekmchawla.com」という名前を付けたため、vivekmchawla.comのホストゾーンを選択します。
  2. [レコードセットに移動]ボタンをクリックします。

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

Click the Create Record Set button

[レコードセットの作成]をクリックすると、Route53管理コンソールの右側に[レコードセットの作成]ウィンドウが開きます。


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

Create a CNAME Record Set

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

  2. このレコードセットのタイプに「CNAME-Canonical name」を選択します。

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

  4. [レコードセットの作成]ボタンをクリックします。エラーがなければ、ホストゾーンのレコードセットのリストに新しいCNAMEレコードを表示できるようになります。


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

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

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

All done! Your URL forwarding should take you to the AWS sign-in page.


結論

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

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

乾杯!

307
Vivek M. Chawla

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

AWS S3:

  1. aws.example.comのような、完全なドメイン名のバケットを作成します
  2. バケットのプロパティで、Redirect all requests to another Host nameを選択し、URLを入力します:https://myaccount.signin.aws.Amazon.com/console/

AWS Route53:

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

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

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

130

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

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

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

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

Nginxを使用している場合、ほとんどの場合、追加のサーバーブロック(Apache用語では仮想ホスト)を使用して、ゾーンの頂点(example.com)を処理するか、セットアップします。それらのいずれかがデフォルトサーバーに設定されていることを確認してください。

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

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

11
Vincent Mac

更新

以下の私の元の回答はまだ有効であり、DNSベースのURL転送が Amazon Route 5 で利用できない原因を理解するのに役立つかもしれませんが、Vivek M. Chawlaの- まったくスマートな間接ソリューション 導入された間 ウェブサイトリダイレクトのAmazon S3サポート そして、自己完結型サーバーを少なくして、AWS内でのみ無料ソリューションを実現します。

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

元の回答

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

aws.example.commyaccount.signin.aws.Amazon.comのようなCNAMEエイリアスを作成できますが、この例では、DNSはconsoleのようなサブディレクトリのエイリアスの公式サポートを提供しません。

  • https://myaccount.signin.aws.Amazon.com/をヒットしたときに、AWSがデフォルトでこれを単純に実行していないように見えるのは残念です(私が試したところです)。これは、問題をすぐに解決し、そもそも多くの意味をなすからです。それに、彼らの側で設定するのはかなり簡単なはずです。

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

したがって、同じ結果を得るには、これらのリダイレクトを実行するHTTPサービスを実行する必要がありますが、これはもちろん期待される単純なソリューションではありません。しかし、おそらく/誰かがもっと賢いアプローチを考え出すことができます。

9
Steffen Opel

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

0
DanV