У вас есть пара вариантов для этого. Поскольку вам нужно одно имя хоста, foo.com, вам нужно начать с одной службы, которая может направлять трафик клиента c на s3 и на шлюз API.
Option1: Amazon Cloudfront
У этого есть преимущество масштаба.
| -> S3
cloudfront -> |
| -> api gateway
Как настроить облачный фронт для API-шлюза
Как настроить облачный фронт с помощью S3
И так как у вас есть Cloudfront вы можете увидеть, если вы можете использовать Lambda@Edge.
Опция 2: AWS Усиление
Если вы не Я имею большой опыт работы с сервисом AWS или даже если вы сделаете это, это хороший вариант, я бы рекомендовал сначала взглянуть на него, так как он упрощает многие настройки и имеет некоторые приятные [функции] (https://aws.amazon.com/amplify/features/ ). Думайте об Amplify как о сервисе сервисов для разработчиков приложений.
Check (Amplify API) [https://aws-amplify.github.io/docs/js/api] , который используется для создания конечных точек REST или GraphQL.
Я должен упомянуть, какие фреймворки поддерживают Amplify: iOS, Android, ReactNative, и для веб-сайтов он имеет глубокую интеграцию с React, Ioni c, Angular и Vue. js.
И да, вы, вероятно, в конечном итоге выберете то же решение, используя Amplify, как вариант 1, именно тот рабочий процесс, который вам больше подходит.
Вариант 3 разделит службу:
Создать 2 DNS-записи для foo.com и api.foo.com
| -> (foo.com) cloundfront -> S3
client -> |
| -> (api.food.com) api-gateway
В этом решении можно удалить облачный фронт и просто использовать S3 stati c
Примечание. на Route53: Вам не нужно использовать Route53, так как любая служба DNS будет работать. Если у вас go с опцией 1 cloudfront, создать CNAME в любых службах DNS также просто. Однако, если вы используете Amplify, то перемещение службы DNS на AWS Route53 автоматизирует управление DNS.