Terraform适用于某些AWS区域,而其他AWS区域则失败

时间:2016-12-10 22:22:47

标签: amazon-web-services amazon-ec2 terraform

我是Terraform的新手,所以我可能会遗漏一些东西,但我确实安静了一项研究,但我没有找到解决方案。我们的公司AWS账户已经在区域eu-west-1上运行了somw实例。我决定测试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,设置名称,标签,不同的实例类型,硬编码.tf文件中的access_key和secret_key,在文件中明确设置区域(对于awscli,默认值为eu-west-1)。我正在做awscli的任何事情都在工作,而terraform也失败了。

在失去一天后,我尝试了区域eu-central-1,它刚刚起作用。

我错过了什么?我应该以某种方式单独为区域添加权限吗?如果我不在.tf文件中定义它,是不是使用相同的〜/ .aws /凭证文件?

啊哈,我目前在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

1 个答案:

答案 0 :(得分:1)

您是否尝试过t2.small以外的实例类型?有时区域/ AZ会耗尽特定的实例类型。根据我的经验,实例无法启动,因为AWS只是超出了容量。最值得注意的是:

    一般
  • t2个实例
  • t2.small
  • 欧盟地区

所以你看到的问题可能与Terraform无关。尝试使用其他实例类型(例如m3.mediumm4.large)来排除Terraform。

另见:Error: InsufficientInstanceCapacity。 CLI能够启动的事实可能是当时可用的一个实例。