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资源,您也可能会遇到同样的错误。这些资源是不可变的。如果要更改 NameEncodedKeyCallerReference 值,则必须创建一个新的 PublicKey 并将其添加到 KeyGroup。 (或者删除上面示例中的 CloudfrontPublicKey,部署,重新创建 CloudfrontPublicKey,然后再次部署。)

我在博客中记录了更多内容 post:You’re getting "Invalid request provided: AWS::CloudFront::PublicKey" because CloudFront Public Keys are immutable