You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CDK中为自动伸缩组绑定已有Secret以启用SSH访问

首先确保你已经导入了Secrets Manager对应的CDK模块:

import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
实现步骤

你可以按照以下流程修改代码,使用已有的Secrets Manager密钥配置自动伸缩组的keyName参数:

  • 导入已创建的Secret
    可通过Secret ARN或者Secret名称导入已有的Secret实例,替换示例中的参数为你实际的资源值即可:
    // 按名称导入Secret
    const existingKeySecret = secretsmanager.Secret.fromSecretNameV2(scope, 'ExistingKeySecret', '你的实际Secret名称');
    // 按ARN导入Secret可选方案
    // const existingKeySecret = secretsmanager.Secret.fromSecretArn(scope, 'ExistingKeySecret', '你的实际Secret ARN');
    
  • 授予Secret读取权限
    给自动伸缩组关联的IAM角色开通Secret读取权限,避免部署后拉取密钥信息时报权限错误:
    existingKeySecret.grantRead(role);
    
  • 替换AutoScalingGroup的keyName配置
    如果你在Secret中明文存储了EC2密钥对名称,直接调用secretValue.toString()即可;如果Secret为JSON结构,密钥对名称存放在指定字段,可通过secretValueFromJson读取对应字段:
    new autoscaling.AutoScalingGroup(scope, `${props.prefix}-api`, {
          vpc,
          role,
          securityGroup,
          instanceType: ec2.InstanceType.of(
            ec2.InstanceClass.T2,
            ec2.InstanceSize.MICRO
          ),
          machineImage: ami,
          userData,
          // 明文存储场景
          // keyName: existingKeySecret.secretValue.toString(),
          // JSON结构存储场景,示例中字段为key_pair_name,替换为你的实际字段名
          keyName: existingKeySecret.secretValueFromJson('key_pair_name').toString(),
          minCapacity: 1,
          maxCapacity: 1,
          associatePublicIpAddress: true,
          vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
        })
    
注意说明

此处调用toString()不会在CDK合成阶段暴露你的密钥明文,只会生成CloudFormation原生的动态引用标记,实际值会在资源部署时才从Secrets Manager动态拉取,符合敏感信息安全管理规范。

内容的提问来源于stack exchange,提问作者jonnie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:36:03