Amazon web services 在CI/CD中使用云形成创建Ec2 SSH密钥
考虑以下CI/CD场景: 在开发阶段,我希望使用来自CF的Ec2实例和Ec2密钥对部署堆栈 从文档中,我了解了云形成资源,可以指向一个现有的密钥,该密钥可以从AWS管理控制台创建,没有其他方法 我想用堆栈创建密钥,以便在实例中使用它进行ssh。我将通过一个env var向SSH提供该值,因此我将是唯一知道该键值的人Amazon web services 在CI/CD中使用云形成创建Ec2 SSH密钥,amazon-web-services,amazon-ec2,ssh,Amazon Web Services,Amazon Ec2,Ssh,考虑以下CI/CD场景: 在开发阶段,我希望使用来自CF的Ec2实例和Ec2密钥对部署堆栈 从文档中,我了解了云形成资源,可以指向一个现有的密钥,该密钥可以从AWS管理控制台创建,没有其他方法 我想用堆栈创建密钥,以便在实例中使用它进行ssh。我将通过一个env var向SSH提供该值,因此我将是唯一知道该键值的人 有人知道这种情况的解决方案吗?遗憾的是,您无法在普通云信息(CFN)中创建ssh密钥对。这是不受支持的。相反,如果您确实想使用CFN管理密钥对创建,则必须使用 资源将采用lambd
有人知道这种情况的解决方案吗?遗憾的是,您无法在普通云信息(CFN)中创建ssh密钥对。这是不受支持的。相反,如果您确实想使用CFN管理密钥对创建,则必须使用 资源将采用lambda函数的形式,该函数将使用AWS SDK,例如,并将生成的私钥保存在SSM参数存储中
任何需要生成密钥的进一步应用程序都可以从存储中检索if。AWS中仅控制台操作通常不是一件事。实际上,控制台中的所有操作都使用底层公共API(存在一些例外情况) 如果您真的想在CloudFormation中创建EC2密钥对,可以通过自定义资源来实现。这本质上是一个Lambda函数,可以执行任意操作,可以返回值,也可以不返回值 创建密钥对是通过EC2 API中的
CreateKeyPair
操作完成的,这是有文档记录的。您可以在自定义资源中使用此API调用来创建密钥对,将公钥保存在安全的地方(例如,Secrets Manager),并将密钥对的名称作为属性返回
我建议您不要这样做。确保私钥仅可供您访问并非小事
我建议您以实例能够使用EC2实例连接的方式配置CloudFormation模板。这允许您使用EC2 API向实例中注入临时SSH密钥以建立连接,甚至可以从浏览器使用会话管理器。我更喜欢这些选项,因为它们使用临时凭证和/或更容易审核
参考资料