AWS Lambda serverless Framework und serverless-offline

nodejs, npm, serverless und serverless-offline installieren

Installation nodejs

$ sudo apt-get install curl python-software-properties
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install nodejs
$ node -v 

v8.2.1

$ npm -v 

5.3.0

Installation serverless

npm install -g serverless

serverless service erstellen

Project erstellen

# Ein neues Serverless Service/Project erstellen 
serverless create --template aws-nodejs --path my-service
# In das neue Verzeichnis wechseln
cd my-service

AWS Access-Key und Secret

export AWS_ACCESS_KEY_ID=<your-key-here>
export AWS_SECRET_ACCESS_KEY=<your-secret-key-here>
serverless deploy

oder

serverless config credentials --provider aws --key AKIAIOSFODNN7EXAMPLE --secret wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Deploy Service

serverless deploy -v

Die Logs der Function abrufen:

serverless invoke -f hello -l

Service in AWS entfernen

serverless remove

mysql RSD DB mit NodeJS in Lambda benutzen

Als erstes im Projectverzeichnis (my-project) das mysql plugin installieren

npm install mysql 

Im Code mysql hinzufügen und den restlichen mysql java-script Code:

var mysql = require('mysql');
module.exports.view = (event, context, callback) => {
  const ip = event.requestContext.identity.sourceIp;
  var connection = mysql.createConnection({
    host: 'YourRdsDB.xxxxxxx.eu-central-1.rds.amazonaws.com',
    user: 'DBUser',
    password: 'DBPass',
    database: 'DBname'
  });
  connection.connect();
  // ....
}

Serverless offline ohne AWS benutzen

Serverless-offline installieren

npm install serverless-offline --save-dev

Hinter einem Cooperate-Proxy ggf. auch noch mit Auth?

Einfach npm mit config set die Parameter für https-proxy und proxy setzen.

npm config set proxy http://"username:gehe\!m"@proxy.example.com:3128
npm config set https-proxy http://"username:gehe\!m"@proxy.example.com:3128

Sonderzeichen wie das ‘!’ hier im Beispiel müssen escaped werden. Und Benutzer und Password müssen komplett in ” gesetzt werden.

Das Verzeichnis “node_modules” sollte jetzt ungefähr so aussehen und unter anderem serverless-offline auflisten:

ls node_modules/
accept            babel-helpers   balanced-match   content               esutils            home-or-tmp  json5             mimos          os-homedir           serverless-offline  supports-color
ammo              babel-messages  boom             convert-source-map    globals            invariant    jsonpath-plus     minimatch      os-tmpdir            shot                to-fast-properties
ansi-regex        babel-register  brace-expansion  core-js               h2o2               iron         js-string-escape  minimist       path-is-absolute     slash               topo
ansi-styles       babel-runtime   call             cryptiles             hapi               isemail      js-tokens         mkdirp         peekaboo             source-map          trim-right
b64               babel-template  catbox           crypto                hapi-cors-headers  is-finite    kilt              moment         pez                  source-map-support  velocityjs
babel-code-frame  babel-traverse  catbox-memory    debug                 has-ansi           items        lodash            ms             private              statehood           vise
babel-core        babel-types     chalk            detect-indent         heavy              joi          loose-envify      nigel          regenerator-runtime  strip-ansi          wreck
babel-generator   babylon         concat-map       escape-string-regexp  hoek               jsesc        mime-db           number-is-nan  repeating            subtext

PlugIn in der serverless.yml hinzufügen

plugins:
  - serverless-offline

Überprüfen ob das PlugIn verfügbar ist

serverless

Die Ausgabe sollte unter commands jetzt zusätzlich “offline” und “offline-start” auflisten

...
logs .......................... Output the logs of a deployed function
metrics ....................... Show metrics for a specific function
offline ....................... Simulates API Gateway to call your lambda functions offline.
offline start ................. Simulates API Gateway to call your lambda functions offline using backward compatible initialization.
package ....................... Packages a Serverless service
remove ........................ Remove Serverless service and all resources
...

In der letzten Zeile werden alle verfügbaren PlugIns aufgelistet und “Offline” sollte dort auch aufgelistet werden.

