Heute habe ich den Workflow, den ich hier beschrieben habe, noch etwas erweitert.
Schon lange wollte ich mal mit dem Amazon Simple Notification Service (SNS) arbeiten.
Außerdem habe ich die Quelldateien mittlerweile in einem AWS CodeCommit Repository.

Der komplette Ablauf sieht jetzt folgendmaßen aus:

  1. Bild wird in Instagram hochgeladen
  2. IFTTT gibt diese Info an das Amazon API Gateway weiter und ruft eine AWS Lambda Funktion auf
  3. In der Lambda Funktion wird der entsprechende Markdown-Text für den Blog-Artikel erzeugt und an den SNS Service weitergegeben
  4. Der SNS Service ruft eine weitere Lambda-Funktion auf
  5. In dieser Lambda-Funktion wird der Blog-Artikel als Markdown in das GIT-Repository (AWS CodeCommit) eingecheckt
  6. Die nächste Lambda-Funktion wird über einen Trigger auf dem GIT-Repository aufgerufen
  7. Diese Lambda-Funktion generiert aus dem Markdown-File die entsprechende HTML-Seite und publiziert diese via AWS S3

Das Erzeugen einer SNS-Nachricht aus einer Lambda-Funktion ist sehr einfach:

function instagramCreateMarkdownSns() {
  var AWS = require('aws-sdk');
  var sns = new AWS.SNS(
    { region: 'eu-central-1'}
  );

  var message = {
      filename: filename,
      body: body
  };
  sns.publish({
      TopicArn: 'arn:aws:sns:eu-central-1:112233445566:Name',
      Message: JSON.stringify(message)
  }, function(err, data) {
      if(err) {
          console.error('error publishing to SNS');
          context.fail(err);
      } else {
          console.info('message published to SNS');
          context.done(null, data);
      }
  });
}