创建 EKS 集群时用于加密的 k8s 资源和提供程序无效

Invalid k8s resource and provider for encryption upon creating EKS Cluster

我正在使用 CloudFormation 创建 AWS EKS 以启用机密加密

AWSTemplateFormatVersion: '2010-09-09'
Description: 'Amazon EKS Cluster Control Plane'

Resources:

  eksCluster:
    Type: AWS::EKS::Cluster
    Properties:
      Name: MY-EKS-CLUSTER
      Version: "1.20"
      RoleArn: !ImportValue EKS-Cluster-RoleArn
      EncryptionConfig: 
        - Provider:
            KeyArn: VALID_EXISTING_ARN_IN_AWS_REGION_SAME_AS_CLOUDFORMATION
          Resources: 
          - Secrets
      ResourcesVpcConfig: 
        SecurityGroupIds: 
          - !ImportValue EKS-Cluster-ControlPlaneSecurityGroupId
        SubnetIds: 
          - !ImportValue EKS-Cluster-PublicSubnetId
          - !ImportValue EKS-Cluster-PublicSubnetId2
          - !ImportValue EKS-Cluster-PrivateSubnet01
          - !ImportValue EKS-Cluster-PrivateSubnet02

但是,我一直收到错误消息

Invalid k8s resource and provider for encryption. (Service: AmazonEKS; Status Code: 400; Error Code: InvalidParameterException; Request ID: cda5299d-82ee-4062-a2f6-5e320f8da145; Proxy: null)

即使 KMS KEY 存在且 ARN 有效。

如果我在未启用机密加密的情况下创建集群,它确实允许我使用 AWS CLI 通过以下命令更改集群的 KMS 加密配置,它有效。

aws eks associate-encryption-config \
  --cluster-name MY-EKS-CLUSTER \
  --encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"SAME_ARN_AS_CF_TEMPLATE"}}]' \
  --region ${AWS::Region}

我的 cloudformation 模板有什么问题?

根据 docs,唯一支持的值是 secrets,显然它必须是小写的。这为我修复了 CloudFormation 部署:

  Resources: 
  - secrets