Angular 如何在AWS中通信前端应用程序和多个后端API?
我还是AWS新手,目前正在尝试使用AWS Elastic Beanstalk部署我的应用程序。我的私人Dockerhub上有4个后端API,我有一个前端API,应该与这4个后端微服务通信。我能够按照下面的指南将4个后端服务部署到AWS Elastic Beanstalk。我的主要问题或我不理解的部分是如何让我的前端应用程序与这4个其他服务通信 我正在研究的当前选项是将我的前端angular应用程序添加到dockrun.aws.json中,以便我的json文件看起来与下面的类似:Angular 如何在AWS中通信前端应用程序和多个后端API?,angular,amazon-web-services,docker,aws-api-gateway,amazon-elastic-beanstalk,Angular,Amazon Web Services,Docker,Aws Api Gateway,Amazon Elastic Beanstalk,我还是AWS新手,目前正在尝试使用AWS Elastic Beanstalk部署我的应用程序。我的私人Dockerhub上有4个后端API,我有一个前端API,应该与这4个后端微服务通信。我能够按照下面的指南将4个后端服务部署到AWS Elastic Beanstalk。我的主要问题或我不理解的部分是如何让我的前端应用程序与这4个其他服务通信 我正在研究的当前选项是将我的前端angular应用程序添加到dockrun.aws.json中,以便我的json文件看起来与下面的类似: { "AWS
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "backend-svc-1",
"host": {
"sourcePath": "/var/app/current/backend-svc-1"
}
},
{
"name": "backend-svc-2",
"host": {
"sourcePath": "/var/app/current/backend-svc-2"
}
},
{
"name": "angular-frontend-app",
"host": {
"sourcePath": "/var/app/current/angular-frontend-app"
}
}
],
"containerDefinitions": [
{
"name": "angular-frontend-app",
"image": "angular-frontend-app",
"environment": [
{
"name": "Container",
"value": "angular-frontend-app"
}
],
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 4200
}
],
"links": [
"backend-svc-1",
"backend-svc-2"
]
},
{
"name": "backend-svc-1",
"image": "backend-svc-1",
"environment": [
{
"name": "Container",
"value": "backend-svc-1"
}
],
"essential": true,
"memory": 128,
}
{
"name": "backend-svc-2",
"image": "backend-svc-2",
"environment": [
{
"name": "Container",
"value": "backend-svc-2"
}
],
"essential": true,
"memory": 128
}
]
}
当我这样做时,我如何在angular应用程序中检索关于backend-svc-1的主机名的信息?例如,如果在我的angular应用程序中调用,那么部署时这个url是什么?我应该硬编码值吗?或者它将作为一个环境变量通过链接数组与我的前端应用程序通信
另外,您对如何最好地实现我提出的体系结构有什么建议?我读过很多文章,有人说我应该在S3中作为静态站点托管Angular应用程序,并通过API网关路由请求。我看到其他网站说我应该为每个服务管理自己的ECS实例,并通过API网关路由请求。所以总的来说,我对如何使用AWS有点困惑,我希望有人能在这方面为我提供指导
提前谢谢你 这个问题似乎很广泛,但在AWS中使用容器时可以考虑这个问题 当我这样做时,我如何在angular应用程序中检索信息 后端-svc-1的主机名是多少 当请求从前端应用程序路由时,您需要将应用程序负载平衡器放在这些服务的顶部,并根据主机名或请求路径将请求路由到后端服务 现有s3 angular应用程序的高级外观将类似于 或者通过链接将其传送到我的前端应用程序 数组作为环境变量 链接是使用服务进行服务到通信,例如后端api希望与Redis通信,然后链接适合,但当您的应用程序是web时,您需要从internet访问后端api,因此链接在此情况下不起作用,但LBalancer可以正常工作 我看到其他网站说我应该管理自己的ECS实例 每个服务和路由请求通过API网关 我更喜欢容器,现在ECS提供了不同的风格,比如,你不需要管理或担心基础设施 创建3个服务所需的一切
- 前端
- 后端-svc-1
- 后端-svc-2
你认为答案对你没有帮助吗?至少有人会有评论或进一步的建议。嗨,阿迪,对不起,我当时正在上班,刚刚下班。但这个答案非常有用。今晚我将看一下它的实现。在同样的情况下,如果我们在ALB中有身份验证-OIDC,那么我的angular应用程序不会被重定向到OIDC登录页面。但是,如果我删除ALB身份验证,那么它可以正常工作。