Платформа Google AI не может писать в облачное хранилище

При выполнении задания tensorflow-cloud на платформе Google AI точка входа в задание следующая:

import tensorflow as tf

filename = r'gs://my_bucket_name/hello.txt'
with tf.io.gfile.GFile(filename, mode='w') as w:
  w.write("Hello, world!")

with tf.io.gfile.GFile(filename, mode='r') as r:
  print(r.read())

Задание выполнено успешно, в логах печатается привет, мир.

Ковш и задание находятся в одном регионе.

Но я не могу найти файл в облачном хранилище. Его там нет. Я запустил несколько других тестов, где я сделал tf.io.gfile.listdir, затем написал новый файл и снова tf.io.gfile.listdir, я распечатал до и после, кажется, что файл был добавлен, но когда я открываю облачное хранилище, я не могу его там найти. Также смог читать файлы из хранилища.

Я не получаю никаких ошибок с разрешениями, и, как говорится в официальных документах, AI Platform уже имеет разрешение на чтение / запись в облачное хранилище.

Вот мой main.py файл:

import tensorflow_cloud as tfc

tfc.run(
   entry_point="run_me.py",
   requirements_txt="requirements.txt",
   chief_config=tfc.COMMON_MACHINE_CONFIGS['CPU'],
   docker_config=tfc.DockerConfig(
      image_build_bucket="test_ai_storage"),
)

Это самая минимальная версия, в которой я могу воспроизвести проблему.




Ответы (1)


Облачное хранилище - это не файловая система. Помня об этом, вы можете выполнять загрузки, загрузки или Операции удаления в сегменте.

Вы пытаетесь открыть файл и записать в него данные. Что вам нужно сделать, так это создать свой файл локально, а затем загрузить его в желаемую корзину.

from google.cloud import storage


def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    # bucket_name = "your-bucket-name"
    # source_file_name = "local/path/to/file"
    # destination_blob_name = "storage-object-name"

    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    blob.upload_from_filename(source_file_name)

    print(
        "File {} uploaded to {}.".format(
            source_file_name, destination_blob_name
        )
    )
person Joss Baron    schedule 18.11.2020