AWS のサービスを直接呼び出すアプリケーションで IAM ロールを使用する
クラスターの EC2 インスタンスで実行されるアプリケーションは、EC2 インスタンスプロファイルを使用して、AWS サービスを呼び出すときに一時的なセキュリティ認証情報を取得できます。
Amazon EMR のリリース 2.3.0 以降で使用できる Hadoop のバーションは、IAM ロールを利用できるように更新されています。アプリケーションが Hadoop アーキテクチャ上で実行され、AWS のどのサービスも直接呼び出さない場合、変更せずに IAM ロールで動作します。
アプリケーションが AWS のサービスを直接呼び出す場合、IAM ロールを利用するようにアプリケーションを更新する必要があります。これにより、アプリケーションは、クラスターの EC2 インスタンスの /etc/hadoop/conf/core-site.xml
からアカウント認証情報を取得する代わりに、SDK を利用して IAM ロールを使うリソースにアクセスしたり、EC2 インスタンスメタデータを呼び出して一時的な認証情報を取得したりできます。
SDK を使用して IAM ロールで AWS リソースにアクセスするには
-
以下のトピックは、IAM ロールを使用して一時的な認証情報にアクセスするために、いくつかの AWS SDK を使用する方法を示します。各トピックは IAM ロールを使用しないアプリケーションのバージョンから始まり、IAM ロールを使用するためにアプリケーションを変換する処理を説明します。
-
「AWS SDK for Java デベロッパーガイド」の「Java 用 SDK を使用した Amazon EC2 インスタンスの IAM ロールの設定」
-
「AWS SDK for .NET デベロッパーガイド」の「Using IAM roles for Amazon EC2 instances with the SDK for .NET」
-
「AWS SDK for PHP デベロッパーガイド」の「PHP 用 SDK を使用した Amazon EC2 インスタンスの IAM ロールの設定」
-
「AWS SDK for Ruby デベロッパーガイド」の「Ruby 用 SDK を使用した Amazon EC2 インスタンスの IAM ロールの設定」
-
EC2 インスタンスメタデータから一時的な認証情報を取得するには
-
指定された IAM ロールと連動して実行している EC2 インスタンスから以下の URL を呼び出します。これにより、関連する一時的なセキュリティ認証情報 (AccessKeyId、SecretAccessKey、SessionToken、および Expiration) が返されます。次の例では Amazon EMR のデフォルトのインスタンスプロファイル (
EMR_EC2_DefaultRole
) を使用しています。GET http://169.254.169.254/latest/meta-data/iam/security-credentials/
EMR_EC2_DefaultRole
IAM ロールを使用するアプリケーションの作成の詳細については、「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用して AWS リソースへのアクセス許可を付与する」を参照してください。
一時的なセキュリティ認証情報の詳細については、「一時的セキュリティ認証情報の使用」ガイドの「一時的な認証情報の使用」を参照してください。