edit-icon download-icon

fun

最終更新日: Jun 25, 2018

Fun は、Function Compute と API Gateway をサポートするツールです。Function Compute と API Gateway のリソースを管理するのに役立ちます。リソース設定ファイル (faas.yaml) を使用して、フロントエンドとして API Gateway を使用し関数の開発、作成、およびデプロイを支援します。

Node.js ユーザーの場合、このツールは依存関係のあるモジュールを自動的にインストールして圧縮できます。つまり、引き続き package.json を使用して依存関係を管理することができます。

インストール

Fun は Node.js で書かれたコマンドラインツールですが、Python や Java などの他の言語で書かれた関数もデプロイできます。次の npm コマンドを実行すると、Fun をインストールできます。

  1. $ npm install @alicloud/fun -g

インストール後、fun というコマンドラインツールが作成されます。この fun コマンドを入力すると、ヘルプ情報を表示できます。

  1. $ which fun
  2. /Users/xxx/.tnvm/versions/node/v8.9.0/bin/fun

使用法

コマンドラインツールをインストールしたら、アプリケーションの開発を開始できます。Fun ツールを使用するには、このディレクトリをプロジェクトとして認識できるように、プロジェクトディレクトリと faas.yaml ファイルを作成しなければなりません。

このファイルにプロジェクト関連の設定を定義する必要があります。情報は、主に 4 つの部分で構成されています。

  • 認証情報
  • ロール
  • Function Compute
  • API Gateway

API Gateway の設定はオプションです。つまり、API Gateway を設定せずに Function Compute をリリースすることができます。

認証情報

認証情報セクションには、主に accountid、accessKeyId、および accessKeySecret が含まれており、リソースオーナーの認証情報を一覧表示するために使用されます。情報は機密情報であるため、環境変数としてインポートすることができます。認証情報を環境変数としてインポートする場合、このセクションの設定はオプションです。

以下に、設定例を示します。

  1. # faas.yaml
  2. accountid: '<account id, default is process.env.ACCOUNT_ID>'
  3. accessKeyId: '<ACCESS KEY ID, default is process.env.ACCESS_KEY_ID>'
  4. accessKeySecret: '<ACCESS KEY SECRET, default is process.env.ACCESS_KEY_SECRET>'

ロール

このセクションは、主にアクセス許可の設定用です。API Gateway は Function Computeにアクセスするために何らかの許可を与えられなければならないため、ここで実行するロールを明確にする必要があります。ロールには、Function Compute サービスを実行するための許可が必要であることに注意してください。

ロールの設定は次のとおりです。

  1. # faas.yaml
  2. role:
  3. name: 'apigatewayAccessFC'

Function Compute

このセクションは、主に Function Compute の構成を記述するために使用されます。次の例で、設定の実行方法を説明します。

まず、プロジェクトディレクトリに hello.js ファイルを作成します。

  1. 'use strict';
  2. const hook = require('fc-helper');
  3. exports.index = hook((req, res) => {
  4. res.send('Hello world!\n');
  5. });

以前の fc-helper モジュールは https://github.com/aliyun/fc-helper にあり、package.json によって管理されています。

次に、ymal ファイルを次のように設定します。

  1. # faas.yaml
  2. function-compute:
  3. region: 'cn-shanghai'
  4. services:
  5. - name: 'fc'
  6. description: 'fc test'
  7. functions:
  8. - name: 'helloworld'
  9. description: 'hello!'
  10. # entry point
  11. handler: hello.index
  12. # which files should be ziped
  13. codes:
  14. - 'hello.js'

ここでは各設定の詳細な説明は省略しています。

API Gateway

このセクションでは、API Gateway を使用して関数を呼び出せるように API Gateway を設定する方法について説明します。

  1. # faas.yaml
  2. api-gateway:
  3. endpoint: 'http://apigateway.cn-hangzhou.aliyuncs.com'
  4. groups:
  5. - name: 'apigw_fc'
  6. description: 'API Gateway & Function Compute'
  7. apis:
  8. - name: 'helloworld'
  9. method: 'GET'
  10. path: '/helloworld'
  11. function: 'cn-shanghai/fc/helloworld'

繰り返しますが、ここでは各設定の詳細な説明は省略しています。

デプロイ

これまでの設定で Function Compute にコードをデプロイできます。デプロイ操作には 1 つのコマンドしか必要ありません。

  1. $ fun deploy
  2. Function compute(region):
  3. service service_name ok.
  4. function function_name ok.
  5. API gateway(region):
  6. URL: POST http://<groupid>-<region>.alicloudapi.com/<the api path>
  7. => cn-hangzhou/service_name/function_name
  8. stage: RELEASE, deployed, version: 20171101125034887
  9. stage: PRE, deployed, version: 20171101125107780
  10. stage: TEST, deployed, version: 20171101144618017

Function Compute がデプロイされていることが確認できます。API Gateway 関連の設定がある場合は、Web トラフィックを関数にルーティングするための API Gateway サービスも設定してください。コマンドにステージパラメーターを追加して、サービスをテスト環境またはプレリリース環境にデプロイすることもできます。

  1. $ fun deploy TEST
  2. $ fun deploy PRE

例については、https://github.com/aliyun/fun/tree/master/examples/helloworld をクリックしてください。

環境変数を設定することで、独自の API Gateway と Function Compute 環境にリリースすることができます。

より複雑な例については、ここをクリックしてください。

https://github.com/aliyun/fun/tree/master/examples

フィードバック

ご質問がございましたら、https://github.com/aliyun/fun/issues で疑問点を提出してください。