Ошибка доступа к корзине с помощью cloud composer

#google-cloud-composer

#google-cloud-composer

Вопрос:

Я получаю ошибку при попытке получить доступ к корзине с помощью cloud composer…

[2019-03-18 11:50:00,651] {models.py:1594} ОШИБКА — 404 ПОЛУЧЕНИЯhttps://www.googleapis.com/storage/v1/b/gs://xxxx-cloud-composer?projection=noAcl : Не найдено

     def Ian_Log_Message():
        from google.cloud import storage
        import logging
        logging.info('Hello Ian')
        gcs_bucket=models.Variable.get('gcs_bucket')
        logging.info('gcs_bucket - ' gcs_bucket)
        storage_client = storage.Client()
        bucket_results_out = storage_client.get_bucket(gcs_bucket)
  

Корзина существует, и она регистрирует правильную корзину.
Я настроил учетную запись службы для среды.
У учетной записи службы есть разрешения..

Администратор BigQuery

Администратор Composer

Администратор среды и объекта хранения

Работник Composer

Специалист по проверке безопасности

Участник учетной записи службы

Администратор хранилища

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

Комментарии:

1. Насколько я понимаю: у Airflow есть некоторые операторы GCS. Вы пробовали их использовать?

2. Прошу прощения, но я не знаю, на что вы ссылаетесь?

3. Здесь вы можете найти набор операторов GCP. Должен быть такой, который может выполнить нужную вам задачу: airflow.apache.org/integration.html#gcp-google-cloud-platform

4. Спасибо, сейчас я провожу расследование и пытаюсь заставить операторов работать. У меня все еще возникают проблемы с аутентификацией, но я постараюсь продолжать.

Ответ №1:

Ошибка 404 указывает на то, что службе не удалось найти заданную корзину GCS. При просмотре спецификации GCS API и вашего сообщения об ошибке выясняется, что вам, вероятно, не следует использовать gs://{bucket}, вместо этого models.Variable.get('gcs_bucket') следует возвращать только имя корзины (например, foo как указано в gs://foo ).