我每天运行一次数据流水线,流水线创建一个临时的EMR来运行活动。EMR连接到Mysql数据库,主节点和核心节点的IP需要在DB中列入白名单。
是否可以为EMR上的节点分配静态或弹性IP,这样我就不必在每次创建EMR时都手动将节点IP列入白名单?
提前谢谢。
发布于 2019-10-03 20:41:01
我也是这样,做了一个代码,将预先获取的弹性公网EIP附加到主实例上。但是,如果您想连接AWS RDS,那么您可以简单地允许EMR的安全组是最好的。
下面是我用来修复主实例的弹性公网is,而不是其他实例的弹性is。在使用集群模式的spark应用程序的情况下,主节点拥有spark的驱动程序会话,并且只有该驱动程序会话需要成为白名单。
#!/bin/bash
BOOL=`cat /emr/instance-controller/lib/info/instance.json | jq .isMaster`
if [ $BOOL == "true" ]
then
ID=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id`
aws ec2 associate-address --instance-id $ID --public-ip $1
fi此脚本接收一个参数,即您想要的EIP,我已将此代码作为EMR的引导操作。请注意,电子病历应具有associate-address的执行权限。
https://stackoverflow.com/questions/58214051
复制相似问题