試圖從谷歌應用程序引擎標準運行瓶使用client library for Python訪問谷歌雲存儲桶。谷歌雲存儲權限在谷歌應用程序引擎標準中被拒絕
(編輯)沒有正式支持。請參閱解決方法的答案。
代碼看起來是這樣的..
from flask import Flask
from google.cloud import storage
# UNCOMMENT THIS FOR SOLUTION
#import requests_toolbelt.adapters.appengine
#requests_toolbelt.adapters.appengine.monkeypatch()
app = Flask(__name__)
@app.route('/endpoint', methods=['POST', 'PUT'])
def upload_to_storage():
try:
# file info
filename = secure_filename(file.filename)
mimetype = file.content_type
# connect to bucket
client = storage.Client(project='projectName')
bucket = client.get_bucket('bucketName')
# upload file to bucket
blob = storage.Blob(filename, bucket)
blob.upload_from_file(file, content_type=mimetype, num_retries=10)
return jsonify({'status':200})
except:
return jsonify({'status':500})
錯誤消息:
( '連接中斷。',錯誤(13 '權限被拒絕'))
應用程序引擎應用程序作爲特定服務帳戶運行。您的應用引擎應用的服務帳號是否有權使用「my-bucket」存儲區執行相關操作? –
是的,服務帳戶有權限。我認爲發生了什麼是我需要確保請求使用URLFetch https://cloud.google.com/appengine/docs/standard/python/issue-requests –