Amplify Consoleのリダイレクトを使ってリバプロ的なことをやる

AWS Amplify Advent Calendar 2020、15日目の記事です。 やりたいこと Amplifyにホストしているドメインで、特定のパスだけ別のサーバーからレスポンスを返したい。 Headlessなwe […]

広告ここから
広告ここまで

目次

    AWS Amplify Advent Calendar 2020、15日目の記事です。

    やりたいこと

    Amplifyにホストしているドメインで、特定のパスだけ別のサーバーからレスポンスを返したい。

    Headlessなwebsiteで運用している場合ですと、CMSが提供しているAPIやfeed・メディアなどを同じパスで使いたいというケースが当たるかなと思います。

    やったこと

    Amplify Consoleでリダイレクトの設定ができますので、それを使います。

    [
         {
             "source": "/api/<*>", 
             "target": "https://example.com/api/<*>",
             "status": "200",
             "condition": null
         },
         {
             "source": "/<*>",
             "target": "/404.html",
             "status": "404-200",
             "condition": null
         }
     ]

    <*>をつけることで、それ以降のパスやクエリをパススルーするようにできます。

    よびだしてみる

    先程のexample.com/apiというパスを適当なWP APIのエンドポイントに差し替えて試してみました。

    $ wget -S --spider https://main.xxxxxxxx.amplifyapp.com/api/wp/v2/pages
    
     HTTP による接続要求を送信しました、応答を待っています… 
       HTTP/1.1 200 OK
       Content-Type: application/json; charset=UTF-8
       Connection: keep-alive
       Server: nginx
       Date: Wed, 02 Dec 2020 09:10:39 GMT
       X-Cached: Wed, 02 Dec 2020 09:10:39 GMT
       X-Robots-Tag: noindex
       Link: https://example.com/wp-json/; rel="https://api.w.org/"
       X-Content-Type-Options: nosniff
       Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages, Link
       Access-Control-Allow-Headers: Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type
       X-WP-Total: 3
       X-WP-TotalPages: 1
       Allow: GET
       X-Cache-Status: MISS
       X-Amz-Cf-Pop: NRT12-C3
       Vary: Accept-Encoding
       X-Cache: Miss from cloudfront
       X-Amz-Cf-Pop: NRT51-C2
       X-Amz-Cf-Id: VQ2Q5vZBFeV9Rg1DSuSjoPTdte6kF9GETQKA8paG-TYbZIoU4pIcZQ==
     長さ: 特定できません [application/json]
    

    HTTP200ですが、WordPressで処理されたデータが返ってきていることがうかがえる内容です。

    あまり出番のあるTipsではないですが、知っていると便利です。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark