Amazon EC2 のアクション 「RunInstances」 にリソースタイプを指定せず、条件キーの指定でアクションを許可したいのですが、想定した動作になりませんでした。 原因と対処方法を教えてください。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

RunInstances のアクションで条件キーを利用して、リソースタイプを指定せず、特定の条件のみアクションを許可したいのですが、想定した動作になりません。
原因と対処方法を教えてください。

{
    "Sid": "ECInstances",
    "Effect": "Deny",
    "Action": [
        "ec2:RunInstances"
    ],
    "Resource": "*",
    "Condition": {
        "StringNotEqualsIfExists": {
            "aws:RequestTag/test": "test"
        }
    }
}
]
}

どう対応すればいいの?

  • 原因

特定のリソースタイプを指定しないで、全てのリソースを指定している場合、上記のポリシーとなります。 RunInstances のアクションは、リソースタイプの指定が必須のため、 上記のように設定している場合は、想定した動作が得られなくなります。

  • 対処方法

以下のようにリソースタイプを指定することで、想定した動作を実現できます。

{
    "Sid": "ECInstances",
    "Effect": "Deny",
    "Action": [
        "ec2:RunInstances"
    ],
    "Resource": "arn:aws:ec2:*:*:instance/*",
    "Condition": {
        "StringNotEqualsIfExists": {
            "aws:RequestTag/test": "test"
        }
    }
}
]
}

RunInstances のアクションで指定できるリソースタイプの一部は以下となります。
利用されているリソースタイプにより、サポートされている条件キーも異なりますので、ご利用いただく際は必要に応じてご確認ください。

  • image*
  • instance*
  • network-interface*
  • security-group*
  • subnet*
  • volume*

指定できるリソースタイプについては、ドキュメント をご参照ください。

参考情報