簡體   English   中英

如何使用 boto3 檢查僅存在特定的 s3 存儲桶

[英]How to check only specific s3 bucket exists using boto3

我正在嘗試在我的aws帳戶中列出一個特定的存儲桶。 但是我使用了list_buckets()方法來返回所有的桶。 目的是檢查這個bucket是否存在

我可以使用head_bucket()方法,但它不返回任何回報(根據boto3文檔)

我正在使用mistral工作流來獲取這個存儲桶(仍然調用boto3方法)而不是python

但不知何故,是否有boto3方法來檢查s3存儲桶是否存在?

我需要獲得回報並相應地進行比較以檢查存儲桶是否存在。 因此,如果滿足該條件,則只會觸發mistral stackstorm 工作流程中的下一個任務。

如果您需要,我也會提供工作流程。

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

您應該能夠使用head_bucket()方法。 如果存儲桶存在並且您具有訪問它的必要權限,這將返回 200 OK。 如果存儲桶不存在或您沒有權限,您將收到 403 或 404。

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

您可以使用get_bucket_*()操作之一,例如get_bucket_location()

但是,只有當您有權在存儲桶上運行此操作並且該存儲桶與您的 IAM 憑證屬於同一賬戶時,這才會正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM