#author("2019-02-18T01:51:02+00:00","","") [[AWSメモ]] > * 独自ドメイン名で API Gateway または EC2にアクセスする [#wee37ad8] #setlinebreak(on); #contents -- 関連 --- [[AWSメモ]] ** 概要 [#s0bccb56] #html(<div style="padding-left: 10px;">) 独自ドメイン名で EC2上のWebAPサーバ、または API Gateway にアクセス出来るようにする為の手順を記載する。 以下の例では、ドメイン名は example.com として、サブドメイン付きの aws-sample.example.com で EC2 または API Gateway にアクセスできるようにする手順を記載する。 #html(</div>) ** 証明書の作成 [#xb4b33c1] #html(<div style="padding-left: 10px;">) - [[マネージメントコンソールから Certificate Manager>https://ap-northeast-1.console.aws.amazon.com/acm/home?region=ap-northeast-1#/]] を開き、[証明書のリクエスト] ボタンを押下する - ドメイン名( aws-sample.example.com )を入力し、[次へ] - 検証方法で [DNSの検証] または [Eメールの検証] を選択し、[確認] を押下。 ※後述 「[[ドメイン名の検証について>#w4c85b0b]]」を参照 - 内容を確認して [確定とリクエスト] を押下する。 *** ドメイン名の検証について [#w4c85b0b] #html(<div style="padding-left: 10px;">) -「DNSの検証」では DNSの cname を設定する事によりドメインの持ち主である事を確認する。 ※DNSのTTL設定等にもよる為、少し時間がかかる。(ドキュメントには72時間以内に検証可能な状態になれば良い旨が書いてある) ※参考 ... [[DNS を使用したドメインの所有権の検証>https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/gs-acm-validate-dns.html]] -「Eメールの検証」では以下のアドレスに送信される確認メールに記載されているリンクから確認作業を行う。 -- administrator@ドメイン名 -- hostmaster@ドメイン名 -- postmaster@ドメイン名 -- webmaster@ドメイン名 -- admin@ドメイン名 ※確認メールは上記の5つのメールアドレス全てに送られる。 ※リンク先の [I Approve] を押下後はすぐに検証OKとなるので、上記のアドレスでメール受信できる場合は「Eメールの検証」の方が早い。() ※参考 ... [[E メールを使用したドメインの所有権の検証>https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/gs-acm-validate-email.html]] #html(</div>) #html(</div>) ** EC2にアクセスする場合 [#w5bd1845] #html(<div style="padding-left: 10px;">) ACM で作成したパブリック証明書はエクスポートできない為、EC2等でそのまま利用する事はできない。 その為、EC2へのアクセス時に利用する場合は、ELBやCloudFront等を噛ます必要がある。 ここでは、ELBを利用して作成した証明書を利用する手順を記載する。 ※参考 [[AWS Certificate Manager のよくある質問>https://aws.amazon.com/jp/certificate-manager/faqs/]] - マネージメントコンソールの EC2から [ロードバランサー] を選択し「ロードバランサーの作成」を押下 - Application Load Balancer の「作成」を押下 - 名前、スキーム、IP アドレスタイプ を入力/選択。 - リスナーに HTTP(ポート:80) 及び HTTPS(ポート:443) を設定 - アベイラビリティーゾーンを設定(対象のEC2インスタンスのあるVPC/アベイラビリティゾーンを選択) - 証明書タイプで 「ACM から証明書を選択する」を選択し、証明書の名前で先ほど作成した証明書を選択する。 - セキュリティポリシーで「ELBSecurityPolicy-2016-08」を選択する。 ※ELBでは、カスタムセキュリティポリシーを利用する事はできない為、用意されているものを利用する必要がある。 (用意されているセキュリティポリシーは [[Application Load Balancer の HTTPS リスナー>https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-https-listener.html]] を参照) - セキュリティグループの設定で 80 及び 443 ポートを許可するセキュリティグループを選択する。 ※無い場合は「新しいセキュリティグループを作成する」から作成可能 - ターゲットグループ、ヘルスチェックの設定を行う。 ※ターゲットの種類は「インスタンス」を選択 - ターゲットの登録で、対象のEC2インスタンス選択/追加する。 &br; - 最後に、作成したロードバランサーのDNS名を対象ドメインのDNSに cname として設定する。 &br;Bindの設定例) ドメイン名: aws-sample.example.com ロードバランサーのDNS: elb-aws-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com の場合 #myterm2(){{ aws-sample IN CNAME elb-aws-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com. }} ※Route53を使用している場合は、Route53で設定可能。 #html(</div>) ** API Gateway にアクセスする場合 [#dde6161e] #html(<div style="padding-left: 10px;">) API Gateway へのアクセス時に作成した証明書を利用する場合は、カスタムドメインを設定する。 - マネージメントコンソールの API Gateway から「カスタムドメイン名」を選択。 - 「カスタムドメイン名の作成」を押下。 - ドメイン名を入力し、エンドポイントの設定で「Regional」を選択、ACM証明書で作成した証明書を選択後に「保存」を押下。 - ベースパスマッピングで対象のAPIとのマッピングを設定する。 &br; - 最後に、作成したカスタムドメインの「ターゲットドメイン名」を対象ドメインのDNSに cname として設定する。 &br;Bindの設定例) ドメイン名: aws-sample.example.com ターゲットドメイン名: xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com の場合 #myterm2(){{ aws-sample IN CNAME xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com. }} ※Route53を使用している場合は、Route53で設定可能。 #html(</div>) 以上で、https://aws-sample.example.com でEC2 または API Gateway にアクセス可能となる。