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*" }
补充信息
- 未指定
/tmp/emr-encryption路径,推测为集群创建IAM角色下载文件的路径,需确认该路径是本地路径还是HDFS路径 - S3 Bucket已启用服务端加密,使用的KMS密钥与
LocalDiskEncryptionConfiguration中指定的一致,且集群创建IAM角色拥有该KMS密钥访问权限 - 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
相关产品推荐
相关产品推荐

