【发布时间】:2021-03-19 05:48:59
【问题描述】:
我已经实现了以下代码,但是每当我运行 Google 函数 HTTP 触发器时,我都会收到“错误:无法处理请求”错误。我检查了日志文件以查看错误(如下),但在它上面是我试图运行以获取密钥的代码。我想检索一个密钥,我可以使用它来测试它以连接到存储桶 - 这甚至可能吗???这是一种为某人提供密钥的方式,以便他们可以连接到存储桶并上传一些数据。我正在尝试复制 Azure 使用的 SAS,以便授予对存储帐户的访问权限。
service_account_email = 'demo@appspot.gserviceaccount.com'
credentials = service_account.Credentials.from_service_account_file(
filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
scopes=['https://www.googleapis.com/auth/cloud-platform'])
service = googleapiclient.discovery.build(
'iam', 'v1', credentials=credentials)
key = service.projects().serviceAccounts().keys().create(
name='projects/-/serviceAccounts/' + service_account_email, body={}
).execute()
newrequest 6dox145ag5e0 Traceback(最近一次调用最后一次):文件 "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", 第 402 行,在 run_http_function 结果 = _function_handler.invoke_user_function(flask.request) 文件“/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py”, 第 268 行,invoke_user_function 返回 call_user_function(request_or_event) 文件 "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py", 第 261 行,在 call_user_function 返回 self._user_function(request_or_event) 文件“/user_code/main.py”,行 33、在hello_world 文件名=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],文件 “/env/lib/python3.7/os.py”,第 681 行,在 getitem 中引发 KeyError(key) from None KeyError: 'GOOGLE_APPLICATION_CREDENTIALS'
【问题讨论】:
-
你能解释一下你的用例吗?我了解到您希望即时创建密钥以让用户将数据下载和上传到 Cloud Storage,对吗?
-
你好纪尧姆。基本上我想要完成的是: - 用户只需转到 Google 函数的 URL 即可触发函数。该函数在存储桶中创建一个位置来存储数据。该函数还创建一个密钥,然后用户可以检索该密钥以连接到存储桶。我希望这个密钥可以让他们访问例如 googlebucket/companyname/。我希望这个功能只会创建一个允许他们访问该路径的密钥。 - 然后在他们连接后,用户上传数据,这会触发另一个功能来查看文件。我可以这样做吗?
标签: python google-cloud-functions