Terraform -Modul, das fast alle unterstützten AWS -Lambda -Ressourcen erstellt und sich um den Bau und die Verpackung der erforderlichen Lambda -Abhängigkeiten für Funktionen und Schichten kümmert.
Dieses Terraform -Modul ist Teil von Serverless.tf Framework, das alle Vorgänge vereinfachen soll, wenn sie mit dem Serverless in Terraform arbeiten:
serverless.tf
-Modulen wie dem HTTP -API -Gateway (siehe Beispiele). module "lambda_function" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda1 "
description = " My awesome lambda function "
handler = " index.lambda_handler "
runtime = " python3.12 "
source_path = " ../src/lambda-function1 "
tags = {
Name = " my-lambda1 "
}
}
module "lambda_function" {
source = " terraform-aws-modules/lambda/aws "
function_name = " lambda-with-layer "
description = " My awesome lambda function "
handler = " index.lambda_handler "
runtime = " python3.12 "
publish = true
source_path = " ../src/lambda-function1 "
store_on_s3 = true
s3_bucket = " my-bucket-id-with-lambda-builds "
layers = [
module . lambda_layer_s3 . lambda_layer_arn ,
]
environment_variables = {
Serverless = " Terraform "
}
tags = {
Module = " lambda-with-layer "
}
}
module "lambda_layer_s3" {
source = " terraform-aws-modules/lambda/aws "
create_layer = true
layer_name = " lambda-layer-s3 "
description = " My amazing lambda layer (deployed from S3) "
compatible_runtimes = [ " python3.12 " ]
source_path = " ../src/lambda-layer "
store_on_s3 = true
s3_bucket = " my-bucket-id-with-lambda-builds "
}
module "lambda_function_existing_package_local" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda-existing-package-local "
description = " My awesome lambda function "
handler = " index.lambda_handler "
runtime = " python3.12 "
create_package = false
local_existing_package = " ../existing_package.zip "
}
Wenn Sie den Funktionscode und die Infrastrukturressourcen (wie IAM -Berechtigungen, Richtlinien, Ereignisse usw.) in getrennten Flüssen (z. B. verschiedene Repositories, Teams, CI/CD -Pipelines) verwalten möchten.
Deaktivieren Sie die Quellcodeverfolgung, um Bereitstellungen (und Rollbacks) mithilfe des Moduls durch Einstellen von ignore_source_code_hash = true
und bereitzustellen, und stellen Sie eine Dummy -Funktion bereit.
Wenn die Infrastruktur und die Dummy -Funktion bereitgestellt werden, können Sie das externe Tool verwenden, um den Quellcode der Funktion (z. B. AWS CLI) zu aktualisieren und dieses Modul über Terraform zu verwenden, um die Infrastruktur zu verwalten.
Beachten Sie, dass Änderungen im Wert von local_existing_package
die Bereitstellung über Terraform auslösen können.
module "lambda_function_externally_managed_package" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda-externally-managed-package "
description = " My lambda function code is deployed separately "
handler = " index.lambda_handler "
runtime = " python3.12 "
create_package = false
local_existing_package = " ./lambda_functions/code.zip "
ignore_source_code_hash = true
}
Beachten Sie, dass dieses Modul keine vorgebauten Pakete in S3 -Bucket kopiert. Dieses Modul kann nur Pakete speichern, die es lokal und in S3 -Eimer erstellt.
locals {
my_function_source = " ../path/to/package.zip "
}
resource "aws_s3_bucket" "builds" {
bucket = " my-builds "
acl = " private "
}
resource "aws_s3_object" "my_function" {
bucket = aws_s3_bucket . builds . id
key = " ${ filemd5 (local . my_function_source ) } .zip "
source = local . my_function_source
}
module "lambda_function_existing_package_s3" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda-existing-package-local "
description = " My awesome lambda function "
handler = " index.lambda_handler "
runtime = " python3.12 "
create_package = false
s3_existing_package = {
bucket = aws_s3_bucket.builds.id
key = aws_s3_object.my_function.id
}
}
module "lambda_function_container_image" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda-existing-package-local "
description = " My awesome lambda function "
create_package = false
image_uri = " 132367819851.dkr.ecr.eu-west-1.amazonaws.com/complete-cow:1.0 "
package_type = " Image "
}
module "lambda_layer_local" {
source = " terraform-aws-modules/lambda/aws "
create_layer = true
layer_name = " my-layer-local "
description = " My amazing lambda layer (deployed from local) "
compatible_runtimes = [ " python3.12 " ]
source_path = " ../fixtures/python-app1 "
}
module "lambda_layer_s3" {
source = " terraform-aws-modules/lambda/aws "
create_layer = true
layer_name = " my-layer-s3 "
description = " My amazing lambda layer (deployed from S3) "
compatible_runtimes = [ " python3.12 " ]
source_path = " ../fixtures/python-app1 "
store_on_s3 = true
s3_bucket = " my-bucket-id-with-lambda-builds "
}
Stellen Sie sicher, dass Sie Lambda@Edge-Funktionen in der Region US Ost (N. Virginia) ( us-east-1
) einsetzen. Siehe Anforderungen und Einschränkungen der Lambda -Funktionen.
module "lambda_at_edge" {
source = " terraform-aws-modules/lambda/aws "
lambda_at_edge = true
function_name = " my-lambda-at-edge "
description = " My awesome lambda@edge function "
handler = " index.lambda_handler "
runtime = " python3.12 "
source_path = " ../fixtures/python-app1 "
tags = {
Module = " lambda-at-edge "
}
}
module "lambda_function_in_vpc" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda-in-vpc "
description = " My awesome lambda function "
handler = " index.lambda_handler "
runtime = " python3.12 "
source_path = " ../fixtures/python-app1 "
vpc_subnet_ids = module . vpc . intra_subnets
vpc_security_group_ids = [ module . vpc . default_security_group_id ]
attach_network_policy = true
}
module "vpc" {
source = " terraform-aws-modules/vpc/aws "
name = " my-vpc "
cidr = " 10.10.0.0/16 "
# Specify at least one of: intra_subnets, private_subnets, or public_subnets
azs = [ " eu-west-1a " , " eu-west-1b " , " eu-west-1c " ]
intra_subnets = [ " 10.10.101.0/24 " , " 10.10.102.0/24 " , " 10.10.103.0/24 " ]
}
Es gibt 6 unterstützte Möglichkeiten, IAM -Richtlinien an die von der Lambda -Funktion verwendete IAM -Rolle zu verbinden:
policy_json
- JSON -String oder Heredoc, wenn attach_policy_json = true
.policy_jsons
- Liste der JSON -Zeichenfolgen oder Heredoc, wenn attach_policy_jsons = true
und number_of_policy_jsons > 0
.policy
- ARN der bestehenden IAM -Richtlinie, wenn attach_policy = true
.policies
- Liste der ARNs vorhandener IAM -Richtlinien, wenn attach_policies = true
und number_of_policies > 0
.policy_statements
- Karte der Karten zur Definition von IAM -Aussagen, die als IAM -Richtlinie generiert werden. Benötigt attach_policy_statements = true
. Weitere Informationen finden Sie examples/complete
.assume_role_policy_statements
- Karte der Karten zur Definition von IAM -Anweisungen, die als IAM -Richtlinie für die Übernahme von Lambda -Funktionsrolle (Trust -Beziehung) generiert werden. Weitere Informationen finden Sie examples/complete
. Lambda -Berechtigungen sollten angegeben werden, um bestimmte Ressourcen zu ermöglichen, um die Lambda -Funktion aufzurufen.
module "lambda_function" {
source = " terraform-aws-modules/lambda/aws "
# ...omitted for brevity
allowed_triggers = {
Config = {
principal = " config.amazonaws.com "
principal_org_id = " o-abcdefghij "
}
APIGatewayAny = {
service = " apigateway "
source_arn = " arn:aws:execute-api:eu-west-1:135367859851:aqnku8akd0/*/*/* "
},
APIGatewayDevPost = {
service = " apigateway "
source_arn = " arn:aws:execute-api:eu-west-1:135367859851:aqnku8akd0/dev/POST/* "
},
OneRule = {
principal = " events.amazonaws.com "
source_arn = " arn:aws:events:eu-west-1:135367859851:rule/RunDaily "
}
}
}
Manchmal müssen Sie eine Möglichkeit haben, Ressourcen bedingt zu erstellen, aber Terraform ermöglicht keine Verwendung von count
innerhalb module
, daher besteht die Lösung darin, Argumente create
.
module "lambda" {
source = " terraform-aws-modules/lambda/aws "
create = false # to disable all resources
create_package = false # to control build package process
create_function = false # to control creation of the Lambda Function and related resources
create_layer = false # to control creation of the Lambda Layer and related resources
create_role = false # to control creation of the IAM role and policies required for Lambda Function
attach_cloudwatch_logs_policy = false
attach_dead_letter_policy = false
attach_network_policy = false
attach_tracing_policy = false
attach_async_event_policy = false
# ... omitted
}
Dies ist eines der kompliziertesten Teile des Moduls, und normalerweise müssen Sie keine Interna kennen.
package.py
ist das Python -Skript, das es tut. Stellen Sie sicher, dass Python 3.6 oder neuer installiert ist. Die Hauptfunktionen des Skripts sind es, einen Dateinamen von Zip-Archive basierend auf dem Inhalt der Dateien zu generieren, zu überprüfen, ob das Zip-Archiv bereits erstellt wurde, und erstellen Sie nur dann, wenn dies erforderlich ist (während apply
, nicht plan
). .
Hash of Zip-Archive mit demselben Inhalt der Dateien ist immer identisch, was unnötige Kraft-Updates der Lambda-Ressourcen verhindert, es sei denn, der Inhalt ändert. Wenn Sie unterschiedliche Dateinamen für denselben Inhalt haben müssen, können Sie zusätzliches String -Argument hash_extra
angeben.
Wenn Sie dieses Modul mehrmals in einer Ausführung aufrufen, um Pakete mit demselben source_path
zu erstellen, werden Zip-Archives aufgrund von gleichzeitigen Schreibvorgängen in derselben Datei beschädigt. Es gibt zwei Lösungen: Stellen Sie verschiedene Werte für hash_extra
fest, um verschiedene Archive zu erstellen, oder das Paket nach außen (mit diesem Modul) und dann das Argument local_existing_package
übergeben, um andere Lambda -Ressourcen zu erstellen.
Aufbau und Verpackung war in der Vergangenheit schwer zu debuggen (insbesondere bei Terraform). Daher haben wir uns bemüht, dass der Benutzer Debug -Infos erleichtert. Es gibt 3 verschiedene Debug -Levels: DEBUG
- um nur zu sehen, was während der Planungsphase passiert und wie eine Zip -Datei -Inhaltsfilterung bei angewandten Mustern, DEBUG2
-, um mehr Protokollierungsausgabe zu sehen, DEBUG3
-, um alle Protokollierungswerte zu sehen, DUMP_ENV
- zu sehen Sehen Sie alle Protokollierungswerte und Env -Variablen (Seien Sie vorsichtig Ihre Umweltvariablen, da sie Geheimnisse enthalten können!).
Der Benutzer kann eine solche Debug -Ebene angeben:
export TF_LAMBDA_PACKAGE_LOG_LEVEL=DEBUG2
terraform apply
Der Benutzer kann Kommentare in Heredoc -Zeichenfolgen in patterns
aktivieren, die in einigen Situationen hilfreich sein können. Setzen Sie dazu diese Umgebungsvariable:
export TF_LAMBDA_PACKAGE_PATTERN_COMMENTS=true
terraform apply
Sie können source_path
auf verschiedene Weise angeben, um die gewünschte Flexibilität beim Erstellen von Bereitstellungspaketen lokal oder in Docker zu erreichen. Sie können absolute oder relative Pfade verwenden. Wenn Sie Terraformdateien in Unterverzeichnissen platziert haben, beachten Sie, dass relative Pfade aus dem Verzeichnis angegeben sind, in dem terraform plan
ausgeführt wird und nicht der Ort Ihrer Terraform -Datei.
Beachten Sie, dass Dateien beim lokalen Erstellen bei Paketen nicht mehr aus den Quellverzeichnissen kopieren, die schnelle Python -reguläre Ausdrücke verwenden, um passende Dateien und Verzeichnisse zu finden, wodurch die Verpackung sehr schnell und leicht zu verstehen ist.
Wenn source_path
auf eine Zeichenfolge gesetzt ist, wird der Inhalt dieses Pfades zum Erstellen des Bereitstellungspakets als IS verwendet:
source_path = "src/function1"
Wenn source_path
auf eine Liste von Verzeichnissen eingestellt ist, wird der Inhalt der einzelnen und ein Archiv erstellt.
Dies ist die umfassendste Möglichkeit, ein Bereitstellungspaket aus mehreren Quellen mit mehreren Abhängigkeiten zu erstellen. In diesem Beispiel werden einige der verfügbaren Optionen angezeigt (siehe Beispiele/Build-Package und Beispiele/Laufzeiten für mehr):
source_path = [
" src/main-source " ,
" src/another-source/index.py " ,
{
path = " src/function1-dep " ,
patterns = [
" !.*/.* \ .txt " , # Skip all txt files recursively
]
}, {
path = " src/python-app1 " ,
pip_requirements = true ,
pip_tmp_dir = " /tmp/dir/location "
prefix_in_zip = " foo/bar1 " ,
}, {
path = " src/python-app2 " ,
pip_requirements = " requirements-large.txt " ,
patterns = [
" !vendor/colorful-0.5.4.dist-info/RECORD " ,
" !vendor/colorful-.+.dist-info/.* " ,
" !vendor/colorful/__pycache__/?.* " ,
]
}, {
path = " src/nodejs14.x-app1 " ,
npm_requirements = true ,
npm_tmp_dir = " /tmp/dir/location "
prefix_in_zip = " foo/bar1 " ,
}, {
path = " src/python-app3 " ,
commands = [
" npm install " ,
" :zip "
],
patterns = [
" !.*/.* \ .txt " , # Skip all txt files recursively
" node_modules/.+ " , # Include all node_modules
],
}, {
path = " src/python-app3 " ,
commands = [ " go build " ],
patterns = << END
bin/.*
abc/def/.*
END
}
]
Nur wenige Notizen:
python
oder nodejs
beginnt, erstellt der Build -Prozess automatisch Python- und NodeJS -Abhängigkeiten, wenn requirements.txt
oder package.json
-Datei im Quellordner gefunden werden. Wenn Sie dieses Verhalten anpassen möchten, verwenden Sie bitte die Objektnotation, wie unten erläutert.path
sind optional.patterns
- Liste der Python Regex -Dateinamen sollten erfüllen. Der Standardwert ist "alles integrieren", was patterns = [".*"]
. Dies kann auch als Multiline -Heredoc -Zeichenfolge angegeben werden (keine Kommentare erlaubt). Einige Beispiele für gültige Muster:commands
und die Ketten mehrere Befehle verwenden, wird nur der Bezugscode des letzten Befehls auf Erfolg überprüft. Wenn Sie es vorziehen, schnell zu scheitern, starten Sie die Befehle mit der Option BASH -Option set -e
oder PowerShell $ErrorActionPreference="Stop"
!. * /. * .txt # Filter all txt files recursively
node_modules/. * # Include empty dir or with a content if it exists
node_modules/.+ # Include full non empty node_modules dir with its content
node_modules/ # Include node_modules itself without its content
# It's also a way to include an empty dir if it exists
node_modules # Include a file or an existing dir only
!abc/. * # Filter out everything in an abc folder
abc/def/. * # Re-include everything in abc/def sub folder
!abc/def/hgk/. * # Filter out again in abc/def/hgk sub folder
commands
- Liste der zu ausgeführten Befehle. Wenn angegeben, überschreibt dieses Argument pip_requirements
und npm_requirements
.:zip [source] [destination]
ist ein spezieller Befehl, der Inhalte des aktuellen Arbeitsverzeichnisses (erstes Argument) erstellt und ihn in den Pfad (zweite Argument) platziert.pip_requirements
- Steuert, ob pip install
ausgeführt werden soll. Auf false
eingestellt, um diese Funktion zu deaktivieren, true
für die Ausführung pip install
mit requirements.txt
im path
gefunden. Oder auf einen anderen Dateinamen festlegen, den Sie stattdessen verwenden möchten. Wenn source_path
als Zeichenfolge übergeben wird, die einen Pfad enthält (und nicht eine Liste von Karten), und requirements.txt
ist vorhanden, wird pip install
automatisch ausgeführt.pip_tmp_dir
- Setzen Sie das Basisverzeichnis, um das temporäre Verzeichnis für PIP -Installationen zu erstellen. Kann für Docker in Docker Builds nützlich sein.poetry_install
- steuert, ob poetry export
und pip install
ausgeführt werden soll. Auf false
festgelegt, um dieses Merkmal zu deaktivieren, true
poetry export
mit pyproject.toml
und poetry.lock
im path
zu führen. Wenn source_path
als String übergeben wird, der einen Pfad (und nicht als Liste von Karten) enthält, und pyproject.toml
mit einer Build -System poetry
vorhanden ist, werden die Export- und pip install
poetry export
automatisch ausgeführt.poetry_export_extra_args
- eine Liste zusätzlicher Poesieargumente, die zum Befehl Poesiexport hinzugefügt werden könnennpm_requirements
- steuert, ob npm install
ausgeführt werden soll. Auf false
festgelegt, um diese Funktion zu deaktivieren, true
npm install
mit package.json
in path
aus. Oder auf einen anderen Dateinamen festlegen, den Sie stattdessen verwenden möchten.npm_tmp_dir
- Setzen Sie das Basisverzeichnis, um das temporäre Verzeichnis für NPM -Installationen zu erstellen. Kann für Docker in Docker Builds nützlich sein.prefix_in_zip
- falls angegeben, wird als Präfix innerhalb von Zip -Archive verwendet. Standardmäßig wird alles in das Root des Zip-Archiven installiert.Wenn Ihre Lambda -Funktion oder -schicht einige Abhängigkeiten verwendet, können Sie sie in Docker erstellen und in das Bereitstellungspaket einbezogen werden. So können Sie es tun:
build_in_docker = true
docker_file = "src/python-app1/docker/Dockerfile"
docker_build_root = "src/python-app1/docker"
docker_image = "public.ecr.aws/sam/build-python"
runtime = "python3.12" # Setting runtime is required when building package in Docker and Lambda Layer resource.
Mit diesem Modul können Sie Abhängigkeiten von privaten Hosts installieren. Dazu brauchen Sie einen Vorwärts -SSH -Agenten:
docker_with_ssh_agent = true
Beachten Sie, dass der verwendete docker_image
standardmäßig aus der Registrierung public.ecr.aws/sam/
sam/ stammt und auf der von Ihnen angegebenen runtime
basiert. Mit anderen Worten, wenn Sie eine Laufzeit von python3.12
angeben und docker_image
nicht angeben, wird der docker_image
auf public.ecr.aws/sam/build-python3.12
festlegen. Dies stellt sicher, dass die runtime
standardmäßig im Docker -Container verfügbar ist.
Wenn Sie docker_image
überschreiben, halten Sie das Bild unbedingt mit Ihrer runtime
. Während der Planphase, bei der Verwendung von Docker, gibt es keine Überprüfung, ob die runtime
zum Erstellen des Pakets verfügbar ist. Das heißt, wenn Sie ein Bild verwenden, das nicht über die Laufzeit verfügt, wird der Plan weiterhin erfolgreich sein, aber dann wird der Antrag fehlschlagen.
Um beim Erstellen von Docker Flexibilität hinzuzufügen, können Sie eine beliebige Anzahl von zusätzlichen Optionen übergeben, die Sie benötigen (siehe Docker -Auslaufreferenz für verfügbare Optionen):
docker_additional_options = [
" -e " , " MY_ENV_VAR='My environment variable value' " ,
" -v " , " /local:/docker-vol " ,
]
Setzen Sie docker_entrypoint
, um den Docker -Einstiegspunkt beim Erstellen in Docker zu überschreiben:
docker_entrypoint = " /entrypoint/entrypoint.sh "
Der Einstiegspunkt muss einem Pfad in Ihrem Container zugeordnet werden, sodass Sie entweder Ihr eigenes Bild erstellen müssen, das den Einstiegspunkt enthält, oder es einer Datei auf dem Host zuordnen, indem Sie ein Volumen montieren (siehe Übergabe zusätzlicher Docker -Optionen).
Standardmäßig erstellt dieses Modul das Einsatzpaket und verwendet es, um die Lambda -Funktion oder die Lambda -Ebene zu erstellen oder zu aktualisieren.
Manchmal möchten Sie möglicherweise das Erstellen des Bereitstellungspakets (z. B. Abhängigkeiten) von der Bereitstellung eines Pakets in zwei separate Schritte trennen.
Wenn Sie Archiv lokal außerhalb dieses Moduls erstellen, müssen Sie create_package = false
und dann argument local_existing_package = "existing_package.zip"
festlegen. Alternativ können Sie es vorziehen, Ihre Bereitstellungspakete in S3 -Bucket zu halten und einen Verweis auf sie wie folgt zu geben:
create_package = false
s3_existing_package = {
bucket = " my-bucket-with-lambda-builds "
key = " existing_package.zip "
}
Dies kann in zwei Schritten implementiert werden: Datei lokal mit Curl herunterladen und Pfad an das Bereitstellungspaket als Argument local_existing_package
übergeben.
locals {
package_url = " https://raw.githubusercontent.com/terraform-aws-modules/terraform-aws-lambda/master/examples/fixtures/python-zip/existing_package.zip "
downloaded = " downloaded_package_ ${ md5 (local . package_url ) } .zip "
}
resource "null_resource" "download_package" {
triggers = {
downloaded = local.downloaded
}
provisioner "local-exec" {
command = " curl -L -o ${ local . downloaded } ${ local . package_url } "
}
}
data "null_data_source" "downloaded_package" {
inputs = {
id = null_resource.download_package.id
filename = local.downloaded
}
}
module "lambda_function_existing_package_from_remote_url" {
source = " terraform-aws-modules/lambda/aws "
function_name = " my-lambda-existing-package-local "
description = " My awesome lambda function "
handler = " index.lambda_handler "
runtime = " python3.12 "
create_package = false
local_existing_package = data . n ull_data_source . downloaded_package . outputs [ " filename " ]
}
AWS Sam Cli ist ein Open -Source -Tool, mit dem die Entwickler serverlose Anwendungen initiieren, erstellen, testen und bereitstellen können. Sam Cli Tool unterstützt Terraform -Anwendungen.
SAM CLI bietet zwei Testmethoden: lokale Tests und Tests vor dem Wlocken (beschleunigen).
Mit Sam CLI können Sie die in der Terraform-Anwendung definierten Lambda-Funktionen lokal mit dem Befehl sam Local aufrufen, die Funktion der Funktion Terraform oder Funktionsname angeben, und um den hook-name
auf terraform
zu setzen, um Sam CLI zu sagen, dass das zugrunde liegende Projekt angewiesen wird ist eine Terraform -Anwendung.
Sie können den Befehl sam local invoke
aus Ihrem Terraform Application Root Directory wie folgt ausführen:
sam local invoke --hook-name terraform module.hello_world_function.aws_lambda_function.this[0]
Sie können auch eine Veranstaltung an Ihre Lambda -Funktion übergeben oder seine Umgebungsvariablen überschreiben. Weitere Informationen finden Sie hier.
Sie können Ihre Lambda-Funktion auch im Debugging-Modus aufrufen und Ihre Lambda-Funktionsquellencode lokal in Ihrem bevorzugten Editor durchschreiten. Weitere Informationen finden Sie hier.
Sie können AWS SAM CLI verwenden, um Ihre Anwendung schnell auf Ihrem AWS -Entwicklungskonto zu testen. Mit Sam Accelerate können Sie Ihre Lambda -Funktionen lokal entwickeln. Sobald Sie Ihre Updates gespeichert haben, aktualisiert Sam Cli Ihr Entwicklungskonto mit den aktualisierten Lambda -Funktionen. Sie können es also auf der Cloud testen, und wenn ein Fehler vorliegt, können Sie den Code schnell aktualisieren, und Sam Cli kümmert sich um den Schieben in die Cloud. Weitere Informationen zu Sam Accelerate finden Sie hier.
Sie können den Befehl sam sync
aus Ihrem Terraform Application Root Directory wie folgt ausführen:
sam sync --hook-name terraform --watch
In der Regel aktualisiert Lambda -Funktionsressourcen, wenn sich Quellcode ändert. Wenn publish = true
angegeben ist, wird auch eine neue Lambda -Funktionsversion erstellt.
Die veröffentlichte Lambda -Funktion kann entweder nach Versionsnummer oder mit $LATEST
aufgerufen werden. Dies ist die einfachste Bereitstellungsmethode, für die kein zusätzliches Tool oder Dienst erforderlich ist.
Um kontrollierte Bereitstellungen (Rolling, Kanarien, Rollbacks) von Lambda -Funktionen durchzuführen, müssen wir Lambda -Funktion Aliase verwenden.
In einfachen Worten ist Lambda alias wie ein Zeiger auf eine Version der Lambda -Funktion (nach Abschluss der Bereitstellung) oder auf zwei gewichtete Versionen der Lambda -Funktion (während des Rollens oder der Kanarischen Bereitstellung).
Eine Lambda -Funktion kann in mehreren Aliase verwendet werden. Die Verwendung von Aliase gibt eine große Kontrolle darüber, welche Version bei mehreren Umgebungen bereitgestellt wird.
Es gibt Alias -Modul, das die Arbeit mit Alias vereinfacht (Erstellen, Verwalten von Konfigurationen, Updates usw.). Beispiele/Alias für verschiedene Anwendungsfälle, wie Aliase konfiguriert und verwendet werden können.
Es gibt Bereitstellungsmodul, mit dem die erforderlichen Ressourcen für Bereitstellungen mit AWS -CodEDePloy erstellt werden. Es schafft auch den Einsatz und wartet auf die Fertigstellung. Beispiele/Bereitstellen finden Sie im vollständigen Prozess von End-to-End-Build/Update/Bereitstellung.
Terraform Cloud, Terraform Enterprise und viele andere SaaS für das Lauf von Terraform haben die Arbeiter nicht vorinstalliert. Sie müssen ein alternatives Docker -Image mit python installiert bereitstellen, um dieses Modul dort zu verwenden.
F1: Warum das Einsatzpaket jedes Mal, wenn ich etwas ändere, nicht neu erstellt? Oder warum wird jedes Mal das Einsatzpaket nachgebaut, aber Inhalte wurden nicht geändert?
Antwort: Es kann mehrere Gründe in Bezug auf gleichzeitige Ausführungen oder auf Inhalts -Hash geben. Manchmal sind Änderungen in der Abhängigkeit aufgetreten, die bei der Berechnung des Inhalts -Hashs nicht verwendet wird. Oder mehrere Pakete erstellen gleichzeitig aus denselben Quellen. Sie können es erzwingen, indem Sie den Wert von
hash_extra
auf unterschiedliche Werte einstellen.
F2: Wie kann man das Einsatzpaket erstellen?
ANTWORT: Löschen Sie ein vorhandenes Zip-Archiv aus
builds
Verzeichnis oder ändern Sie Ihren Quellcode. Wenn für den aktuellen Content-Hash kein Zip-Archiv vorhanden ist, wird es währendterraform apply
nachgebildet.
Q3: null_resource.archive[0] must be replaced
Antwort: Dies bedeutet wahrscheinlich, dass Zip-Archive eingesetzt wurde, aber derzeit vor Ort abwesend ist und vor Ort nachgebildet werden muss. Wenn Sie dieses Problem während des CI/CD -Prozesses (wo der Arbeitsbereich sauber ist) oder aus mehreren Arbeitsbereichen einhergehen, können Sie die Umgebungsvariable
TF_RECREATE_MISSING_LAMBDA_PACKAGE=false
oder cassrecreate_missing_package = false
als Parameter für das Modul undterraform apply
durchführen. Alternativ können Sie als Parametertrigger_on_package_timestamp = false
übergeben, um den Zeitstempel der Datei zu ignorieren, wenn Sie sich entscheiden, das Archiv zu erstellen oder nicht.
F4: Was bedeutet dieser Fehler - "We currently do not support adding policies for $LATEST."
?
Antwort: Wenn die Lambda -Funktion mit
publish = true
erstellt wird, wird die neue Version automatisch erhöht und eine qualifizierte Kennung (Versionsnummer) verfügbar und wird bei der Festlegung von Lambda -Berechtigungen verwendet.Beim
publish = false
(Standard) ist nur eine unqualifizierte Kennung ($LATEST
) verfügbar, was zum Fehler führt.Die Lösung besteht darin, entweder die Erstellung von Lambda -Berechtigungen für die aktuelle Version zu deaktivieren, indem er
create_current_version_allowed_triggers = false
eingestellt ist oder um die Lambda -Funktion zu aktivieren (publish = true
).
builds
-Verzeichnis fehlt.Name | Version |
---|---|
Terraform | > = 1.0 |
AWS | > = 5,70 |
extern | > = 1.0 |
lokal | > = 1.0 |
NULL | > = 2.0 |
Name | Version |
---|---|
AWS | > = 5,70 |
extern | > = 1.0 |
lokal | > = 1.0 |
NULL | > = 2.0 |
Keine Module.
Name | Typ |
---|---|
aws_cloudwatch_log_group.lambda | Ressource |
aws_iam_policy.additional_inline | Ressource |
aws_iam_policy.additional_json | Ressource |
aws_iam_policy.additional_jsons | Ressource |
aws_iam_policy.async | Ressource |
aws_iam_policy.dead_letter | Ressource |
aws_iam_policy.logs | Ressource |
aws_iam_policy.tracing | Ressource |
aws_iam_policy.vpc | Ressource |
aws_iam_role.lambda | Ressource |
aws_iam_role_policy_attachment.additional_inline | Ressource |
aws_iam_role_policy_attachment.additional_json | Ressource |
aws_iam_role_policy_attachment.additional_jsons | Ressource |
aws_iam_role_policy_attachment.additional_Many | Ressource |
aws_iam_role_policy_attachment.additional_one | Ressource |
aws_iam_role_policy_attachment.async | Ressource |
aws_iam_role_policy_attachment.dead_letter | Ressource |
aws_iam_role_policy_attachment.logs | Ressource |
aws_iam_role_policy_attachment.tracing | Ressource |
aws_iam_role_policy_attachment.vpc | Ressource |
AWS_LAMBDA_EVENT_SOURCE_MAPPING.This | Ressource |
aws_lambda_function.this | Ressource |
AWS_Lambda_Function_event_invoke_config.this | Ressource |
aws_lambda_function_url.this | Ressource |
aws_lambda_layer_version.this | Ressource |
aws_lambda_permission.current_version_triggers | Ressource |
aws_lambda_permission.unqualified_alias_triggers | Ressource |
AWS_Lambda_Provisioned_Concurrency_Config.current_version | Ressource |
aws_s3_object.lambda_package | Ressource |
local_file.archive_plan | Ressource |
null_resource.archive | Ressource |
null_resource.sam_metadata_aws_lambda_function | Ressource |
null_resource.sam_metadata_aws_lambda_layer_version | Ressource |
aws_arn.log_group_arn | Datenquelle |
aws_caller_identity.current | Datenquelle |
aws_cloudwatch_log_group.lambda | Datenquelle |
aws_iam_policy.tracing | Datenquelle |
aws_iam_policy.vpc | Datenquelle |
aws_iam_policy_document.additional_inline | Datenquelle |
aws_iam_policy_document.assume_role | Datenquelle |
aws_iam_policy_document.async | Datenquelle |
aws_iam_policy_document.dead_letter | Datenquelle |
aws_iam_policy_document.logs | Datenquelle |
aws_partition.current | Datenquelle |
aws_region.current | Datenquelle |
external_external.archive_prepare | Datenquelle |
Name | Beschreibung | Typ | Standard | Erforderlich |
---|---|---|---|---|
erlaubt_triggers | Karte der erlaubten Auslöser zum Erstellen von Lambda -Berechtigungen | map(any) | {} | NEIN |
Architekturen | Anweisungsarchitektur für Ihre Lambda -Funktion. Gültige Werte sind ["x86_64"] und ["Arm64"]. | list(string) | null | NEIN |
artifacts_dir | Verzeichnisname, bei dem Artefakte gespeichert werden sollten | string | "builds" | NEIN |
Annahme_Role_Policy_Statements | Karte dynamischer Richtlinienaussagen zur Übernahme von Lambda -Funktionsrolle (Trust -Beziehung) | any | {} | NEIN |
Attach_async_event_policy | Kontrolliert, ob die asynchronisierte Ereignisrichtlinie zur IAM -Rolle für die Lambda -Funktion hinzugefügt werden sollte | bool | false | NEIN |
ATTATE_CLOUDWATCH_LOGS_POLICY | Steuert, ob CloudWatch -Protokolle zur IAM -Rolle für die Lambda -Funktion hinzugefügt werden sollten | bool | true | NEIN |
Attach_Create_log_group_permission | Steuern | bool | true | NEIN |
Attach_dead_Letter_Policy | Kontrolliert, ob die Richtlinie zur Benachrichtigung der SNS/SQS Dead Letters zur IAM -Rolle für die Lambda -Funktion hinzugefügt werden sollte | bool | false | NEIN |
Attach_network_policy | Kontrolliert, ob die VPC-/Netzwerkrichtlinie zur IAM -Rolle für die Lambda -Funktion hinzugefügt werden sollte | bool | false | NEIN |
Attach_Policies | Kontrolliert, ob die Liste der Richtlinien für die Lambda -Funktion zur IAM -Rolle hinzugefügt werden sollte | bool | false | NEIN |
Attach_Policy | Kontrolliert, ob Richtlinien zur IAM -Rolle für die Lambda -Funktion hinzugefügt werden sollten | bool | false | NEIN |
Attach_Policy_json | Kontrolliert, ob Policy_json für die Lambda -Funktion zu IAM -Rolle hinzugefügt werden sollte | bool | false | NEIN |
Attach_Policy_Jsons | Kontrolliert, ob Policy_Jsons für die Lambda -Funktion zur IAM -Rolle hinzugefügt werden sollte | bool | false | NEIN |
Attach_Policy_Statements | Kontrolliert, ob die Richtlinien -Statements für die Lambda -Funktion zur IAM -Rolle hinzugefügt werden sollten | bool | false | NEIN |
Attach_tracing_policy | Kontrolliert, ob Röntgenverfolgungspolitik zur IAM-Rolle für die Lambda-Funktion hinzugefügt werden sollte | bool | false | NEIN |
Autorisierung_Type | Die Art der Authentifizierung, die die URL der Lambda -Funktion verwendet. Legen Sie auf 'AWS_IAM' fest, um den Zugriff nur auf authentifizierte IAM -Benutzer einzuschränken. Setzen Sie auf "None", um die IAM -Authentifizierung zu umgehen und einen öffentlichen Endpunkt zu erstellen. | string | "NONE" | NEIN |
Build_in_docker | Ob Sie Abhängigkeiten in Docker erstellen sollen | bool | false | NEIN |
CloudWatch_logs_kms_key_id | Der ARN des KMS -Schlüssels zum Verschlüsseln von Protokolldaten. | string | null | NEIN |
CloudWatch_logs_log_group_class | Spezifisch die Protokollklasse der Protokollgruppe angegeben. Mögliche Werte sind: STANDARD oder INFREQUENT_ACCESS | string | null | NEIN |
CloudWatch_logs_retention_in_days | Gibt die Anzahl der Tage an, an denen Sie Protokollereignisse in der angegebenen Protokollgruppe beibehalten möchten. Mögliche Werte sind: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827 und 3653. | number | null | NEIN |
CloudWatch_logs_skip_destroy | Ob die Protokollgruppe (und die Protokolle, die sie möglicherweise enthalten kann) zur Zerstörungszeit aufbewahrt. | bool | false | NEIN |
CloudWatch_logs_tags | Eine Karte von Tags, die der Ressource zugewiesen werden sollen. | map(string) | {} | NEIN |
code_Signing_config_arn | Amazon Resource Name (ARN) für eine Code -Signierkonfiguration | string | null | NEIN |
kompatible_Architekturen | Eine Liste von Architekturen Lambda -Schicht ist kompatibel. Derzeit können X86_64 und ARM64 angegeben werden. | list(string) | null | NEIN |
kompatibel_runtimes | Eine Liste von Laufzeiten Diese Schicht ist kompatibel. Bis zu 5 Laufzeiten können angegeben werden. | list(string) | [] | NEIN |
CORS | CORS -Einstellungen, die von der Lambda -Funktions -URL verwendet werden sollen | any | {} | NEIN |
erstellen | Kontrolliert, ob Ressourcen erstellt werden sollten | bool | true | NEIN |
create_async_event_config | Steuert, ob eine asynchronisierte Ereigniskonfiguration für Lambda -Funktion/alias erstellt werden soll | bool | false | NEIN |
create_current_version_alowed_triggers | Ob Sie Auslöser für die aktuelle Version der Lambda -Funktion zulassen (dies wird Berechtigungen aus der früheren Version widerrufen, da Terraform nur aktuelle Ressourcen verwaltet). | bool | true | NEIN |
create_current_version_async_event_config | Unabhängig davon, ob die Async -Ereigniskonfiguration auf der aktuellen Version der Lambda -Funktion zuzulassen (dies wird Berechtigungen aus der früheren Version widerrufen, da Terraform nur aktuelle Ressourcen verwaltet). | bool | true | NEIN |
create_function | Steuert, ob die Lambda -Funktionsressource erstellt werden sollte | bool | true | NEIN |
create_lambda_function_url | Steuert, ob die URL -Ressource der Lambda -Funktion erstellt werden sollte | bool | false | NEIN |
create_layer | Steuert, ob die Lambda -Layer -Ressource erstellt werden sollte | bool | false | NEIN |
create_package | Kontrolliert, ob das Lambda -Paket erstellt werden sollte | bool | true | NEIN |
create_role | Kontrolliert, ob IAM -Rolle für die Lambda -Funktion erstellt werden sollte | bool | true | NEIN |
create_sam_metadata | Kontrolliert, ob die SAM -Metadaten -Null -Ressource erstellt werden soll | bool | false | NEIN |
create_unqualified_alias_alowed_triggers | Ob Sie Auslöser für nicht qualifizierte Alias zulassen, die auf die neueste Version von $ zeigen | bool | true | NEIN |
create_unqualified_alias_async_event_config | Unabhängig davon | bool | true | NEIN |
create_unqualified_alias_lambda_function_url | Ob Sie einen unqualifizierten Alias verwenden, der auf $ neueste Version in der Lambda -Funktion URL zeigt | bool | true | NEIN |
TEAD_LERTTER_TARGET_ARN | Das ARN eines SNS -Themas oder eine SQS -Warteschlange, um zu benachrichtigen, wenn ein Aufruf fehlschlägt. | string | null | NEIN |
Beschreibung | Beschreibung Ihrer Lambda -Funktion (oder Ebene) | string | "" | NEIN |
Destination_on_failure | Amazon -Ressourcenname (ARN) der Zielressource für fehlgeschlagene asynchrone Aufrufe | string | null | NEIN |
Destination_on_success | Amazon Resource Name (ARN) der Zielressource für erfolgreiche asynchrone Aufrufe | string | null | NEIN |
docker_additional_options | Zusätzliche Optionen zum Übergeben an den Befehl Docker Run (z. B. um Umgebungsvariablen, Bände usw. festlegen) | list(string) | [] | NEIN |
docker_build_root | Root Dir, wo man Docker bauen soll | string | "" | NEIN |
Docker_entrypoint | Pfad zum zu verwendenden Docker -Einstiegspunkt | string | null | NEIN |
Docker_file | Pfad zu einer Dockerfile beim Aufbau in Docker | string | "" | NEIN |
Docker_image | Docker -Bild für den Build verwendet | string | "" | NEIN |
docker_pip_cache | Ob ein gemeinsamer PIP -Cache -Ordner in die Docker -Umgebung montiert werden soll oder nicht | any | null | NEIN |
docker_with_sssh_agent | Ob Sie SSH_AUTH_SOCK in Docker -Umgebung übergeben sollen oder nicht | bool | false | NEIN |
Umwelt_Variablen | Eine Karte, die Umgebungsvariablen für die Lambda -Funktion definiert. | map(string) | {} | NEIN |
Ephemeral_Storage_Size | Die Menge an kurzlebiger Speicherung (/TMP) in MB Ihre Lambda -Funktion kann zur Laufzeit verwendet werden. Gültiger Wert zwischen 512 MB und 10.240 MB (10 GB). | number | 512 | NEIN |
Event_Source_Mapping | Karte der Ereignisquellenzuordnung | any | {} | NEIN |
Datei_System_arn | Der Amazon Resource Name (ARN) des Amazon EFS -Zugriffspunkts, der Zugriff auf das Dateisystem bietet. | string | null | NEIN |
Datei_System_local_mount_path | Der Pfad, in dem die Funktion auf das Dateisystem zugreifen kann, beginnend mit /mnt /. | string | null | NEIN |
Funktion_Name | Ein eindeutiger Name für Ihre Lambda -Funktion | string | "" | NEIN |
Funktion_Tags | Eine Karte von Tags, die nur der Lambda -Funktion zugewiesen werden soll | map(string) | {} | NEIN |
Handler | Einstiegspunkt für Lambda -Funktion in Ihrem Code | string | "" | NEIN |
Hash_Extra | Die Zeichenfolge, die zur Hashing -Funktion hinzugefügt wird. Nützlich, wenn Sie denselben Quellpfad für verschiedene Funktionen erstellen. | string | "" | NEIN |
Ignore_Source_Code_hash | Ob Änderungen des Quellcode -Hashs der Funktion ignoriert werden sollen. Legen Sie auf True fest, wenn Sie die Infrastruktur- und Code -Bereitstellungen separat verwalten. | bool | false | NEIN |
Image_Config_Command | Das CMD für das Docker -Bild | list(string) | [] | NEIN |
Image_Config_entry_Point | Der Einstiegspunkt für das Docker -Bild | list(string) | [] | NEIN |
Image_config_working_directory | Das Arbeitsverzeichnis für das Docker -Bild | string | null | NEIN |
Image_uri | Das ECR -Bild -URI, das das Bereitstellungspaket der Funktion enthält. | string | null | NEIN |
invoke_mode | Rufen Sie den Modus der Lambda -Funktions -URL auf. Gültige Werte werden gepuffert (Standard) und Response_Stream. | string | null | NEIN |
ipv6_alowed_for_dual_stack | Ermöglicht den ausgehenden IPv6-Datenverkehr bei VPC-Funktionen, die mit Dual-Stack-Subnetzen verbunden sind | bool | null | NEIN |
kms_key_arn | Der ARN von KMS -Schlüssel, der von Ihrer Lambda -Funktion verwendet werden soll | string | null | NEIN |
Lambda_at_Edge | Legen Sie dies auf True ein, wenn Sie Lambda@Edge verwenden, um das Veröffentlichen zu aktivieren, die Zeitüberschreitung einzuschränken und Edgelambda.amazonaws.com zu ermöglichen, die Funktion aufzurufen | bool | false | NEIN |
lambda_at_edge_logs_all_regions | Unabhängig davon | bool | true | NEIN |
lambda_role | Ich bin der Rolle der Lambda -Funktion beigefügt. Dies regelt sowohl wer / das, was Ihre Lambda -Funktion aufrufen kann, als auch die Ressourcen, auf die unsere Lambda -Funktion zugreifen kann. Weitere Informationen finden Sie unter Lambda -Berechtigungsmodell. | string | "" | NEIN |
Layer_Name | Name der Lambda -Schicht zum Erstellen | string | "" | NEIN |
Layer_skip_destroy | Ob Sie die alte Version einer zuvor bereitgestellten Lambda -Schicht beibehalten. | bool | false | NEIN |
Schichten | Listen Sie die Lambda -Layer -Version ARNs (maximal 5) auf, um Ihre Lambda -Funktion anzuhängen. | list(string) | null | NEIN |
Lizenz_info | Lizenzinformationen für Ihre Lambda -Schicht. ZB, MIT oder volle URL einer Lizenz. | string | "" | NEIN |
local_existing_package | Der absolute Weg zu einer vorhandenen Zip-Datei zu verwenden | string | null | NEIN |
logging_application_log_level | Die Anwendungsprotokollebene der Lambda -Funktion. Gültige Werte sind "Trace", "Debug", "Info", "Warn", "Fehler" oder "Fatal". | string | "INFO" | NEIN |
logging_log_format | Das Protokollformat der Lambda -Funktion. Gültige Werte sind "JSON" oder "Text". | string | "Text" | NEIN |
logging_log_group | Die CloudWatch -Protokollgruppe zum Senden von Protokollen an. | string | null | NEIN |
logging_system_log_level | Die Systemprotokollebene der Lambda -Funktion. Gültige Werte sind "Debug", "Info" oder "Warn". | string | "INFO" | NEIN |
maximum_event_age_in_seconds | Maximales Alter einer Anfrage, die Lambda in Sekundenschnelle an eine Funktion zur Verarbeitung sendet. Gültige Werte zwischen 60 und 21600. | number | null | NEIN |
maximum_retry_attempts | Maximale Häufigkeit, wenn die Funktion einen Fehler zurückgibt. Gültige Werte zwischen 0 und 2. standardmäßig 2. | number | null | NEIN |
Memory_size | Die Menge an Speicher in MB kann Ihre Lambda -Funktion zur Laufzeit verwendet werden. Gültiger Wert zwischen 128 MB und 10.240 MB (10 GB) in Schritten von 64 MB. | number | 128 | NEIN |
number_of_policies | Anzahl der Richtlinien, die sich an die IAM -Rolle für die Lambda -Funktion anschließen können | number | 0 | NEIN |
number_of_policy_jsons | Anzahl der Richtlinien JSON, um die IAM -Rolle für die Lambda -Funktion zu verbinden | number | 0 | NEIN |
package_type | Der Lambda -Bereitstellungspakettyp. Gültige Optionen: Reißverschluss oder Bild | string | "Zip" | NEIN |
Richtlinien | Liste der Richtlinienerklärungen, die zur Rolle der Lambda -Funktionsrolle beigefügt sind | list(string) | [] | NEIN |
Politik | Ein zusätzliches Richtliniendokument ist, um der Lambda -Funktionsrolle beizubehalten | string | null | NEIN |
Policy_json | Ein zusätzliches Richtliniendokument als JSON, um der Lambda -Funktionsrolle beizubehalten | string | null | NEIN |
Policy_jsons | Liste der zusätzlichen Richtliniendokumente als JSON, um die Rolle der Lambda -Funktion anzuhängen | list(string) | [] | NEIN |
Policy_Name | IAM Policy Name. Es überschreibt den Standardwert, der mit Rollenname übereinstimmt | string | null | NEIN |
Policy_Path | Der Weg der Richtlinien zu der IAM -Rolle für die Lambda -Funktion sollte hinzugefügt werden | string | null | NEIN |
Policy_statements | Karte der dynamischen Richtlinienanweisungen, um die Rolle der Lambda -Funktion anzuhängen | any | {} | NEIN |
Provisioned_concurrent_executions | Menge an Kapazität zur Zuteilung. Einstellen auf 1 oder mehr, um aktiviert zu werden, oder auf 0 einstellen, um die vorgesehene Parallelität zu deaktivieren. | number | -1 | NEIN |
veröffentlichen | Ob die Erstellung/Änderung als neue Lambda -Funktionsversion veröffentlichen soll. | bool | false | NEIN |
putin_khuylo | Stimmen Sie zu, dass Putin die ukrainische Souveränität und die territoriale Integrität nicht respektiert? Weitere Informationen: https://en.wikipedia.org/wiki/putin_khuylo! | bool | true | NEIN |
Recreate_missing_package | Unabhängig davon | bool | true | NEIN |
ersetzen_security_groups_on_destroy | (Optional) Wenn wahr, werden alle in vpc_security_group_ids definierten Sicherheitsgruppen durch die Zerstörung der Funktion durch die Standardsicherheitsgruppe ersetzt. Setzen Sie die Variable ersatz_security_group_ids, um stattdessen eine benutzerdefinierte Liste von Sicherheitsgruppen für den Ersatz zu verwenden. | bool | null | NEIN |
Ersatz_Security_Group_ids | (Optional) List of security group IDs to assign to orphaned Lambda function network interfaces upon destruction. replace_security_groups_on_destroy must be set to true to use this attribute. | list(string) | null | NEIN |
reserved_concurrent_executions | The amount of reserved concurrent executions for this Lambda Function. A value of 0 disables Lambda Function from being triggered and -1 removes any concurrency limitations. Defaults to Unreserved Concurrency Limits -1. | number | -1 | NEIN |
role_description | Description of IAM role to use for Lambda Function | string | null | NEIN |
role_force_detach_policies | Specifies to force detaching any policies the IAM role has before destroying it. | bool | true | NEIN |
role_maximum_session_duration | Maximum session duration, in seconds, for the IAM role | number | 3600 | NEIN |
role_name | Name of IAM role to use for Lambda Function | string | null | NEIN |
role_path | Path of IAM role to use for Lambda Function | string | null | NEIN |
role_permissions_boundary | The ARN of the policy that is used to set the permissions boundary for the IAM role used by Lambda Function | string | null | NEIN |
role_tags | A map of tags to assign to IAM role | map(string) | {} | NEIN |
Laufzeit | Lambda Function runtime | string | "" | NEIN |
s3_acl | The canned ACL to apply. Valid values are private, public-read, public-read-write, aws-exec-read, authenticated-read, bucket-owner-read, and bucket-owner-full-control. Defaults to private. | string | "private" | NEIN |
s3_bucket | S3 bucket to store artifacts | string | null | NEIN |
s3_existing_package | The S3 bucket object with keys bucket, key, version pointing to an existing zip-file to use | map(string) | null | NEIN |
s3_kms_key_id | Specifies a custom KMS key to use for S3 object encryption. | string | null | NEIN |
s3_object_override_default_tags | Whether to override the default_tags from provider? NB: S3 objects support a maximum of 10 tags. | bool | false | NEIN |
s3_object_storage_class | Specifies the desired Storage Class for the artifact uploaded to S3. Can be either STANDARD, REDUCED_REDUNDANCY, ONEZONE_IA, INTELLIGENT_TIERING, or STANDARD_IA. | string | "ONEZONE_IA" | NEIN |
s3_object_tags | A map of tags to assign to S3 bucket object. | map(string) | {} | NEIN |
s3_object_tags_only | Set to true to not merge tags with s3_object_tags. Useful to avoid breaching S3 Object 10 tag limit. | bool | false | NEIN |
s3_prefix | Directory name where artifacts should be stored in the S3 bucket. If unset, the path from artifacts_dir is used | string | null | NEIN |
s3_server_side_encryption | Specifies server-side encryption of the object in S3. Valid values are "AES256" and "aws:kms". | string | null | NEIN |
skip_destroy | Set to true if you do not wish the function to be deleted at destroy time, and instead just remove the function from the Terraform state. Useful for Lambda@Edge functions attached to CloudFront distributions. | bool | null | NEIN |
snap_start | (Optional) Snap start settings for low-latency startups | bool | false | NEIN |
source_path | The absolute path to a local file or directory containing your Lambda source code | any | null | NEIN |
store_on_s3 | Whether to store produced artifacts on S3 or locally. | bool | false | NEIN |
Tags | A map of tags to assign to resources. | map(string) | {} | NEIN |
Time-out | The amount of time your Lambda Function has to run in seconds. | number | 3 | NEIN |
timeouts | Define maximum timeout for creating, updating, and deleting Lambda Function resources | map(string) | {} | NEIN |
tracing_mode | Tracing mode of the Lambda Function. Valid value can be either PassThrough or Active. | string | null | NEIN |
trigger_on_package_timestamp | Whether to recreate the Lambda package if the timestamp changes | bool | true | NEIN |
trusted_entities | List of additional trusted entities for assuming Lambda Function role (trust relationship) | any | [] | NEIN |
use_existing_cloudwatch_log_group | Whether to use an existing CloudWatch log group or create new | bool | false | NEIN |
vpc_security_group_ids | List of security group ids when Lambda Function should run in the VPC. | list(string) | null | NEIN |
vpc_subnet_ids | List of subnet ids when Lambda Function should run in the VPC. Usually private or intra subnets. | list(string) | null | NEIN |
Name | Beschreibung |
---|---|
lambda_cloudwatch_log_group_arn | The ARN of the Cloudwatch Log Group |
lambda_cloudwatch_log_group_name | The name of the Cloudwatch Log Group |
lambda_event_source_mapping_arn | The event source mapping ARN |
lambda_event_source_mapping_function_arn | The the ARN of the Lambda function the event source mapping is sending events to |
lambda_event_source_mapping_state | The state of the event source mapping |
lambda_event_source_mapping_state_transition_reason | The reason the event source mapping is in its current state |
lambda_event_source_mapping_uuid | The UUID of the created event source mapping |
lambda_function_arn | The ARN of the Lambda Function |
lambda_function_arn_static | The static ARN of the Lambda Function. Use this to avoid cycle errors between resources (eg, Step Functions) |
lambda_function_invoke_arn | The Invoke ARN of the Lambda Function |
lambda_function_kms_key_arn | The ARN for the KMS encryption key of Lambda Function |
lambda_function_last_modified | The date Lambda Function resource was last modified |
lambda_function_name | The name of the Lambda Function |
lambda_function_qualified_arn | The ARN identifying your Lambda Function Version |
lambda_function_qualified_invoke_arn | The Invoke ARN identifying your Lambda Function Version |
lambda_function_signing_job_arn | ARN of the signing job |
lambda_function_signing_profile_version_arn | ARN of the signing profile version |
lambda_function_source_code_hash | Base64-encoded representation of raw SHA-256 sum of the zip file |
lambda_function_source_code_size | The size in bytes of the function .zip file |
lambda_function_url | The URL of the Lambda Function URL |
lambda_function_url_id | The Lambda Function URL generated id |
lambda_function_version | Latest published version of Lambda Function |
lambda_layer_arn | The ARN of the Lambda Layer with version |
lambda_layer_created_date | The date Lambda Layer resource was created |
lambda_layer_layer_arn | The ARN of the Lambda Layer without version |
lambda_layer_source_code_size | The size in bytes of the Lambda Layer .zip file |
lambda_layer_version | The Lambda Layer version |
lambda_role_arn | The ARN of the IAM role created for the Lambda Function |
lambda_role_name | The name of the IAM role created for the Lambda Function |
lambda_role_unique_id | The unique id of the IAM role created for the Lambda Function |
local_filename | The filename of zip archive deployed (if deployment was from local) |
s3_object | The map with S3 object data of zip archive deployed (if deployment was from S3) |
During development involving modifying python files, use tox to run unit tests:
tox
This will try to run unit tests which each supported python version, reporting errors for python versions which are not installed locally.
If you only want to test against your main python version:
tox -e py
You can also pass additional positional arguments to pytest which is used to run test, eg to make it verbose:
tox -e py -- -vvv
Module managed by Anton Babenko. Check out serverless.tf to learn more about doing serverless with Terraform.
Please reach out to Betajob if you are looking for commercial support for your Terraform, AWS, or serverless project.
Apache 2 Licensed. See LICENSE for full details.