gcloud beta functions deploy gcp-data-transfer --project probable-scout-216702 --runtime python37 --trigger-bucket connector-test-data-securonix --entry-point detect_file
以上是我正在使用的Google云功能。这是我的Google云存储桶上的触发器。我的gcloud函数正在运行,但是我不知道应该在哪里下载文件。我能够将其存储在/tmp/
目录中,但是它仍然不在我自己的系统上,我也不知道哪个{{ 1}}正在下载。我正在使用以下代码:
/tmp
我遇到错误:
def detect_file(file, context):
destination_file_name = "/Securonix/file1.txt"
f = open("/Securonix/file1.txt",'wb')
bucket = validate_message(file, 'bucket')
name = validate_message(file, 'name')
print("here")
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket)
blob = bucket.blob(name)
blob.download_to_file(f)
print('Blob {} downloaded to {}.'.format(
name,
destination_file_name))
def validate_message(message, param):
var = message.get(param)
if not var:
raise ValueError('{} is not provided. Make sure you have \
property {} in the request'.format(param, param))
return var
答案 0 :(得分:0)
云功能执行环境为totally read-only except for /tmp/
,因此您必须下载到该目录。
第二个问题(以及为什么看到FileNotFoundError
而不是PermissionError
的原因是,云功能运行时不存在/Securonix/
目录。 open()
不会为您创建新目录,您必须先创建目录,然后才能在其中创建文件。
此外:别忘了delete the file when you are done,因为它存储在内存中。