将 python 变量的值上传到 GCS 中的文件而不写入本地源文件?

djg*_*gcp 1 python google-cloud-storage google-cloud-platform apache-nifi

我正在 NiFi 中从 Kafka 读取数据,并想使用 python 脚本将数据上传到 GCS。到目前为止,我们一直在 NiFi 中使用 PutGCS 对象处理器,但希望避免使用 GCP 控制器服务,因为当 GCP 服务帐户密钥发生更改时,我们必须再次禁用并启用它们(我们已通过 python 实现了自动化)。

所以我们正在考虑使用python脚本来获取NiFi流文件中的数据并将其写入GCS。问题是我们不想将数据写入本地文件然后将其推送到 GCS。有没有办法将Python变量中保存的数据直接写入文件GCS?

我们正在寻找类似于 Node.js 可用的东西,如下所示:

如何使用nodejs将内存文件数据上传到谷歌云存储?

如何将内存中的multer文件缓冲区上传到google云存储桶?

Dan*_*ndo 5

我同意 John Hanley 发表的评论,并且我会使用upload_from_string()方法。请注意,您必须将 NiFi 流文件的内容转换为字符串变量,然后使用该方法以类似的方式将 blob 上传到 Cloud Storage:

from google.cloud import storage

def upload_blob(bucket_name, destination_blob_name, data_from_flowfile_as_string):
    """Uploads a file to the bucket."""
    # bucket_name = "your-bucket-name"
    # 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_string(data_from_flowfile_as_string)

Run Code Online (Sandbox Code Playgroud)

我对读取 NiFi 流文件的复杂性没有任何相关知识,或者如果将其内容保存为字符串变量存在任何相关挑战,我相信您可以在社区中找到另一篇文章以及其他Github 代码对于从流文件中获取所需的内容很有用。

在 GCP Cloud Storage 方面,请注意,使用 Cloud Storage 客户端库将要求您为脚本设置所需的身份验证,以便与您的存储桶进行任何交互,如文档相关部分所述这可以使用服务帐户密钥和GOOGLE_APPLICATION_CREDENTIALS环境变量。