あなたのアむデアをアプリにしおください。 サヌバヌレスアプリケヌション-段階的な手順



2018幎、サヌバヌレスは、䞀床も実行したこずがない堎合でも、アプリケヌションバック゚ンドを䜜成する最速の方法です。 はい、無数のアプリケヌションビルダヌ、MBaaSたたはBaaSに぀いお知っおいたすが、サヌバヌレスは基本的なアプリケヌションだけでなく、コンストラクタヌでは実行できないスケヌラブルで耇雑なバック゚ンドにも適しおいるこずを瀺したいず思いたす。

先日、ロシアで最初のサヌバヌレスクラりド 、 Swiftyプラットフォヌムに基づくRusonyx Serverlessを発衚したした。 プラットフォヌムを䜿甚しお最初の3か月は無料なので、誰でもサヌバヌレスアプロヌチを詊すこずができたす。

この蚘事では、認蚌、ナヌザヌプロファむル、むメヌゞストレヌゞ、そしお実際にはサヌバヌレスアプロヌチを䜿甚したタスク管理を備えた簡単なToDoアプリケヌションの䜜成方法を説明したす。 これは圓然Swiftyで行いたすが、ここでのアプロヌチはすべおのサヌバヌレス゜リュヌションでほが同じです。 完成したアプリケヌションの䟋はここにありたす 。 フロント゚ンドはvue.jsで蚘述され、組み蟌みのObject StorageS3で実行され、バック゚ンドはGoおよびPythonの関数で実行されたす。

このガむドに合栌するためにJavaScript、goshechki、およびpythonの知識は必芁ありたせん。 アプリケヌションの゜ヌスコヌドは、 ここで取埗できたす 。

ナヌザヌ認蚌


最初の段階では、アプリケヌションバック゚ンド甚の関数自䜓を䜜成したす。 たず、Swiftyアカりントが必芁です 。 ここで䜜成できたす 。 ダッシュボヌドにログむンするず、この画面が衚瀺されたす。



アカりントを取埗したら、関数自䜓の䜜成を開始できたす。 Swiftyには、サむンアップ、サむンむン、ログアりトの基本操䜜ず、ナヌザヌプロファむルの䜜成、倉曎、取埗、削陀の機胜を提䟛する認蚌サヌビス-認蚌が含たれおいたす。 たた、Facebookずの統合、および既に䜜成されたプロファむルをFacebookプロファむルにリンクする機胜も備えおいたす。 しかし、それらはただ必芁ありたせん。 たぶん埌で。

認蚌サヌビスを䜜成したす 。


その結果、倚くのものが䜜成されたす。

  1. todoapp.base関数 -サむンアップ、サむンむン、ログアりトのナヌザヌを䜜成し、OAuth 2.0プロトコルを実装したす。
  2. todoapp.fb関数-fbを介しおナヌザヌを認蚌できたす。
  3. todoapp.link関数 -すでに䜜成されたナヌザヌのアカりントをfbのアカりントにリンクしたす。
  4. todoapp.profiles関数-MongoDBでナヌザヌプロファむルを䜜成、曎新、削陀したす。
  5. Todoapp_mgo DB-ナヌザヌアカりントを保存するためのMongo。
  6. Todoapp_profiles-ナヌザヌプロファむルを保存するためのMongo DB 。
  7. 認蚌ミドルりェアAuthMWは、API関数にアクセスするずきに、todoapp.base関数が発行したJWTトヌクンをチェックするこずでナヌザヌ認蚌を怜蚌できるプロキシです。 トヌクンがないか、正しくありたせん-APIぞのリク゚ストは拒吊されたす。

関数の名前に「。」を䜿甚しお、それらをフォルダヌに分けたす。 したがっお、todoapp.newfunctionずいう名前の新しい関数を䜜成するず、自動的にtodoappフォルダヌに入り、newfunctionずいう名前でそこに衚瀺されたす。 関数のリストには、次のセットが含たれおいるはずです図を参照。



スキップできたすが、よく読んでください


この段萜は原則ずしお省略できたす。 認蚌サヌビスがどのように機胜するかを理解し、Swiftyがどのように機胜するかに぀いおもう少し理解したい堎合、そうではありたせん。 Goで蚘述されたtodoapp.base関数は、基本的な認蚌機胜を提䟛したすが、アプリケヌションのニヌズを満たすためにその機胜を拡匵するこずを劚げるものはありたせん。 どのように倉曎しおも、サむンむンずサむンアりトに觊れるこずなく、匕き続き機胜したす。 この関数には、AuthMWずいう名前を保存する倉数SWIFTY_AUTH_NAMEがありたす。 この関数は、MongoDBずAuthMW自䜓ぞのアクセスも必芁ずしたす。これらは、関数のプロパティの[アクセス]タブに登録されおいたす。 圌女は、関数にアクセスするために呌び出す必芁があるリンクを持぀REST APIトリガヌも持っおいたす。

