如何在现有的堆栈AWS Cloudformation中创建新实例



我们已经使用AWS CDK(在Typescript中)创建了一个AWS Cloudformation Stack。堆栈创建一个新的VPC,一个新的安全组&一个新的实例。(1)

我们已经使用cdk deploy命令部署了这个堆栈。

现在我们要向堆栈中添加第二个实例。我们无法找到解释如何做到这一点的来源。

我们可以使用(1)中创建的VPC,安全组创建一个新的堆栈,并在这个新的堆栈中创建一个新的实例。

这样我们可以将实例添加到相同的VPC和安全组中,但不是相同的堆栈。

不能在创建堆栈时创建堆栈中的所有实例。

这是唯一的方式,我们可以新的实例到现有的vpc ?

我们不能使用AWS CDK(在Typescript中)向现有堆栈添加新实例吗?

我不记得typescript中文件名是什么了(在python中是app.py)你定义堆栈的地方,你要么定义第二个相同的堆栈(记住堆栈只是一个类,所以你实例化了第二个版本)

似乎无论如何,你都希望能够根据需要旋转尽可能多的。在这种情况下,堆栈道具的ID字符串在Cloudformation中定义堆栈名称。你可以让它成为一个带上下文变量的格式化字符串。然后可以使用cdk deploy -c variable=value

进行部署。例如(抱歉这是在python中,但思路是一样的)

from my_stack import MainStack

context_var = app.try_get_context("stack_id")
a_stack = MainStack(
app, f"Main-{context_var}")

然后使用cdk deploy Main-* -c stack_id=SomeString

进行部署那么每个不同的值都将启动一个新的堆栈。重用旧值将更新旧堆栈。我们使用它来允许开发人员启动一个"本地";附加工作用户名的堆栈版本。因为它从他们的本地部署,它使用他们的分支代码,他们可以在合并到开发分支之前测试大的变化,即Main-LynkfoxMain-Penguin将分别与-c stack_id=Lynkfox-c stack_id=Penguin一起部署

您当然需要将该值附加到堆栈内每个资源的每个名称上,或者让cdk选择资源名称。如果您选择前者,我建议创建一个公共属性对象,您可以将其传递到每个堆栈中以在其中使用。

https://docs.aws.amazon.com/cdk/latest/guide/context.html

将其与typescept联系起来,这里的示例https://docs.aws.amazon.com/cdk/latest/guide/stacks.html与stack1和stack2 -您将它们替换为变量定义的字符串。因为这也是告诉cdk部署要部署哪个堆栈的方式,所以最好像上面的

那样添加前缀。编辑:由于您的堆栈是vpc和安全组,并且您将需要其他堆栈的这些值,这里的另一个选项是使其成为NestedStack,然后在另一个堆栈中创建和引用它的属性

https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudformation.NestedStack.html

相关内容

  • 没有找到相关文章

最新更新