AWS EMR in Private subnet 常見啟動失敗的原因

2021-03-18 AWS

最近遇到客戶反應 EMR 無法順利在 Private Subnet 啟動,複習一下在 EMR 啟動時必須注意的一些 requirements。

EMR 大概是多數人處理 Data 時最容易上手的一個 Service,由於 Hadoop 豐富的生態系以及支援 Custom AMI 的特性使 EMR 非常彈性,然而在處理資料上仍然有許多資安上考量需要放在 Private Subnet 上處理會比較安心,所以這篇會專注在 EMR on Private subnet 上會遇到的一些問題整理

一樣先把 AWS 相關文件放在前面:

簡單概述在文件上提到的幾件事:

  • EMR 版本必須至少 5.25.0 以上
  • EMR 必須能存取 Amazon Linux repositories 的 S3 bucket:
{
   "Version": "2008-10-17",
   "Statement": [
       {
           "Sid": "AmazonLinuxAMIRepositoryAccess",
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:GetObject",
           "Resource": [
               "arn:aws:s3:::packages.${region}.amazonaws.com/*",
               "arn:aws:s3:::repo.${region}.amazonaws.com/*"
           ]
       }
   ]
}
  • 如有開啟 Spark history server UI 則要能存取 Spark event logs 的 S3 bucket
{
   "Version": "2008-10-17",
   "Statement": [
       {
           "Sid": "EnableApplicationHistory",
           "Effect": "Allow",
           "Principal": "*",
           "Action": [
               "s3:Put*",
               "s3:Get*",
               "s3:Create*",
               "s3:Abort*",
               "s3:List*"
           ],
           "Resource": [
               "arn:aws:s3:::prod.${region}.appinfo.src/*"
           ]
       }
   ]
}
  • EMR 啟動時 AWS 會接管 Managed security group 將 EMR 必要的 ports 加進 rule 裡,若有需要增加 rule 時可以再啟動 EMR 後修改 Managed security group。
  • EMR 在 5.30.0 版本之後 master node 新增 inbound 9443/HTTPS 溝通

除了上述 requirements 以外,以下情境也有可能造成 EMR 啟動失敗

另外 EMR 對於 Security Group 有比較多的額外處理,像是 Block Public Access 在大部分的 Region 會將 inbound 0.0.0.0/0 或 ::/0 移除。

References

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