我有一个具有 ssh 密钥限制行为的 AWS CloudFront 发行版,我想对正在分发的 URL 进行签名,不幸的是,在 Kotlin / Java 中,AWS SDK 需要 ssh 私钥作为文件,以及 AWS 任务定义中的环境变量只接受文字。
是否有解决方法可以让我的私钥访问我的 AWS 任务定义?
我尝试在互联网上查找,但所有答案都会为您提供本地环境的答案,该环境将文件路径放入 File 类中,我无法在实际部署中执行此操作,因为我需要将私钥上传到我的docker 镜像来完成它,这违背了公钥-私钥的目的
我期待一种解决方法,让我的私钥能够从外部访问我的图像。
我满足将字符串转换为私钥的用例
我删除了私钥中的 -----BEGIN PRIVATE KEY----- 和 -----END PRIVATE KEY-----
private fun signUrl(domain: String, private: String, public: String, key: String): String {
val amazonByte = com.amazonaws.util.Base64.decode(private)
val keySpec = PKCS8EncodedKeySpec(amazonByte)
val keyFactory = KeyFactory.getInstance("RSA")
val privateKey = keyFactory.generatePrivate(keySpec)
return CloudFrontUrlSigner.getSignedURLWithCannedPolicy("https://$domain/$key", public, privateKey, getExpiration())}
创建 Secrets Manager 密钥来存储私钥,然后在密钥部分下的任务定义中引用密钥的 ARN,而不是在环境下。
"secrets" : [
{ "name" : "PRIVATE_KEY", "valueFrom" : "arn:aws:secretsmanager:us-east-1:123456789012:secret:private-key" }