Blog

AWS Lambda inlined

Dennis Vriend

Aktualisiert Oktober 21, 2025
3 Minuten

Die einfachste Art, einen Lambda zu verpacken und bereitzustellen, ist inlined mit CloudFormation. Inlined bedeutet, dass der Quellcode Teil
der CloudFormation-Vorlage ist. Das Inlining von Code hat viele Vorteile, aber auch einige Nachteile. Dieser Artikel erörtert die Vor- und Nachteile
des Inlinings von Lambda-Code.

Vorteile

Das Einfügen von Lambda-Code hat die folgenden Vorteile:

  • Einfache Verpackungsstrategie,
  • Einfache Einsatzstrategie,
  • Ein einziges Artefakt für Verpackung und Bereitstellung,
  • Der Code ist Teil der Definition der Infrastruktur (CloudFormation),
  • Der Code ist Teil des Infrastruktur-Commits,
  • Die Versionierung von Lambda-Code ist kostenlos,
  • Inlined Code hat das AWS SDK zur Verfügung Es gibt viele Vorteile für das Inlining von Lambda-Code, aber auch einige Nachteile.

Benachteiligungen

Das Inlining von Lambda-Code hat folgende Nachteile:

  • Keine benutzerdefinierten Bibliotheken,
  • Nur für Python oder NodeJS verfügbar,
  • Maximal 4000 Zeichen pro inlined Lambda Der größte Nachteil eines inlined Lambdas ist, dass es keine benutzerdefinierten Bibliotheken unterstützt. Das bedeutet, dass Bibliotheken von Drittanbietern
    nicht verpackt oder aufgerufen werden können, mit Ausnahme des AWS SDK.

Ersetzen Sie Leerzeichen durch Tabulatoren

Beim Einbinden von Lambda-Code gibt es eine Grenze von 4000 Zeichen. Auch ein Leerzeichen zählt als ein Zeichen. Wenn Sie Python als
Programmiersprache verwenden, ist es hilfreich, Leerzeichen durch Tabulatoren für die Einrückung zu ersetzen. Da ein Zeichen eine wertvolle Ressource
beim Inlining eines Lambdas ist, spart dies Zeichen für den Code.

Ein Beispiel für ein inlined Lambda

Ein inlined Lambda ist Teil der CloudFormation-Vorlage. Beim Inlinen muss die Eigenschaft auf den Wert
gesetzt werden: . Der eingefügte Code ist Teil der Eigenschaft Code.ZipFile, wie unten gezeigt.

NodeJS:

  NodeFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: NodeFunction
      content: Node Function Handler
      Handler: index.handler
      Runtime: nodejs6.10
      Role: !GetAtt LambdaBasicExecutionRole.Arn
      Code:
        ZipFile: |
          exports.handler = function(event, context, callback) {
          console.log(event);
              const response = {
                  statusCode: 200,
                  body: JSON.stringify('Hello Node')
              };
              callback(null, response);
          };

Python:

  PythonFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: PythonFunction
      content: Python Function Handler
      Handler: index.handler
      Runtime: python3.6
      Role: !GetAtt LambdaBasicExecutionRole.Arn
      Code:
        ZipFile: |
          import json
          def handler(event, context):
            response = {
                'statusCode': 200,
                'body': json.dumps('Hello Python')
            }
            return response

aws-cfn-update

Das Dienstprogramm aws-cfn-update von binx.io macht es einfach,
Inline-Lambda-Code in eine CloudFormation-Vorlage zu integrieren. Das Beispielprojekt zeigt, dass es möglich ist, den Lambda-Quellcode
in einem separaten Ordner und einer separaten Datei zu haben. Diese Trennung erleichtert die Entwicklung von Lambdas und ermöglicht einen Entwicklungs- und Testzyklus.

Beispiel

Das Beispiel-Repository zeigt, wie Sie
ein Inline-Lambda erstellen, bauen und bereitstellen. Es zeigt auch, wie Sie den Lambda-Code von der CloudFormation-Vorlage trennen und wie Sie
den Code mit der CloudFormation-Vorlage zusammenführen. Das Beispiel zeigt ein Python- und ein NodeJS-Beispiel-Lambda, die Handler
für API Gateway sind.

Anhand des Beispiels

Ich gehe davon aus, dass Sie einen Mac haben, auf dem python, pipenv und sceptre installiert sind. Um das Beispiel auszuführen, geben Sie ein.
Um die URL des Api-Gateways zu erhalten, geben Sie ein. Um das Beispiel zu entfernen, geben Sie make delete ein.

Fazit

CloudFormation unterstützt eingebetteten Lambda-Code. Die Vorteile des Inlinings von Lambda-Code sind eine einfache Paketierungs- und Bereitstellungsstrategie,
ein einziges Paketierungs- und Bereitstellungsartefakt, Code ist Infrastruktur-als-Code, Code ist Teil des Infrastruktur-Commits, einfache
Lambda-Versionierung und die Verfügbarkeit des AWS SDK. Die Nachteile von Linining Lambda Code sind: keine Unterstützung für benutzerdefinierte Bibliotheken,
Begrenzung auf 4000 Zeichen und nur für Python und NodeJS verfügbar.

Verfasst von

Dennis Vriend

Contact

Let’s discuss how we can support your journey.