有没有办法在 Cloud Function 中获取 json 文件内容?

Is there a way to get a json file content in the Cloud Function?

各位!

我确实需要从与 main.py 文件位于同一文件夹中的 json 文件中获取内容。问题是:Google Cloud Function can't 运行 the open() statement. 出现如下错误:

没有这样的文件或目录:'mytest.json'

现在,我正在将我的文件上传到云存储中,但我希望它在云源中。 那么,如何从云源获取我的 json 文件内容?

这是我在云源中的代码结构:

.
├── main.py
└── requirements.txt
└── mytest.json

mytest.json

{
    'test': 'Hello World!'
}

main.py:

import json
with open('mytest.json', 'r') as testJson:
     testDict = json.loads(testJson.read())
     print(testDict['test'])

我已尝试重现您的问题,但未能发现您的错误。正如 Doug 所提到的,当您部署函数时,目录中的所有文件都会上传到函数的工作区。你如何部署你的功能?

对于此复制,我使用了云 Shell。我在那里创建了一个名为 ReadJson 的目录,其中包含两个文件:main.py 和 myfile.json.

在云端 shell,在 ReadJson 目录中我执行了这个 gcloud 命令:

gcloud 函数部署 hello_world --runtime python37 --trigger-http

使用下面的代码,当触发该功能时,您应该在浏览器上观察到 "HelloWorld"。

def hello_world(request):
    """Responds to any HTTP request.
    Args:
        request (flask.Request): HTTP request object.
    Returns:
        The response text or any set of values that can be turned into a
        Response object using
        `make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
"""
    request_json = request.get_json()
    if request.args and 'message' in request.args:
        return request.args.get('message')
    elif request_json and 'message' in request_json:
        return request_json['message']
    else:
        with open('myfile.json') as json_file:
            data = json.load(json_file)
        return data['test']