【发布时间】:2017-11-02 07:10:59
【问题描述】:
有没有办法验证一组给定的 S3 凭证是否可以访问特定的存储桶,而无需执行某种明确的 PUT 或 GET 操作?
实例化 s3.Client、s3.Resource 或 s3.Bucket 对象似乎根本无法验证凭据,更不用说存储桶访问了。
boto3 1.4.7。 蟒蛇2.7.13。
我们有自动创建存储桶的自动化和编排功能,我想包含一个验证用户访问密钥和秘密的部分。我知道存储桶在我创建后就存在了。桶是空的。
我想验证用户是否有权访问而不执行 PUT 操作。
感谢您的帮助。
* 更新 *
我最终使用了一个 s3.Client 对象:
objects = client.list_objects(Bucket=cfg['bucket'])
由于桶是空的,这是一个轻量级的操作,并且大部分是单行的。 (包装在 try 块中)
【问题讨论】:
-
小心
list_objects方法,它将返回前 1000 个。作为替代方案,您可以首先使用s3_bucket = s3.Bucket(my_bucket)从 S3 资源s3 = boto3.resource('s3')实例化存储桶my_bucket = cfg['bucket'],然后您可以使用.objects.all()方法,该方法将提供一个ObjectSummary迭代器,它允许您获取所有对象,例如all_objects = [s3.Object(my_bucket, s3_object.key) for s3_object in s3_bucket.objects.all()]
标签: python-2.7 amazon-web-services amazon-s3 boto3