Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Node.js on AWS Lambda
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yu0819ki
May 25, 2016
Technology
630
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Node.js on AWS Lambda
AWS Lambda で Node.js 動かしてみる系
yu0819ki
May 25, 2016
More Decks by yu0819ki
See All by yu0819ki
たまには今日から業務で使える話でもしてみよう
yu0819ki
0
45
推しの成長と発展を寿ぐLT
yu0819ki
1
100
LightningTalkの資料作る時間なかったからおすすめの異世界転生作品を紹介するわ
yu0819ki
2
130
LightningTalkの資料作る時間なかったから カラオケするわ
yu0819ki
0
110
俺と婚活
yu0819ki
2
230
デプロイについて言いたい1つのこと
yu0819ki
0
510
Webシステム不具合調査講座
yu0819ki
1
640
高い学習コストを払ってでも React+Reduxを選ぶその理由
yu0819ki
0
1.3k
やれてなかったからやりたい話
yu0819ki
0
430
Other Decks in Technology
See All in Technology
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
110
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
120
[RSJ26] AnoleVLA: Lightweight Vision-Language-Action Model with Deep State Space Models for Mobile Manipulation
keio_smilab
PRO
0
120
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
710
V8コントリビュート超入門
riyaamemiya
0
140
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
390
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
780
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
170
AIエージェントを雇う前に決める5つのこと
knishioka
1
160
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
3
1.5k
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
150
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
260
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
My Coaching Mixtape
mlcsv
0
300
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Facilitating Awesome Meetings
lara
57
7.1k
The Invisible Side of Design
smashingmag
301
52k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
Transcript
Node.js on AWS Lambda 2016/5/25 yu0819ki@CyberZ
Intro. Name: 木村 幸弘 a.k.a yu0819ki Birthday: 1985.08.19
Age: 30 Birthplace: 北海道 Job: 技術総務(非公式) Hobby: 音ゲー、読書、作曲 Motto: パンが無ければ作ればいいじゃない
もくじ • AWS Lambdaについて • Node.jsについて • Node.js v4.x で実装済みの主なES2015機能(feature)
• Node.js v6.x で使えるようになる主なES2015機能(feature) • 環境変数とdotenvとLambda • Write Once, Run Anywhere. っぽいことを実現する • Lambdaか否かで何が違う? • LambdaRouter • Lambda上で動く(デモ) • CLIで動く(デモ) • Herokuで動く(デモ)
AWS Lambdaについて 【AWS Lambdaとは】 • みんな大好きサーバーレスアーキテクチャの申し子だよ! • 「イベント」を受けて「何か」をするよ! • 「イベントソース」に「S3になにか作った」「DynamoDB上でなにか消され
た」「SNSの通知があった」などを登録できるよ! • Java 8, Node.js v4/v0.10, python 2.7 のいずれかでプログラミングできる よ! • 実行時間とメモリサイズでお値段が決まるよ! • 同時実行は100個までだよ! • タイムアウトは最大で5分までしか設定できないよ! • 詳しいことはググったほうが早いよ! • 以下、Lambdaと略したり略さなかったりします
Node.jsについて 【Node.jsとは】 • みんな大好きJavascriptのサーバーサイド実行環境だよ! • 見る人によって環境の違うWebブラウザだと使いにくいES6(ES2015)の機 能を使っても環境依存が起きにくいよ! • class 構文と
arrow function だけでも随分やりやすくなるよ! • あとPromise!消費者金融じゃないよ! • 詳しいことはググったほうが早いよ! • 以下、Nodeと略したり略さなかったりします
Node.jsについて 【Node.js v4.x で実装済みの主なES2015機能(feature)】 • 以下、Strictモード('use strict’)前提 • const /
let • const hoge = 'hoge'; hoge = 'fuga'; // TypeError: Assignment to constant variable. • generator • function*() / yield • arrow function • (a) => { return a; } • class構文 • class hoge {} / class fuga extends hoge {} • Promise • promised().then(okFn, ngFn).catch(errFn); • Promise.all([promised1, promised2, promised3]). then(); • 詳しいことは(ry
Node.jsについて 【Node.js v6.x で実装済みの主なES2015機能(feature)】 • デフォルト引数 • function(hoge = 1)
{ return hoge; } • 可変長引数 • function(a, b, ...any) { return any[0]; } • Reflect • Reflect.apply(anyFn, thisArg, args); // anyFn.apply(thisArg, args); • Reflect.construct(AnyClass, args); // returns a instance of AnyClass. • Reflect.construct(require(moduleName), args); // construct by string! • Proxy • ごめん何も試してない • 詳しいことは(ry
環境変数とdotenvとLambda 【環境変数】 • 実行しているシェルに対して割り当てられている変数 • $PATH とか • printenv コマンドなどで確認できる
• ソースコードに含めたくない情報を突っ込む開発手法(?)がある • パスワードとか秘密鍵とか • HerokuやCircleCIなどのSaaS/PaaSでは、コンフィグで環境変数を設定 できることがある 【Node.jsにおける環境変数】 • process.env を参照すれば取れる • 実行時に限定した環境変数を指定できる • $ NODE_ENV=production node • $ echo $NODE_ENV // empty
環境変数とdotenvとLambda 【Lambdaにおける環境変数】 • 設定できる場所が無い • HerokuやCircleCIなどには設定できるのに。。。 • 頑張ればできなくはない • http://qiita.com/mashiro/items/ab4cab5e623397d6b29d
• http://qiita.com/exabugs/items/3926e1f1764c0314ff09 • ソースの改修をせずに変数変えたいって言うならDescriptionもア リだろうけど、しかしそれはDescriptionなんですかとモヤモヤ・・・ 【dotenv】 • 環境変数を .env ファイルにまとめて、アプリケーション側に読み込む仕 組み • Node.js以外にも実装がある • require('dotenv').config(); // process.env を上書きする
環境変数とdotenvとLambda 【Lambdaとdotenvとわたし】 • .env ファイルを zip に含めてデプロイすればいいじゃん • でもローカルの .env
は、ローカルで動かすときに使うし・・・ • gulp で Lambda のデプロイができるようにした • zip コマンドと アップロードコマンドに分けてある • Lambda上で動かすときの環境変数を .build_env として持っておき、 zip するときにリネーム • 尚、.env, .build_env は.gitignore に入れてあります
Write Once, Run Anywhere. っぽいことを実現する 【Lambdaか否かで何が違う?】 • 「イベント」を引数にした関数が実行される • jQuery的な書き方をすると
$elem.on('click', (event) =>{ someprocess(); }); • MVCだと HTTP Request を受けてコントローラとアクションを特定し、そ のアクションを実行する(HTTP Requestがあった、というイベントと捉 える) • つまりルーティング • CLIだとコマンドオプションを元にプログラムが実行される • つまりルーティング
Write Once, Run Anywhere. っぽいことを実現する 【LambdaRouter】 • 肝はルーティングであると • イベントを適切に解釈して、呼ぶべき関数をLambdaに返してやるルー
ターが必要だ • 作った https://github.com/cyber-‐z/lambda-‐router
Write Once, Run Anywhere. っぽいことを実現する デモ
まとめ • AWS Lambda 上で動く Node.js のバージョンは v4.x なので ちょっと古い
• 環境変数(っぽいもの)を使おうとするとちょっと面倒 • 工夫次第で環境を選ばないアプリケーションが作れる→既存 アプリケーションもLambda化できる
ご清聴ありがとうございました