首页 > 解决方案 > 如何使用 boto3 检查仅存在特定的 s3 存储桶

问题描述

我正在尝试在我的aws帐户中列出一个特定的存储桶。但我使用list_buckets()了返回所有桶的方法。目的是检查这个桶是否存在

我本可以使用head_bucket()方法,但它不会返回任何回报(根据boto3文档)

我正在使用misral工作流程来获取此存储桶(仍在调用boto3方法)而不是python

但是不知何故,有没有一种boto3方法可以检查s3存储桶是否存在?

我需要得到回报并相应地比较它以检查存储桶是否存在。因此,如果满足该条件,它只会触发mistralstackstorm 工作流中的下一个任务。

如果你需要,我也会把工作流程放在一边。

check_if_exists:
        action: aws_boto3.boto3action
        input:
          action_name: "list_buckets"
          region: <% $.bucket_region %>
          service: "s3"
        publish:
          return_code: <% task(check_if_exists).result.result.Buckets.select($.Name) %>
        on-success:
           - task_one
        on-error:
          - fail

标签: amazon-web-servicesamazon-s3boto3

解决方案


您应该能够使用head_bucket()方法。如果存储桶存在并且您具有访问它的必要权限,这将返回 200 OK。如果存储桶不存在或者您没有权限,您将得到 403 或 404。

Boto3 文档:https ://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.head_bucket


推荐阅读