问题标签 [terraform-provider-aws]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
terraform - 模块中的 Terraform 提供程序/变量共享
有没有办法为项目中定义的所有模块抽象提供者。
例如,我有这个项目
它工作正常......问题在于模块的定义
这两个模块中的提供者完全相同
并且每个模块中的变量都是不同的,但它们都有region
变量。
有没有办法在模块级别定义这些信息,以便我最终得到大致这样的东西
最后一件事,模块定义大部分时间都具有资源属性(从 terraform 注册表中提取模块......因此我不知道从注册表和基本模块继承源是否可行)
bash - aws_launch_configuration: timeout - last error: dial tcp :22: connectex: No connection could be made because the target machine主动拒绝它
我有以下自动缩放组的启动配置:
错误:应用计划时出错:
发生 1 个错误:
- aws_launch_configuration.ASG-launch-config: timeout - last error: dial tcp :22: connectex: 无法建立连接,因为目标机器主动拒绝了它。
我想运行一个 bash 脚本来基本上在创建的实例上安装 WordPress。该脚本在资源类型“aws_instance”“示例”中运行良好
如何解决这个问题?
terraform - Terraform(提供者 AWS)- Auto Scaling 组不会在启动模板更改时生效
在使用启动模板时无法使启动模板与 ASG 一起使用,它使用一个小技巧与启动配置一起使用,即通过在 ASG 资源中插入启动配置名称,但它不适用于启动模板。
ASG 使用最新版本来启动新实例,但不会对预运行实例进行任何更改,尽管启动模板发生了变化。
我知道这是意料之中的,但我们是否有任何解决方法可以使启动模板与 ASG 一起使用,或者我们需要坚持启动配置本身?
TF 代码片段 -
amazon-web-services - Terraform AWS role policy fails when adding permissions
I need to create some role policy for AWS using Terraform, the basic role works fine, but when I add S3 and logs, I get a malformed error:
aws_iam_role.lambda_exec_role_s3: Error creating IAM Role lambda_exec_role_s3: MalformedPolicyDocument: Has prohibited field Resource status code: 400
This is the role policy that is failing:
Here the working role policy:
terraform - 未使用 terraform 创建的 ecs 实例
所以我试图通过 terraform 将一个公共托管的 docker 容器启动到我的 ECS 中。计划完成没有任何错误,并启动服务但ECS实例为空,服务仅抱怨没有分配给集群的ECS实例。
作为我的基础设施的一部分,我定义了:
- 专有网络
- 安全组
- 我的角色
- ecs集群
- 带有 ALB 的 ecs 服务
鉴于其他一切都启动并且我可以 ssh 到 ecs(甚至手动拉取并运行 docker 映像),我很确定所有网络都正常,这让我认为这可能是 ECS 服务和 ALB 之间的连接?
ECS服务:
ALB:
terraform - 使用 Terraform 和 aws_ami_ids 数据源将 AMI 共享给子账户
我希望使用 Terraform 在 AWS 中的账户之间共享 AMI。我有以下模块;
问题是数据源以创建日期降序aws_ami_ids
返回列表。ami_id
因此,如果您添加了一个新的 AMI,它似乎正在修改已经创建aws_ami_launch_permissions
的新 AMI,因为新的 AMI 被插入到列表的开头,从而改变了顺序。
如果资源更新时子账户可能无法访问 AMI,这可能会导致可能的竞争条件。
似乎没有一种方法可以指定数据源的排序顺序,以便始终在最后添加新的 AMI,这意味着只会创建新资源。
关于如何解决这个问题的任何想法?
amazon-s3 - 来自 Terraform 的畸形 S3 策略
看起来我在 Terraform 部署中得到了一个格式错误的策略,并且在查看它时没有看到任何问题,所有这些Principals
似乎都到位并且没有任何异常。有人能找出为什么这个政策被认为是畸形的吗?
这是抛出的 TF 输出
(非详细)错误:
这是它包含的内容的漂亮打印
更新
很明显,这与该Principal
领域有关,在通过 AWS 控制台运行它后,我得到了错误
dns - 如何减少刷新 Terraform 状态的时间?
我工作的公司的大部分 AWS 基础设施都是使用 Terraform 描述和管理的。
我们有几种不同的服务,包括容器化后端和 CDN 化前端。
从 Route53 域和命名空间到 ELB、ECS 和 CloudFront,有很多事情要做。
现在发生的问题之一是,主要是因为 Route53 DNS,检查、刷新和验证 terraform 状态需要很长时间。
这就是我们要解决的问题:
如何大幅减少刷新/检查 tf 状态所需的时间?
将其移至单独的存储库显然不是一个好主意,因为这会使所有与 Route53 相关的变量都无法访问,或者可能已经过时。
terraform - 如何即时修改地图?
我需要在特定的 HCL Map 键/值对上迭代更多次,这些键/值对需要基于特定变量的值。
我想到了修改当前映射的想法——这样某些键/值将被迭代更多次。
如果我们有这张地图 - 让我们称之为“map_domains”:
我们已经设置了这些变量:
我们如何将地图“map_domains”修改为:
我正在尝试通过 DNS 验证选项验证几个 AWS ACM 证书 - 每个域都有几个域备用名称,它们还需要在 Route53 中创建 DNS 记录,以便正确验证域证书。
这是用于实现总体目标的代码 - 问题在于 Zone ID 需要在前几次迭代中相同,然后在其余迭代中需要另一个。
这一行:
整个代码:
amazon-s3 - 在 Terraform 中将多个 AWS 账户作为环境处理的最佳方式是什么?
我们希望将我们的每个 terraform 环境都放在一个单独的 AWS 账户中,以防止意外部署到生产环境。这如何最好地完成?