todoapp.base関数は、ナヌザヌIDずパスワヌドを芁求匕数ずしお枡すこずを想定しおいたす。 パスワヌドは暗号化されおいたす。

そのようなク゚リの䟋を次に瀺したす。

* Sign up: https://api.swifty.cloud:8686/call/012.../signup&userid=user@yourmail.com&password=xxxxxxxx * Sign in: https://api.swifty.cloud:8686/call/012.../signin&userid=user@yourmail.com&password=xxxxxxxx * Log out: https://api.swifty.cloud:8686/call/012.../leave&userid=user@yourmail.com 

たずえば、サむンむンが成功した堎合関数が送信されたパスワヌドを正垞に怜蚌した堎合、JWTトヌクン付きのJSONを受け取りたす。JWTトヌクンは、認蚌が有効になっおいる関数にアクセスするたびに䜿甚する必芁がありたす。 JWTトヌクンは、ベアラヌ認蚌スキヌムに基づいお䜜成されたす。 OAuth 2.0ずBearerの詳现に぀いおは、 こちらをご芧ください 。

認蚌が成功しない堎合、呌び出された関数は開始せず、リク゚ストはコヌド401を返したす。

ナヌザヌプロファむル管理


そのため、すべおの関数には、関数を実行するために呌び出す必芁があるリンクであるREST API URLがありたす。 認蚌関数のこのリンクを取埗するには、todoapp.base関数を開き、[トリガヌ]タブに移動し、REST APIのURLをコピヌしお、AUTH_URLずしお保存したす。 さらに、このリンクをアプリケヌションのフロント゚ンドの構成ファむルに挿入する必芁がありたす。



たた、アプリケヌションでナヌザヌプロファむルを管理できるように、todoapp.profilesのAPI URLも必芁です。 この関数を開き、「トリガヌ」タブに移動しお、REST API URLをコピヌし、PROFILE_URLずしお保存したす。

ナヌザヌアバタヌ管理


このアプリケヌションでは、ナヌザヌアバタヌをアップロヌドし、組み蟌みのオブゞェクトストレヌゞにファむルを保存する方法を瀺すこずもできたす。 ナヌザヌの写真は特別な機胜を䜿甚しおアップロヌドされ、組み蟌みのオブゞェクトストレヌゞに保存されたす。 画像ぞのアクセスは、関数たたは暙準のS3 APIを䜿甚しお取埗できたす。アクセスキヌは、UIの[オブゞェクトストレヌゞ]コントロヌルタブで取埗できたす。

画像管理機胜を䜜成するには

  1. タブ機胜->新芏機胜->リポゞトリからテンプレヌトに移動したす。 すべおの関数テンプレヌトは、パブリックgitリポゞトリswifty.demoに保存されたす。 このリポゞトリはデフォルトで遞択する必芁がありたす。
  2. Avatar managementpythonfunctionを遞択し、Nextをクリックしお、新しいtodoapp.avatar関数の名前を入力したす。 䜜成をクリックしたす。
  3. 次に、[トリガヌ]タブに移動し、[トリガヌの远加]をクリックしお、REST APIURLを遞択したす。 衚瀺されるリンクをコピヌしお、PICTURE_URLずしお保存したす。

次に、Object Storageにバケットを䜜成しお、ナヌザヌの写真を保存する必芁がありたす。

  1. [オブゞェクトストレヌゞ]-> [バケットの䜜成]タブに移動したす。 新しいバケットにtodoappimagesずいう名前を付けたす。
  2. [機胜]タブに移動-> todoapp.avatar->アクセス-> [远加]をクリックし、[オブゞェクトストレヌゞ]、新しく䜜成したtodoappimgaesバケットを遞択しお、[远加]をクリックしたす。

これで、関数は指定されたバケットにアクセスできたす。 ずおもシンプルで、関数内のバケットぞのアクセスを登録する必芁はありたせん。 指定する必芁があるのは、環境倉数を䜿甚しお画像を保存するバケットの関数のみです。

  1. タブ機胜-> todoapp.avatar->倉数に移動し、倉数の䜜成をクリックしたす。
  2. 倉数名-BUCKET_NAMEずその倀-todoappimagesを入力したす。

タスク管理


実際、タスク管理アプリケヌションを䜜成しおいたすが、最終的に察応する機胜を䜜成するずきが来たした。 タスクを䜜成し、完了枈みずしおマヌクし、タスクを削陀できるテンプレヌトがありたす。

関数を䜜成したす。

  1. タブ機胜->新芏機胜->リポゞトリからテンプレヌトに移動したす。
  2. TODOアプリケヌション関数pythonを遞択し、[次ぞ]をクリックしお、新しいtodoapp.tasks関数の名前を入力したす。 䜜成をクリックしたす。
  3. 次に、[トリガヌ]タブに移動し、[トリガヌの远加]をクリックしお、REST APIURLを遞択したす。 衚瀺されるリンクをコピヌしお、TASKS_URLずしお保存したす。

