Как проверить, что с помощью boto3 существует только указанная c s3 корзина - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь перечислить указанное c ведро в моей aws учетной записи. Но я использовал list_buckets() метод, который возвращает все сегменты. Цель состоит в том, чтобы проверить, существует ли этот сегмент или нет

Я мог бы использовать метод head_bucket(), но он ничего не возвращает взамен (согласно документации boto3)

Я использую Мистраль рабочие процессы, чтобы получить этот контейнер (все еще вызывая boto3 методов), а не python

Но каким-то образом, есть ли метод boto3 чтобы проверить, существует ли s3 ведро или нет?

Мне нужно получить возврат и сравнить его соответственно, чтобы проверить, существует ли ведро. Поэтому, если это условие удовлетворяется, оно только запускает следующую задачу в mistral рабочем процессе стека-шторма.

В случае необходимости я также добавлю рабочий процесс.

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

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Вы должны быть в состоянии использовать метод head_bucket(). Это вернет 200 OK, если корзина существует, и у вас есть необходимые разрешения для доступа к ней. Если корзина не существует или у вас нет разрешения, вы получите 403 или 404.

Boto3 Документация: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3 .Client.head_bucket

0 голосов
/ 19 февраля 2020

Вы можете использовать одну из операций get_bucket_*(), например, get_bucket_location().

Однако это будет работать правильно, только если у вас есть разрешение на запуск этой операции в корзине и если корзина принадлежит той же учетной записи, что и ваши учетные данные IAM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...