クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

2016年7月10日
から hiruta
Windows10 IoT Core by Raspberry Pi 3導入 はコメントを受け付けていません

Windows10 IoT Core by Raspberry Pi 3導入

Raspberry Pi3に、Windows10 IoT Coreを導入。

Raspberry Pi3用Windows10 IoT Coreは、Onboard WiFiドライバ、miniUART、が有効、UARTバンドレートが増えた、GPIOパフォーマンスが向上など、機能向上が図られています。

※Raspberry Pi 3用のWindows10 IoT Core Release Imageが現時点(7/10)存在しませんので、The March 2016 Insider Preview for Windows 10 IoT Coreを使用します。

https://developer.microsoft.com/ja-jp/windows/iot にアクセスし、すぐを作業を開始をクリック。

1-1

①Select your board 「RaspberryPi3」

②Select your hardware 「Flash onto my blank microSD card」

③Select your OS version 「Windows 10 IoT Core Insider Preview」

1-4

 

②Download and install Windows 10 IoT Core Dashboard

Dashboardをダウンロードし、ダウンロードしたsetup.exeをインストールを行います。

1-6

すべてのアプリに、Windows 10 IoT Core→Windows 10 IoT Core Dashboardができています。

Raspberry Pi3用のWindows10 IoT Coreを取得します。※Windows Insider Programに参加要

https://developer.microsoft.com/ja-jp/windows/iot/win10/GetStarted/rpi3/sdcard/insider/getstartedstep2

Manually download and flash a custom image

①Get Windows 10 IoT Core Insider Preview

1-7

 

Buildは、7/10現在、14376(最新番)、14366が選択できます。

13376だと、Performance、Processes表示に不具合があります。

2-3

IoT DashboardからSDカードにOSを書き込みます。Windows10 IoT Core のAdministratorのパスワードはここで設定可能。後から、Web UIから等でも変更は可能ですが。

3

OSを書き込んだSDカードをRasberry Pi3に入れて、Windows10 IoTを起動するとIoT dashboardの自分のデバイスに表示されていると思います。名前解決もちゃんとできています。IPv6で。。

>ping minwinpc

minwinpc [fe80::c846:c78a:c3ba:78%8]に ping を送信しています 32 バイトのデータ:
fe80::c846:c78a:c3ba:78%8 からの応答: 時間 =3ms
fe80::c846:c78a:c3ba:78%8 からの応答: 時間 =1ms
fe80::c846:c78a:c3ba:78%8 からの応答: 時間 =2ms
fe80::c846:c78a:c3ba:78%8 からの応答: 時間 =1ms

Windows10 IoT Coreは、Windows Updateにも対応しています。

実際アプリを開発するには下記が必要になります。

  • Visual Studio Community 2015 Update2 https://www.visualstudio.com/products/visual-studio-community-vs
  • Azure SDK https://azure.microsoft.com/ja-jp/downloads/で、VS2015用をダウンロード
  • Windows 10 IoT Core開発環境

Raspberry Pi3用のStarter Packがないので、Raspberry Pi2用のドキュメントを確認し、3 Setup your PC 5 IoT Core Project Templates 、5 Enable devloper modeを行っておきます。

https://developer.microsoft.com/en-us/windows/iot/win10/kitsetuppcrpi

2016年7月3日
から hiruta
Google Cloud functionsで、Cloud Vision APIを #gcpja はコメントを受け付けていません

Google Cloud functionsで、Cloud Vision APIを #gcpja

Google Cloud Functionsで、Cloud Vision APIを使ってみました。Cloud Functionsを使う利点は、credentialsをアプリに埋め込む必要がない点(内部でAWSだとIAM Role的にcredentialsを取得してくれる。)

まず、ディレクトリの作成。

 mkdir visiontest; cd visiontest;

次に、ライブラリのインストール。node versionは、v0.12.7を使用。

 npm install --save gcloud 

node.jsのvision APIは以下を参照

https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.36.0/vision?method=detectText

Cloud functionsのコードサンプルは以下になります。


var gcloud = require('gcloud')({
projectId: 'xxxxxxxxxx'
});

