■ はじめに
https://dk521123.hatenablog.com/entry/2022/05/13/155755
の続き。 Amazon EMR の IAM Role周りについて 学んだので、徐々にメモっておく。 (インフラ超大変、、、)
目次
【0】EMRで関連するロール種類 【1】Service-linkedロール 1)作成手順 補足:エラー「Service-linked role 'AWSServiceRoleForEMRCleanup' for EMR is requred」 【2】EMR ロール 1)作成時のメモ 【3】EC2 インスタンスプロファイル 1)作成時のメモ 【4】自動スケーリングロール 1)作成時のメモ
【0】EMRで関連するロール種類
https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-iam-roles.html
* 主に以下のロールがある 1)Service-linkedロール <= ★絶対必要 2)EMR ロール <= ★これは絶対必要 3)EC2 インスタンスプロファイル <= ★これは絶対必要 4)自動スケーリングロール などなど # 他にも「EMR Notebooks のサービスロール」などがあるが、ここでは扱わない
【1】Service-linkedロール
1)作成手順
[1] AWS Management Console画面で、 [Roles]-[Create Role]を選択 [2] 以下を選択して「Next」ボタン押下 + Trusted entity type: AWS service + Use case: (Use cases for the other AWS servicesで)[EMR]-[EMR - Cleanup] [3] あとは流れでできると思う、、、(名前は「AWSServiceRoleForEMRCleanup」で固定)
補足:エラー「Service-linked role 'AWSServiceRoleForEMRCleanup' for EMR is requred」
このロールを作成しないと、EMRを立ち上げようと試みてすぐに 以下のエラーになり、「Terminated with errors」をうまく立ち上がらない
エラー内容
Terminated the errors Service-linked role 'AWSServiceRoleForEMRCleanup' for EMR is requred
【2】EMR ロール
* Amazon EMR のサービスロール * リソースをプロビジョニングしてサービスレベルのアクションを実行する際に ユーザーに代わって AWS の他のサービスを呼び出すことを Amazon EMR に許可 * このロールは、すべてのクラスターに必須 * boto3 API の「ServiceRole」に当たるロール
1)作成時のメモ
* AmazonElasticMapReduceRole が用意されているのが、 廃止予定らしい、、、 => 代わりに「AmazonEMRServicePolicy_v2」を使うのがよさそう
AmazonElasticMapReduceRole
https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonElasticMapReduceRole.html
より抜粋 ~~~~~~~~~~~~~~~~ AmazonElasticMapReduceRoleAWSは次のような管理ポリシーです このポリシーは廃止予定です。 ~~~~~~~~~~~~~~~~
AmazonEMRServicePolicy_v2
https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-managed-iam-policies.html
より抜粋 ~~~~~~~~~~~~~~~~ ロール名:EMR_ DefaultRole V1 ポリシー (廃止予定): AmazonElasticMapReduceRole(EMR サービスロール) V2 (範囲制限) ポリシー名: AmazonEMRServicePolicy_v2 ~~~~~~~~~~~~~~~~ * 一般サイトだと以下。
https://dev.classmethod.jp/articles/emr-upgrade-managed-policy-from-v1-to-v2/
【3】EC2 インスタンスプロファイル
* クラスター EC2 インスタンスのサービスロール * クラスターインスタンスに対して Hadoop エコシステム上で 実行されるアプリケーションプロセスは、このロールを使用して AWS の他のサービスを呼び出す * EMRFS を使用して Amazon S3 のデータにアクセスする場合は、 Amazon S3 のデータの場所に応じて引き受ける各種ロールを指定 * このロールは、すべてのクラスターに必須 * boto3 API の「JobFlowRole」に当たるロール
1)作成時のメモ
* AmazonElasticMapReduceforEC2Role や AmazonEC2RoleforSSM が用意されているのが、 廃止予定らしい、、、
AmazonElasticMapReduceforEC2Role
https://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html
より抜粋 ~~~~~~~~~~~~~~~~ AWS デフォルト管理ポリシー AmazonElasticMapReduceforEC2Role は、 非推奨になる予定であり、置き換え用の AWS 管理ポリシーは提供されていません。 EC2 インスタンスプロファイルにデフォルトの管理ポリシーを使用する代わりに、 Amazon EMR が必要とする S3 バケットやその他のリソースに リソースベースのポリシーを適用するか、 インスタンスプロファイルとして IAM ロールを含む独自の顧客管理ポリシーを 使用してください。 ~~~~~~~~~~~~~~~~
AmazonEC2RoleforSSM
https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonEC2RoleforSSM.html
より抜粋 ~~~~~~~~~~~~~~~~ AmazonEC2RoleforSSMAWSは次のような管理ポリシーです このポリシーは、間もなく廃止される予定です。 ~~~~~~~~~~~~~~~~ cf. SSM = Systems Manager => 代わりに、「AmazonSSMManagedInstanceCore」を使えばよさそう
* 「AmazonSSMManagedInstanceCore」に関する詳細は以下のサイト参照。
https://dev.classmethod.jp/articles/not-recommended-amazonec2roleforssm/
【4】自動スケーリングロール
* Amazon EMR の自動スケーリング用サービスロール * 動的なスケーリング環境用の追加のアクションを許可 * Amazon EMR でオートスケーリングを使用するクラスターでのみ必須 * boto3 API の「AutoScalingRole」に当たるロール => EMR の Auto scaling に関する詳細は、以下の関連記事を参照のこと
Amazon EMR ~ Auto scaling ~
https://dk521123.hatenablog.com/entry/2022/05/16/115229
1)作成時のメモ
* AmazonElasticMapReduceforAutoScalingRole が用意されているので、 このマネージドポリシーをベースに作成するといいかも
AmazonElasticMapReduceforAutoScalingRole
https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonElasticMapReduceforAutoScalingRole.html
より抜粋 ~~~~~~~~~~~~~~~~ AmazonElasticMapReduceforAutoScalingRoleは 「Amazon Elastic MapReduce for Auto Scaling」AWSというマネージドポリシーです。 Auto Scaling が EMR クラスターにインスタンスを追加および削除できるようにするロール。 ~~~~~~~~~~~~~~~~
関連記事
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR ~ boto3 編 ~
https://dk521123.hatenablog.com/entry/2020/06/24/173334
Amazon EMR ~ ネットワーク周り ~
https://dk521123.hatenablog.com/entry/2022/05/13/155755
Amazon EMR ~ Auto scaling ~
https://dk521123.hatenablog.com/entry/2022/05/16/115229
Amazon EMR ~ Flink ~
https://dk521123.hatenablog.com/entry/2023/07/16/000000
EMRのBootstrapでエラー「BOOTSTRAP_FAILURE_BA_DOWNLOAD_FAILED_PRIMARY」が表示
https://dk521123.hatenablog.com/entry/2023/08/17/002559
Apache Airflow ~ EMR ~
https://dk521123.hatenablog.com/entry/2023/07/15/000000
Terraform ~ AWS EC2 ~
https://dk521123.hatenablog.com/entry/2023/05/21/003048