我的代码在EC2计算机上运行。我在代码中使用了一些AWS服务,因此如果这些服务不可用,我想在启动时失败。
例如,我需要能够将文件写入S3存储桶。这是在我的代码运行几分钟后发生的,所以发现只有在延迟5分钟后才能正确配置IAM角色会很痛苦。
有没有办法弄清楚我是否对特定的S3存储桶+前缀拥有PutObject权限?我不想写虚拟数据来搞清楚。
答案 0 :(得分:2)
您可以通过SimulatePrincipalPolicy API
以编程方式测试权限模拟附加到IAM实体的一组IAM策略如何与API操作和AWS资源列表一起使用以确定策略'有效的权限。
查看下面介绍API的博客文章。从那篇文章:
AWS身份和访问管理(IAM)添加了两个新API,使您能够自动验证和审核IAM用户,组和角色的权限。使用这两个API,您可以使用AWS CLI或任何AWS开发工具包调用IAM策略模拟器。使用新的iam:SimulatePrincipalPolicy API以编程方式测试现有的IAM策略,这样可以验证策略是否具有预期效果,并确定策略中的哪个特定语句授予或拒绝对特定资源或操作的访问权限。
来源: Introducing New APIs to Help Test Your Access Control Policies
答案 1 :(得分:1)
您是否尝试过AWS IAM Policy Simulator。您可以以交互方式使用它,但它也有一些API功能,您可以使用它们来完成您想要的任务。
http://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulateCustomPolicy.html
答案 2 :(得分:1)
选项1:当应用程序开始查看是否成功时,上传实际文件。
选项2:使用干运行。
许多AWS命令允许"干运行"。这样您就可以在开始时执行命令而无需实际执行任何操作。
AWS CLI for S3似乎支持使用select * from names; | pp
选项进行空运行:
http://docs.aws.amazon.com/cli/latest/reference/s3/cp.html
Amazon EC2文档" Dry Run"说以下内容:
检查您是否拥有该操作所需的权限,而不实际发出请求。如果您具有所需的权限,请求将返回DryRunOperation;否则,它返回UnauthorizedOperation。
参考:http://docs.aws.amazon.com/AWSEC2/latest/APIReference/CommonParameters.html