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

使用Terraform上传CloudFront公钥报错:无效RSA密钥

解决Terraform创建CloudFront公钥时的InvalidArgument错误

问题分析

你遇到的错误源于传递给aws_cloudfront_public_key的encoded_key格式不符合CloudFront要求。控制台手动粘贴公钥能成功,是因为AWS会自动兼容PEM内容中的换行符、首尾空白等细节;而filebase64会严格读取文件全部内容(包括末尾换行符)并做base64编码,导致编码后的内容无法被CloudFront识别。

解决方案

尝试以下任意一种修改方式:

方案1:直接传递原始PEM内容

将encoded_key改为使用file函数读取原始PEM内容,替换filebase64:

resource "aws_cloudfront_public_key" "public_key" {
  name        = "public-key"
  comment     = "Public key for signed URLs"
  encoded_key = file("${path.module}/public_key.pem")
}

方案2:去除多余空白后再编码

若文件存在首尾空白或多余换行,先通过trimspace处理再做base64编码:

resource "aws_cloudfront_public_key" "public_key" {
  name        = "public-key"
  comment     = "Public key for signed URLs"
  encoded_key = base64encode(trimspace(file("${path.module}/public_key.pem")))
}

方案3:统一换行符格式(Windows环境适用)

如果是Windows系统生成的公钥文件(含CRLF换行符),替换为Unix格式LF换行符后再编码:

resource "aws_cloudfront_public_key" "public_key" {
  name        = "public-key"
  comment     = "Public key for signed URLs"
  encoded_key = base64encode(replace(file("${path.module}/public_key.pem"), "\r\n", "\n"))
}

验证步骤

  1. 保存修改后的main.tf
  2. 执行terraform plan确认配置变更
  3. 执行terraform apply重新创建资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:55:58