如何解决将python变量的值上传到GCS中的文件而不写入本地源文件?
我正在NiFi中从Kafka读取数据,并想使用python脚本将数据上传到GCS。到目前为止,我们一直在NiFi中使用PutGCS对象处理器,但是要避免使用GCP控制器服务,因为我们必须在GCP服务帐户密钥更改时禁用并再次启用它们(我们已通过python对其进行了自动化)。
因此,我们正在考虑使用python脚本来获取NiFi流文件中的数据并将其写入GCS。问题是我们不想将数据写入本地文件,然后将其推送到GCS。有没有办法将python变量中保存的数据直接写入文件GCS?
我们正在寻找类似于以下node.js可用的内容:
How to upload an in memory file data to google cloud storage using nodejs? 和
How to upload the multer file buffer in memory to google cloud storage bucket?
解决方法
我同意约翰·汉利(John Hanley)发表的评论,并且我将使用upload_from_string()方法。请注意,您一定需要将NiFi流文件的内容转换为字符串变量,然后使用该方法以与以下类似的方式将blob上传到Cloud Storage:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
我对读取NiFi流文件的复杂性没有任何了解,或者在将其内容保存为字符串变量时遇到任何相关的挑战,我相信您可以在社区中找到其他post以及其他Github code很有用,以便从Flowfile中获取所需的内容。
在GCP Cloud Storage端,请注意,使用Cloud Storage Client Library将要求您为脚本设置所需的身份验证,以与存储桶进行任何交互,如{{3}的相关部分所述},可以使用服务帐户密钥和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)
环境变量来实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。