问题标签 [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.

0 投票
1 回答
405 浏览

terraform - 为什么在 Terraform “aws_instance” user_data 中的 nohup 命令可能会在实例启动时失败

我正在使用 Terraform v0.11.7 和 AWS 提供商 1.30 构建一个环境,以使用基于 Debian 9.5 AMI 构建的locust运行负载测试。

我的模块公开了一个num_instancesvar 用于确定所使用的 locust 命令行。下面是我的配置。

locust_master如果我在实例启动后通过SSH 连接到实例,我会看到/home/admin/start.sh脚本,但它似乎没有运行,因为我没有看到该nohup.out文件并且locust不在我正在运行的进程中。如果我在该主机上手动运行相同的sh /home/admin/start.sh脚本,服务就会启动,我可以断开与主机的连接并仍然可以访问它。同样的问题也出现在locust_slave主机上。

什么可能导致start.sh在 aws_instance user_data 中运行失败?在 user_data 中执行脚本时,我应该注意哪些问题?

提前谢谢了!

0 投票
1 回答
4909 浏览

python-3.x - 使用 Terraform remote-exec 运行简单的 Web 服务器

ami-0d44833027c1a3297是一个带有 hello world index.html 的 ubuntu AMI/home/ubuntu/

虽然,我没有收到任何错误,并且 ec2 实例已启动并正在运行,但 http 服务器没有运行。

注意:如果我手动 ssh 并在内联部分应用相同的命令集,我能够成功运行 http 服务器。任何帮助,将不胜感激!

0 投票
2 回答
2346 浏览

terraform - 是否可以将 terraform 工作区链接到 AWS 账户

如果一个人有两个 AWS 账户,一个用于开发,一个用于实时(例如)我知道可以使用 terraform 工作区来管理每个环境的状态。

但是,如果我将工作区从“dev”切换到“live”,有没有办法告诉 terraform 它现在应该将状态应用于实时帐户而不是测试帐户?

我想到的一种容易出错的方法是交换我的secret.auto.tfvars每次切换工作区时交换我的文件,因为我假设当使用不同的访问密钥(属于“实时”账户的那个)运行时,AWS 提供商将申请那个帐户。但是,交换工作区并存在错误的凭据会非常容易,这将针对错误的环境运行更改。

我正在寻找一种几乎将工作区与 AWS 中的帐户 ID 链接的方法。

我确实找到了这个https://github.com/hashicorp/terraform/issues/13700但它指的是不推荐使用的env命令,这个评论看起来特别有希望

更新

我在 GitHub 上找到了一些信息,我在其中留下了这条评论作为对先前评论的回复,该评论建议考虑模块而不是工作区,实际上表明工作区不太适合这项任务。如果有人可以提供有关如何使用模块来解决同时维护“相同”基础设施的多个版本的问题的信息,我很想看看这如何改进工作空间的概念。

0 投票
2 回答
2377 浏览

aws-lambda - Terraform - 如何附加 IAM 角色以调用 Lambda 到 API 网关

问题

如何将带有 lambda 调用的假定角色附加到 API Gateway API 或所有方法?

Create an API Gateway API for AWS Lambda Functions告诉附加一个 IAM 策略来调用 Lambda:

这意味着,您至少必须将以下 IAM 策略附加到 IAM 角色,以便 API Gateway 代入该策略。

API Gateway 可承担角色是具有以下可信关系的 IAM 角色:

研究

看起来lambda_permission可以附加每个方法,但不确定是否有一种方法可以调用任何方法“*”。

更新

Api Gateway 无法调用 Lambda 函数告诉每个方法/函数从 UI 附加的方法。

在此处输入图像描述


在此处输入图像描述

0 投票
2 回答
359 浏览

templates - 在 terraform 中进行配置之前操作文件

因此,我创建了一个执行以下操作的 terraform 脚本:

  1. 启动 EC2 实例
  2. 复制一些文件
  3. 运行一些远程命令从 repos 安装东西
  4. 创建 elasticsearch 服务域

现在我需要使用从弹性搜索域返回的端点配置 ec2 实例,因此应用程序正在使用正确的端点(目前它有一些默认值)。

如何将端点值传递到文件中,然后将其复制到 ec2 实例。推荐的方法是什么?

提前致谢。

0 投票
2 回答
3266 浏览

terraform - 无法将 S3 后端与 Terraform 一起使用 - 缺少凭据

我有一个 Terraform 样本中最行人的:

当我运行 terraform init 时,我收到以下(跟踪的)响应:

我已经在谷歌上搜索了几个小时。我尝试使用“profile”属性——它产生的跟踪日志略有不同,但最终结果相同。我尝试设置 AWS_ 环境变量 - 结果相同。

我正在运行 terraform 0.11.7 版。有什么建议么?

0 投票
2 回答
2361 浏览

amazon-web-services - terraform aws - 如何将默认路由添加到 vpc 默认路由表?

当您在 terraform 中创建 AWS VPC 时,将为其分配一个默认路由表,该路由表将仅在 VPC 的 CIDR 块内路由流量。

我想为此添加一个默认路由,以将所有其他流量发送到 Internet。

0 投票
1 回答
285 浏览

terraform - Terraform 密钥对和 ASG

我创建了一个启动一个实例的 ASG。我想通过 ssh 进入该实例,但我没有可在此实例上连接的密钥对。是否可以将密钥对附加到这个旋转的实例,或者我在 ssh'ing 时做错了。

我正在做:

(总的来说,我是 Terraform 和 AWS 的新手)

0 投票
1 回答
12778 浏览

terraform - user_data 中的命令不会在 terraform 中执行

您好 EC2 实例已创建,但作为 userdata.sh 一部分的命令未得到执行。当我通过 putty 手动连接到 EC2 时,我发现 EC2 实例中没有安装 nginx。为了验证脚本是否正在执行,我添加了回显消息,但是当我运行 terraform apply 时,命令提示符中没有显示任何输出。我如何验证用户数据是否正在执行?

我已经在 C 驱动器中安装了 Terraform,并且下面的脚本存在于同一文件夹 C:/Terraform/userdata.sh、C:/Terraform/main.tf 中,我尝试将路径作为 ${file("./userdata.sh") }" 但它仍然不起作用。

请建议,因为我刚刚学习 terraform。谢谢。

这在我的 terraform 程序 [main.tf] 中被调用,如下所示:

0 投票
3 回答
992 浏览

amazon-web-services - Terraform 和 AWS Storage Gateway 磁盘有问题

我将 Terraform 与 A​​WS 结合使用,并且能够使用 aws_storagegateway_gateway 资源创建 AWS Storage Gateway 文件网关。

网关将创建,状态为“在线”,但控制台中尚未添加缓存磁盘,这是正常的,因为必须在创建网关后完成。VM 确实有一个磁盘,并且可以在控制台中添加它,并且在控制台中这样做可以完美地工作。

但是,一旦创建了网关,我就会尝试使用 Terraform 添加磁盘,并且似乎无法让代码工作,或者很可能不明白如何让它工作。

尝试使用 aws_storagegateway_cache 资源,但我在 disk_id 上收到错误,并且不知道如何让它从网关创建的代码中返回。

可能有人有一个工作示例,说明如何在创建网关后使用 Terraform 添加缓存磁盘,或者知道如何获取 disk_id 以便我可以添加它?

添加代码

我得到的错误是:

  • aws_storagegateway_cache.sgwdisk:添加 Storage Gateway 缓存时出错:InvalidGatewayRequestException:指定的磁盘不存在。状态码:400,请求ID:fda602fd-a47e-11e8-a1f4-b383e2e2e2f6

我试图像上面那样对 disk_id 进行硬编码或使用变量。在变量上,我不知道它是返回还是存在,所以这可能是新问题。