Cloud Funcsionsを個別に呼び出す(リトライ処理)
# 概要
Cloud FunctionsをGCSに保存したタイミングで、画像データを変更してもう一度GCSにアップロードしたい。
## WebUIから実行
関数をテストから実行する
dataで必要なパラメータを指定。
今回はbucketとfileを使っていたのでその2つを指定する
以下は実際に読んでるコード
```
exports.helloWorld = (event, callback) => {
const object = event.datat;
console.log(`Bucket: ${object.bucket} File: ${object.name}`);
```
## コマンドラインからの実行
関数名、リージョンを指定して呼び出す
```
gcloud --project [PROJECT-NAME] beta functions call helloWorld --region asia-northeast1 --data '{"bucket":"hogehoge","name":foo.png"}'
```
Cloud FunctionsをGCSに保存したタイミングで、画像データを変更してもう一度GCSにアップロードしたい。
## WebUIから実行
関数をテストから実行する
dataで必要なパラメータを指定。
今回はbucketとfileを使っていたのでその2つを指定する
以下は実際に読んでるコード
```
exports.helloWorld = (event, callback) => {
const object = event.datat;
console.log(`Bucket: ${object.bucket} File: ${object.name}`);
```
## コマンドラインからの実行
関数名、リージョンを指定して呼び出す
```
gcloud --project [PROJECT-NAME] beta functions call helloWorld --region asia-northeast1 --data '{"bucket":"hogehoge","name":foo.png"}'
```
Cloud Functionsを使ってImageMagickを使って画像変換してみる
JSからImageMagickを使う
nodeでImageMagickを使うライブラリがある
gm https://github.com/aheckmann/gm
こちらを使って行う
const gm = require("gm").subClass({ imageMagick: true });
gm('image.png')
.colorspace("cmyk")
.write('image.tif')
GCSからダウンロード
渡された引数にGCSのオブジェクトが渡されるのでそれを使ってダウンロードする
const object = event.data;
const file = storage.bucket(object.bucket).file(object.name);
const tempLocalPath = `/tmp/${path.parse(file.name).base}`;
file.download({ destination: tempLocalPath })
.catch(err => {
console.error("Failed to download file.", err);
return Promise.reject(err);
})
.then(() => {
console.log(`Image ${file.name} has been downloaded to ${tempLocalPath}.`);
})
GCSへアップロード
ダウンロードの続きでbucketに対してuploadを行う
const newFileName = file.name.replace(".png", ".tif");
file.bucket
.upload(tempLocalPath, {
destination: newFileName,
metadata: { contentType: "image/tiff" }
})
.catch(err => {
console.error("Failed to upload cmyk image.", err);
return Promise.reject(err);
});
デプロイ
プロジェクトの指定--project [PROJECT NAME]
regionの指定
--region asia-northeast1
デフォルトだとus-central1になる
実際のコマンドは以下
gcloud --project [PROJECT] beta functions deploy pngToCMYKConverter --region asia-northeast1 --trigger-resource sheet-yournail-staging --trigger-event google.storage.object.finalize
他のリージョンにDeployしてモジュールを削除
gcloud --project [PROJECT] beta functions deploy pngToCMYKConverter参考
https://cloud.google.com/functions/docs/tutorials/imagemagick?hl=ja
登録:
投稿 (Atom)
ReactNativeでAndroid対応する話
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
perlにおいて例外を発生するやり方は、普通、warnとかdieとかですが、コール元の情報が表示されないため、例外が発生して事が分かっても、どのように呼ばれて例外が発生したのか分かりづらい事が多々あります。(たぶん) そんなこんなで、より解析しやすいcarp/croakをちょっと...
-
Fastlaneを使ってデバイスの登録を行い、Provisioning Profileへの追加、Xcodeの更新を行う デバイスの追加 register_devicesで追加 https://docs.fastlane.tools/actions/#register...
-
UILabelの高さ取得に気をつけること 1. xibやstoryboradの指定したFontと、プログラムで指定しているフォントは同じかどうか 2. viewDidLoad時ではまだviewのサイズが決まっていない ロジック NSString func...