【问题标题】:Terraform works on some AWS regions and fails on othersTerraform 在某些 AWS 区域有效,而在其他区域失败
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

  • 嗨!谢谢你的主意。在我尝试 t2.micro 和 t2.small 之前都失败了。现在我尝试了 m3.medium 和 m4.large 仍然是一样的。此外,如果实例用完,awscli 也应该失败。我仍然认为这是在 AWS 上配置的一些问题,但无法弄清楚是什么
猜你喜欢
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
相关资源
最近更新 更多