- 印刷する
- PDF
Cloud Functions FAQ
- 印刷する
- PDF
最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
Classic/VPC環境で利用できます。
ご利用ガイドを読む前に、よくある質問への回答で疑問をすばやく解消できます。以下のよくある質問で答えが得られなかった場合、ご利用ガイドで必要な内容をご確認ください。
Cloud Functions FAQは、以下のようないくつかのテーマで構成されています。
サービス一般
Cloud Functionsについての一般的なよくある質問と回答は、次の通りです。
Q. Cloud Functionsはどんな用途に使用できますか?
A. Cloud Functionsと連携されたサービスに応じてウェブサーバや APIサーバ、ログ保存用 Ruleサーバ、バッチ処理など、組み合わせに応じて様々な用途に使用できます。サービス単位を細かく分けられる場合は、一般的なマイクロプログラミングの形に作成してより大きなビジネスロジックを実装することもできます。
Q. Cloud Functionsは、どんなユーザーが最も有効活用できますか?
A. サーバの購入や構築が困難なスタートアップやサーバの管理が難しい小規模事業者、大学生など簡単にコードを作成してサービスを制作したい方はどなたでも有効活用できます。使用量が増えるまで収益を創出できないアプリやゲームでも有効活用できます。
システム
システムに関するよくある質問と回答は、次の通りです。
Q. Native Libraryは使用できますか?
A. ランタイム環境に基本的に含まれていない Native Libraryは、アクションコードの添付ファイルに含められます。ただし、ランタイム別に実行環境が異なり、別途告知なしで変更されることがあるのでお勧めしません。
Q. ランタイム別にサポートする OSの種類やバージョンはありますか?
A. ランタイム別にサポートする OSの種類やバージョンは、内部ポリシーにより変更される可能性があるため、OS環境に関係ないコードを作成することをお勧めします。
制限スペック
制限スペックに関するよくある質問と回答は、次の通りです。
Q. コードサイズに制限はありますか?
A. Cloud Functions の仕様をご参照ください。
Q. CPU使用率に制限はありますか?
A. CPU使用率はメモリ使用率に比例し、制約は別途存在しません。また、内部インフラや他のアクションの動作有無に影響されるので、値を特定することは困難です。ただし、アクションコンテナで使用できる最大プロセス数は1024個に制限されています。
ネットワーク
Cloud Functionsを利用するネットワーク環境設定に関するよくある質問と回答は、次の通りです。
Q. ACGで Cloud Functionsのアクションのみ許可できるように設定できますか?
A. ACGでインバウンドアクセスソースに cloudfunctions-vpc-<VPC_ID> ACGグループを追加したり、VPC環境の場合は Cloud Functionsアクションに接続された VPCや VPC Subnet帯域を ACGインバウンドアクセスソースに設定できます。
Cloud Functionsを Classic環境で利用している場合、Sourceが Any(0.0.0.0.0/0)の ACG設定が必要です。
Q. アクションが実行されるサーバの IPアドレス帯域や IPアドレスルールはありますか?
A. IPアドレス帯域は、実行する状況に応じて内部スケジューリングアルゴリズムにより決まるので、特定できません。IPアドレスルールは、Cloud Functionsを VPC環境で利用中の場合、上記の ACG関連設定に対する回答をご参照ください。
Q. VPC環境の Cloud Functionsで、NAT G/Wなしで Ncloud APIを呼び出すことができますか?
Q. VPC環境で作成した Cloud Functionsアクションでは、別途 NAT G/Wなしで Ncloud APIを呼び出すことができます。VPC Peeringをした場合でも、Peeringした他の VPC環境とプライベート通信が可能です。さらに、Object Storageプライベートエンドポイントでも、インターネット接続なしで内部ネットワークからアクセスできます。Object Storageに関する詳細は、Object Storageご利用ガイドをご参照ください。
ログ
ログに関するよくある質問と回答は、次の通りです。
Q. 実行結果ログをダウンロードできますか?
A. Cloud Functionsの実行結果ログは、NAVERクラウドプラットフォームの Cloud Log Analyticsに保存されます。Cloud Log Analyticsからエクセルファイルでダウンロードするか、Object Storageのエクスポート機能を活用してダウンロードできます。
リソース
アクション、トリガー、パッケージに関するよくある質問と回答は、次の通りです。
Q. Java、C#を利用してアクションを作成する方法を教えてください。
A. Javaの場合、Jarをビルドする際に外部ライブラリの jarがすべて含まれた uber(fat) jar形式にパッケージングしてアクションを作成できます。C#は、dotnet add package
コマンドを利用して必要なパッケージを追加してアクションを作成できます。Java、C#の他に、ランタイム別のアクション作成方法は、Cloud Functions のユースケース > ランタイム別アクションの作成と活用をご参照ください。
Q. アクションで特定のパスにあるファイルを使用したり、参照することはできますか?
A. Cloud Functionsの実行環境は statelessであるため、実行されるホストの特定のパスに一部ファイルを永続的に配置して使用することはできません。Object Storageのような Cloud Storageを使用することをお勧めします。ただし、外部ライブラリの使用のように圧縮ファイルに必要なファイルを添付し、コードで相対パスとして参照することはできます。
Q. DB Connectionといった多くの費用がかかるリソースは再活用できますか?
A. それぞれのアクションの実行は statelessであるため、コネクションの維持を保証できません。そのため、アクションの呼び出しが頻繁な場合は実行速度の向上のために実行されたコンテナを再活用したり、添付されたコードのようにコネクションを再活用することもできます。ただし、明示的にコネクションが終了しないため障害の原因になり得るので、お勧めはしません。以下のサンプルコードをご参照ください。
from kafka import KafkaProducer
from kafka.errors import KafkaError
import json, requests
# Create NAVER Cloud Data Streaming Service connection
producer = None
def main(args):
try:
reuse = True
global producer
if producer is None:
reuse = False
producer = KafkaProducer(
bootstrap_servers=['10.0.20.6:9092', '10.0.20.7:9092', '10.0.20.8:9092'],
acks=1,
value_serializer=lambda v: json.dumps(v, ensure_ascii = False).encode('utf-8'),
key_serializer=lambda k: k.encode('utf-8'))
# Send messages
producer.send('iot.demo', key=args['deviceId'], value=args)
producer.flush()
# Return a result
return {"result": "success", "reuse": reuse}
except Exception as ex:
# Return an error result
return {"result": "error", "error": str(ex)}
連携サービス
連携サービスに関するよくある質問と回答は、次の通りです。
Q. API Gatewayを利用して実行されたアクションの結果を HTTP Response Bodyで取得したいのですが。
A. HTTP Request Query Parameterに「blocking=true&result=true」の値を追加してください。ただし、アクションが1分以上実行されて HTTP Requestが1分を超えると、activationId(実行 UUID)の値のみ Responseとして渡されます。
Q. API Gatewayを利用して実行されたアクションの HTTP Response Headerはカスタマイズできますか?
A. アクションの設定のうち、ウェブアクションの設定を有効にしてウェブアクションのタイプを jsonではなく httpでリクエストすると、以下のサンプルコードのように Response Header、Bodyなどを定義できます。
function main(params) {
return {
statusCode: 200,
headers: { 'Content-Type': 'application/json', 'Custom-Header': 'Cloud Functions' },
body: { 'name': 'NAVER CLOUD'}
};
}
Q. Cloud Functionsコードに他のサービスを連携できますか?
A. アクションコード内で渡されたり加工されたデータを、連携したいサービスの OpenAPIで呼び出して連携できます。サービス別 OpenAPIの使用方法は、 APIガイドをご参照ください。