【发布时间】:2017-04-26 03:25:51
【问题描述】:
我是 Terraform 的新手,所以我可能会遗漏一些东西,但我进行了安静的研究,但没有找到解决方案。我们有公司 AWS 账户,其中 somw 实例已经在 eu-west-1 区域运行。我决定测试 Terraform,以便我们可以开始使用它。我创建了具有适当权限的 IAM 用户并制作了这个 tf 文件:
resource "aws_instance" "test" {
ami = "ami-21abf052"
instance_type = "t2.small"
}
terraform apply 失败并出现以下错误:
* aws_instance.test: Error launching source instance: timeout while waiting for state to become 'success' (timeout: 15s)
起初我以为是凭据问题,所以我尝试从 awscli 运行同样的问题:
aws ec2 run-instances --image-id ami-21abf052 --count 1 --instance-type t2.small
它就像一个魅力。 之后我尝试了很多事情,包括:使用不同的 IAM 用户、更改权限(给 ec2:* 提供“允许”)、使用不同的 AMI、设置不同的 VPC、设置名称、标签、不同的实例类型、硬编码 access_key 和 secret_key .tf 文件,在文件中明确设置区域(对于 awscli,默认值为 eu-west-1)。我在 awscli 所做的任何事情都在工作,而 terraform 失败了。
输了一天后,我在 eu-central-1 区域试了试,效果很好。
我错过了什么吗?我应该以某种方式分别为区域添加权限吗?如果我没有在 .tf 文件中定义它,awscli 不是使用相同的 ~/.aws/credentials 文件吗?
啊哈,我目前在 AWS 中的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"iam:GetUser",
"sts:GetCallerIdentity",
"iam:ListRoles"
],
"Resource": "*"
}
]
}
编辑:
我测试了更多区域:
- us-west-1 工作
- us-east-1 失败
- sa-east-1 作品
我的 AMI:
variable "amis" {
default = {
eu-west-1 = "ami-21abf052"
eu-central-1 = "ami-b0db1ddf"
us-east-1 = "ami-e6d5d2f1"
us-west-1 = "ami-bcb9eedc"
sa-east-1 = "ami-ec811880"
}
}
还有版本Terraform v0.7.13 aws-cli/1.11.28 Python/2.7.12+ Linux/4.8.0-30-generic botocore/1.4.85
【问题讨论】:
-
忘了说:Terraform v0.7.13 aws-cli/1.11.28 Python/2.7.12+ Linux/4.8.0-30-generic botocore/1.4.85
-
您要更改每个区域的 AMI id 吗?
-
是的,我使用来自适当地区的 AMI。今天我将检查其他地区(美国等)以了解它的情况
-
在 terraform 中超时需要多长时间?错误信息说它只有 15 秒?您是否直接连接到 Internet,或者中间是否有代理,该代理是为您的 AWS CLI 配置的,但不是在 terraform(提供程序)中?
标签: amazon-web-services amazon-ec2 terraform