Erstellen und implementieren Sie eine serverlose Node.js-App, die von Cosmic JS unterstützt wird

Die serverlose Anwendungsentwicklung erfreut sich nicht zuletzt aufgrund des attraktiven Vorschlags, „Apps zu erstellen, keine Infrastruktur“, immer größerer Beliebtheit. Diese Art der Anwendungserstellung bietet viele Vorteile, darunter die Notwendigkeit, die Serverinfrastruktur nicht verwalten zu müssen, unbegrenzte Skalierbarkeit und keine Zahlung für ungenutzte Serverzeit, sondern nur dann, wenn Ihr Dienst verwendet wird.

Die Serverless-Plattform weiter abstrahiert das Erstellen von serverlosen Apps zu einem reizvollen Entwicklererlebnis, das Ihnen hilft, eine Cloud-Funktions-basierte App schnell zum Laufen zu bringen.

In diesem Tutorial zeige ich Ihnen, wie Sie mit dem beginnen können Cosmic JS Serverless Starter-App eine Sache von Minuten. Und als Bonus zeige ich Ihnen die Schritte, um jede Node.js-App in eine unbegrenzt skalierbare serverlose Node.js-App umzuwandeln. Lass uns anfangen.

TL;DR

Sehen Sie sich den Cosmic JS Serverless Starter auf GitHub an

Installieren Sie den Cosmic JS Serverless Starter

Führen Sie die folgenden Befehle aus, um den Cosmic JS Serverless Starter zu installieren:

npm i -g cosmic-cli
cosmic login
cosmic init serverless-starter

Diese Befehle bewirken Folgendes:

  1. Installiere das Kosmische CLI
  2. Melden Sie sich bei Ihrem Cosmic JS-Konto an (Möglicherweise müssen Sie einen neuen Bucket erstellen, wenn ja, wird er Sie durch diesen Vorgang führen 😀)
  3. Laden Sie die herunter Serverloser Starter und importieren Sie den Demo-Inhalt in Ihren ausgewählten Bucket.

Nach dem Herunterladen werden Sie aufgefordert, die App mit den folgenden Befehlen zu starten:

cd serverless-starter
cosmic develop
Your application should now be running at 

Serverlose Node.js-App

Machen Sie sich bereit zum Abheben

Nachdem unsere Anwendung nun lokal ausgeführt wird, bereiten wir uns darauf vor, sie in der AWS-Cloud zu starten. Zuerst müssen wir unsere AWS-Anmeldeinformationen verbinden. Um diese in Ihrem AWS-Konto zu finden, bietet Serverless auf ihrer Website eine großartige Anleitung.

Nachdem Sie Ihre AWS-Schlüssel abgerufen haben, führen Sie die folgenden Befehle aus:

export AWS_ACCESS_KEY_ID=your-aws-key-id
export AWS_SECRET_ACCESS_KEY=your-aws-secret-key

Und jetzt sind wir bereit, unseren Serverless Starter für AWS zu starten. Führen Sie den folgenden Befehl aus, um sich beim Serverless-Dienst anzumelden und unsere App bereitzustellen:

npm i -g serverless
serverless login
COSMIC_BUCKET=your-bucket-slug serverless deploy

Der serverlose Deploy-Befehl erledigt die ganze Schwerarbeit für uns. Es führt hinter den Kulissen mit unserem AWS-Konto etwas Magie aus, und sobald unsere App verfügbar ist, stellt es die Endpunkte bereit, um die bereitgestellte App zu finden. Durch Hinzufügen der Umgebungsvariable COSMIC_BUCKET wird unsere bereitgestellte App über die Cosmic JS-API mit unserem Cosmic JS-Bucket verbunden. Dadurch können wir Inhalte für unsere neu bereitgestellte serverlose App über das Cosmic JS Admin Dashboard verwalten.
Serverlose Ausgabe
Aus der obigen Ausgabe können Sie unsere verfügbaren Endpunkte sehen, an denen unsere serverlose Anwendung jetzt bereitgestellt wird.

Machen Sie jede Node.js-App Serverless-Ready

Also haben wir ein paar Befehle ausgeführt und die Cosmic JS Serverless Starter-App auf AWS gepusht … cool. Aber lassen Sie uns etwas tiefer gehen und einen Blick darauf werfen, wie wir die Node Starter-App transformiert haben und wie wir fast jede Node.js-App in eine serverlose App konvertieren können.

Serverless.yml bearbeiten

Um den Node Starter in eine serverlose App umzuwandeln, mussten wir eine serverless.yml-Datei erstellen und die Konfiguration so einstellen, dass sie dynamische Routen verarbeitet. Dies erfolgt im Bereich Funktion > App > Ereignisse, um die dynamischen HTTP-Ereignisse anzuzeigen. Es sieht aus wie das:



service: cosmic-serverless

provider:
  name: aws
  runtime: nodejs6.10
  stage: dev
  region: us-east-1
  environment:
    COSMIC_BUCKET: ${env:COSMIC_BUCKET}
    COSMIC_READ_KEY: ${env:COSMIC_READ_KEY}

functions:
  app:
    handler: app.handler
    events:
      - http: ANY /
      - http: 'ANY {proxy+}'
plugins:
  - serverless-offline

app.js bearbeiten

Als Nächstes mussten wir den Einstiegspunkt für die App-Datei app.js bearbeiten, um die Haupthandlerfunktion zu exportieren. Wir haben auch die aufgenommen Serverless-http-Knotenmodul um unsere Express-App für die serverlose Nutzung zu verpacken. Hier ist die app.js-Datei, die in serverlos konvertiert wurde:


const serverless = require('serverless-http')
const express = require('express')
const app = express()
const PORT = process.env.PORT || 3000
const Cosmic = require('cosmicjs')
const api = Cosmic()
const COSMIC_BUCKET = process.env.COSMIC_BUCKET || 'node-starter'
const COSMIC_READ_KEY = process.env.COSMIC_READ_KEY || ''
let stage_path = 'dev/'
if (process.env.STAGE === 'local')
  stage_path = ''
const bucket = api.bucket({
  slug: COSMIC_BUCKET,
  read_key: COSMIC_READ_KEY
})
app.set('view engine', 'ejs')
app.get('/:slug?', (req, res) => {
  let slug = req.params.slug
  const year = (new Date().getFullYear())
  if (!slug)
    slug = 'home'
  bucket.getObject({ slug }).then(data => {
    const page = data.object
    res.render('pages/default', { page, year, stage_path })
  }).catch(err => {
    const page = { title: 'Page not found' }
    res.render('pages/404', { page, year, stage_path })
  })
})

module.exports.handler = serverless(app);

Abschließend

Mit ein paar Änderungen können Sie eine Node.js-App schnell in eine serverlose App umwandeln. Die Serverless-Plattform abstrahiert die Komplexität der AWS-Kontokonfiguration, um Ihnen ein angenehmes Entwicklungserlebnis zu bieten. Fügen Sie Cosmic JS-basierte Inhalte hinzu und Sie haben eine unbegrenzt skalierbare serverlose App mit Inhalten, die über die Cosmic JS-API verwaltet werden. Keine zu verwaltenden Server, kein zu wartendes CMS. Das Erstellen von Apps, nicht von Infrastruktur, ist die Zukunft!

Wenn Sie Kommentare oder Fragen zum Erstellen serverloser Apps mit Cosmic JS haben, erreichen Sie uns auf Twitter und Diskutiere mit der Cosmic JS Community auf Slack.

Similar Posts

Leave a Reply

Your email address will not be published.