2012-11-25 14 views
6

管理コンソールでiam-roleを使用してec2-instanceを起動できます。 しかし、私はAWS-ルビー-SDKここiam-roleでec2-instanceを起動するにはどうすればよいですか?

iam-role " test"'s Policy is here 
    "Effect": "Allow", 
    "Action": "*", 
    "Resource": "*" 

からIAMロールでEC2インスタンスを起動する方法はわかりませんが結果です:

/var/lib/gems/1.8/gems/aws-sdk-1.7.1/lib/aws/core/client.rb:318:in `return_or_raise': 
You are not authorized to perform iam:PassRole with arn:aws:iam::xxxxxxxxxxx:role/test 
(AWS::EC2::Errors::UnauthorizedOperation) 

答えて

9

あなたのRubyスクリプトから使用している資格情報「テスト」IAMロールを使用してインスタンスを起動する権限がありません。 PassRole許可、例えば:あなたはこのユーザーのポリシーを変更し、それをIAMを付与する必要があり

{ 
    "Statement": [{ 
     "Effect":"Allow", 
     "Action":"ec2:RunInstances", 
     "Resource":"*" 
    }, 
    { 
     "Effect":"Allow", 
     "Action":"iam:PassRole", 
     "Resource":"arn:aws:iam::xxxxxxxxxxx:role/test" 
    }] 
} 

これは、セキュリティ機能である - AWSは "を使用していますので、特権のエスカレーションを許可するようにIAMを誤って設定することが可能ですデフォルトでセキュリティで保護されたポリシー。

また、ユーザーが任意のIAMロールを使用してインスタンスを起動できるようにするには、このポリシーを使用することができます - しかし、あなたはこれを行う前に、セキュリティへの影響を考慮する必要があります。

{ 
     "Effect":"Allow", 
     "Action":"iam:PassRole", 
     "Resource":"*" 
    }] 

は、文献:http://docs.amazonwebservices.com/IAM/latest/UserGuide/role-usecase-ec2app.html

関連する問題