以下我提到了两项AWS服务
我想单独暴露Stack 1
'或'部署两个Stack 1 & Stack 2
,以便两个协议栈之间可以无缝对话。
我当前的解决方案:
我正在考虑使用Cross Stack reference
(使用导出/导入),以便Stack 1
将输出其URL
,以便将来可以引用(如果我要部署Stack 2
将来)。
我的问题:
Cross Stack
的导出的URL
值,但是我不确定如何使AWS S3中的代码(index.html
)动态这样它将调用Stack 1
的API。 更新:
想知道我的问题是否足够清楚。问我问题的另一种方式是“如何在Javascript / Ruby等...代码中使用从URL
吐出的Stack 1
?”。我知道如何在另一个cloudformation模板中引用URL
,而不是在代码内部。
答案 0 :(得分:0)
两个想法:
<template>
</template>
<script>
props: ['script'],
created() {
eval(this.script)
}
</script>
和api-id
,则更好,那么您可以动态构建URL在SPA代码中。 基本端点为
region
并使用AJAX库发出HTTP请求。
此方法中最重要的事情是每次删除和部署stage
https://{api-id}.execute-api.{region}.amazonaws.com/{stage}
stack-2
时都部署stack-1
,则将API服务映射到自定义域。也就是说,您的API端点可以映射到自定义URL,例如stack-2
,并且每次重新构建堆栈时,新的端点都将映射到现有的自定义URL,以保护您的stack-1
免受失败。当然,在您的stack-2中,您将向https://api.example.com
或stack-2
发出HTTP请求,依此类推。参考:https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html
如果您使用的是https://api.example.com
,则可以参考以下答案以了解如何实现此解决方案:https://github.com/serverless/serverless/issues/2074#issuecomment-323370777