【发布时间】:2021-05-28 16:11:19
【问题描述】:
我定义了以下 Cloudformation 模板,我想从参数文件中传递公钥。 “MyPublicKey”变量是字符串类型的。我通过使用来引用这个变量
EncodedKey !Ref MyPublicKey
在 PublicKeyConfig 下,如下所示。
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
MyPublicKey:
Type: String
Description: 'Public key for some purpose'
NoEcho: true
Resources:
CloudfrontPublicKey:
Type: AWS::CloudFront::PublicKey
Properties:
PublicKeyConfig:
CallerReference: 'some-caller-reference'
Comment: 'Public key for signed url'
Name: 'cloudfront-public-key'
EncodedKey: !Ref MyPublicKey
...
parameter.json 文件看起来像这样。公钥在原始 .pem 文件中是多行的,但我在字符串中添加了换行符“\n”,只要有换行符。
[
{
"ParameterKey": "MyPublicKey",
"ParameterValue": "-----BEGIN PUBLIC KEY-----\naaaa\nbbbb\n-----END PUBLIC KEY-----"
},
]
尝试更新堆栈时,我收到以下错误:
Invalid request provided: AWS::CloudFront::PublicKey
好像不能导入公钥。
【问题讨论】:
-
我认为按照create-public-key,最后的编码密钥中应该还有一个
\n字符。只是预感。 -
@samtoddler 没用。
-
只是缺少编码,请关闭我附加的示例文档,我不确定您的密钥是什么样的,以及您是如何生成它的。如果是通过 CLI,它已经被编码了。
-
我使用这些命令来生成密钥:'openssl genrsa -out private_key.pem 2048' 和 ''openssl rsa -pubout -in private_key.pem -out public_key.pem"。
-
您的密钥应如下所示
-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy/a9J+kUsH97bcrAZ7AR\nw/eT/RB9pxGyCWNZpllUqjAxBCqemfoXAH/3SEW+9GjRHOTCDHP8Ds1VUDmh2vZn\nm3SOUHdcWZkCAjhPxmuiU9rhcd3Ti1A9fNv9S8rM+GAA2ElLmHOoXbNHulWqvJO6\nwym57g1uZds3StmHQgWKWvOi792PAgjZUKjx0CD3AyL2ILTjXascuuzaI7bIAiqV\nup7J/3scpbTJpd17hLTzFVjYk/QX20v62s0LS+M/LSKf9yg22ezJzOTaoQA738hI\n1QphXi3LZAcp1uiJNIas6emtaSgBgFp+vHOLJmQQTSADMExzcodnxshBX1h+Ljoy\nSQIDAQAB\n-----END PUBLIC KEY-----\n。如您所见,此键中有多个换行符。
标签: amazon-web-services amazon-cloudformation amazon-cloudfront