AWS Lambda機能を使用して、最初のサーバーレスサービスを構築します
多くの開発者は、AWSラムダ機能にある程度精通しています。比較的簡単にセットアップできますが、広大なAWSエコシステムをナビゲートするのは困難です。膨大な数のコンポーネントにより、より大きな画像を把握し、ラムダ関数を標準のWebアプリケーションにスムーズに統合することが困難になります。
サーバーレスフレームワークは、このプロセスを大幅に簡素化します。作成、展開、そして最も重要なことに、Lambda機能のWebアプリケーションへの統合を合理化します。その機能はこれをはるかに超えていますが、この記事ではこれらのコア側面に焦点を当てています。この紹介では、サーバーレスのより広い機能を探索するためにあなたの興味を促します。 Lambdaが初めての場合は、最初にこのAWS入門ガイドをレビューすることを検討してください。
クイックスタートガイドは、初期インストールとセットアップに最適な指示を提供します。それに続いて、AWSアカウントを作成する必要がある場合でも、5〜10分以内に運用する必要があります。
最初のサーバーレスサービス
ファイルアップロードやS3バケットなどの高度な機能に飛び込む前に、基本的なLambda関数を作成し、HTTPエンドポイントに接続し、既存のWebアプリケーションから呼び出します。この関数は複雑なタスクを実行しませんが、サーバーレスフレームワークの使いやすさを効果的に示しています。
サービスを作成することから始めます。 Webアプリケーションで( create-react-app
を使用することは、新しいものを簡単に開始する方法です)、サービス用のディレクトリ( lambda
フォルダーなど)を作成します。端末のこのディレクトリに移動して実行します。
SLS CREATE -T AWS-NODEJS - PATH HELLY-WORLD
これによりhello-world
ディレクトリが作成されます。その内容を調べてみましょう。
handler.js
には、メッセージを返す非同期関数が含まれています。 sls deploy
を使用して、このLambda関数をすぐに展開して、呼び出される可能性があります。ただし、まずWebからアクセスできるようにしましょう。
手動AWS構成では、AWS APIゲートウェイのエンドポイントとステージのセットアップを行い、Lambdaにプロキシに設定します。サーバーレスは、最小限の構成でこれらすべてを処理します。
まだhello-world
ディレクトリに、 serverless.yaml
をOpen。
構成ファイルには、一般的なセットアップ用のボイラープレートが含まれています。 httpエントリを解除し、より記述的なパスを指定します。
関数: こんにちは: ハンドラー:Handler.hello イベント: -HTTP: パス:MSG 方法:取得します
それでおしまい。サーバーレスは、基礎となる複雑さを管理します。
CORS構成
Fetch APIを使用してフロントエンドJavaScriptから関数を呼び出すには、CORS構成が必要です。このセクションでは、プロセスの概要を説明します。
cors: true
:
関数: こんにちは: ハンドラー:Handler.hello イベント: -HTTP: パス:MSG 方法:取得します CORS:本当です
これにより、APIエンドポイントにCORが構成され、クロスオリジン通信が可能になります。
CORSラムダ調整
HTTPエンドポイントはCORS対応ですが、Lambda関数は適切なヘッダーを返す必要があります。 handler.js
を変更して、これを自動化しましょう。
const corsResponse = obj =>({ ステータスコード:200、 ヘッダー:{ 「アクセスコントロール - アロウオリジン」:「*」、 「Access-Control-Allow-Headers」:「*」 「アクセスコントロール - アロウメソッド」:「*」 }、 ボディ:json.stringify(obj) }); module.exports.hello = async event => { return corsResponse( "hello、world!"); };
これで、Lambda関数の応答はこの関数を通じて処理されます。
hello-world
ディレクトリからsls deploy
実行して、Lambda関数を展開します。
sls info
コマンドは関数のURLを提供し、AWSコンソールで手動で検索する必要性を排除します。 URLは似ています:
<code>https://6xpmc3g0ch.execute-api.us-east-1.amazonaws.com/dev/msg</code>
関数を呼び出す
次に、Fetchを使用してWebアプリケーションから関数を呼び出しましょう。
fetch( "https://6xpmc3g0ch.execute-api.us-east-1.amazonaws.com/dev/msg") .then(resp => resp.json()) .then(resp => { console.log(resp); });
メッセージは、ブラウザの開発者コンソールに表示されるはずです。
このプロセスを繰り返して、より実用的な機能を作成しましょう。画像を変更してS3バケットにアップロードするラムダです。 S3アップロードをトリガーする代わりに、ユーザーはLambdaに直接アップロードし、クライアント側のAWS SDKリソースの必要性を排除します。
実用的なラムダの構築
新しいサービスを作成しましょう(例: cover-art
):
SLS CREATE -T AWS-NODEJS - パスカバーアート
HTTPエンドポイントパス(ファイルアップロードの投稿メソッド)を追加し、CORを有効にします。
イベント: -HTTP: パス:アップロード 方法:投稿 CORS:本当です
serverless.yaml
のiamRoleStatements
セクションを解除および変更することにより、s3バケツへのラムダアクセスを許可します:yaml:
iamrolestatements: - 効果:「許可」 アクション: - 「S3:*」 リソース:["arn:aws:s3 ::: your-bucket-name/*"]
APIゲートウェイを構成して、 multipart/form-data
を受け入れます。
プロバイダー: 名前:AWS ランタイム:nodejs12.x アピガートウェイ: binarymediatypes: - 'multipart/form-data'
serverless.yaml
およびhandler.js
の機能をupload
に変更します。
コードの実装
必要なパッケージをインストールします:
npm i jimp uuid lambda-multipart-parser
handler.js
にS3アップロードヘルパー関数とメインアップロード関数を実装します(完全なコードは広すぎてここに含まれますが、元のプロンプトで使用できます)。
クライアント側のreact-dropzone
のようなライブラリを使用して、ファイルのアップロードを処理します(元のプロンプトで提供されるコードの例)。
オプション:バンドリング
コードをバンドルすると、展開サイズが削減され、パフォーマンスが向上します。 serverless-webpack
をインストールしてください:
npm i serverless-webpack - save-dev
serverless.yaml
に追加します:
プラグイン: -serverless-webpack
webpack.config.js
(元のプロンプトで提供される構成)を作成します。 webpackを利用するための再展開。
結論
サーバーレスフレームワークは、AWSラムダ機能の開発と展開を大幅に簡素化します。この紹介は、その能力をさらに調査するための基盤を提供します。元のプロンプトに記載されているリソースは、より深い理解のための貴重な学習機会を提供します。
以上がAWS Lambda機能を使用して、最初のサーバーレスサービスを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

タータンは、スコットランド、特にファッショナブルなキルトに通常関連する模様のある布です。 Tartanify.comでは、5,000を超えるTartanを集めました

インラインテンプレートディレクティブにより、既存のWordPressマークアップに対する進行性の強化として、リッチVUEコンポーネントを構築できます。

PHPテンプレートは、多くの場合、サブパーコードを促進するために悪いラップを取得しますが、そうである必要はありません。 PHPプロジェクトが基本を実施する方法を見てみましょう
