You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EMR 6.9.0集群启用传输中加密时因Invalid S3Provider创建失败

EMR 6.9.0 集群启用传输加密后创建失败排查

问题背景

通过Terraform创建带Spark应用的EMR 6.9.0集群,禁用传输中加密时可正常运行;启用加密并指定存储PEM证书的S3路径后,集群创建失败。

Terraform加密配置

{  
  "EncryptionConfiguration": {        
    "EnableInTransitEncryption": true,        
    "EnableAtRestEncryption": true,        
    "InTransitEncryptionConfiguration": {            
        "TLSCertificateConfiguration": {                
            "CertificateProviderType": "PEM",                
            "S3Object": "arn:aws:s3:::sample-mybucket/certs/MyCerts.zip"            
        }        
    },       
    "AtRestEncryptionConfiguration": {            
        "LocalDiskEncryptionConfiguration": {                
            "EnableEbsEncryption": true,                
            "EncryptionKeyProviderType": "AwsKms",                
            "AwsKmsKey": "arn:aws:kms:us-east-1:dummy:key/12345678-1234-1234-1234-123456789012"            
        }       
    }    
}

报错信息

On the master instance (i-123456789), Invalid S3Provider: Failed to read the private key from /tmp/emr-encryption/privateKey.pem

已配置权限

执行Terraform任务的IAM角色与S3 Bucket互访权限:

{  
  "Sid": "S3AllowReads",  
  "Effect": "Allow",  
  "Action": [     
    "s3:Get*",     
    "s3:List*"  
  ],  
  "Resource": "arn:aws:s3:::*mybucket*"
}

补充信息

  1. 未指定/tmp/emr-encryption路径,推测为集群创建IAM角色下载文件的路径,需确认该路径是本地路径还是HDFS路径
  2. S3 Bucket已启用服务端加密,使用的KMS密钥与LocalDiskEncryptionConfiguration中指定的一致,且集群创建IAM角色拥有该KMS密钥访问权限
  3. CloudTrail中存在以下非致命错误:
    • GetBucketReplication -> ReplicationConfigurationNotFoundError
    • GetBucketLifecycle -> NoSuchLifecycleConfiguration
    • GetBucketCors -> NoSuchCORSConfiguration
    • GetBucketObjectLockConfiguration -> ObjectLockConfigurationNotFoundError
    • GetBucketWebsite -> NoSuchWebsiteConfiguration

疑问

是否遗漏core-site、yarn-site等XML配置?或问题出在其他地方?


排查与解决方案

1. 路径类型确认

/tmp/emr-encryption是EC2本地文件系统路径,不是HDFS路径。EMR启动时会自动从指定S3路径下载证书包到该本地临时目录,解压后读取私钥。

2. 核心问题:证书包格式不符合要求

报错提示无法读取privateKey.pem,大概率是S3上的MyCerts.zip不符合EMR规范:

  • 压缩包必须直接包含以下3个文件,不能有嵌套目录:
    • privateKey.pem:未加密的PEM格式私钥(不能设密码)
    • publicKey.pem:PEM格式公钥
    • certificate.pem:PEM格式证书
  • 文件名必须完全匹配,大小写敏感

3. 权限验证细节

注意区分两个IAM角色的权限:

  • Terraform执行角色的S3权限仅负责提交集群创建请求,EMR实例使用的EC2实例角色才需要访问S3证书路径的权限
  • 给EC2实例角色添加s3:GetObject权限,目标资源为arn:aws:s3:::sample-mybucket/certs/MyCerts.zip
  • 若S3用KMS加密,EC2实例角色还需kms:Decrypt权限,目标为对应的KMS密钥ARN

4. CloudTrail错误说明

这些错误属于EMR服务默认检查Bucket的冗余配置,不存在对应配置不会影响加密功能,可直接忽略。

5. XML配置无需手动添加

EMR会根据EncryptionConfiguration自动生成core-site、yarn-site等相关参数,不需要手动配置XML文件。


内容的提问来源于stack exchange,提问作者ashishb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:23:23