Amazon ec2 如何向特定EC2实例授予访问AWS SQS队列的权限?

Amazon ec2 如何向特定EC2实例授予访问AWS SQS队列的权限?,amazon-ec2,permissions,amazon-sqs,amazon-iam,Amazon Ec2,Permissions,Amazon Sqs,Amazon Iam,我想使用AWS SQS队列,并通过PHP脚本访问它。PHP脚本安装在EC2实例上 出于测试目的,我现在正在EC2实例上使用curl请求,例如: curl https://sqs.ap-southeast-2.amazonaws.com/1234567890/Integration_Order_In?Action=ReceiveMessage 如果未配置任何权限,请求将失败: <?xml version="1.0"?><ErrorResponse xmlns="http://q

我想使用AWS SQS队列,并通过PHP脚本访问它。PHP脚本安装在EC2实例上

出于测试目的,我现在正在EC2实例上使用curl请求,例如:

curl https://sqs.ap-southeast-2.amazonaws.com/1234567890/Integration_Order_In?Action=ReceiveMessage
如果未配置任何权限,请求将失败:

<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>AccessDenied</Code><Message>Access to the resource https://sqs.ap-southeast-2.amazonaws.com/123456789/Integration_Order_In is denied.</Message><Detail/></Error><RequestId>d47c06d5-a36b-5cac-aedb-54996975844f</RequestId></ErrorResponse>
这是完全可以理解的:如果没有配置访问,请求将被拒绝。瞥一眼标题就会发现潜在的403错误

同样可以理解的是,以下队列策略(队列->权限->编辑策略文档(高级))可以很好地工作:

结果看起来很有希望:

<?xml version="1.0"?><ReceiveMessageResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><ReceiveMessageResult/><ResponseMetadata><RequestId>788aeac3-de4d-5d4c-85ad-b88f101f164e</RequestId></ResponseMetadata></ReceiveMessageResponse>
788aeac3-de4d-5d4c-85ad-b88f101f164e
但这会将权限绑定到一个IP地址,而我更愿意将其绑定到一个实例(IP地址可能会更改)。不幸的是,我添加实例的arn或其IAM角色的实验没有导致对SQS URL的任何访问

情况似乎有点特殊。例如,在其他场景中,向EC2实例的IAM角色添加访问权限可能是可行的。在我的案例中,这不起作用,原因有几个。我真的更愿意使用队列级别的权限

有什么想法吗

<?xml version="1.0"?><ReceiveMessageResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><ReceiveMessageResult/><ResponseMetadata><RequestId>788aeac3-de4d-5d4c-85ad-b88f101f164e</RequestId></ResponseMetadata></ReceiveMessageResponse>