【发布时间】:2020-11-07 03:45:20
【问题描述】:
我正在尝试使用 SSM 修改 EC2 实例上的现有卷。我附加了一个带有允许修改 EC2 实例上的卷的策略的角色。我在策略中选择的权限称为 ModifyVolume。当我尝试运行我的脚本时,它给了我以下消息:
调用 ModifyVolume 操作时发生错误(UnauthorizedOperation):您无权执行此操作。
我确信我使用的策略授予我此权限,所以我想知道为什么它不起作用?
这是我的 SSM 文档:
---
schemaVersion: "2.2"
assumeRole: "{{AutomationAssumeRole}}"
description: "Resizes the specified EBS volume to the target size"
parameters:
AutomationAssumeRole:
type: "String"
description: "The ARN of the role that allows Automation to perform the actions on your behalf."
default: "arn:aws:iam::accountnumber:role/SSMUpdateVolume"
VolumeId:
type: "String"
description: "(Required) EBS volume ID"
Size:
type: "String"
description: "(Required) Target size for the selected volume in GB"
mainSteps:
- action: "aws:runShellScript"
name: "ModifyVolumeSize"
inputs:
runCommand:
- "export AWS_DEFAULT_REGION=eu-central-1"
- "aws ec2 modify-volume --size {{Size}} --volume-id {{VolumeId}}"
我注意到,当我将权限直接分配给分配给实例本身的角色时,它会起作用。但是,我只想在使用 SSM 文档时暂时允许此权限。因此,这意味着 SSM 文档不会应用此权限,而是使用实例本身上缺少此 ModifyVolume 权限的那个权限。我该如何解决这个问题?
我认为这可能是因为我正在使用 aws:runShellScript 命令,所以它根本不应用角色而只是调用实例上的脚本?这可能是原因吗?如果是这种情况,我需要做什么才能完成这项工作?
【问题讨论】:
-
不确定是否相关,但您的花括号数量不匹配:
assumeRole: "{{AutomationAssumeRole}" -
是的,这是一个错字,不幸的是它没有改变任何东西
-
能否将政策添加到您的问题中,以便我们尝试重现?
-
我添加了政策并添加了一些关于我的案例的其他信息
-
我正要尝试重现您的情况,但后来我注意到
assumeRole指的是一个参数。这可能不起作用,因为参数是单独定义的。您可以尝试在assumeRole中对IAM 角色的ARN 进行硬编码(例如assumeRole: arn:aws:iam::accountnumber:role/SSMUpdateVolume,看看是否可行?
标签: amazon-web-services amazon-ec2 amazon-ebs aws-systems-manager