CoffeeScriptで記述したAWS Lambda関数をGulpでデプロイする
タイトルの通り、AltJS系言語であるCoffeeScriptを用いてAWS Lambda関数を記述し、それをGulpを使ってデプロイする手順について述べます。
※2015年10月9日追記
より手軽にAWS LambdaでCoffeeScriptを使うためにlamjet
というツールを作成し、それについての記事を書きました。あわせてご参照ください。
lamjet を使って AWS Lambda に CoffeeScript で書かれた関数を楽々デプロイする方法
1. やりたいこと
- AWS Lambdaの関数(以下、Lambda関数)をCoffeeScriptを用いて記述する
- Lambda関数をgulpコマンド1発でデプロイする
2. 結論
lambduh/lambduh-gulpを使うのが便利です。ZIPファイルの生成、アップロードなどのGulpタスク一式が含まれています。
他にも以下の様なGulpプラグインが見つかりますが、どちらもLambda関数の登録、アップロードを主眼としており、関連タスクまでは含まれていません。複数のLambda関数のアップロードを行うなど、より細かい、より複雑な制御を行う場合は、これらの方が便利かもしれません。
3. js
タスクの上書き
lambduh/lambduh-gulp
はJavaScript用に作られているため、CoffeeScriptを使う場合にはjs
タスクの上書きが必要です。
# ...
gulp.task "js", ->
gulp.src("./src/*.coffee")
.pipe(coffee({bare: true})).on("error", gutil.log)
.pipe(gulp.dest("./dist"))
4. ファイル構成
今回は、1つのLambda関数を1つのディレクトリとして管理します。ファイル構成は以下の通り。
lambda-function-name/ .. Lambda関数の管理用ディレクトリ。
dist/ ................ ビルド結果が格納されるディレクトリ。Gulpにより生成される。
node_modules/ ........ パッケージディレクトリ。
src/ ................. CoffeeScriptを格納するディレクトリ。
index.coffee ....... Lambda関数の本体。
dist.zip ............. Lambda関数のZIPアーカイブ。Gulpにより生成される。
gulpfile.coffee ...... Gulpの設定ファイル。後述。
lambda-config.js ..... Lambda関数の設定ファイル。後述。
package.json ......... パッケージの設定ファイル。後述。
5. 設定ファイルの例
設定ファイルの例は以下の通り。少なくともlambda-config.js
のFunctionName
、Role
、Region
を環境に合わせて書き換える必要があります。
gulp = require "gulp"
coffee = require "gulp-coffee"
gutil = require "gulp-util"
lambduhGulp = require "lambduh-gulp"
lambduhGulp gulp
gulp.task "js", ->
gulp.src("./src/*.coffee")
.pipe(coffee({bare: true})).on("error", gutil.log)
.pipe(gulp.dest("./dist"))
module.exports = {
FunctionName: "function-name",
Description: "description",
Handler: "index.handler",
Role: "arn:aws:iam::XXXXXXXXXXXX:role/yyyy",
Region: "us-east-1",
Runtime: "nodejs",
MemorySize: 128,
Timeout: 3
}
{
"devDependencies": {
"coffee-script": "^1.9.3",
"gulp": "^3.9.0",
"gulp-coffee": "^2.3.1",
"gulp-util": "^3.0.6",
"lambduh-gulp": "^0.1.1"
}
}
6. デプロイ
上記の設定ファイルを用意することで、下記の1行でLambda関数がビルド、ZIPファイル化、アップロードされます。
内部的にaws-sdk
が使われており、AWS CLIなどと同様に、認証に関する情報を~/.aws/credentials
ファイルや環境変数に設定する必要があります。
$ gulp zipload
7. 参考
Author And Source
この問題について(CoffeeScriptで記述したAWS Lambda関数をGulpでデプロイする), 我々は、より多くの情報をここで見つけました https://qiita.com/yuyakato/items/38fd71c7ac37402ac73d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .