IAM ロールとは?
AWS IAM (Identity and Access Management) ロールを使うと、Amazon EC2上で稼動するアプリケーションやAWS Elastic Beanstalkがあなたに代わって行動すること(権限移譲)ができるようになります。
ロールはエンティティ(インスタンスまたはアプリケーション)によって想定される必要があり、ロールによって特定されたパーミッションをもつ、一時的なAWSのセキュリティ証明書を作成するのに使われます。
次のビデオを見れば、IAMロールについて詳しいことがわかります。
AWS Elastic BeanstalkがIAMロールをサポートいたしました。これにより、お客様のアプリケーションから各種AWSサービスに安全にアクセスことがより簡単になります。 Elastic BeanstalkはAWS上でのお客様のアプリケーションの実行を簡単にしてくれます。自動的なプロビジョニング、設定、そして多くのAWSリソースをお客様の代わりに管理してくれます。
Elastic Beanstalk のManagement consoleとコマンドラインツール、ebを使って、IAMロールとそれが関連付けられたインスタンスプロファイルをプロビジョンし、お客様の環境に割りあてることができるようになりました。 環境間で共有したいロールがある場合、既存のロールを使うこともできます。
Elastic BeanstalkとIAMロールについてさらに詳しく知りたい場合は、AWS Elastic Beanstalk Developer Guide、IAM Roles for EC2 Instancesを参照ください。
ロールとプロファイルの使い方
過去には、お客様のアプリケーションがAWSのサービスAPI(例えば、DynamoDBやCloudWatchのような)を呼ぶ必要がある場合、Elastic Beanstalkの環境変数を使って、アプリケーションにAWSアクセスキーとシークレットキーを渡す必要がありました。
Elastic Beanstalk アプリケーション作成時に、新しいインスタンスプロファイルを作成する、もしくは既存のプロファイルを選択するところからはじめます。大事なのは、このインスタンスプロファイルがIAMロールを含んでいるということです。

IAMロールにより、一時的なAWSの証明書がお客様の環境内のEC2インスタンスに安全に設置されます。 この一時的な証明書は自動的に1日複数回ローテートされます。 AWS SDKで証明書を使うためには、単に好みのクラウアントを初期化するだけです。残りは全てAWS SDKが面倒を見てくれます。ここでは、CloudWatchにデータポイントをPUTする例を紹介します。
// 証明書はいっさい渡していないことに注目
AmazonCloudWatchClient client =new AmazonCloudWatchClient();
// アプリケーションでトラックされたnumOfUsersのメトリックレコードを記録
MetricDatum dataPoint =new MetricDatum()
.withDimensions(new Dimension()
.withName("Environment")
.withValue("MyProductionEnvironment"))
.withMetricName("Users")
.withValue(numOfUsers);
// CloudWatchへのリクエストを作成し、アプリケーションのためのネームスペースを定義
PutMetricDataRequest request =new PutMetricDataRequest()
.withNamespace("myapp/prod")
.withMetricData(dataPoint);
// CloudWatchにメトリクスをPut
client.putMetricData(request);
IAMロールはCloudWatch APIを呼び出すために必要な権限を持っている必要があります。この権限をもつサンプルポリシーは次のとおりです。
"Statement":[{
"Effect":"Allow",
"Action":["cloudwatch: putMetricData"],
"Resource":"*"
}
]
}
いつやるの?
この機能は本日より利用可能となっています。是非今すぐお試しください!
Saad + 堀内康弘 (Facebook, Twitter)