exports.visiontest = function (context, data){
var vision = gcloud.vision();
if ( data != null ){
var gcs = gcloud.storage();
var myBucket = gcs.bucket('vision-load-image');
var file = myBucket.file(data.name);

vision.detectText(file, function(err, text, apiResponse) {
console.log('text ', text);
data = null;

});
}
context.success();
}

functionsをデプロイ。

gcloud alpha functions deploy visiontest --bucket deploy-bucket --trigger-gs-uri vision-load-image

以前デジカメで撮影した画像をGCSバケットにアップロード。

IMAG0105

gsutil cp IMAG0105.jpg gs://vision-load-image/

Stackdriver loggingに、解析結果が表示されることがわかります。おもけに、精度も高い。コマンドでアップロードする場合は、1度のみ実行されるのだが、Cyberduckで画像ファイルをドラッグドロップすると、なぜうか2回functionsが実行される。

stackdriverlog

GCSに登録された画像を画像解析結果をBigQueryに蓄積していくようなことが可能になります。

安価なOCRシステムが構築できる!?チュートリアルも公開されています。

https://cloud.google.com/functions/docs/tutorials/ocr

今はまだnodeのAPIが公開されていないSpeech APIもよくよくは使えるようになるのかなあ。(GCSに音声ファイルをアップロードすると、音声ファイルを解析して結果を返すとか)

2016/9/22 Update

packages.jsonをデプロイするフォルダに置いておけば、npm install –save gloud等不要です。0.29.0からVision APIのfunctionが使えるようです。

{
"name": "visiontest",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"gcloud": "^0.37.0",
"node-uuid": "^1.4.7"
}
}

2016年6月12日
から hiruta
Google Speech APIを使ってみました! #gcpja はコメントを受け付けていません

Google Speech APIを使ってみました! #gcpja

Limit PreviewのGoogle Speech API少し使ってみました。

音声マイクとしては以下を利用。

サンワサプライ フラット型PCマイク MM-MC23

まずは、SoX Sound eXchangeをダウンロード

https://sourceforge.net/projects/sox/files/sox/14.4.2/sox-14.4.2-win32.zip/download

次に、ダウンロードしたSoX Source eXchangeを適当なフォルダに展開

rec.exe、play.exeをsox.exeをコピーして作成

copy sox.exe rec.exe
copy sox.exe play.exe

AUDIO DEVICE DRIVERの環境変数の設定を行います。

set AUDIODRIVER=waveaudio
rec -c 1 -r 16k output.wav

そこで、マイクから音声を録音し、FLAC形式に変換まで行っておきます。

sox output.wav output.flac

Speech API用のサンプルを取得します。

REST APIでSpeech APIを使用することもできますが、この場合、publicな権限がないとGCS上の音声ファイルを読み込むことができないので、publicでないGCSバケットの音声ファイルを解析するには、下記サンプルのようにcredential認証をアプリケーション内部で行う必要があります。

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

日本語を解析させるには、python-docs-samples/speech/api/speech_gcs.pyで一カ所修正する必要があります。変更内容についてはクローズな情報になっていますので、ここでは記載は差し控えます。

python speech_gcs.py gs://xxxxxxxx/output.flac gs://xxxxxxxx/output.txt

レスポンス待つことなく返ってきます。おまけに高精度で。

$ cat output.txt
{
"responses": [ {
"results": [ {
"alternatives": [ {
"transcript": "おはようございますこんにちは",
"confidence": 0.95833784
} ],
"is_final": true
} ]
} ]
}

言語コードの設定をしないと、『ohayo gozaimasu konnichiwa』となります。
Speech APIの言語も、英語、日本語をはじめ、90言語近くに対応しており、今後Google Homeとのバックエンドに使われそうな予想はしています。

2016年5月8日
から hiruta
Cloud FounctionsでBigQueryにデータを登録 #gcpja はコメントを受け付けていません

Cloud FounctionsでBigQueryにデータを登録 #gcpja

Goolge Cloud Function フルマネージド化されたことでBigQueryへのセンサーデータの送信用のモジュールを書きました。エラー処理とかされていない素の状態です。

nodeのバージョンはFunctions側とそろえておく必要がありますので、npmもfunctions側と同じバージョンを利用。

