Использование Terraform для создания бастиона AWS EC2
Я пытаюсь развернуть хост-бастион AWS на AWS EC2. Я использую модуль Terraform, предоставленный Guimove. Я застреваю на
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}",
}
}
1 ответ
Я была такая же проблема. Исправление заключалось в том, чтобы войти в AWS Market Place, принять лицензионное соглашение и подписаться на AMI, который я пытался использовать.