将 python 变量的值上传到 GCS 中的文件而不写入本地源文件?
Upload value of python variable to a file in GCS without writing to a local source file?
我正在 NiFi 中从 Kafka 读取数据,并想使用 python 脚本将数据上传到 GCS。到目前为止,我们一直在 NiFi 中使用 PutGCS 对象处理器,但希望避免使用 GCP 控制器服务,因为当 GCP 服务帐户密钥更改时我们必须禁用并再次启用它们(我们已通过 python 自动执行此操作)。
所以我们在考虑使用python脚本来获取NiFi flowfile中的数据并写入GCS。问题是我们不想将数据写入本地文件,然后将其推送到 GCS。有没有办法将保存在 python 变量中的数据直接写入文件 GCS?
我们正在寻找类似于 node.js 可用的内容,如下所示:
和
How to upload the multer file buffer in memory to google cloud storage bucket?
我同意 John Hanley 发表的评论,我会使用 upload_from_string() 方法。请注意,您必须将 NiFi 流文件的内容转换为字符串变量,然后使用该方法以类似于以下方式将 blob 上传到云存储:
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)
我对读取 NiFi 流文件的复杂性没有任何相关知识,或者如果将其内容保存为字符串变量有任何相关挑战,我相信您可以找到其他 within the community as well as this other Github code对于从 Flowfile 中获取所需的内容很有用。
在 GCP 云存储方面,请注意,使用云存储客户端库将要求您为脚本设置所需的身份验证,以便与您的存储桶进行任何交互,如 documentation,这可以使用服务帐户密钥和 GOOGLE_APPLICATION_CREDENTIALS
环境变量来实现。
我正在 NiFi 中从 Kafka 读取数据,并想使用 python 脚本将数据上传到 GCS。到目前为止,我们一直在 NiFi 中使用 PutGCS 对象处理器,但希望避免使用 GCP 控制器服务,因为当 GCP 服务帐户密钥更改时我们必须禁用并再次启用它们(我们已通过 python 自动执行此操作)。
所以我们在考虑使用python脚本来获取NiFi flowfile中的数据并写入GCS。问题是我们不想将数据写入本地文件,然后将其推送到 GCS。有没有办法将保存在 python 变量中的数据直接写入文件 GCS?
我们正在寻找类似于 node.js 可用的内容,如下所示:
How to upload the multer file buffer in memory to google cloud storage bucket?
我同意 John Hanley 发表的评论,我会使用 upload_from_string() 方法。请注意,您必须将 NiFi 流文件的内容转换为字符串变量,然后使用该方法以类似于以下方式将 blob 上传到云存储:
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)
我对读取 NiFi 流文件的复杂性没有任何相关知识,或者如果将其内容保存为字符串变量有任何相关挑战,我相信您可以找到其他
在 GCP 云存储方面,请注意,使用云存储客户端库将要求您为脚本设置所需的身份验证,以便与您的存储桶进行任何交互,如 documentation,这可以使用服务帐户密钥和 GOOGLE_APPLICATION_CREDENTIALS
环境变量来实现。