まず、gcloudモジュールの導入。

gcloud client libraryについては、こちらを参照してください。

 ../node-v0.12.7-linux-x64/bin/npm install gcloud --save

次に、コード本体。プロジェクトIDの記載は必要ですが、credentialsなどは不要です。functions側で自動認証されていると思われます。


var gcloud = require('gcloud')({
projectId: 'XXXXXXXX'
});

exports.bigquerytest = function (context, data){
var bigquery = gcloud.bigquery();
var dataset = bigquery.dataset('iot_data');
var table = dataset.table('sensor_data');

table.insert({
TIMESTAMP: data.timestamp,
temp: data.temp
}, insertHandler);

context.success();
};

function insertHandler( err, insertErrors, apiResponse) {

}

  gcloud alpha functions deploy bigquerytest --bucket gs://XXXXXXXX --trigger-http 

実際データを投入します。

curl -X POST https://us-central1.XXXXXXXXXX.cloudfunctions.net/bigquerytest -d '{"timestamp":"2016-05-08 18:06:00","temp":20}'

 

データがBigQueryに登録されていることがわかります。
screencapture-bigquery-cloud-google-com-results-cms-production-1225-bquijob_78f008d9_1548fa75338-1462699378264

2016年5月8日
から hiruta
Google Cloud functions フルマネージドサービスに移行 #gcpja #gcpug はコメントを受け付けていません

Google Cloud functions フルマネージドサービスに移行 #gcpja #gcpug

5/4以降、Google Cloud functions フルマネージドサービスに移行されました。

フルマネージド移行前からCloud functionsのAPIをEnableにしている場合、Disable→re-Enableが作業が必要になります。過去Functions APIをEnableしたIAMアカウント毎に作業が必須。そうでないと、GKE clusterが起動してしまいます。
また、プロジェクト内にfunctions用のGKE clusterの削除やGKE cluster用に割り当てられたExternal IPもリリースしておきます。

リージョンで初めてデプロイする場合、4分程度かかります。初期設定とか行っているのか。
2度目以降は、10s程度で完了する。8h時間程度間を開けても、10s程度で完了するようです。

functions用のサーバーはunameで確認すると、debian8が動いていることがわかります。

node runtimeは以下になっているので、node moduleを組み込む場合、バージョンをそろえておく必要があります。

v0.12.7

Stackdriver Loggingにもget-logsの内容を確認できます。

asia-east1はまだ対応していないので、europe-east1かus-central1で。

$ gcloud alpha functions deploy helloworld --region asia-east1 --bucket gs://cms-stg-deploy --trigger-http
ERROR: (gcloud.alpha.functions.deploy) ResponseError: status=[400], code=[Bad Request], message=[The request has errors
Problems:
region asia-east1 is not supported
]

Cloud functions自体に、HTTP(S)トリガー機能があるので、raspberry piとかIoTデバイスのセンサー情報をBigQueryに
送信することに使えると思います。

HTTP(S)トリガーですが、POSTのみ対応なので、注意が必要です。

 

 

2016年4月8日
から hiruta
gcpja night に参加しました。 #gcpja はコメントを受け付けていません

gcpja night に参加しました。 #gcpja

4/6 gcpja nightに参加しました。ポイントを。

  • Machine Learning

Google PhotosとかNeural Networkがバックエンドで使われている

iOS app in Swift でラベル認識結果をfirebaseに送るデモ

Speech API

4ステップ程度で簡単に使える。多言語対応はされていない

周囲のノイズの環境でも問題ないようなことも

  • GCP Update

Cloud BigTableは、R/Wとも高速。ただし、GCEとCloud BigTableは同一リージョンにいる場合。

http://googlecloudplatform-japan.blogspot.jp/2016/04/cloud-bigtable-250.html

ダウンタイム無しでディスク拡張ができる。auto resizingに対応しているOSとしていないOSがあるようです。詳細に記載されています。

https://cloud.google.com/compute/docs/disks/persistent-disks#resize_pd

  • GCP Next Feedback

GCP Nextでは新サービスの発表もさほどなかったとのこと。東京リージョン発表も先出しになったし。

