问题标签 [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 “aws_instance” user_data 中的 nohup 命令可能会在实例启动时失败
我正在使用 Terraform v0.11.7 和 AWS 提供商 1.30 构建一个环境,以使用基于 Debian 9.5 AMI 构建的locust运行负载测试。
我的模块公开了一个num_instances
var 用于确定所使用的 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 中执行脚本时,我应该注意哪些问题?
提前谢谢了!
python-3.x - 使用 Terraform remote-exec 运行简单的 Web 服务器
ami-0d44833027c1a3297
是一个带有 hello world index.html 的 ubuntu AMI/home/ubuntu/
虽然,我没有收到任何错误,并且 ec2 实例已启动并正在运行,但 http 服务器没有运行。
注意:如果我手动 ssh 并在内联部分应用相同的命令集,我能够成功运行 http 服务器。任何帮助,将不胜感激!
terraform - 是否可以将 terraform 工作区链接到 AWS 账户
如果一个人有两个 AWS 账户,一个用于开发,一个用于实时(例如)我知道可以使用 terraform 工作区来管理每个环境的状态。
但是,如果我将工作区从“dev”切换到“live”,有没有办法告诉 terraform 它现在应该将状态应用于实时帐户而不是测试帐户?
我想到的一种容易出错的方法是交换我的secret.auto.tfvars
每次切换工作区时交换我的文件,因为我假设当使用不同的访问密钥(属于“实时”账户的那个)运行时,AWS 提供商将申请那个帐户。但是,交换工作区并存在错误的凭据会非常容易,这将针对错误的环境运行更改。
我正在寻找一种几乎将工作区与 AWS 中的帐户 ID 链接的方法。
我确实找到了这个https://github.com/hashicorp/terraform/issues/13700但它指的是不推荐使用的env
命令,这个评论看起来特别有希望
更新
我在 GitHub 上找到了一些信息,我在其中留下了这条评论作为对先前评论的回复,该评论建议考虑模块而不是工作区,实际上表明工作区不太适合这项任务。如果有人可以提供有关如何使用模块来解决同时维护“相同”基础设施的多个版本的问题的信息,我很想看看这如何改进工作空间的概念。
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 附加的方法。
templates - 在 terraform 中进行配置之前操作文件
因此,我创建了一个执行以下操作的 terraform 脚本:
- 启动 EC2 实例
- 复制一些文件
- 运行一些远程命令从 repos 安装东西
- 创建 elasticsearch 服务域
现在我需要使用从弹性搜索域返回的端点配置 ec2 实例,因此应用程序正在使用正确的端点(目前它有一些默认值)。
如何将端点值传递到文件中,然后将其复制到 ec2 实例。推荐的方法是什么?
提前致谢。
terraform - 无法将 S3 后端与 Terraform 一起使用 - 缺少凭据
我有一个 Terraform 样本中最行人的:
当我运行 terraform init 时,我收到以下(跟踪的)响应:
我已经在谷歌上搜索了几个小时。我尝试使用“profile”属性——它产生的跟踪日志略有不同,但最终结果相同。我尝试设置 AWS_ 环境变量 - 结果相同。
我正在运行 terraform 0.11.7 版。有什么建议么?
amazon-web-services - terraform aws - 如何将默认路由添加到 vpc 默认路由表?
当您在 terraform 中创建 AWS VPC 时,将为其分配一个默认路由表,该路由表将仅在 VPC 的 CIDR 块内路由流量。
我想为此添加一个默认路由,以将所有其他流量发送到 Internet。
terraform - Terraform 密钥对和 ASG
我创建了一个启动一个实例的 ASG。我想通过 ssh 进入该实例,但我没有可在此实例上连接的密钥对。是否可以将密钥对附加到这个旋转的实例,或者我在 ssh'ing 时做错了。
我正在做:
(总的来说,我是 Terraform 和 AWS 的新手)
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] 中被调用,如下所示:
amazon-web-services - Terraform 和 AWS Storage Gateway 磁盘有问题
我将 Terraform 与 AWS 结合使用,并且能够使用 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 进行硬编码或使用变量。在变量上,我不知道它是返回还是存在,所以这可能是新问题。