質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

932閲覧

AWS Lambdaの開発方法

appleseed

総合スコア13

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/03/23 03:16

AWS Lambda上にWebブラウザで使うシステムを構築したいのですが、ローカルPC上での実行やデバッグを考慮した構成が知りたいです。

データベースはRDS(MySQL)、プログラミング言語はJavaScript (Node.js) を使う予定です。

  • AWS Lambda上で実行するにはExpressなどWebアプリケーションフレームワークは使わないということで良いのか
  • データベースへの接続は普通のNode.jsのプログラムのように書けば良いのか
  • ユーザー認証はどのように実装するのが一般的なのか
  • 静的なHTMLやjsをWebブラウザに返す時、S3を使うのが一般的か、その時、ユーザー認証の状態は考慮できるのか
  • テストはともかく開発もデバッグもAWS Lambdaにデプロイした状態でしか行わないものなのか

などなど、基本的な事がわかっていません。
お手本になるような記事やgithub等で公開されているソースコードでも構いません。

みなさんのやり方を知りたいです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marukomett

2022/12/20 15:36

開発に関しては、aws sam cliというものがあるのでローカルでデバッグすることができます。
guest

回答1

0

ベストアンサー

質問の最初の一行が結構斬新なので驚きましたが、以下の構成を考えている前提でよいでしょうか?
Webサーバー -> S3にhtmlファイルを置く
AP(Application)サーバー -> API GatewayとLambdaを組み合わせる
DBサーバー -> RDS

AWS Lambda上で実行するにはExpressなどWebアプリケーションフレームワークは使わないということで良いのか

不要です。
基本的に同サービスのAPI Gatewayと組み合わせて、API Gatewayがhttpリクエストを受け取ったらlambdaを起動しデータを渡す仕組みになると思うので不要です。

データベースへの接続は普通のNode.jsのプログラムのように書けば良いのか

多分2パターンあります。

  1. AWSのライブラリを使用する

RDSへ接続する認証を突破する為に、AWSが提供するライブラリ(SDK的なもの)を使用する方法です。
これに関してはSDKの使用方法に則ります。
2. Node.jsのライブラリを使用する
普通のアプリと同様にドメインとユーザー名を設定して接続します。
両方とももしかしたらlambdaからrdsへの接続を許可するロールを作成する必要があるかもしれません。
そのあたりはネットで調べれば手順がちゃんと出てくるとおもいます。

ユーザー認証はどのように実装するのが一般的なのか

構成としてはSPA(Single Page Application)という構成になります。
この辺りは回答できず申し訳ないのですがSPAの実装方式を参考にするか、もしくはS3上にhtml/css/jsを置くのではなく、Amplifyでフロントを開発するのが(AWSが)一般的に紹介している方法だと思います。
(この辺りはAmplify lambda webアプリ 認証で調べると出てきます。)

静的なHTMLやjsをWebブラウザに返す時、S3を使うのが一般的か、その時、ユーザー認証の状態は考慮できるのか

ログインの様なセキュリティを考慮しないのであればS3を(あとはS3に置いたhtmlのCDNとしてCloudFrontなんかが使われます。)、考慮するのであればAmplifyを使うのが多いと思います。

テストはともかく開発もデバッグもAWS Lambdaにデプロイした状態でしか行わないものなのか

lambdaは開発画面でデバックができ、動作が問題なければ公開ボタンを押して公開するようなサービスです。
なので、一部の例外を除いてawsコンソール上(webブラウザ上)で開発やデバッグをします。
私の場合は、ある程度ローカルで開発して、動作が確認出来たらlambda上にコードを載せて、lambdaように書き換えるということをはじめはしていたので、最初はこっちの方がいいかもしれません。
例外は、ソースコードなどのファイル容量が大きい場合はコンテナを動かせるのですが、その場合はローカルでデバックを行います。

1回答としてはこのような形でしょうか。
他にも開発手法はあると思います。(今回の様な構成に関してはAWSやAWSパートナーの会社が記事を出していたりするので検索すれば結構出てくると思います)

投稿2022/03/23 04:41

YuuT

総合スコア673

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

appleseed

2022/03/23 05:38

> 質問の最初の一行が結構斬新なので驚きましたが、 すみません。書き方がアレでした。 取っ掛かりがつかめずにいたので、大変助かります。 教えていただいたキーワードで詳しく調べてみたいと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問