■ はじめに
https://dk521123.hatenablog.com/entry/2022/05/11/135632
で、AWS EMR 内の EC2 内を Session Manager で入ることをやったが 今回、初めから自分でインフラ部分も設定したので、 その時のノウハウをまとめておく
目次
【1】EMRでSession Managerで入りたい場合の注意点 【2】EMRにSSM Agentをインストールするには 1)SSM Agentをインストールするスクリプトを用意 2)EMRのBootstrap時に1)のスクリプトをコールする 【3】その他の事項 1)IAM role 【4】Tips 1)AMI化にする
【1】EMRでSession Managerで入りたい場合の注意点
https://dk521123.hatenablog.com/entry/2020/04/09/215235
でも少し触れているが、 Session Managerを使用するには、入りたいEC2内に SSM Agentを事前にインストールする必要があるのだが EMRのデフォルトのEC2には、入っていないので インストールする必要がある
【2】EMRにSSM Agentをインストールするには
https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/
に記載されているが、ざっくりいうと、 1)SSM Agentをインストールするスクリプトを用意 2)EMRのBootstrap時に1)のスクリプトをコールする
1)SSM Agentをインストールするスクリプトを用意
* 以下「例:シェルスクリプト」を自分のS3バケット内に置く => 例えば、s3://your-s3-bucket/emr/init.sh => Windowsの場合、改行コードをLF(Linux)にすることに注意
例:シェルスクリプト
#!/bin/bash ## Name: SSM Agent Installer Script ## Description: Installs SSM Agent on EMR cluster EC2 instances and update hosts file ## sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo status amazon-ssm-agent >>/tmp/ssm-status.log ## Update hosts file echo "\n ########### localhost mapping check ########### \n" > /tmp/localhost.log lhost=`sudo cat /etc/hosts | grep localhost | grep '127.0.0.1' | grep -v '^#'` v_ipaddr=`hostname --ip-address` lhostmapping=`sudo cat /etc/hosts | grep $v_ipaddr | grep -v '^#'` if [ -z "${lhostmapping}" ]; then echo "\n ########### IP address to localhost mapping NOT defined in hosts files. add now ########### \n " >> /tmp/localhost.log sudo echo "${v_ipaddr} localhost" >>/etc/hosts else echo "\n IP address to localhost mapping already defined in hosts file \n" >> /tmp/localhost.log fi echo "SSM Agent install is DONE..."
2)EMRのBootstrap時に1)のスクリプトをコールする
Name:任意の文字列(e.g. demo-emr-init)
Amazon s3 Location: s3://your-s3-bucket/emr/init.sh
補足:エラー「BOOTSTRAP_FAILURE_BA_DOWNLOAD_FAILED_PRIMARY」が表示
EMRを起動し、Bootstrapが実行された際に エラー「BOOTSTRAP_FAILURE_BA_DOWNLOAD_FAILED_PRIMARY」が表示した。 その際の詳細は、以下の関連記事を参照のこと
EMRのBootstrapでエラー「BOOTSTRAP_FAILURE_BA_DOWNLOAD_FAILED_PRIMARY」が表示
https://dk521123.hatenablog.com/entry/2023/08/17/002559
【3】その他の事項
1)IAM role
https://dk521123.hatenablog.com/entry/2020/04/09/215235
より抜粋 ~~~~~~~~~~ EC2に付与されているIAMロールに、 AmazonEC2RoleforSSMポリシーを付与する ~~~~~~~~~~
【4】Tips
1)AMI化にする
ブートストラップで毎回インストールのは、非効率なので AMI(Amazon Machine Image)化しておくといい
注意点
* AMI作成時は、EBSを1つで作成すること => エラー「The AMI mush have only one EBS volume. AMI with multiple EBS volumes are not supported」 が表示される
関連記事
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR ~IAM Role周り ~
https://dk521123.hatenablog.com/entry/2023/07/24/160124
Amazon EMR ~ ネットワーク周り ~
https://dk521123.hatenablog.com/entry/2022/05/13/155755
起動中の EMR に Session Manager を使って入る
https://dk521123.hatenablog.com/entry/2022/05/11/135632
Amazon EMR ~ Flink ~
https://dk521123.hatenablog.com/entry/2023/07/16/000000
AWS Systems Manager ~ Session Manager ~
https://dk521123.hatenablog.com/entry/2020/04/09/215235
EMRのBootstrapでエラー「BOOTSTRAP_FAILURE_BA_DOWNLOAD_FAILED_PRIMARY」が表示
https://dk521123.hatenablog.com/entry/2023/08/17/002559
Amazon EC2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2017/02/16/235120