使用 boto3 验证 S3 凭证,无需 GET 或 PUT

2024-01-19

有没有一种方法可以验证给定的一组 S3 凭据是否可以访问特定存储桶,而无需执行某种显式的 PUT 或 GET?

实例化 s3.Client、s3.Resource 或 s3.Bucket 对象似乎根本不验证凭据,更不用说存储桶访问了。

博托3 1.4.7。 蟒蛇2.7.13。

我们有自动化和编排功能,可以自动创建存储桶,我想包括一个验证用户访问密钥和秘密的部分。自从创建存储桶以来,我就知道该存储桶存在。桶是空的。

我想验证用户是否有权访问而无需执行 PUT 操作。

谢谢你的帮助。

* 更新 *

我最终使用 s3.Client 对象执行此操作:

objects = client.list_objects(Bucket=cfg['bucket'])

由于桶是空的,这是一项轻量级操作,并且大部分情况下都是单衬管。 (包裹在 try 块中)


是的,您可以使用IAM 策略模拟 http://boto3.readthedocs.io/en/latest/reference/services/iam.html#IAM.Client.simulate_principal_policy为了那个原因。这是一个例子:

import boto3

iam = boto3.client('iam')
sts = boto3.client('sts')

# Get the arn represented by the currently configured credentials
arn = sts.get_caller_identity()['Arn']

# Create an arn representing the objects in a bucket
bucket_objects_arn = 'arn:aws:s3:::%s/*' % 'my-test-bucket'

# Run the policy simulation for the basic s3 operations
results = iam.simulate_principal_policy(
    PolicySourceArn=arn,
    ResourceArns=[bucket_objects_arn],
    ActionNames=['s3:PutObject', 's3:GetObject', 's3:DeleteObject']
)
for result in results['EvaluationResults']:
    print("%s - %s" % (result['EvalActionName'], result['EvalDecision']))

您可以找到所有 s3 操作here http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html.

