Amazon web services 在AWS cloudformation中创建公钥时出现以下错误:提供的请求无效:AWS::CloudFront::PublicKey

Amazon web services 在AWS cloudformation中创建公钥时出现以下错误:提供的请求无效:AWS::CloudFront::PublicKey,amazon-web-services,amazon-cloudformation,amazon-cloudfront,Amazon Web Services,Amazon Cloudformation,Amazon Cloudfront,我有以下Cloudformation模板(.yml文件),其中我正在创建公钥以添加到密钥组,该密钥组也是在同一模板中创建的。(下面的公钥仅用于示例目的。) 但是,我得到了与公钥相关的以下错误 Invalid request provided: AWS::CloudFront::PublicKey 原始公钥是多行的,例如: -----BEGIN PUBLIC KEY----- aaaa bbbb -----END PUBLIC KEY----- 我试图通过添加新行字符使其适合单行,如下所示

我有以下Cloudformation模板(.yml文件),其中我正在创建公钥以添加到密钥组,该密钥组也是在同一模板中创建的。(下面的公钥仅用于示例目的。)

但是,我得到了与公钥相关的以下错误

  Invalid request provided: AWS::CloudFront::PublicKey
原始公钥是多行的,例如:

-----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'

在我尝试您的解决方案后,与PubicKey相关的错误消失了。另一种解决方案是使用双引号将单行公钥包装为\n。
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'