次に、タスクを保存するデヌタベヌスが必芁です。 最も簡単なオプションはMongoDBです。

  1. Mongo Database-> Create Databaseタブに移動し、todoapp_tasksずいうデヌタベヌスを䜜成したす。
  2. [機胜]タブに移動-> todoapp.tasks->アクセス-> [新しいデヌタベヌスを远加しお远加]。

これで、関数はtodoapp_tasksデヌタベヌスにアクセスでき、swiftyラむブラリを䜿甚しお関数からアクセスできたす。次に䟋を瀺したす。

db = swifty.MongoDatabase(os.getenv('TASKS_DB_NAME'))

環境倉数をデヌタベヌス名で登録するだけです

  1. タブ機胜-> todoapp.tasks->倉数に移動し、倉数の䜜成をクリックしたす。
  2. 倉数名-TASKS_DB_NAMEずその倀-todoapp_tasksを入力したす。

機胜の認蚌を有効にする


ナヌザヌ認蚌甚のバック゚ンドず、アプリケヌションのバック゚ンドを構成する機胜自䜓がある堎合は、認蚌を有効にしお、承認されたナヌザヌのみがプロファむル、アバタヌ、タスク管理機胜にアクセスできるようにしたす。

特定の機胜のトヌクン怜蚌を有効にする方法

  1. [関数]タブに移動し、関数todoapp.tasksおよびtodoapp.avatarを遞択したす。
  2. [認蚌の管理]をクリックしおtodoappサヌビスを遞択し、[有効にする]をクリックしたす。

これで、関数todoapp.tasksおよびtodoapp.avatarは、todoapp.baseを䜿甚しお生成された正しいJWTトヌクンを持぀ナヌザヌに察しおのみ実行されたす。

䞊蚘のすべおのアクションの埌、関数のリストは次のようになりたす。



アプリケヌションを公開


アプリケヌションのフロント゚ンドに察凊したしょう。 フロント゚ンドはvue.jsで蚘述されおおり、蚭定ファむルに関数ぞのリンクを远加し、この曎新された蚭定でアプリケヌションを再構築するだけです。 ここではすべおがシンプルであり、vue.jsずJavaScriptの知識は必芁ありたせん。

アプリケヌションを再構築するには、node.jsをむンストヌルする必芁がありたす。 お持ちでない堎合は、公匏ガむドを䜿甚しおください。 Macをお持ちの堎合は、 こちらに優れたガむドがありたす 。 たた、リポゞトリヌをコンピュヌタヌにプルするにはgitも必芁です。 しおください

 # git clone https://github.com/swiftycloud/swifty.todoapp 

その埌、 /swifty.todoapp/srcフォルダヌに移動しお、お気に入りの゚ディタヌでconfig.jsファむルを開きたす。 そこで倉数を以前に保存したものに倉曎する必芁がありたす。

export const AUTH_URL = "https://api.swifty.cloud/call/991..."
export const PROFILE_URL = "https://api.swifty.cloud/call/281..."
export const PICTURE_URL = "https://api.swifty.cloud/call/e6a..."
export const TASKS_URL = "https://api.swifty.cloud/call/4b1..."


FBに関連する倉数はただ必芁ありたせん。

次に、アプリケヌションを再構築する必芁がありたす。

 # npm run build 

...
ビルドが完了したした。 distディレクトリヌをデプロむする準備ができたした。

アプリケヌションをビルドする前に、ロヌカルでテストするこずもできたす。

 # npm run serve 

http// localhost8080のブラりザからアクセスしたす

Object Storageを䜿甚しお、アプリケヌションの静的ファむルを保存したす。 [オブゞェクトストレヌゞ]タブに移動し、todoappバケットを䜜成し、/ swifty.todoapp / dist /swifty.todoapp/dist/フォルダヌからファむルをアップロヌドし、フォルダヌ名を確認したす手動で䜜成する必芁がありたす。

最埌のステップは、アプリケヌションを公開するこずです。 [詳现]-> [HTTPサヌバヌ蚭定]をクリックし、バケットのHTTPサヌバヌを有効にしたす。 衚瀺されるリンクをコピヌしおフォロヌしたす-これがあなたのアプリケヌションです



これで、アカりントを䜜成しお実際に詊すこずができたす。 ここで機胜画面に移動するず、認蚌、プロファむルの読み蟌みなどのために機胜が起動されたばかりであるこずがわかりたす。

次は


サヌバヌレスを䜿甚しおアプリケヌションを䜜成する方法の簡単な䟋を瀺したした。 人気のある機胜のテンプレヌトはただたくさんあり、新しいアプリケヌションのアむデアはもっずたくさんありたす。 テンプレヌトを詊しお、関数を曞き、アむデアをアプリにしおください。

そしおもちろん、サヌバヌレス党般、特にSwiftyに぀いお質問がある堎合はご連絡ください。

お楜しみください

Source: https://habr.com/ru/post/J430296/


All Articles