微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Terraform 创建 AWS EC2 堡垒

如何解决使用 Terraform 创建 AWS EC2 堡垒

我正在尝试在 AWS EC2 上启动 AWS 堡垒主机。我正在使用 Guimove 提供的 terraform 模块。我被困在 bastion_host_key_pair 字段上。我需要提供一个可用于启动 EC2 模板的密钥对,但需要包含密钥对公钥的存储桶 (aws_s3_bucket.bucket) 是在模块期间创建的,因此密钥不存在当它尝试启动实例但失败时。感觉就像鸡和蛋的场景,所以我显然做错了什么。我做错了什么?

错误

╷
│ Error: Error creating Auto Scaling Group: AccessDenied: You are not authorized to use launch template: lt-004b0af2895c684b3
│       status code: 403,request id: c6096e0d-dc83-4384-a036-f35b8ca292f8
│
│   with module.bastion.aws_autoscaling_group.bastion_auto_scaling_group,│   on .terraform\modules\bastion\main.tf line 300,in resource "aws_autoscaling_group" "bastion_auto_scaling_group":
│  300: resource "aws_autoscaling_group" "bastion_auto_scaling_group" {
│
╵

地形:

resource "tls_private_key" "bastion_host" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "aws_key_pair" "bastion_host" {
  key_name   = "bastion_user"
  public_key = tls_private_key.bastion_host.public_key_openssh
}

resource "aws_s3_bucket_object" "bucket_public_key" {
  bucket     = aws_s3_bucket.bucket.id
  key        = "public-keys/${aws_key_pair.bastion_host.key_name}.pub"
  content    = aws_key_pair.bastion_host.public_key
  kms_key_id = aws_kms_key.key.arn
}

module "bastion" {
  source = "Guimove/bastion/aws"
  bucket_name = "${var.identifier}-ssh-bastion-bucket-${var.env}"
  region = var.aws_region
  vpc_id = var.vpc_id
  is_lb_private = "false"
  bastion_host_key_pair = aws_key_pair.bastion_host.key_name
  create_dns_record = "false"
  elb_subnets = var.public_subnet_ids
  auto_scaling_group_subnets = var.public_subnet_ids
  instance_type = "t2.micro"
  tags = {
    Name = "SSH Bastion Host - ${var.identifier}-${var.env}",}
}

解决方法

我遇到了同样的问题。解决方法是进入 AWS Marketplace,接受 EULA 并订阅我尝试使用的 AMI。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?