启动实例的 OpsWorks 角色

Posted

技术标签:

【中文标题】启动实例的 OpsWorks 角色【英文标题】:OpsWorks Role to Start Instance 【发布时间】:2016-02-22 09:24:52 【问题描述】:

在 OpsWorks 层(OpsWorks 堆栈的一部分)中创建实例后,我无法启动 OpsWorks 实例。尝试启动 24/7 实例后出现的错误如下:

启动实例 java-app1 时出错 OpsWorks 未能获得代表您启动实例所需的凭据。请等待一分钟后再试。如果此错误仍然存​​在,请检查堆栈 IAM 角色的权限。

该错误表明我没有为我的堆栈的 IAM 角色正确设置权限。我创建了一个 OpsWorks 堆栈,其中包含对角色 ARN 的引用,该角色 ARN 为角色权限设置了 AWSOpsWorksFullAccess 和 AWSOpsWorksRole 策略。我原以为这两种策略中的一种就足够了。

我可以在该堆栈中创建一个 OpsWorks 层,也可以创建一个 OpsWorks 实例。创建的实例使用 Stack 的 DefaultInstanceProfileArn。就我而言,该 ARN 引用了包含以下策略的角色: AmazonEC2FullAccess AWSOpsWorksFullAccess AWSOpsWorks 角色 AmazonS3FullAccess

我知道我应用的策略非常广泛,但此时我只是想启动一个 OpsWorks 实例。需要应用什么策略才能使 OpsWorks 拥有在我的 Stack 中启动实例的正确权限?

【问题讨论】:

【参考方案1】:

这有点晚了:-)

我最近遇到了这个问题。 附加的角色是: AmazonEC2FullAccess AWSOpsWorksFullAccess AWSOpsWorksCMServiceRole

这让我可以创建、启动、停止和删除。

【讨论】:

【参考方案2】:

这让我最困惑。路过这个坐骑会带来很多景点。

打开堆栈设置,您将找到您当前的 IAM ROLE

按照以下文档附加内联策略。

https://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-servicerole.html

如果您创建自定义服务角色,则必须确保它授予 AWS OpsWorks Stacks 管理您的堆栈所需的所有权限。以下 JSON 示例是标准服务角色的策略声明;自定义服务角色应在其策略声明中至少包含以下权限。


    "Version": "2008-10-17",
    "Statement": [
        
            "Action": [
                "ec2:*",
                "iam:PassRole",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:DescribeAlarms",
                "ecs:*",
                "elasticloadbalancing:*",
                "rds:*"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ],
            "Condition": 
                "StringEquals": 
                    "iam:PassedToService": "ec2.amazonaws.com"
                
            
        
    ]

【讨论】:

以上是关于启动实例的 OpsWorks 角色的主要内容,如果未能解决你的问题,请参考以下文章

如何启动基于负载的 opsworks 实例?

Opsworks 实例无法启动:状态:start_failed:没有这样的食谱:apt

从 EC2 上的自定义 AMI 创建 AWS Opsworks 实例时未启动

如何提高 OpsWorks 节点的启动时间?

是否可以使用 AWS CLI 等到实例“在线”并完成 opsworks 的设置/配置步骤?

AWS OpsWorks“start_failed”状态并且没有日志?