技術力をスコア化して市場価値をチェックしてみませんか?PR

ブログやSNSのアウトプットをAIが分析。技術力の順位を算出!自分の市場価値を測ってみませんか?

8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Alibaba CloudのFunction Computeでwebサイトを作る

Last updated at Posted at 2018-07-05

webサイトと言ってもただHTMLを返すだけのやつです。ほとんどタイトル詐欺。

Function Computeとは

Function Computeの概要です。まず公式ドキュメントを見てみます。

Alibaba Cloud Function Computeは、イベント駆動型のフルマネージドコンピューティングサービスです。Function Compute を使用すると、サーバーやその他のインフラストラクチャの管理を心配することなく、コードを記述してアップロードできます。

ふむ。分かりやすく具体例を交えて説明します。

例えばOSSにファイルをアップロードした時にそのアップロードイベントを検知して何か処理を行う(Slack通知とか)です。いわゆるサーバレスな環境を実現します。

ここではHTTPのGETリクエストをトリガーにしてレスポンスを返すようにします。

毎月100万回のリクエストは無料(参考: 公式ドキュメント)なので個人利用なら気兼ねなく使えます。ありがたい。

サービスと関数とトリガー

FCにはサービスと関数の2つの概念があります。めちゃくちゃ簡単に説明すると関数がイベントに対応する処理で、サービスは関数の入れ物です。

そしてトリガーはどんな条件で関数を実行するかの設定です。

現在Java, Node.js, Pythonをサポートしていますが、HTTPイベントに関してはまだnode.jsしか対応していません。

準備

Resource Access Managementよりユーザーを作成してFunction Computeの権限を与えておいてください。

Function Computeを使ってみる

公式のチュートリアルHTTPトリガーのドキュメントを参考にします。

まず、Function ComputeのCLIツールであるfcliGitHub Releasesからダウンロードしておきます。

次に、ローカルの適当な場所にHTTPトリガーで実行される処理の関数を書きます。ここでは~/src/function_compute/my_website/http.jsとします。

$ mkdir ~/src/function_compute/my_website
$ cd ~/src/function_compute/my_website
$ vim http.js

以下がhttp.jsです。

// http.js
const getRawBody = require('raw-body')
module.exports.handler = function(request, response, context) {
  getRawBody(request, function(err, data){
    const respBody = new Buffer("<html><h1>hello FunctionCompute</h1></html>")
    response.setStatusCode(200)
    response.setHeader('content-type', 'text/html')
    response.send(respBody)
  })
};

getRawBody()でレスポンスを定義します。

サービスと関数の作成

さて、次に新しくサービスと関数を作ります。サービス名はmy_website、関数名はhttpにします。

>>> mks my_website
>>> cd my_website
>>> mkf http -t nodejs6 -h http.handler

mksmake servicemkfmake functionですね。

※ コマンド実行中に40xや50xが返ってきた場合はこちらのトラブルシューティングを参照してください。

コード編集はGUIからもできますが、コマンドラインの使用をおすすめします。(たまに画面が微妙な挙動をするので)

トリガーの作成

こっちもfcliでコマンドラインから作成したかったのですが、トリガー作成用のmktまだhttpに対応していない(2018/7/5)のでコンソール画面から作ります。

↓オプションの説明文にはサポートしてるって書いてある

>>> mkt --help
      --etag string              trigger etag for update
      --help
  -r, --invocation-role string   invocation role, timer type trigger optional
  -s, --source-arn string        event source arn, timer type trigger optional
  -c, --trigger-config string    trigger config file
  -t, --type string              trigger type, support oss, log, timer, http, cdn_events now (default "oss")

>>> mkt http -t http -c httpTrigger.yml
Error: unsupported trigger type, expect oss, log, timer, http, cdn_events, actual http

嘘やろhttpってあるやんけ

実装されていないっぽいですね。

追記:
v0.20で実装されたみたいで、ちゃんと使えました。

では、コンソールからトリガーを作成します。
image.png

これでOKを押せばトリガーが作成されます。
image.png

ブラウザで確認する

関数ページのコードタブにあるURLをコピーします。
image.png

コピーしたURLにアクセスしたらちゃんと見えました。完成。
image.png

まとめ

公式のドキュメントが最強。しかし新しいからかちょっとまだバグってる。

FunctionComputeとTableStoreでサーバレスAPIを作る

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?