Public key creation in AWS cloudformation giving following error: Invalid request provided: AWS::CloudFront::PublicKey
Public key creation in AWS cloudformation giving following error: Invalid request provided: AWS::CloudFront::PublicKey
我有以下 Cloudformation 模板(.yml 文件),我在其中创建 Public 密钥以添加到密钥组,该模板也是在同一模板中创建的。 (下面的 public 键仅用于示例目的。)
AWSTemplateFormatVersion: "2010-09-09"
Resources:
CloudfrontPublicKey:
Type: AWS::CloudFront::PublicKey
Properties:
PublicKeyConfig:
CallerReference: 'some-caller-reference'
Comment: 'Public key for signed url'
Name: 'cloudfront-public-key'
EncodedKey: '-----BEGIN PUBLIC KEY-----aaaabbbb-----END PUBLIC KEY-----'
CloudFrontKeyGroup:
Type: AWS::CloudFront::KeyGroup
Properties:
KeyGroupConfig:
Comment: 'Key group for signed url'
Items:
- !Ref CloudfrontPublicKey
Name: 'cloudfront-key-group'
但是,我收到以下与 public 键相关的错误
Invalid request provided: AWS::CloudFront::PublicKey
原public键是多行的,例如:
-----BEGIN PUBLIC KEY-----
aaaa
bbbb
-----END PUBLIC KEY-----
我尝试通过如下添加换行符使其适合单行
-----BEGIN PUBLIC KEY-----\naaaa\nbbbb\n-----END PUBLIC KEY-----
我也试过没有换行符
-----BEGIN PUBLIC KEY-----aaaabbbb-----END PUBLIC KEY-----
两次尝试均无效,我仍然遇到同样的错误。
通常,您可以在 yaml 中使用多行字符串来应对这种情况。因此,您可以尝试以下版本的模板:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
CloudfrontPublicKey:
Type: AWS::CloudFront::PublicKey
Properties:
PublicKeyConfig:
CallerReference: 'some-caller-reference'
Comment: 'Public key for signed url'
Name: 'cloudfront-public-key'
EncodedKey: |
-----BEGIN PUBLIC KEY-----
aaaa
bbbb
-----END PUBLIC KEY-----
CloudFrontKeyGroup:
Type: AWS::CloudFront::KeyGroup
Properties:
KeyGroupConfig:
Comment: 'Key group for signed url'
Items:
- !Ref CloudfrontPublicKey
Name: 'cloudfront-key-group'
如果您尝试更新AWS::CloudFront::PublicKey
资源,您也可能会遇到同样的错误。这些资源是不可变的。如果要更改 Name
、EncodedKey
或 CallerReference
值,则必须创建一个新的 PublicKey 并将其添加到 KeyGroup。 (或者删除上面示例中的 CloudfrontPublicKey
,部署,重新创建 CloudfrontPublicKey
,然后再次部署。)
我在博客中记录了更多内容 post:You’re getting "Invalid request provided: AWS::CloudFront::PublicKey" because CloudFront Public Keys are immutable。
我有以下 Cloudformation 模板(.yml 文件),我在其中创建 Public 密钥以添加到密钥组,该模板也是在同一模板中创建的。 (下面的 public 键仅用于示例目的。)
AWSTemplateFormatVersion: "2010-09-09"
Resources:
CloudfrontPublicKey:
Type: AWS::CloudFront::PublicKey
Properties:
PublicKeyConfig:
CallerReference: 'some-caller-reference'
Comment: 'Public key for signed url'
Name: 'cloudfront-public-key'
EncodedKey: '-----BEGIN PUBLIC KEY-----aaaabbbb-----END PUBLIC KEY-----'
CloudFrontKeyGroup:
Type: AWS::CloudFront::KeyGroup
Properties:
KeyGroupConfig:
Comment: 'Key group for signed url'
Items:
- !Ref CloudfrontPublicKey
Name: 'cloudfront-key-group'
但是,我收到以下与 public 键相关的错误
Invalid request provided: AWS::CloudFront::PublicKey
原public键是多行的,例如:
-----BEGIN PUBLIC KEY-----
aaaa
bbbb
-----END PUBLIC KEY-----
我尝试通过如下添加换行符使其适合单行
-----BEGIN PUBLIC KEY-----\naaaa\nbbbb\n-----END PUBLIC KEY-----
我也试过没有换行符
-----BEGIN PUBLIC KEY-----aaaabbbb-----END PUBLIC KEY-----
两次尝试均无效,我仍然遇到同样的错误。
通常,您可以在 yaml 中使用多行字符串来应对这种情况。因此,您可以尝试以下版本的模板:
AWSTemplateFormatVersion: "2010-09-09"
Resources:
CloudfrontPublicKey:
Type: AWS::CloudFront::PublicKey
Properties:
PublicKeyConfig:
CallerReference: 'some-caller-reference'
Comment: 'Public key for signed url'
Name: 'cloudfront-public-key'
EncodedKey: |
-----BEGIN PUBLIC KEY-----
aaaa
bbbb
-----END PUBLIC KEY-----
CloudFrontKeyGroup:
Type: AWS::CloudFront::KeyGroup
Properties:
KeyGroupConfig:
Comment: 'Key group for signed url'
Items:
- !Ref CloudfrontPublicKey
Name: 'cloudfront-key-group'
如果您尝试更新AWS::CloudFront::PublicKey
资源,您也可能会遇到同样的错误。这些资源是不可变的。如果要更改 Name
、EncodedKey
或 CallerReference
值,则必须创建一个新的 PublicKey 并将其添加到 KeyGroup。 (或者删除上面示例中的 CloudfrontPublicKey
,部署,重新创建 CloudfrontPublicKey
,然后再次部署。)
我在博客中记录了更多内容 post:You’re getting "Invalid request provided: AWS::CloudFront::PublicKey" because CloudFront Public Keys are immutable。