あなたのラムダURLのための自由なカスタムメイドのドメイン名をつくる方法


導入


2022年6月6日AWS announced Lambda Function URLs with a Built-in HTTPS Endpoint for Single-Function Microservices . 新しい機能を使用すると、AWS APIゲートウェイまたはアプリケーションロードバランサのような追加のリソースを使用せずに、ラムダ関数のhttpsエンドポイントを設定できます.AWSは非常に利用可能で、スケーラブルで安全なHTTPSサービスとして説明します.新しく追加された機能はよくコミュニティによって受信されました.私は、「FAASのための1つの小さなステップ、Serverlessのための1つの巨大な飛躍」と呼びました.
新しくリリースされた機能を議論して、紹介するために発表されるいくつかの記事があります.AJ Stuvivenberg(AWSコミュニティBuilder)は、タイトルをつけられるラムダ機能URLに関するよく書かれた記事を掲示しました、...記事を読む別の価値が書かれたServerless Framework . さらにAWS documentation ビットを深く掘るあなたの指先で.

それが言われていると、ラムダ関数URLの機能がボックスからカスタムドメイン名をサポートしていないことが知られていますしたがって、私はあなたのラムダURLのための自由なカスタムドメイン名を作成する方法をあなたを歩かせるステップチュートリアルでこのステップを書くことに決めました.ソリューションは、AWSルート53ホストゾーン、AWSのクラウドフロントディストリビューション、AWS証明書マネージャとFreeNom無料のカスタムドメイン名の登録を利用します.また、ラムダ関数は、説明のために静的ページをホストすることです.反復するために、チュートリアルの目的は、ラムダ関数URLのカスタムドメイン名を作成する方法についての手順を提供することです.十分にしゃべってください、それを得ましょう.

NOTE: AWS Route 53 hosted zone costs $0.50/month.


ソリューションアーキテクチャ図



