LoginSignup
0
0

More than 5 years have passed since last update.

EMR「You cannot specify a ServiceAccessSecurityGroup for a cluster launched in public subnet.」

Posted at

問題

AWS Lambda(以下Lambda)からAmazon EMR(以下EMR)を起動する構成で、Lambdaのコードは通るのにEMRが立ち上がらない(リストには表示されるけどエラーになる)というあるあるな問題に遭遇。
そのエラーのクラスターをコンソールから手動でクローンして同じ設定で立ち上げるとエラーなく起動する、という謎な状態。

エラーの内容

EMRのコンソール上部にでているメッセージは「You cannot specify a ServiceAccessSecurityGroup for a cluster launched in public subnet.」。
S3にクラスターのログはあがっていない。

環境

Lambda python3.6
EMR emr-5.15.0

解決方法

boto3のrun_job_flow()で指定するパラメータ「ServiceAccessSecurityGroup」の指定を外したら解決した。

原因

「ServiceAccessSecurityGroup」は

プライベートサブネットでクラスターにアクセスするためにサービスが使用する (Amazon EMR によって管理される) EC2 セキュリティグループの ID です。

とのこと。
エラーメッセージの「You cannot specify a ServiceAccessSecurityGroup for a cluster launched in public subnet.」を翻訳すると「パブリックサブネットで起動されたクラスタにServiceAccessSecurityGroupを指定することはできません。」となるので、そのまま。。。クローンして正常に立ち上がってしまうところが厄介だった、、、(良しなに判断していらないならそのまま使用せずに立ててくれればいいのに)
本番環境とテスト環境をわけていて、本番環境ではプライベートサブネットに、テスト環境ではパブリックサブネットにそれぞれ構築している状態だったので、当たり前だけどなるべく環境合わせないと思わぬところで余計な時間食ってしまうといういい(?)例に。

おまけ

LambdaからEMRを立てる場合、インスタンスサイズを指定するが、EMRが対応していないインスタンスサイズがあるので注意が必要。その他にも注意点はたくさんあるが、追々。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0