キーノートをライブで見ましたが、セキュリティ、インフラの優位性をアピールしていたとのこと

Vision API個人識別まではできない。Google Photos等 のサービスで年齢とかできているので、Vision APIは個人識別とかは省かれているかも。

Cloud Machine Learning

GPU計算にも対応。GPUインスタンスも今後出る可能性もある?

BigQueryも90日以上前のデータのストレージ単価は1/2。スキーマの自動検出

CloudIAMにより、リソース制限を細かく。

2016年3月27日
から hiruta
Google Cloud FounctionsからBigQueryへのアクセス #gcpja #gcpug はコメントを受け付けていません

Google Cloud FounctionsからBigQueryへのアクセス #gcpja #gcpug

Google Cloud Founctionsからgcloudのnode.js moduleでbigqueryにアクセスをしてみました。

が、デプロイ失敗。

$ gcloud alpha functions deploy bigquerytest --bucket XXXXX-deploy --trigger-http
Copying file:///tmp/tmp6OEBwr/fun.zip [Content-Type=application/zip]...
Uploading ...deploy/us-central1-bigquerytest-zyupwaipvuxb.zip: 16 MiB/16 MiB
Waiting for operation to finish...failed.
ERROR: (gcloud.alpha.functions.deploy) OperationError: code=13, message=Error during function code deployment: User function failed to load: Code in file index.js can't be parsed. Please check whether syntax is correct.
Detailed stack trace: Error: Module version mismatch. Expected 14, got 46.
at Error (native)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/user_code/node_modules/gcloud/node_modules/grpc/src/node/src/grpc_extension.js:38:15)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)

モジュールバージョンが合っていないエラーのようだ。

Alphaテスター用google group(cloud-functions-trusted-testers)だと、同じ症状が起きている方の回答を見ると、0.12.7で動くとのこと。

I’ve changed the version of node.js gcloud dependency to 0.28.0 and it has fixed the problem.
What version of node.js are you using ? The function runs under node.js in version 0.12.7.

Ubuntu 14.10には下記node.jsのバージョンがインストールされている。新しめのが入っていた。

hiruta@ubuntu:~$ node -v
v4.4.0
hiruta@ubuntu:~$ npm -v
2.14.20

該当するnode.jsをダウンロードして試してみました。

$ wget https://nodejs.org/download/release/v0.12.7/node-v0.12.7-linux-x64.tar.gz 

パッケージjsonも作成。

$ cat package.json
{
"name": "bigquerytest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"gcloud": "^0.28.0"
},
"devDependencies": {},
"scripts": {
"test": "npm test"
}
}
 npm install gcloud --save 

vi index.js
var gcloud = require('gcloud')({
projectId: '<PROJECT ID>'
});

exports.bigquerytest = function (context, data){
var bigquery = gcloud.bigquery();

var query = 'SELECT url FROM [bigquery-public-data:samples.github_nested] LIMIT 20';
bigquery.query(query, function(err, rows, nextQuery) {
if (err) {
console.log('err::', err);
}
console.log(rows);
if (nextQuery) {
bigquery.query(nextQuery, function(err, rows, nextQuery) {});
}
console.log(rows);
});
context.success();
};

credentialsは別段指定する必要がない。Backendのインスタンス(alpha版の場合、GKE)でCloud APIへのアクセスが許可されているため。
ただし、projectIdの記載は必要です。

$  gcloud alpha functions deploy  bigquerytest  --bucket XXXXX-deploy --trigger-http

デプロイが成功したら、Functions用のHTTP(S) Endpointsにアクセスしてみます。

$ curl -X POST <Functions用のEndPoinit>

ログに、BigQueryから情報が取得できています。

$ gcloud alpha functions get-logs

また、GCSにnginx等のアクセスログを退避して、Cloud FounctionsでBigQueryにinsertするユースケースにも使えると思われます。

2016年3月12日
から hiruta
Google Cloud Functions 試用レポート #gcpja #gcpug はコメントを受け付けていません

Google Cloud Functions 試用レポート #gcpja #gcpug

gcf_email_img

