#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
).