VS Codeの設定
もしもCloudRunが初めてで、VSCodeを使っているのなら、このあたりを試してみてデプロイ出来るようにしておくと良いです。
サンプル アプリケーションからの Cloud Run サービスの作成 | Cloud Code for VS Code | Google Cloud
ソース
CloudRunように作っています。CloudFunctionsでも手直せば動くと思う。
言語はPythonです。
import os
from functions.upload_file import upload_gcs
from flask import Flask, request
# pylint: disable=C0103
app = Flask(__name__)
@app.route('/upload-gcs', methods=['GET', 'POST'])
def local_upload_gcs():
return upload_gcs(request)
if __name__ == '__main__':
server_port = os.environ.get('PORT', '8080')
app.run(debug=False, port=server_port, host='0.0.0.0')
肝心のアップロード処理はこんな感じで
import json
from apiclient import discovery
from googleapiclient.http import MediaIoBaseUpload
from oauth2client.client import GoogleCredentials
def upload_gcs(request):
if request.args and 'image' in request.args:
image = request.args.get('image')
else:
image = request.files.get('image')
if request.args and 'bucketname' in request.args:
request_bucketname = str(request.args.get('bucketname'))
elif request.form and 'bucketname' in request.form:
request_bucketname = str(request.form.get('bucketname'))
# Retrieve credentials
credentials = GoogleCredentials.get_application_default()
# Create service object
service = discovery.build('storage', 'v1', credentials=credentials)
# Create media object
media = MediaIoBaseUpload(
image,
mimetype=image.mimetype
)
# Create request
request = service.objects().insert(
bucket=request_bucketname,
name=image.filename,
media_body=media
)
# Execute request - store file on GCS
results = request.execute()
return_json = json.dumps(results, ensure_ascii=False)
return return_json
参考URL
参考にしたホムペはもちろんあるのですが、日が空いてしまって、どこだかわからず…
もしもわかったら追記します。