AWS LambdaライクなEvent Driven なサービスがGoogle Cloud Platformにも、以前書きましたが、
Google Cloud Functionsが使えるようになりましたので、レポートします。

まずは、プログラムコードをアップロードするGCSバケットを作成しておきます。

$ gsutil mb gs://BUCKET/
 $ mkdir helloworld; cd helloworld 

まずは、お約束なhelloworldから

$ vi index.js
exports.helloworld = function (context, data) {
context.success('Hello World!');
};

次に、コードのデプロイ。実行トリガーとして、HTTPトリガーを指定しています。HTTPトリガーはAWS API Gatewayに近い。
ただし、HTTP POSTのみ対応しており、GETは現状未対応になります。
トリガーとして、GCS、Google Pub/Subがそのほかに対応しています。

Cron トリガーについては、テスター用のGoogle Groupで今後対応しそうなdiscussionがありました。

Cron triggering for Cloud Functions is on our radar.

$ gcloud alpha functions deploy helloworld --bucket BUCKET --trigger-http
Copying file:///tmp/tmpjPc7fq/fun.zip [Content-Type=application/zip]...
Uploading ...g-deploy/us-centra
l1-helloworld-mtlxhowupkjw.zip: 193 B/193 B
Waiting for operation to finish...done.
entryPoint: helloworld
gcsUrl: gs://BUCKET/us-central1-helloworld-mtlxhowupkjw.zip
latestOperation: operation-adc6aebf-e0d9-471e-92fb-8cdf865fc206
name: projects/PROJECT_ID/regions/us-central1/functions/helloworld
status: READY
triggers:
- webTrigger:
url: https://us-central1.PROJECTID.cloudfunctions.net/helloworld

初回のデプロイは、GKE Clusterを作成する(クラスタ数2)ので、多少時間がかかります。

$ curl -X POST https://us-central1.PROJECTID.cloudfunctions.net/helloworld
Hello World!

Cloud Function用のSSL証明書として、Let’s Encrypt Authority X1が使われていることを確認。

画像4

実行ログを確認すると、functionsコールは1 ms。

$ gcloud alpha functions get-logs helloworld
LEVEL NAME EXECUTION_ID TIME_UTC LOG
D helloworld - 2016-03-12 00:36:54.512 User function helloworld loaded
D helloworld OLsMt0WnTFFG-0 2016-03-12 00:38:20.796 User function triggered, starting execution
D helloworld OLsMt0WnTFFG-0 2016-03-12 00:38:20.797 Execution took 1 ms, user function completed successfully

最後に、Cloud Founctionsの削除。


$ gcloud alpha functions delete helloworld
Resource [projects/PROJECTID/regions/us-central1/functions/h
elloworld] will be deleted.

Do you want to continue (Y/n)? y

Waiting for operation to finish...done.
Deleted [projects/PROJECTID/regions/us-central1/functions/helloworld].

Google Cloud Functions削除してもGKE cluterが削除されません。GKEクラスタはn1-standard-1(クラスタのタイプは変えられない?)。

GKE Clusterを頻度に削除すると、週5の証明書の制限に抵触して接続が行えなくなることがあります。

I inspected your logs – we are not really supporting a model in which you would remove clusters that often
(after every deployment).
That is why you got issues with HTTPS (hitting limit on number certificates,
currently 5 per week for whole project). HTTP (without S) endpoint should be fine.

The workaround would be not to remove clusters after each “test” – instead let them run –
you should get a coupon from us to finance it for a while.

 

実行環境のDebianの実行コマンドをnode.jsから実行させることもむろん可能です。


$ vi index.js
var exec = require('child_process').exec;

exports.sampletest = function ( context,data) {
child = exec(data.cmd, function (error) {
context.done(error, 'Process complete!');
});

child.stdout.on('data', console.log);
child.stdout.on('data', console.error);
};
$ gcloud alpha functions deploy sampletest --bucket cms-stg-deploy  --trigger-http
$ curl -X POST https://us-central1.PROJECTID.cloudfunctions.net/sampletest --data '{"cmd":"cat  /etc/debian_version"}'
$ gcloud alpha functions get-logs
sampletest nRrOVegpcqrn-0 2016-03-12 01:11:34.008 7.9