需要注意的是,IAM 最终是一致的,因此,如果您动态创建用户,您可能仍然需要等待一段时间才能传播更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 boto3 验证 S3 凭证,无需 GET 或 PUT 的相关文章

  • 如何使用 Rails 应用程序中的 s3 在存储桶之间复制文件?

    我目前正在开发一个 Rails 应用程序 尝试将视频从 s3 中的一个存储桶复制 移动到另一个存储桶 但是我在 Rails 应用程序上不断收到代理错误 502 在杂种日志中 它显示 无法分配内存 一旦发生此错误 应用程序就会终止 我们必须重
  • Iron Python 错误:预期 或 bytearray,得到 用于串行通信

    无法理解这一点 当我使用 python shell 运行时 它可以工作 但不能 当使用 Iron python 调用时 它抛出上面的错误 C scriptEngine ExecuteFile path var testFn scriptSc
  • 使用正则表达式抓取文本正文,排除特定条件

    我正在使用 Python 正则表达式来获取已解析电子邮件的正文 该正文可能不包含任何内容 也可能看起来像这样 一些连贯的句子 拉尔斯克法 ljkd 其他的东西 几行电子邮件签名等等 等等等等等等 我想要电子邮件正文中的所有内容 不包括签名行
  • Python 的分布式锁管理器

    我有一堆具有多个实例的服务器 这些实例访问的资源对每秒的请求有硬性限制 我需要一种机制来锁定所有正在运行的服务器和实例对此资源的访问 我在github上找到了一个restful分布式锁管理器 https github com thefab
  • PyCharm 调试模式下的键盘中断

    在调试模式下 有什么方法可以在 PyCharm IDE 3 1 中发送键盘中断事件吗 不幸的是 没有简单的方法可以做到这一点 您将需要使用psutil和signal模块 为此 您需要安装psutil最好的方法是通过pip pip insta
  • 使用 AWS Lambda 从 AWS S3 读取并提取巨大的 zip 文件

    我正在开发数据管理应用程序 客户可以上传zip file approx 250 MB 与多个text files approx 1500 MB on AWS S3 但由于记忆有限aws lamda 最大 1536MB 大小 我能够提取 50
  • 使用 eb-cli 创建单实例 Elastic Beanstalk 应用程序

    所以我有一个带有适当 Procfile Buildfile 的 java 应用程序 我已在我们的临时 Elastic Beanstalk 环境中运行 eb create 但我必须进行手动配置更改以使其成为单一实例类型而不是负载平衡实例类型
  • python 2.7模块pandas未安装“无法导入名称哈希表”

    我尝试在论坛 谷歌上寻找这个问题的答案 但我找不到任何东西 我的问题是这样的 来自 python 控制台 gt gt gt import pandas cannot import name hashtable Traceback most
  • 现在与出生日期之间的年、月、日、分钟差异

    import datetime birthday datetime datetime 1996 8 15 differnce datetime datetime now birthday This returns a timedelta o
  • 包装一个类,其方法返回该类的实例

    我需要编写一个类来包装第三方包中的类 通常 第三方类具有返回第三方类实例的方法 这些方法的包装版本必须将这些实例转换为包装类的实例 但我无法使其工作 我正在使用 Python 2 7 和新式类 基于创建一个包装类来围绕现有函数调用前置和后置
  • 从 Power BI Web 刷新 AWS RDS 数据库

    我在 Power BI Desktop 中创建了一个报表 连接到 AWS RDS 数据库 并将其发布到 Power BI Web 应用程序 目的是从 Web 应用程序刷新数据集 我尝试使用 MySQL 和 SQL Server 在 RDS
  • AWS EMR 引导操作为 sudo

    我需要更新 etc hosts适用于我的 EMR 集群 EMR AMI 4 3 中的所有实例 整个脚本无非就是 bin bash echo e ip1 uri1 gt gt etc hosts echo e ip2 uri2 gt gt e
  • 如何让AWS Lambda停止执行?

    我有一个AWSLambda 函数执行操作Kinesis Firehose 该函数使用退避机制 此时我认为这是浪费我的计算时间 但无论如何 在我的代码中的某个时刻 我希望执行失败 我应该使用什么命令来停止执行 附注 我发现有这样的命令 con
  • S3.getSignedUrl 接受多种内容类型

    我正在使用react s3 uploader节点包 它接受一个signingUrl用于获取用于将对象存储到 S3 中的signedUrl 目前 我已经配置了一个 lambda 函数 带有 API 网关端点 来生成此signedUrl 经过一
  • 避免在 AWS Lambda 上使用 netcore2.0 和 Serilog 进行两次日志记录

    将我的 netcore 项目升级到 2 0 后 当我的应用程序在使用 Serilog 框架的 AWS Lambda 上运行时 我会看到双日志 请参阅下面我的设置 public void ConfigureServices IServiceC
  • AWS Fargate 任务错误 - ResourceInitializationError:无法下载环境文件:无法写入临时文件:AccessDenied

    我正在尝试使用容器定义下的环境文件配置 S3 ARN 从 Fargate ECS 任务访问存储在 S3 存储桶中的 env 文件 但 ECS 任务因停止原因而失败 资源初始化错误 无法下载 env 文件 文件下载命令 非空错误流 无法下载文
  • AWS Lambda。延迟调用

    我需要使用亚马逊工具构建 任务调度程序 主要问题是我需要执行一次任务 延迟很大 可能是几个小时或几周 我尝试研究如何使用 CloudWatch 和 Lambda 函数构建它 据我了解 我需要使用单独的规则来执行一次超时 但 AWS 只允许我
  • 亚马逊 SQS 标签

    我们正在尝试在两个 AWS 应用程序之间设置 Amazon SQS 管理层希望跟踪与所有亚马逊资源相关的成本 是否可以标记 Amazon Simple Queue Service 资源 SQS 现在支持此功能 https aws amazo
  • 如何以 Rails 形式将图像从 上传到具有 Rails Active Storage 的 S3?

    正如标题中所述 我正在尝试使用 Rails 的 Active Storage 从嵌套在 Rails 表单中的元素将图像上传到我的 S3 存储桶 到目前为止我已经能够使用使用 Active Storage 上传图像 这User class h
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