Plugins
AwsCommon, AwsCompileAlexaSkillEvents, AwsCompileApigEvents, AwsCompileCloudWatchEventEvents, AwsCompileCloudWatchLogEvents, AwsCompileCognitoUserPoolEvents, AwsCompileFunctions, AwsCompileIoTEvents, AwsCompileS3Events, AwsCompileSNSEvents, AwsCompileScheduledEvents, AwsCompileStreamEvents, AwsConfigCredentials, AwsDeploy, AwsDeployFunction, AwsDeployList, AwsInfo, AwsInvoke, AwsInvokeLocal, AwsLogs, AwsMetrics, AwsPackage, AwsProvider, AwsRemove, AwsRollback, AwsRollbackFunction, Config, Create, Deploy, Emit, Info, Install, Invoke, Login, Logout, Logs, Metrics, Offline, Package, Platform, Remove, Rollback, Run, SlStats

Projekt offline starten

serverless offline start or sls offline start.

serverless offline start
Serverless: Starting Offline: dev/us-east-1.

Serverless: Routes for hello:
Serverless: (none)

Serverless: Offline listening on http://localhost:3000

Service testen

Dabei an den Proxy denken und den Parameter --noproxy setzen:

curl --noproxy "127.0.0.1, localhost" http://localhost:3000

Parameter von serverless-offline

serverless offline --help 
--prefix                -p  Adds a prefix to every path, to send your requests to http://localhost:3000/[prefix]/[your_path] instead. E.g. -p dev
--location              -l  The root location of the handlers' files. Defaults to the current directory
--host                  -o  Host name to listen on. Default: localhost
--port                  -P  Port to listen on. Default: 3000
--stage                 -s  The stage used to populate your templates. Default: the first stage found in your project.
--region                -r  The region used to populate your templates. Default: the first region for the first stage found.
--noTimeout             -t  Disables the timeout feature.
--noEnvironment             Turns off loading of your environment variables from serverless.yml. Allows the usage of tools such as PM2 or docker-compose.
--resourceRoutes            Turns on loading of your HTTP proxy settings from serverless.yml.
--dontPrintOutput           Turns off logging of your lambda outputs in the terminal.
--httpsProtocol         -H  To enable HTTPS, specify directory (relative to your cwd, typically your project dir) for both cert.pem and key.pem files.
--skipCacheInvalidation -c  Tells the plugin to skip require cache invalidation. A script reloading tool like Nodemon might then be needed.
--corsAllowOrigin           Used as default Access-Control-Allow-Origin header value for responses. Delimit multiple values with commas. Default: '*'
--corsAllowHeaders          Used as default Access-Control-Allow-Headers header value for responses. Delimit multiple values with commas. Default: 'accept,content-type,x-api-key'
--corsDisallowCredentials   When provided, the default Access-Control-Allow-Credentials header value will be passed as 'false'. Default: true
--exec "<script>"           When provided, a shell script is executed when the server starts up, and the server will shut domn after handling this command.

Parameter in der serverless.yml setzen

Beispiel:

custom:
  serverless-offline:
    httpsProtocol: "dev-certs"
    port: 4000
    prefix: "dev"
    stage: "dev"

Serverless Computing. What?

René Büst erklärt in seinem Artikel was “Serverless Infrastruktur” bzw. “Serverless Computing” ist.

Im Prinzip ist es nichts Besonderes, wenn Cloud-Anbieter ständig eine neue Sau durchs Dorf treiben. Die aktuelle Sau hört auf den Namen “Serverless Infrastructure” oder auch “Serverless Computing”. Das Außergewöhnliche daran ist jedoch, dass sie einige Verwirrung stiftet. Ist nun das Ende der Server angebrochen? Bei weitem nicht – viel mehr verschiebt sich innerhalb des Cloud-Stacks mal wieder etwas weiter nach oben.

Git: Version Control for Everyone eBook

Heute gibt es bei packtpub.com “Git: Version Control for Everyone” kostenlos zum herunterladen.

Controlling different versions of files is an efficient process with Git, and this book makes it a snap to learn too! A practical tutorial, it hard-wires the lessons through hands-on exercises throughout the course.

  • A complete beginner’s workflow for version control of common documents and content
  • Examples used are from non-techie, day to day computing activities we all engage in
  • Learn through multiple modes – readers learn theory to understand the concept and reinforce it by practical tutorials.
  • Ideal for users on Windows, Linux, and Mac OS X

Mastodon: social.pretzlaff.co

Auf social.pretzlaff.co läuft seit ein paar Tagen eine Mastodon Instanz. Mein User ist dort: rpr. Registration ist dort aktiviert.
Alternativ kann man sich auch einen Account auf einer der vielen anderen Mastodon Instanzen anlegen. Die Kommunikation funktioniert ja schließlich zwischen den Instanzen und ist ja auch der Sinn von Mastodon und dem dezentralem Aufbau.

