首页 > 解决方案 > 使用 AWS PHP SDK 检测 EC2 角色?

问题描述

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

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

一旦我实例化 SDK 以询问类似于“hasRole”或“getRoleArn”或类似的东西,有什么方法吗?

标签: amazon-web-servicesamazon-ec2aws-php-sdk

解决方案


SDK 直接映射到 API 调用。因此,如果您知道cli要调用什么命令,那么使用 Google 搜索会变得更加容易。所以你想要aws sts get-caller-identity最有可能的。

为“PHP sts sdk aws”做一个谷歌搜索就是你要做的搜索。然后你会在这个页面上结束。

所以这种方式是使用SDK。还有其他几种方法。当您使用ec2时,您也可以使用实例元数据。

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

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

推荐阅读