AWS基础设施文档作为代码

时间:2020-10-10 12:37:52

标签: amazon-web-services terraform terraform-provider-aws infrastructure-as-code

最近,在尝试构建Terraform IaC时,我发现我无法使API网关正确路由到Lambda。事实证明,当使用控制台时,AWS自动分配Lambda网关所需的权限,但是在terraform中使用IaC时,必须明确分配。

上面的内容是可以理解的,但对于AWS和terraform的新手来说,却令人困惑。

是否存在说明基础设施连接中所需组件的文档,例如上述文档?

据我所知,AWS文档和terraform文档都是经过深思熟虑的,但实际上并没有一个解释(据我所知)在任何特定(无论是普通的还是晦涩的)设置中都需要一定的资源。从常规搜索中推断出这些联系并不是很好的替代方法。

2 个答案:

答案 0 :(得分:2)

我认为没有文档可以在一个页面/区域中列出“所有必需的组件”。但是您可以从不同的文档中获得不同的信息,正如您提到的,AWS和Terraform在这方面都做得很好。

关于AWS,在API网关中具有权限的情况下,我可以想到两个有用的链接(尽管第一个从第二个开始引用):

我同意以下事实:如果您真的不知道要实现的目标,有时可能会把AWS转换为terraform。通常,当我在IaC vs AWS控制台中被“理论上应该可以工作”的东西所阻止时,我会从问题中退后一步,并尝试弄清楚我是在AWS世界中真正尝试粘合的组件。然后通常情况会变得更加明显。

因为在terraform中,它实际上是在创建小型独立的基础设施并使它们协同工作。与其他IaC相比,以我的经验,它比CloudFormation更为精细。

可以帮助我更快地了解问题的个人实践是,阅读我在Terraform中工作的每个组件介绍文档。例如,如果我以terraform IaC编写lambda,我将快速阅读所有lambda_xxxx_yyyy简介部分,以减少卡住并在出现故障时做出更快的反应。通常对我有用。

答案 1 :(得分:1)

我没有看到这样的文档,但是对于相似的案例,我可以分享我的解决方法。

您可以使用AWS控制台进行所需的更改-使用UI手动进行。然后,您可以定义刚刚在TF文件中创建的资源,仅定义/必需的必需属性集,甚至随机值也可以使用。然后,将手动创建的内容导入到您定义的资源中。

通过运行terraform plan,您将看到差异,从而可以相应地调整TF文件。

几次迭代后,您将使用TF复制您刚刚在UI中所做的事情。作为最终测试,您可以手动还原所做的更改,运行terraform apply并确保一切正常。