错误:提供商配置无效/AWS 区域无效

问题描述 投票:0回答:2

我有一个学校项目,我们必须使用 Terraform for AWS 创建一个 EC2 实例。所以我创建了我的 Terraform 文件。起初我在终端 terraform init 中提示。当我想执行“terraform plan”时,我总是得到相同的输出:

╷ │ 错误:提供者配置无效 │ │ 提供程序“registry.terraform.io/hashicorp/aws”需要显式配置。将提供程序块添加到根模块并按照提供程序中的描述配置提供程序所需的参数 │ 文档。 │ ╵ ╷ │ 错误:无效的 AWS 区域: │ │ 与提供者["registry.terraform.io/hashicorp/aws"], │ 第 0 行: │(未提供源代码) │ ╵

还有另一条消息“AWS 区域无效”。

我的 Terraform 代码目前如下所示:

terraform {
    required_providers {
        aws = {
            source = "hashicorp/aws"
            version = "~> 5.0"
        }
    }
}

resource "aws_key_pair" "deployment" {
  key_name = "SSH_m346_Terraform"
  public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCX44s1O4dFwPmPuXre/GDF9CWcbW5PBn9PgF0f+SC9uhIJiSzXGx6sOQ9MAJSBzXdGKPM/YKOh9GYtq4fHKlwA2Rw3LXqxrgEv4pvh+j4wy7eA8ZhsvCfUv8RpRsqalGnQZ2j1aYs+F/LvFGlmOUh07xtTHPB888XL59EaHsDWGudUOQJiFhi3uxMPwp4C4djKqf1IVSEm/9CMYQBiOGJjFOJ2N3TTDQvTo4ez5BwOv5G5qgL380K3V1APcYYMXqWTZJr2+sv5+bF1Mp0+oKvuEOr76LbwV922OK0TmpRRYQ2kaX34foyskuHZ3put7WUrRlorAMTNL03K5QeaMDaR rsa-key-20240115"
}

resource "aws_vpc" "Terrafrom_m346_vpc" {
  cidr_block = "10.0.0.0/16"
  enable_dns_support = true
  enable_dns_hostnames = true
  tags = {
    Name = "Terra_M346"
  }
  
}

resource "aws_internet_gateway" "Terrafrom_Internet_Gateway_m346" {
  vpc_id = aws_vpc.Terrafrom_m346_vpc.id
}

resource "aws_subnet" "Terraform_Subnet_m346" {
  vpc_id = aws_vpc.Terrafrom_m346_vpc.id
  cidr_block = "10.0.1.0/24"
  availability_zone = "us-east-1"
  map_public_ip_on_launch = true

  tags = {
    Name = "M346 Datenbank Subnetz"
  }
}

resource "aws_route_table" "m346_route_table" {
  vpc_id = aws_vpc.Terrafrom_m346_vpc.id
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.Terrafrom_Internet_Gateway_m346.id
  }
}

resource "aws_route_table_association" "m346_srv_subnet_association" {
  subnet_id = aws_subnet.Terraform_Subnet_m346.id
  route_table_id = aws_route_table.m346_route_table.id
}

resource "aws_security_group" "allow_ssh" {
  vpc_id = aws_vpc.Terrafrom_m346_vpc.id

  egress {
    from_port = 0
    to_port = 0
    protocol = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
  
  egress {
    from_port = 22
    to_port = 22
    protocol = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

成功执行命令“terraform init”后,它创建了一个名为

.terraform.lock.hcl
的文件和字典。 有人可以告诉我问题是什么吗?

我想在 AWS 上运行我的 terraform EC2。我尝试用谷歌搜索这个问题,但是遇到这个问题的人与我的问题有点不同。

amazon-web-services amazon-ec2 terraform terraform-provider-aws
2个回答
0
投票

us-east-1
是一个区域,但您已将其指定为可用区。 可用区通常看起来像
us-east-1a
us-east-1b

另外,尝试将以下块添加到您的代码中:

provider "aws" {
  region = "us-east-1"
}

0
投票

AWS 提供商的配置可以从多个来源派生,这些来源按以下顺序应用:

  1. 提供者配置中的参数(这就是上面答案所建议的)
  2. 环境变量
  3. 共享凭证文件
  4. 共享配置文件
  5. 容器凭证
  6. 实例配置文件凭据和区域

此顺序与 AWS CLI 和 AWS 开发工具包使用的优先级匹配。

我个人的偏好(完全取决于你)是使用 awscli 配置文件,该文件易于修改,通常作为管理 AWS 环境的工具很有用。

以下是一些设置说明:

AWS 提供商可以从共享配置和凭证文件中获取凭证和其他设置。默认情况下,这些文件位于 Linux 和 macOS 上的 $HOME/.aws/config 和 $HOME/.aws/credentials 以及“%USERPROFILE%.aw”

© www.soinside.com 2019 - 2024. All rights reserved.