【发布时间】:2021-08-30 22:16:56
【问题描述】:
我正在尝试在 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}",
}
}
【问题讨论】:
-
您的错误是关于自动缩放组的权限不足。我看不出它与您的 S3 或配对密钥有何关系。
-
也许与这些无关。我不知道,所以这个问题。我怀疑可能是因为错误与运行启动模板有关,
bastion_host_key_pair字段上的描述是“选择用于启动堡垒主机的密钥对”。此外,我用来运行 Terraform 的 AWS 凭证具有完整的管理员访问权限。 -
AccessDenied错误似乎表明有关完整管理员访问权限的声明可能不是全部真相。是否存在任何拒绝声明或服务控制策略? -
我在哪里可以找到拒绝声明?我看不到 SCP,所以需要询问我们的 AWS 管理员。
-
是的,原来有一个拒绝政策,我无权查看,DenyRunInstanceWithNoOwnerTag :S
标签: amazon-web-services amazon-ec2 terraform bastion-host