ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js、AWS Lambda、Mongodb Atlasを使用したサーバーレス開発
キーポイント
lambda-local
近年、開発者環境は大きな変化を遂げています。過去には、開発者は通常、すべてのツール(データベース、Webサーバー、開発IDEなど)を独自のマシンで実行していましたが、GitHub、Mongodb Atlas、AWS Lambdaなどのクラウドサービスがこれに革命をもたらしています。開発者は、依存関係なしで(または少ない)依存関係なしで、任意のデバイスでどこでもコードを書き込み、実行することがますます容易になります。
数年前、クラッシュしたり、マシンを失ったり、パワーを失ったりした場合、新しいマシンを元に戻してセットアップして正しく構成して前のものに戻すには数日かかる場合があります。 1つの状態。クラウド開発者ツールを使用すると、あまりにも多くの混乱を引き起こすことなく、あるラップトップから別のラップトップに切り替えることができます。しかし、それはすべてがうまくいくという意味ではありません。クラウドでのコードの作成とデバッグは、開発者として依然として困難です。
これはまさにこのブログ投稿であなたに見せようとしているものです:AWS lambda node.js関数をMongodb AtlasでホストするMongodbデータベースと簡単に統合する方法(Mongodb for Mongodb(サービスとしてのデータベース))。より具体的には、Mongodb Atlasデータベースに保存されているコレクションに単一のドキュメントを作成する単純なLambda関数を作成します。このチュートリアルを段階的に説明してください。1時間以内に終了する必要があります。
必要な要件から始めて、始めましょう:
要件を理解したので、Lambda機能を書き、テストし、展開するために取る特定の手順について説明しましょう。
悪名高い0.0.0.0/0 CIDRブロックをMongodb AtlasクラスターIPホワイトリストに追加する必要があります。なぜなら、AWS LamdaがATLASデータベースに電話するために使用するIPアドレスがわからないからです。
Lambda関数とAtlasクラスターの間の帯域幅の使用料を支払います。
開発環境とトラフィックの低いWebサイトでは、M0、M10、およびM20インスタンスのサイズが問題ないはずであることを思い出してください。ただし、高トラフィックアプリケーションまたは大規模なデータセットをサポートする生産環境の場合、M30以上のインスタンスサイズを使用することをお勧めします。
アプリケーションが最小許可アクセスポリシーに準拠していることを確認してください。データを悪意のある脅威から保護するために重要です。そのため、旅行データベースへの読み取り/書き込みアクセスのみがある特定のデータベースユーザーを設定します。 Mongodb Atlasでこれを実装する方法を見てみましょう:
クラスターページで、[セキュリティ]タブを選択し、[新しいユーザーの追加]ボタンを押します
ユーザー許可セクションで、
次に、より細かい粒状アクセス制御の許可を割り当てることを選択できます。
[selectロール]ドロップダウンリストで、[readwrite]を選択し、ドキュメントの保存に使用するデータベースの名前をデータベースフィールドに入力します。私はそれを旅行することを選びました。
パスワードセクションで、[セキュリティ]パスワードを自動的に生成するボタンを自動的に使用します(および生成されたパスワードを書き留めます)、またはお気に入りのパスワードを設定します。次に、「ユーザーの追加」ボタンを押して、このユーザーが作成されていることを確認します。
ちなみにクラスター接続文字列を取得しましょう。MongodbAtlasデータベースに接続するためにLambdaコードでそれが必要になるため、
さらに、VPCピアリングを使用していない場合は、IPホワイトリストタブに移動し、0.0.0.0/0 CIDRブロックを追加するか、Allow Access from Anywhereボタンを押します。リマインダーとして、この設定は、生産環境で使用しないことを強くお勧めし、Mongodb Atlasクラスターを悪意のある攻撃に対して脆弱にする可能性があります。
今度はいくつかのコードを書く時が来たので、node.jsをLambda関数の好みの言語として使用し続けましょう。
最初に、Lambda-Atlas-Create-Doc
などのフォルダーを作成します
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>次に、ターミナルコンソールから次のコマンドを実行し、package.jsonファイルでプロジェクトを初期化します
<code>npm init</code>システムは、いくつかのフィールドを構成するように促します。私は彼らをあなたの創造性に任せましたが、エントリポイントをapp.jsに設定することを選択したことに注意してください(デフォルトのindex.jsではなく)。
mongodb node.jsドライバーを使用して、lambda関数(Atlas)からmongodbデータベースに接続できるようにする必要があります。 >
また、Amazon WebサービスにLambda関数をインスタンス化することは毎回特に高速ではないため、Lambda機能をローカルに記述およびテストして開発をスピードアップしてデバッグを簡素化したいと考えています(そして、デバッグは実際には存在しません。 log()関数ファン)。 Lambda-Localパッケージを使用することを選択しました。これは、環境変数のサポートを提供するためです(後で使用します):
<code>npm install mongodb --save</code>
app.jsファイルを作成します。これは、ラムダ関数を含むファイルになります:
<code>(sudo) npm install lambda-local -g</code>
必要な依存関係をすべてインポートし、Lambdaコードファイルを作成したので、選択したコードエディター(Atom、Sublime Text、Visual Studio Codeなど)でapp.jsファイルを開き、次のものを使用してください。コードセグメントで初期化:
<code>touch app.js</code>
上記のコードを一時停止してコメントしましょう。
(知りたい場合は、JSONファイルがMongodb Atlasに送信してBSONドキュメントを作成するものです)
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>
次に、ターミナルコンソールで次のコマンドを実行して、正しくセットアップしていることを確認してください。
独自のクラスターURI接続文字列でテストしたい場合(私はあなたがそうすると思う)、eパラメーターの二重引用符、コンマ、&文字を逃れることを忘れないでください。 ($パスワードと$データベースのキーワードを独自の値に置き換える必要があります)。
<code>npm init</code>ローカルで実行したら、次のコンソール出力が表示されます。 エラーが発生した場合は、接続文字列と二重Quotes/&Escapes(上記のように)を確認してください。
ここで、ProcessEvent()関数をカスタマイズし、createdoc()関数を追加して、関数コードのコアコンテンツを処理しましょう。
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>Mongodb Atlasデータベースに接続してドキュメントを挿入するのが簡単であることに注意し、JSON日付(ISOに準拠した文字列としてフォーマットされている)を変換するために追加したコードを追加して、BSON日付として保存できる本物のJavaScriptに変換します。 。
私のパフォーマンス最適化アノテーションとContext.callbackwaitsforemptyeventloop = falseへの呼び出しにも気付くかもしれません。あなたがそれらが何を意味するのかを理解することに興味があるなら(私はあなたがすべきだと思います!)、Mongodb AtlasでLambdaのパフォーマンスを最適化する方法に関する私のその後のブログ投稿をご覧ください。
lambda機能を完全に局所的にテストする準備ができました。以前と同じLambda-localコマンドを使用して、うまくいけば、あなたは素敵な「称賛」の成功メッセージを受け取るでしょう:
ローカルマシンですべてがうまくいったら、ローカルnode.jsプロジェクトを新しいラムダ関数としてリリースしましょう!
端末コンソールでzipコマンドラインツールを使用しましたが、どの方法も機能します(トップレベルのフォルダー自体ではなく、ファイルをトップレベルのフォルダーに圧縮する限り!):
<code>npm init</code>次に、AWSコンソールにログインし、IAMロールページに移動し、Awslambdabasicexexecutionrole許可ポリシーを使用してロール(たとえば、Lambdabasicexecrole)を作成します。 ここで、AWS Lambdaページに移動しましょう。 [今すぐ開始]をクリックし(Lambda関数を作成したことがない場合)、Lambda機能の作成ボタンをクリックします。ブループリントは使用せず、トリガーを構成しないため、左のナビゲーションバーで「機能を構成」を直接選択してください:
[アップロード]ボタンをクリックし、以前に作成した圧縮node.jsプロジェクトファイルを選択します。
Advanced Settingsセクションでは、タイムアウト値を5秒または10秒に増やすことができますが、これは常に後で調整できるものです。 VPCおよびKMSキーフィールドをデフォルト値として残します(VPCおよび/またはKMSキーを使用する場合を除く)、次に押します。
lambda環境変数を構成して保護します
value mongodb_atlas_cluster_uri your_atlas_cluster_uri_value この時点で、「保存とテスト」ボタンをページの上部に押すことができますが、セキュリティのために(接続文字列を暗号化します。
[暗号化アシスタントの有効]チェックボックスを選択し、暗号化キーを既に作成している場合は選択します(それ以外の場合は、作成する必要がある場合があります - これは簡単です):
次に、mongodb_atlas_cluster_uri変数の「暗号化」ボタンを選択します:
インラインコードエディターに戻り、上部に次の行を追加します。
>「exports.handler」メソッドの「else」ステートメントのコンテンツを次のコードに置き換えます。
<code>mkdir lambda-atlas-create-doc && cd lambda-atlas-create-doc</code>
私が使用している関数コード全体を確認する場合は、次の要点をチェックしてください。 GITファンの場合、完全なnode.jsプロジェクトソースコードもgithubで利用できます。
<code>npm init</code>「保存とテスト」ボタンを押して、「入力テストイベント」テキストエディターでイベントのコンテンツを貼り付けます。
スクロールして「保存とテスト」ボタンを押します。
すべてを正しく構成する場合は、Lambdaログ出力で次の成功メッセージを受信する必要があります。
素晴らしい!読み続ける前に、数分間の成功を楽しむことができます。
では、次に何ができますか?
この記事が好きですか? AWS Lambdaを使用して、サーバーレスアーキテクチャに関するインタラクティブなチュートリアルを提供するウェビナーを再生します。
Node.js、AWS Lambda、およびMongodb Atlasを使用したサーバーレス開発に関する
FAQ(FAQ)Mongodb Atlasは、AWS Lambdaとシームレスに統合されています。ハードウェア構成、データベースのセットアップ、パッチング、バックアップなどの時間のかかる管理タスクを自動化する完全に管理されたデータベースサービスを提供します。 Mongodb Atlasを使用すると、挿入、更新、削除などのデータベースイベントに基づいて、AWS Lambda関数を簡単にトリガーできます。これにより、強力でリアルタイム、サーバーレスアプリケーションを作成できます。
node.js、aws lambda、およびmongodb atlasを使用したサーバーレスアプリケーションのセットアップには、いくつかのステップが含まれます。まず、AWSラムダ関数を設定する必要があります。これには、node.jsを使用したコードの書き込みとAWS Lambdaにアップロードすることが含まれます。次に、Mongodb Atlasクラスターを構成する必要があります。これには、新しいクラスターの作成、IPホワイトリストの構成、データベースユーザーの作成が含まれます。最後に、AWS Lambda機能をMongodb Atlasクラスターに接続する必要があります。これには、Mongodb Atlasを使用して文字列を接続するようにLambda関数の構成が含まれます。
さまざまなツールとテクノロジーを使用して、サーバーレスアプリケーションの問題をトラブルシューティングすることができます。 AWS Lambdaは、機能実行の詳細なログを提供します。これは、エラーや問題を特定するのに役立ちます。 Mongodb Atlasはまた、包括的な監視と警告機能を提供し、データベースのパフォーマンスを追跡し、潜在的な問題のアラートを受信することができます。さらに、優れたコーディングプラクティスを使用してアプリケーションを徹底的にテストすると、問題を防ぐことができます。
セキュリティはあらゆるアプリケーションの重要な側面であり、サーバーレスアプリケーションも例外ではありません。 AWS Lambdaは、アクセス制御のためのAWS IDおよびアクセス管理(IAM)、輸送および安静時の暗号化、ネットワーク分離のVPCサポートなど、さまざまなセキュリティ機能を提供しています。 Mongodb Atlasは、IPホワイトリスト、データベース監査、安静時および輸送中の暗号化などの強力なセキュリティ機能も提供しています。これらのセキュリティ機能を適切に構成して、アプリケーションとデータを保護してください。
サーバーレスアプリケーションのパフォーマンスを最適化するには、さまざまな戦略が含まれます。これには、最適なパフォーマンスのためにAWS Lambda関数を正しく構成し、効率的なコードを使用し、Mongodb Atlasデータベースを最適化することが含まれます。 AWS Lambdaでは、CPU機能、ネットワーク帯域幅、およびディスクI/Oを比例的に割り当てる機能にメモリを割り当てることができます。 Mongodb Atlasは、自動インデックス作成やパフォーマンスコンサルタントのアドバイスなどのパフォーマンス最適化機能を提供します。
はい、AWSラムダは、node.js、python、java、go、.netなど、さまざまなプログラミング言語をサポートしています。 Mongodb Atlasは、MongoDBドライバーを使用した任意のプログラミング言語で使用できます。これにより、サーバーレス開発のための多用途のソリューションになります。
サーバーレスアーキテクチャは、アプリケーションのコストを大幅に削減できます。 AWS Lambdaを使用すると、消費する計算時間のみを支払い、コードが実行されていないときに請求しません。 Mongodb Atlasには、無料層を含むさまざまな価格設定オプションを提供しているため、ニーズに最適なオプションを選択できます。
既存のアプリケーションをサーバーレスアーキテクチャに移行するには、複数のステップが含まれます。まず、AWS LambdaとMongodb Atlasと互換性のあるものにするために、アプリケーションをリファクタリングする必要があります。これには、コードの書き換えと、サポートされているプログラミング言語を使用してデータベーススキーマの変更が含まれます。次に、AWS Lambda関数とMongodb Atlasクラスターをセットアップする必要があります。最後に、アプリケーションが新しいアーキテクチャで適切に機能することを確認するために、アプリケーションを徹底的にテストする必要があります。
AWS LambdaとMongodb Atlasはサーバーレス開発に多くの利点を提供しますが、注意を払うにはいくつかの制限があります。 AWS Lambdaには、利用可能な計算リソースとストレージリソースの量に制限があり、機能には最大の実行時間があります。 Mongodb Atlasは、データベースのサイズと接続数も制限します。ただし、これらの制限は通常、ほとんどのアプリケーションに対応するのに十分な高さです。
以上がNode.js、AWS Lambda、Mongodb Atlasを使用したサーバーレス開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。