チュートリアルの手順

  • フリードメイン名を取得するFreenom
  • 静的ページをホストするラムダ関数を作成する
  • ホストゾーンを作成するAWS Route 53
  • パブリックSSL証明書をAWS Certificate Manager
  • クリエイトアAWS CloudFront ラムダURLの配布
  • CloudFrontディストリビューション用のルート53レコードを作成し、カスタムドメインが機能していることを確認します
  • 勝利ダンス😉
  • NOTE: throughout the tutorial, leave default options as is unless instructed otherwise.


    ステップ1:FreeNomから自由なドメイン名を得てください


    1 -移動するFreenom そして、無料のアカウントを作成します.
    2 -選択次のように新しいドメインを登録します.

    3 -あなたの選択のドメイン名の可用性を確認します.私の場合はラムダです.CFは利用可能で、無料です😉. 今、我々はチェックアウトする準備が整いました.

    4 -選択したドメインの期間を選択します.1〜12か月である.をクリックします.
    5 -条件と条件を読んで、一度完了したらそれを選択します.最後に、自由なドメイン名を登録する完全な順序をクリックしてください.
    おめでとう.あなたは自由にドメイン名を登録しました.

    NOTE: it might take an hour or so for the domain registration to take effect.


    2静的Webページをホストするラムダ関数を作成する


    1 - AWSラムダコンソールから、Create関数をクリックします.
    2 -関数を名前にして、実行時にPython 3.9を選択します.高度設定の下で、関数URLを有効にし、Auth型のNoneを選択します.次に、Create関数をクリックします.

    3 -以下に示すように、LambdaHorn関数の本体に以下のPythonコードをコピーしペーストします.
    
    #******************************************************************************************
    # Author - Omar A Omar
    # This lambda function will act as a static web page
    #******************************************************************************************
    
    
    def lambda_handler(event, context):
        response = {
            "statusCode": 200,
            "statusDescription": "200 OK",
            "isBase64Encoded": False,
            "headers": {
            "Content-Type": "text/html; charset=utf-8"
            }
        }
    
        response['body'] = """
        <html>
            <head>
                <title>Lambda URL</title>
                <style>
                    html, body {
                    background-color:rgb(22, 30, 43);
                    margin: 10; padding: 10;
                    font-family: arial; font-weight: 10; font-size: 1em;
                    text-align: center;
                    }
                    html, h1 {
                    color: white;
                    font-family: verdana;
                    font-size: 150%;
                    }
                    html, p {
                    color: white;
                    ont-size: 50%;
                    }
                </style>
            </head>
            <body>
    
                <h1>Hello Friend!</h1>
                <p style="color:White;">I'm a static web page running on a Lambda function</p>
                <img src="https://acegif.com/wp-content/gifs/banana-82.gif" width="450" />
            </body>
        </html>
        """
    
        return response
    

    4 -関数URLをクリックしてラムダ静的ページを開きます.

    おめでとう.ここで、静的ページをホストするラムダ関数があります.

    NOTE: If you're planning to implement weight traffic shifting and safe deployments, AWS recommends associating an alias with your Lambda function. Please, refer to Announcing AWS Lambda Function URLs: Built-in HTTPS Endpoints for Single-Function Microservices for more information.


    3は、AWSルート53でホストされた地帯をつくります


    1 - AWSのルート53コンソールから、ホストのゾーンをクリックします.次に、「ホストを作成」をクリックします.

    2 - FreeNomから取得したドメイン名を追加します.私の場合はラムダです.次に、作成したゾーンを作成します.

    3 -今、私たちは、ドメイン名のためにFreeNomにネームサーバ(タイプNS)をコピーして、このホストされたゾーンを指し示す必要があります.以下のように4つのネームサーバをFreeNomにコピーしましょう.

    4 - FreeNomでは、ドメイン名をクリックしてネームサーバーをクリックします.


    5 -選択してカスタムネームサーバーを使用して、私たちのルート53ホストゾーン1から4つのネームサーバーを貼り付けます.最後に、[変更]ネームサーバーをクリックします.

    NOTE: Don't copy the period at the end of the name servers from our Route 53 hosted zone. At this point of time, we are done with Freenom, you can signout and close the tab.


    4 AWS証明書マネージャーからパブリックSSL証明書を要求してください


    1 - AWS認証マネージャーコンソールから、要求をクリックします.デフォルトを維持し、選択した公開証明書を要求し、「次へ」をクリックします.

    2 -完全修飾ドメインの下に、ドメイン名を入力します.次に、この証明書に別の名前を追加する*. ドメイン名にワイルドカードとして.

    NOTE: Adding the wildcard to the second qualified domain name allows us to use the same certificate for other CNAMEs and A-records. If you don't know what a CNAME is and can't differentiate between types of DNS records, it's a great time to fill in the knowledge gap. I would highly recommend taking a look at the AWS documentation for more information.



    他の変更は必要ありません.リクエストをクリックして証明書リクエストを送信します.通知と以下に示すように、ステータスは保留中です.我々はまだ検証のもう一つのステップを完了する必要があります.

    3 -証明書を検証しましょう.証明書IDの下で、新しく作成された証明書IDをクリックします.証明書ステータスページとドメインセクションの下に、ルート53の作成レコードをクリックします.

    4 -私たちは手動で検証を追加する必要がありますが、AWSはこの機能を使用して簡単に追加しました.今、我々は自動的にルートレコード53をクリックして、我々のホストゾーンにDNSレコードを追加します.

    NOTE: If you faced any hiccups adding the validation automatically, copy the CNAME name and CNAME value from under Domains section and use them to manually create a validation CNAME record in our hosted zone.


    5 -検証cnameレコードが正しく追加されていることを確認するには、ホストのゾーンに戻ると、以下のようにホスト名のDNSレコードのリストにcNameレコードが追加されていることがわかります.

    NOTE: Don't forget to refresh the records in the hosted zone if the newly added validation CNAME record has not showed up . Also, the Status of the certificate in AWS certificate Manager might take a few minutes to become Issued. Therefore, take a break, grab a coffee, or even do a flip 😄



    5ラムダURL用のAWSクラウドフロントディストリビューションを作成する


    1 - Cloudfrontコンソールから「配布を作成」をクリックします.
    2 -原点ドメインは、ラムダ関数のURLです.
    3 -プロトコル: HTTPSのみ
    4 -オリジンパスを空にします.

    5 -名前の場合は、CloudFrontによって作成された既定の名前の代わりに選択する名前に変更できます.
    6 -ビューアーの場合、HTTPをhttpsにリダイレクトします.
    7 -設定の下、[項目の追加]をクリックし、ドメイン名を追加します.私の場合はラムダです.CF .
    8 -カスタムSSL証明書オプションから、ドロップダウンメニューから証明書を選択しましょう.次に、「配布を作成」をクリックします.

    NOTE: Note, as shown below, CloudFront distribution might take a few minutes to propagate the deployment around the globe; therefore, take a break, grab a cup of coffee, or even do a flip, why not 😄



    9 -配置が完了すると、配布IDをクリックします.我々は静的なページを見るべきです.


    おめでとう.我々は現在、ラムダURLをすべてのAWSのエッジの場所には、世界最高のパフォーマー、セキュリティで保護された便利なコンテンツ配信ネットワークを使用して配布している.うん、それは曇りです.

    6 CloudFrontディストリビューション用の経路53 Aレコードを作成する


    1 - 53コンソールにパスし、エイリアスレコードを追加します.ホストゾーンから、[作成]レコードをクリックします.

    2 -レコードタイプをAレコードとして保管してください.しかし、値を別名に切り替える必要があります.次に、「ドロップダウンメニュー」から「クラウド」「表」ウィンドウに「別名」を選択します.ここでは、以下に示すように、Cloudfrontコンソールから配布ドメイン名を貼り付けます.注意してください、配布ドメイン名は選択可能なオプションとして表示されます.これは、CloudfrontのラムダURLのために作成したディストリビューションです.最後に、Create Recordsをクリックします.

    NOTE: If you're copying and pasting the CloudFront Distribution domain name, remove the protocol from the URL as shown below (remove https://).



    ラムダURLのカスタムドメイン名が動作するかどうかチェックしましょう.それは真実の瞬間です🙊 カスタムドメイン名をブラウザに貼り付けましょう.…を待つ.…を待つ.あなたが今までに勝利ダンスをしていることを願っています🥳

    まとめ


    私は、チュートリアルの間に複数回あなたを祝福したかもしれません、しかし、それがもう一つの時間、おめでとう💥.
    AWSルート53ホストゾーン、AWSクラウドフロントディストリビューション、AWS証明書マネージャ、FreeNomを使用して、自由なカスタムドメイン名登録を行うソリューションを実装しました.このソリューションを利用して、ラムダ関数URLにカスタムドメイン名を指定しました.
    私は、このチュートリアルが学習曲線に値を追加することを望みます、そして、私は将来のラムダ関数URLのためにunpackすることを見るのを待つことができません.本当に素晴らしいもの.