【AWS】Amazon EMR ~ IAM Role周り ~

■ はじめに

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 ロールを含む独自の顧客管理ポリシーを
使用してください。
~~~~~~~~~~~~~~~~

https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonElasticMapReduceforEC2Role.html

AmazonEC2RoleforSSM
https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonEC2RoleforSSM.html

より抜粋
~~~~~~~~~~~~~~~~
AmazonEC2RoleforSSMAWSは次のような管理ポリシーです
このポリシーは、間もなく廃止される予定です。
~~~~~~~~~~~~~~~~

cf. SSM = Systems Manager

 => 代わりに、「AmazonSSMManagedInstanceCore」を使えばよさそう

https://docs.aws.amazon.com/ja_jp/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html

* 「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