NSA*_*NSA 5 amazon-web-services emr amazon-iam
我正在尝试从 AWS 控制台启动 AWS EMR 集群,但收到以下错误:
Failed to provision ec2 instances because 'IAM Instance Profile "arn:aws:iam::553706642095:instance-profile/EMR_EC2_DefaultRole" has no associated IAM Roles
Run Code Online (Sandbox Code Playgroud)
任何人都知道这是什么意思以及如何解决它?
以下是角色策略:
{
"Statement": [
{
"Action": [
"cloudwatch:*",
"dynamodb:*",
"ec2:Describe*",
"elasticmapreduce:Describe*",
"rds:Describe*",
"s3:*",
"sdb:*",
"sns:*",
"sqs:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
其信托政策文件为:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我终于解决了这个问题。这令人困惑,因为默认情况下实例配置文件和角色使用相同的名称。完整步骤概述如下,但您可以跳过各个步骤。
创建默认角色(如果出错,请降级到 awscli 版本 1.10.30)
aws emr create-default-roles
如果尚不存在,则创建实例配置文件:
aws iam create-instance-profile --instance-profile-name EMR_EC2_DefaultRole
验证实例配置文件是否存在但没有任何角色:
aws iam get-instance-profile --instance-profile-name EMR_EC2_DefaultRole
使用以下命令添加角色:
aws iam add-role-to-instance-profile --instance-profile-name EMR_EC2_DefaultRole --role-name EMR_EC2_DefaultRole
您对 EMR 只有只读权限
"elasticmapreduce:描述*",
您需要授予对 Elastic MapReduce 的完全访问权限,以便可以启动集群/终止
一旦您授予此访问权限,角色策略将如下所示
“弹性映射减少:*”,
| 归档时间: |
|
| 查看次数: |
3790 次 |
| 最近记录: |