Memo

メモ > サーバ > サービス: AWS > Lambda

Lambda
AWSのLambdaってなんやねん https://zenn.dev/mi_01_24fu/books/d91d10985a5a1a ※あらかじめ登録したコードを実行できる。 ※コードはイベントに応じて呼び出したり、API Gatewayから呼び出したりなどができる。 Lambda → 今すぐ始める 設計図の選択 「hello-world」を選択。(すぐに見つからなければ、フィルターで絞り込む。) トリガーの設定 何も変更せずに「次へ」をクリック。 関数の設定 名前: hello-world ランタイム: Node.js 6.10(必要に応じて変更する。) Lambda関数のコード: (必要に応じて変更する。) ロール: existing(必要に応じて新規に作成する。) 既存のロール: lambda_basic_execution(必要に応じて新規に作成する。) 「次へ」をクリック。 確認 内容を確認して「関数の作成」をクリック。 関数が作成されたら「テスト」をクリックしてテストする。 「サンプルイベントテンプレート」は各サービスやイベントから呼び出された際の入力値となるサンプル。 「Hello World」を選択し、「key1」の値を「Hello Lambda World!」に変更する。 「保存してテスト」をクリック。 実行結果として「成功」と「"Hello Lambda World!"」のログが表示されていれば成功。 ■S3にアップロードされたJpegとPNGのサムネイルを自動作成する例 チュートリアル: Amazon S3 での AWS Lambda の使用 http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example.html デプロイパッケージの作成。 フォルダ名は CreateThumbnail とした。 ファイル名は指定通り CreateThumbnail.js とした。 ZIP圧縮は CreateThumbnail に対してではなく、CreateThumbnail.js と node_modules に対して行う。 Lambda関数の作成(公式の解説はCLIだが、コンソールから作成。) 設計図の選択: ブランク関数 トリガーの設定: S3 → 画像をアップロードするバケットを選択し、イベントタイプは「Put」にし、サフィックスはjpgにする。 関数の名前: CreateThumbnail コード エントリ タイプ: .ZIP ファイルをアップロード(CreateThumbnail.zip) ハンドラ: CreateThumbnail.handler ロール: 既存のロールを選択 既存のロール: lambda_basic_execution 詳細設定 メモリ(MB): 1024 タイムアウト: 10秒 ※LambdaにS3の書き込み権限が無い場合、権限を与えておく。 「トリガー」で関数を有効化する。 S3の指定のバケットに画像がアップロードし、サムネイル用のバケットに縮小画像が作成されているか確認する。 アップロード時、権限など特に変更せずにデフォルト設定のままアップロードして大丈夫だった。 AWS LambdaでのS3画像アップロードをトリガーとしたリサイズ(サムネイル作成) (1/2) ローカルPC上の準備 http://aws-mobile-development.hatenablog.com/entry/2016/11/25/152052 試すと「Cannot find module '/var/task/index'」のエラーが表示された場合、圧縮対象を間違っている可能性がある。 CreateThumbnailフォルダを圧縮せずに、node_modulesとindex.jsを選択して圧縮し、createThumbnail.zipにリネームする必要がある。 AWS LambdaでのS3画像アップロードをトリガーとしたリサイズ(サムネイル作成) (2/2) AWSコンソールでの作業 http://aws-mobile-development.hatenablog.com/entry/2016/11/25/155625 AWSコンソールでの作業手順。この手順の通り進めて大丈夫だった。(最初はタイムアウトを設定していなかたので、タイムアウトのエラーになった。) 解説通りトリガーを設定し、ポリシーをアタッチし、タイムアウトを10秒に設定した。 この仕組みなら 「アプリからSDKで直接ファイルアップロード + サムネイル作成」 まで完全にAWS任せでできそう。負荷の心配も無さそう。 ■ブラウザから実行 ※未検証。 [アップデート]LambdaがHTTPSエンドポイントから実行可能になる、AWS Lambda Function URLsの機能が追加されました! | DevelopersIO https://dev.classmethod.jp/articles/aws-lambda-function-urls-built-in-https-endpoints/ ■ローカルでの動作確認 ※未検証。 本格的に開発するなら、環境の構築をしておくと良さそう。 AWSがサーバレスアプリケーションのローカル開発とテストのための'SAM Local'をリリース https://www.infoq.com/jp/news/2017/09/sam-local-beta AWS Lambdaの開発をローカルで行う - サーバーワークスエンジニアブログ http://blog.serverworks.co.jp/tech/2017/01/31/lambda-local/ ■使用する言語 よくある質問 - AWS Lambda |AWS https://aws.amazon.com/jp/lambda/faqs/ > ネイティブでは、Java、Go、PowerShell、Node.js、C#、Python、Ruby のコードをサポートしています。 これまでLambdaを使用するときは、Node.jsを使用してきた。 ただし長期の保守を考えるなら、Goを使用するのも有効かもしれない。 このファイル内の「ロードバランサー → Basic認証」にNode.jsを使用したコードがあるが、この短いコードでもバージョン差異による調整が必要だったことがある。 AWS Lambda Node.js runtime の EoL に疲れたので Go にしていっている話 - KAYAC Engineers' Blog https://techblog.kayac.com/lambda-node-to-go ■LambdaでWebアプリケーション ECSとRDSをやめて、AWSコストを9割削減しました https://zenn.dev/beenos_tech/articles/lambda-sqlite-application アプリケーションをLambdaに、データベースをEFSに置く…というものらしい。 通常のPHPアプリケーションが動くものなのか。 以下は基礎知識になりそうなものメモ。 引き続き確認しておきたい。 Apache+PHPサーバーのWebサイトをAWS Lambdaで動かす #lambda - Qiita https://qiita.com/shouki-s/items/954bc9dac0e9144509cd AWSのlambdaでlaravelを動かす #PHP - Qiita https://qiita.com/Taichi-yzrh/items/26a5e71da5ef449b4788 Lambda Web Adapter でウェブアプリを (ほぼ) そのままサーバーレス化する Lambda Web Adapter - 変化を求めるデベロッパーを応援するウェブマガジン | AWS https://aws.amazon.com/jp/builders-flash/202301/lambda-web-adapter/ 【レポート】コンテナだけどサーバーレス! AWS Lambda の最新機能をご紹介 #AWSSummit | DevelopersIO https://dev.classmethod.jp/articles/awssummit2021-lambda-container-support/ 【AWS入門者】だれでもできるLambda関数でDockerを利用 | アールエフェクト https://reffect.co.jp/aws/lambda_docker LambdaでWEBアプリケーションをホストしたい - NRIネットコムBlog https://tech.nri-net.com/entry/hosting_a_web_application_with_lambda Lambda からアクセスする DB に SQLite を使ってみる https://note.milldea.com/posts/lambda-efs-sqlite-sample

Advertisement