Quelle: Wikipedia

Mastodon ist ein verteilter Mikrobloggingdienst, der 2016 von Eugen Rochko entwickelt wurde; einem deutschen Programmierer aus Jena. Im Gegensatz zu großen Plattformen wie Twitter ist Mastodon als dezentrales Netzwerk konzipiert. Benutzer können einer beliebigen Instanz beitreten oder selbst eine eigene betreiben. Mastodon ist kompatibel zu GNU Social sowie allen OStatus-Diensten.

Das Projekt ist Freie Software und steht mit seinem Quelltext unter der GNU Affero General Public License zur Verfügung. Entwicklung und Betrieb der Instanz mastodon.social werden durch Spenden finanziert.

Auf Mastodon können angemeldete Nutzer telegrammartige Kurznachrichten verbreiten. Diese Nachrichten werden „Toots“ oder übersetzt „Tröts“ genannt. Mastodon erlaubt pro Post (Toot) 500 Zeichen.

macOS High Sierra USB installer benutzen

Um den USB-Installer zu benutzen, einfach den Mac booten, während dessen die Option / alt (⌥) drücken.
Das Laufwerk mit dem Titel “Install macOS 10.13 Beta” auswählen.

MacOS High Sierra Installation
MacOS High Sierra Installation

Der Computer wird dann auf die MacOS 10.13 High Sierra Beta Installation booten und die Installation kann durchgeführt werden.

MacOs High Sierra Beta USB Boot-Stick erstellen

1) Lade das High Sierra Beta-Installationsprogramm herunter und stell sicher, dass es sich im / Applications-Ordner befindet. Dies ist der Standard-Download-Ort vom Mac App Store.

2) Einen >=8GB USB-Stick einstecken. Wenn der Stick nicht bereits als GUID Partition Map und Mac OS Extended (Journaled) formatiert ist, starte die Festplatten-Utility-Anwendung und formatiere den Stick. Dadurch werden alle Daten vom Laufwerk gelöscht.

3) Öffne ein Terminal-Fenster und füge folgenden Befehl ein, um den Beta-Installer auf den USB zu verschieben und ihn bootfähig zu machen:

sudo /Applications/Install\ macOS\ 10.13\ Beta.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ 10.13\ Beta.app --nointeraction

4) Gebe dein Ihr Benutzer-Passwort ein, wenn dazu aufgefordert wird. Das kopieren wird gestartet. Das USB-Laufwerk wird während des gesamten Prozesses aus gehangen und wird nicht auf dem Desktop angezeigt. Auf dem Terminal wird der Fortschritt angezeigt.

Sobald die Dateien kopiert wurden und das Laufwerk bootfähig gemacht wurde, wird das Laufwerk wieder auf dem Desktop erscheinen und das Terminal wird angezeigt, dass der Prozess abgeschlossen ist.

Practical Linux Security Cookbook

Bei packtpub.com gibt es wieder das tägliche kostenlose E-Book. “Practical Linux Security Cookbook” heißt das heutige Buch und könnte für einige interessant sein.

As more and more organizations adopt Linux for their networks and servers, the number of security threats grows and grows. As a sysadmin, you’ll be the first point of call when hackers threaten your network – and this free eBook will be your bible for building and maintaining a secure Linux system. Whether you are new to Linux administration or an experienced admin, this book will make your system secure. Walk through customizing the Linux kernel and securing local files, manage user authentication locally and remotely, patch bash vulnerability and more.

Learning Data Mining with Python Ebook for free

Heute gibt es das Buch “Learning Data Mining with Python” bei PacktPub kostenlos.

Data is the new oil in this information age and today’s free eBook will show you how to apply data mining concepts to real-world problems. Python is one of the most popular languages for data mining because it’s powerful and flexible when it comes to analysis. Deep dive into the libraries available in Python for data mining and learn new algorithms and techniques for turning raw data into insight.

Free Book: LaTeX Beginner’s Guide

LaTeX Beginner’s Guide

Get to grips with LaTeX with this accessible guide for beginners, and experience its versatility for yourself. Explore its extensive range of features to gain confidence with its impressive functionality using the step by step guidance, demonstrations and examples included throughout the book. Covering everything from basic formatting to typing complex mathematics formulas, LaTeX Beginner’s Guide is at once accessible and comprehensive, making LaTeX simple and easy to use.

https://www.packtpub.com/packt/offers/free-learning

Betrieben von WordPress | Theme: Baskerville 2 von Anders Noren.

Nach oben ↑