使用 CDK 创建/关联 ssh 密钥对到 ec2 实例

Ove*_*404 5 java amazon-web-services aws-cdk

我正在使用新的云开发工具包 (CDK) 在 AWS 上使用 Java 语言构建基础设施。

我正在使用公共子网上的堡垒主机与私有子网上的 RDS 实例进行通信,因此我通过堡垒主机上的 ssh 隧道从外部访问数据库(在私有子网上)。

我以这种方式创建了 BastionHost:

BastionHostLinux
            .Builder
            .create(scope, bastionId)
            .vpc(vpc)
            .instanceType(InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.SMALL))
            .subnetSelection(subnetSelection)
            .instanceName(bastionName)
            .build();
Run Code Online (Sandbox Code Playgroud)

我没有找到任何方法来创建 ssh 密钥对或将 ssh 密钥对关联到实例,所以当我尝试连接时,aws 告诉我我没有任何与 ec2 实例关联的 ssh 密钥对。

我的问题是:如何使用 CDK 将已存在的密钥对与 ec2 实例相关联?或者,(最好)如何使用 CDK 创建新的密钥对?

Asi*_*ov4 9

您可以使用addPropertyOverride为堡垒主机设置现有密钥。

    const bastionSecurityGroup = new ec2.SecurityGroup(this, 'BastionSecurityGroup', {
      vpc,
    });
    const bastion = new ec2.BastionHostLinux(this, 'Bastion', {
      vpc,
      subnetSelection: { subnetType: ec2.SubnetType.PUBLIC },
      instanceName: `my-bastion`,
    });
    bastion.instance.instance.addPropertyOverride('KeyName', `my-bastion-key`);
Run Code Online (Sandbox Code Playgroud)


小智 8

如何使用 CDK 将已存在的密钥对与 ec2 实例关联?

堡垒实例上没有 ssh 密钥,如果您想通过 ssh 访问它,您应该使用aws ec2-instance-connect,请查看aws CDK 文档中的示例。这是一篇博客文章,其中有更详细的解释instance-connect