Cloud Functionsの実行環境としてはDebian 7.9が使われていますことがわかります。BigQuery、DataStoreとの連携も可能かと。BackendでVMインスタンスが利用されていますが、インスタンスの管理が低減できる。

現在以下Execution Failureがあるようです。

  • リトライの保証はないが、60秒間隔で2回行われること
  • 最大実行時間60秒(デフォルトでデプロイ時に変更可能)
  • Functionsが無限ループを起こす場合、ブロックされる。

2016年2月25日
から hiruta
無料SSL証明書Let’s Encrypt 導入してみました。 はコメントを受け付けていません

無料SSL証明書Let’s Encrypt 導入してみました。

https://letsencrypt.org/ 無料SSL証明書を導入してみました。

letsencrypt-autoを実行すると、必須パッケージをもろもろダウンロード、インストールを自動で行ってくれます。

./letsencrypt-auto certonly --webroot --webroot-path /www -d <domain> -d www.<domain>

GCP HTTP Load balancerで使うためには、global forwarding ruleを追加します。

screencapture-console-cloud-google-com-networking-loadbalancing-http-details-web-map-globalForwardingRules-add-1456408980943

上記Certificateから、SSL証明書、秘密鍵、中間証明書を登録します。

GCP HTTP Load balancerにも発行した証明書を登録できました。ただ、中間証明書は、letsencrpt-autoコマンドで作成されたものではなく、下記から取得しました。中間証明書は、Let’s Encrypt Authority X2でなく、Let’s Encrypt Authority X1を使います。

https://letsencrypt.org/certificates/

Redirect Loopを防ぐのに、nginxの設定を一部変更しています。

location / {
root /www;
index index.php index.html index.htm;
if ($http_x_forwarded_proto = "http") {
rewrite ^/(.*)$ https://www.domain/$1 permanent;
}

また、ブログとしてWordpressを利用している場合、wp-config.phpも変更します。

define('FORCE_SSL_ADMIN', true);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}

ただ、Let’s EncryptのSSL証明書は三ヶ月と短いので、更新の自動化は必要かと。

SSL証明書の更新自動化は下記を使えばできそうか。

gcloud compute ssl-certificates create NAME --certificate LOCAL_FILE_PATH --private-key LOCAL_FILE_PATH [--description DESCRIPTION] [GLOBAL-FLAG …]
gcloud compute target-https-proxies update NAME [--ssl-certificate SSL_CERTIFICATE | --url-map URL_MAP] [GLOBAL-FLAG …]

2016年2月14日
から hiruta
Google Cloud Functionsアルファー版公開 #gcpja はコメントを受け付けていません

Google Cloud Functionsアルファー版公開 #gcpja

Google Cloud Functionsがアルファー版公開。

ついに、GCPでもサーバーレスアーキテクチャー

現時点で公式に公開されている情報をまとめてみました。

https://cloud.google.com/functions/docs

マネージドサーバー、実行環境なしで特定機能を利用できるイベントベース非同期のコンピュートソリューション

AWS LambdaのGCS版てところ。

  • マネジードのNode.js実行環境上で実行することができる。
  • イベントトリガーは、Google Cloud Storage、Cloud Pub/Subからのイベントをトリガに実行できる
    ※スケジュール機能はdocsから見る限り現時点ではなさそうな印象

GCS(Google Cloud Storage)をトリガーとして対応しているので、GCSに蓄積されるbilling ログをBigQueryに入れる実装が可能になると思われます。

ログはCloud Loggingに出力されます。
data パラメータにCloud Pub/Subあるいは、Google Cloud Storageバケットから送られたメッセージが含まれているようです。BigQuery Client libraries なども使えるのではと思われます。

module.exports = {
helloworld: function (context, data) {
if (data.message !== undefined) {
// Everything is ok
console.log(data.message);
context.success();
} else {
// This is an error case
context.failure('No message defined!');
}
}
};

gcloud コマンドでデプロイ、ログ確認、テスト実行等が行えるようですが、Web UIから行えるかは不明。

Cloud Functionsの実行時間等Limitの情報はdocsから確認することができない。制限があるかも不明。