使用AWS PHP SDK检测EC2角色吗?

问题描述

我有一个PHP库,我写它来帮助与Amazon Web Services一起工作。它的构建目的是查找认的$ HOME / .aws / credentials(或指向类似格式的文件),或者在继续之前查找环境中的密钥和机密。

我们现在将在EC2上运行它,并向我展示了如何将角色与EC2结合使用,以更好地控制服务器代码可以做什么和不能做什么。但是我需要修改代码以能够知道何时具有适当的权限,然后再继续操作,而且我在文档中没有看到有关为EC2实例分配给定角色的信息,您在SDK中怎么知道它具有该权限角色。

实例化SDK后,是否有某种方法可以询问类似于“ hasRole”或“ getRoleArn”之类的东西?

解决方法

SDK直接映射到API调用。因此,如果您知道要调用的cli命令,则可以更轻松地进行Google搜索。因此,您最希望使用aws sts get-caller-identity

然后用Google搜索“ PHP sts sdk aws”即可。然后您将进入this页面。

因此,这种方式就是使用SDK。还有其他两种方法。在使用ec2时,您也可以使用实例元数据。

另一方面,我确实认为您应该小心,尽管将AWS角色泄漏到您的应用程序代码中。使用用户身份上下文(例如Cogito),然后使用具有不同权限集的不同组可能更有意义。实际ec2实例上的角色不应更改(除非您进行重新部署),因此您的代码无需检查在应用程序正常运行期间不会更改的内容。您只需使用环境变量即可将所需的任何配置传达给应用程序。

aws sts get-caller-identity --query 'Arn'
arn:aws:iam::1232412321:role/YourRole