Modul Terraform, yang menciptakan hampir semua sumber daya AWS Lambda yang didukung serta mengurus pembangunan dan pengemasan dependensi Lambda yang diperlukan untuk fungsi dan lapisan.
Modul Terraform ini adalah bagian dari kerangka kerja serverless.tf, yang bertujuan untuk menyederhanakan semua operasi saat bekerja dengan serverless di Terraform:
serverless.tf
lainnya seperti HTTP API Gateway (lihat contoh di sana). 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 "
}
Jika Anda ingin mengelola kode fungsi dan sumber daya infrastruktur (seperti izin IAM, kebijakan, peristiwa, dll) dalam aliran terpisah (misalnya, repositori yang berbeda, tim, pipa CI/CD).
Nonaktifkan pelacakan kode sumber untuk mematikan penyebaran (dan rollbacks) menggunakan modul dengan mengatur ignore_source_code_hash = true
dan menggunakan fungsi dummy .
Ketika infrastruktur dan fungsi dummy digunakan, Anda dapat menggunakan alat eksternal untuk memperbarui kode sumber fungsi (misalnya, menggunakan AWS CLI) dan terus menggunakan modul ini melalui Terraform untuk mengelola infrastruktur.
Ketahuilah bahwa perubahan nilai local_existing_package
dapat memicu penyebaran melalui terraform.
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
}
Perhatikan bahwa modul ini tidak menyalin paket prebuilt ke S3 Bucket. Modul ini hanya dapat menyimpan paket yang dibangun secara lokal dan dalam S3 Bucket.
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 "
}
Pastikan, Anda menggunakan fungsi Lambda@Edge ke wilayah AS Timur (N. Virginia) ( us-east-1
). Lihat persyaratan dan pembatasan fungsi lambda.
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 " ]
}
Ada 6 cara yang didukung untuk melampirkan kebijakan IAM ke peran IAM yang digunakan oleh fungsi lambda:
policy_json
- JSON String atau Heredoc, ketika attach_policy_json = true
.policy_jsons
- Daftar JSON Strings atau Heredoc, ketika attach_policy_jsons = true
dan number_of_policy_jsons > 0
.policy
- ARN dari Kebijakan IAM yang ada, saat attach_policy = true
.policies
- Daftar ARN dari kebijakan IAM yang ada, ketika attach_policies = true
dan number_of_policies > 0
.policy_statements
- Peta peta untuk menentukan pernyataan IAM yang akan dihasilkan sebagai kebijakan IAM. Membutuhkan attach_policy_statements = true
. Lihat examples/complete
untuk informasi lebih lanjut.assume_role_policy_statements
- peta peta untuk menentukan pernyataan IAM yang akan dihasilkan sebagai kebijakan IAM untuk mengasumsikan peran fungsi lambda (hubungan kepercayaan). Lihat examples/complete
untuk informasi lebih lanjut. Izin Lambda harus ditentukan untuk memungkinkan sumber daya tertentu memohon fungsi Lambda.
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 "
}
}
}
Kadang -kadang Anda perlu memiliki cara untuk membuat sumber daya secara kondisional tetapi Terraform tidak memungkinkan penggunaan blok module
count
di dalam, jadi solusinya adalah menentukan argumen 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
}
Ini adalah salah satu bagian paling rumit yang dilakukan oleh modul dan biasanya Anda tidak perlu mengetahui internal.
package.py
adalah skrip python yang melakukannya. Pastikan, Python 3.6 atau yang lebih baru diinstal. Fungsi utama skrip adalah untuk menghasilkan nama file zip-archive berdasarkan konten file, memverifikasi jika zip-archive telah dibuat, dan membuat zip-archive hanya jika diperlukan (selama apply
, bukan plan
) .
Hash zip-archive yang dibuat dengan konten file yang sama selalu identik yang mencegah pembaruan kekuatan yang tidak perlu dari sumber daya Lambda kecuali konten dimodifikasi. Jika Anda perlu memiliki nama file yang berbeda untuk konten yang sama, Anda dapat menentukan argumen string tambahan hash_extra
.
Saat memanggil modul ini beberapa kali dalam satu eksekusi untuk membuat paket dengan source_path
yang sama, zip-arsip akan rusak karena penulisan bersamaan ke dalam file yang sama. Ada dua solusi - menetapkan nilai yang berbeda untuk hash_extra
untuk membuat arsip yang berbeda, atau membuat paket sekali di luar (menggunakan modul ini) dan kemudian lulus argumen local_existing_package
untuk membuat sumber daya lambda lainnya.
Bangunan dan pengemasan secara historis sulit untuk debug (terutama dengan Terraform), jadi kami berusaha untuk memudahkan pengguna untuk melihat info debug. Ada 3 level debug yang berbeda: DEBUG
- untuk melihat hanya apa yang terjadi selama fase perencanaan dan bagaimana pemfilteran konten file zip jika terjadi pola terapan, DEBUG2
- untuk melihat lebih banyak output logging, DEBUG3
- untuk melihat semua nilai logging, DUMP_ENV
- to Lihat semua nilai logging dan variabel Env (hati -hati berbagi variabel env Anda karena mungkin berisi rahasia!).
Pengguna dapat menentukan level debug seperti ini:
export TF_LAMBDA_PACKAGE_LOG_LEVEL=DEBUG2
terraform apply
Pengguna dapat mengaktifkan komentar dalam string heredoc dalam patterns
yang dapat membantu dalam beberapa situasi. Untuk melakukan ini mengatur variabel lingkungan ini:
export TF_LAMBDA_PACKAGE_PATTERN_COMMENTS=true
terraform apply
Anda dapat menentukan source_path
dalam berbagai cara untuk mencapai fleksibilitas yang diinginkan saat membangun paket penyebaran secara lokal atau di Docker. Anda dapat menggunakan jalur absolut atau relatif. Jika Anda telah menempatkan file terraform di subdirektori, perhatikan bahwa jalur relatif ditentukan dari direktori tempat terraform plan
dijalankan dan bukan lokasi file terraform Anda.
Perhatikan bahwa, saat membangun secara lokal, file tidak menyalin di mana pun dari direktori sumber saat membuat paket, kami menggunakan ekspresi reguler Python cepat untuk menemukan file dan direktori yang cocok, yang membuat kemasan sangat cepat dan mudah dimengerti.
Ketika source_path
diatur ke string, konten jalur itu akan digunakan untuk membuat paket penyebaran apa adanya:
source_path = "src/function1"
Ketika source_path
diatur ke daftar direktori, konten masing -masing akan diambil dan satu arsip akan dibuat.
Ini adalah cara paling lengkap untuk membuat paket penyebaran dari berbagai sumber dengan beberapa ketergantungan. Contoh ini menunjukkan beberapa opsi yang tersedia (lihat contoh/paket build dan contoh/runtimes untuk lebih banyak):
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
}
]
Beberapa catatan:
python
atau nodejs
, proses pembuatan akan secara otomatis membangun Python dan dependensi nodej jika requirements.txt
atau file package.json
akan ditemukan di folder sumber. Jika Anda ingin menyesuaikan perilaku ini, silakan gunakan notasi objek seperti yang dijelaskan di bawah ini.path
adalah opsional.patterns
- Daftar FileName Python Regex harus dipenuhi. Nilai default adalah "termasuk segalanya" yang sama dengan patterns = [".*"]
. Ini juga dapat ditentukan sebagai string heredoc multiline (tidak ada komentar yang diizinkan). Beberapa contoh pola yang valid:commands
dan rantai beberapa perintah, hanya kode keluar dari perintah terakhir yang akan diperiksa untuk sukses. Jika Anda lebih suka gagal dengan cepat, mulai perintah dengan opsi bash set -e
atau opsi 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
- Daftar perintah yang harus dijalankan. Jika ditentukan, argumen ini mengesampingkan pip_requirements
dan npm_requirements
.:zip [source] [destination]
adalah perintah khusus yang membuat konten direktori kerja saat ini (argumen pertama) dan menempatkannya di dalam jalur (argumen kedua).pip_requirements
- Mengontrol apakah akan menjalankan pip install
. Setel ke false
untuk menonaktifkan fitur ini, true
untuk menjalankan pip install
dengan requirements.txt
ditemukan di path
. Atau diatur ke nama file lain yang ingin Anda gunakan sebagai gantinya. Ketika source_path
dilewatkan sebagai string yang berisi jalur (dan bukan daftar peta), dan requirements.txt
ada, pip install
secara otomatis dieksekusi.pip_tmp_dir
- Atur direktori dasar untuk membuat direktori sementara untuk pemasangan PIP. Dapat berguna untuk Docker di Docker Builds.poetry_install
- mengontrol apakah akan menjalankan poetry export
dan pip install
. Diatur ke false
untuk menonaktifkan fitur ini, true
untuk menjalankan poetry export
dengan pyproject.toml
dan poetry.lock
ditemukan di path
. Ketika source_path
dilewatkan sebagai string yang berisi jalur (dan bukan daftar peta), dan pyproject.toml
dengan poetry
sistem build ada, poetry export
dan pip install
secara otomatis dieksekusi.poetry_export_extra_args
- daftar argumen puisi tambahan untuk ditambahkan ke perintah ekspor puisinpm_requirements
- mengontrol apakah akan menjalankan npm install
. Setel ke false
untuk menonaktifkan fitur ini, true
untuk menjalankan npm install
dengan package.json
ditemukan di path
. Atau diatur ke nama file lain yang ingin Anda gunakan sebagai gantinya.npm_tmp_dir
- Atur direktori dasar untuk membuat direktori sementara untuk pemasangan NPM. Dapat berguna untuk Docker di Docker Builds.prefix_in_zip
- jika ditentukan, akan digunakan sebagai awalan di dalam zip -archive. Secara default, semuanya menginstal ke akar zip-archive.Jika fungsi atau lapisan Lambda Anda menggunakan beberapa dependensi, Anda dapat membangunnya di Docker dan memasukkannya ke dalam paket penempatan. Inilah cara Anda melakukannya:
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.
Menggunakan modul ini Anda dapat menginstal dependensi dari host pribadi. Untuk melakukan ini, Anda perlu agen SSH ke depan:
docker_with_ssh_agent = true
Perhatikan bahwa secara default, docker_image
yang digunakan berasal dari Registry public.ecr.aws/sam/
, dan akan didasarkan pada runtime
yang Anda tentukan. Dengan kata lain, jika Anda menentukan runtime python3.12
dan tidak menentukan docker_image
, maka docker_image
akan diselesaikan menjadi public.ecr.aws/sam/build-python3.12
. Ini memastikan bahwa secara default runtime
tersedia di wadah Docker.
Jika Anda mengganti docker_image
, pastikan untuk menjaga gambar tetap sinkron dengan runtime
Anda. Selama fase rencana, saat menggunakan Docker, tidak ada cek bahwa runtime
tersedia untuk membangun paket. Itu berarti bahwa jika Anda menggunakan gambar yang tidak memiliki runtime, rencananya masih akan berhasil, tetapi kemudian Apply akan gagal.
Untuk menambahkan fleksibilitas saat membangun di Docker, Anda dapat melewati sejumlah opsi tambahan yang Anda butuhkan (lihat Referensi Jalankan Docker untuk opsi yang tersedia):
docker_additional_options = [
" -e " , " MY_ENV_VAR='My environment variable value' " ,
" -v " , " /local:/docker-vol " ,
]
Untuk mengesampingkan titik masuk Docker saat membangun di Docker, atur docker_entrypoint
:
docker_entrypoint = " /entrypoint/entrypoint.sh "
Entrypoint harus memetakan ke jalur di dalam wadah Anda, jadi Anda harus membangun gambar Anda sendiri yang berisi titik masuk atau memetakannya ke file pada host dengan memasang volume (lihat melewati opsi Docker tambahan).
Secara default, modul ini membuat paket penyebaran dan menggunakannya untuk membuat atau memperbarui fungsi Lambda atau lapisan Lambda.
Kadang -kadang, Anda mungkin ingin memisahkan build dari paket penyebaran (misalnya, untuk menyusun dan menginstal dependensi) dari penyebaran paket menjadi dua langkah terpisah.
Saat membuat arsip secara lokal di luar modul ini, Anda perlu mengatur create_package = false
dan kemudian argumen local_existing_package = "existing_package.zip"
. Atau, Anda mungkin lebih suka menyimpan paket penyebaran Anda ke dalam ember S3 dan memberikan referensi kepada mereka seperti ini:
create_package = false
s3_existing_package = {
bucket = " my-bucket-with-lambda-builds "
key = " existing_package.zip "
}
Ini dapat diimplementasikan dalam dua langkah: Unduh file secara lokal menggunakan CURL, dan pass Path to Deployment Paket sebagai argumen local_existing_package
.
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 adalah alat open source yang membantu pengembang untuk memulai, membangun, menguji, dan menggunakan aplikasi tanpa server. Alat Sam Cli mendukung aplikasi terraform.
Sam Cli menyediakan dua cara pengujian: pengujian dan pengujian lokal di cloud (Accelerate).
Menggunakan Sam Cli, Anda dapat memohon fungsi Lambda yang ditentukan dalam aplikasi terraform secara lokal menggunakan perintah Sam Local Invoke, memberikan fungsi alamat terraform, atau nama fungsi, dan untuk mengatur hook-name
ke terraform
untuk memberi tahu Sam CLI bahwa proyek yang mendasarinya adalah aplikasi terraform.
Anda dapat mengeksekusi perintah sam local invoke
dari direktori root aplikasi terraform Anda sebagai berikut:
sam local invoke --hook-name terraform module.hello_world_function.aws_lambda_function.this[0]
Anda juga dapat menyampaikan suatu acara ke fungsi Lambda Anda, atau menimpa variabel lingkungannya. Periksa di sini untuk informasi lebih lanjut.
Anda juga dapat memohon fungsi lambda Anda dalam mode debugging, dan langkah-melalui kode sumber fungsi lambda Anda secara lokal di editor pilihan Anda. Periksa di sini untuk informasi lebih lanjut.
Anda dapat menggunakan AWS Sam Cli untuk menguji aplikasi Anda dengan cepat di akun pengembangan AWS Anda. Menggunakan Sam Accelerate, Anda akan dapat mengembangkan fungsi Lambda Anda secara lokal, dan setelah Anda menyimpan pembaruan, Sam CLI akan memperbarui akun pengembangan Anda dengan fungsi Lambda yang diperbarui. Jadi, Anda dapat mengujinya di cloud, dan jika ada bug, Anda dapat dengan cepat memperbarui kode, dan Sam Cli akan mengurus mendorongnya ke cloud. Periksa di sini untuk informasi lebih lanjut tentang Sam Accelerate.
Anda dapat mengeksekusi perintah sam sync
dari direktori root aplikasi terraform Anda sebagai berikut:
sam sync --hook-name terraform --watch
Biasanya, pembaruan sumber daya fungsi Lambda saat kode sumber berubah. Jika publish = true
ditentukan versi fungsi Lambda baru juga akan dibuat.
Fungsi Lambda yang diterbitkan dapat dipanggil menggunakan nomor versi atau menggunakan $LATEST
. Ini adalah cara penyebaran paling sederhana yang tidak memerlukan alat atau layanan tambahan.
Untuk melakukan penyebaran yang dikendalikan (Rolling, Canary, Rollbacks) dari fungsi Lambda kita perlu menggunakan alias fungsi Lambda.
Dalam istilah sederhana, alias Lambda seperti pointer untuk salah satu versi fungsi lambda (ketika penyebaran selesai), atau untuk dua versi fungsi lambda tertimbang (selama penggulungan atau penyebaran kenari).
Satu fungsi lambda dapat digunakan dalam beberapa alias. Menggunakan alias memberikan kontrol besar dari versi mana yang digunakan saat memiliki beberapa lingkungan.
Ada modul alias, yang menyederhanakan bekerja dengan alias (buat, kelola konfigurasi, pembaruan, dll). Lihat contoh/alias untuk berbagai kasus penggunaan bagaimana alias dapat dikonfigurasi dan digunakan.
Ada Modul Penyebaran, yang menciptakan sumber daya yang diperlukan untuk melakukan penyebaran menggunakan CodeDeploy AWS. Ini juga menciptakan penyebaran, dan menunggu penyelesaian. Lihat Contoh/Deploy untuk proses pembuatan/perbarui/penyebaran yang lengkap.
Terraform Cloud, Terraform Enterprise, dan banyak Saa lainnya untuk menjalankan Terraform tidak memiliki Python yang sudah dipasang sebelumnya pada para pekerja. Anda perlu memberikan gambar Docker alternatif dengan python yang diinstal untuk dapat menggunakan modul ini di sana.
T1: Mengapa paket penempatan tidak menciptakan kembali setiap kali saya mengubah sesuatu? Atau mengapa paket penempatan sedang diciptakan kembali setiap kali tetapi konten belum diubah?
Jawaban: Mungkin ada beberapa alasan yang terkait dengan eksekusi bersamaan, atau hash konten. Terkadang, perubahan telah terjadi di dalam ketergantungan yang tidak digunakan dalam menghitung hash konten. Atau beberapa paket dibuat secara bersamaan dari sumber yang sama. Anda dapat memaksanya dengan menetapkan nilai
hash_extra
ke nilai yang berbeda.
T2: Bagaimana cara memaksa Paket Penempatan menciptakan kembali?
Jawaban: Hapus zip-archive yang ada dari Direktori
builds
, atau buat perubahan dalam kode sumber Anda. Jika tidak ada zip-archive untuk hash konten saat ini, itu akan diciptakan kembali selamaterraform apply
.
T3: null_resource.archive[0] must be replaced
Jawaban: Ini mungkin berarti bahwa zip-archive telah digunakan, tetapi saat ini tidak ada secara lokal, dan harus diciptakan kembali secara lokal. Saat Anda mengalami masalah ini selama proses CI/CD (di mana ruang kerja bersih) atau dari beberapa ruang kerja, Anda dapat mengatur variabel lingkungan
TF_RECREATE_MISSING_LAMBDA_PACKAGE=false
atau lulusrecreate_missing_package = false
sebagai parameter untuk modul dan menjalankanterraform apply
. Atau, Anda dapat lulustrigger_on_package_timestamp = false
sebagai parameter untuk mengabaikan stempel waktu file saat memutuskan untuk membuat arsip atau tidak.
T4: Apa arti kesalahan ini - "We currently do not support adding policies for $LATEST."
?
Jawaban: Ketika fungsi Lambda dibuat dengan
publish = true
versi baru secara otomatis meningkat dan pengidentifikasi yang memenuhi syarat (nomor versi) tersedia dan akan digunakan saat mengatur izin Lambda.Saat
publish = false
(default), hanya pengidentifikasi yang tidak memenuhi syarat ($LATEST
) yang tersedia yang mengarah ke kesalahan.Solusinya adalah menonaktifkan pembuatan izin Lambda untuk versi saat ini dengan mengatur
create_current_version_allowed_triggers = false
, atau untuk memungkinkan penerbitan fungsi lambda (publish = true
).
builds
sering tidak ada.Nama | Versi |
---|---|
Terraform | > = 1.0 |
AWS | > = 5.70 |
luar | > = 1.0 |
lokal | > = 1.0 |
batal | > = 2.0 |
Nama | Versi |
---|---|
AWS | > = 5.70 |
luar | > = 1.0 |
lokal | > = 1.0 |
batal | > = 2.0 |
Tidak ada modul.
Nama | Jenis |
---|---|
AWS_Cloudwatch_log_group.lambda | sumber |
AWS_IAM_POLICY.ADDITIONAL_INLINE | sumber |
AWS_IAM_POLICY.ADDITIONAL_JSON | sumber |
AWS_IAM_POLICY.ADDITIONAL_JSONS | sumber |
aws_iam_policy.async | sumber |
AWS_IAM_POLICY.DEAD_LETTER | sumber |
aws_iam_policy.logs | sumber |
aws_iam_policy.tracing | sumber |
aws_iam_policy.vpc | sumber |
AWS_IAM_ROLE.LAMBDA | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.ADDITIONAL_INLINE | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.ADDITIONAL_JSON | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.ADDITIONAL_JSONS | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.ADDITIONAL_MANY | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.Additional_one | sumber |
aws_iam_role_policy_attachment.async | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.DEAD_LETTER | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.LOGS | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.TRACING | sumber |
AWS_IAM_ROLE_POLICY_ATTACHMENT.vpc | sumber |
AWS_LAMBDA_EVENT_SOURCE_MAPPing.THIS | sumber |
aws_lambda_function. ini | sumber |
aws_lambda_function_event_invoke_config. ini | sumber |
aws_lambda_function_url.tipis | sumber |
AWS_LAMBDA_LAYER_VERSION.THIS | sumber |
aws_lambda_permission.current_version_triggers | sumber |
AWS_LAMBDA_PERMISSION.unqalified_alias_triggers | sumber |
aws_lambda_provisioned_concurrency_config.current_version | sumber |
AWS_S3_Object.lambda_package | sumber |
local_file.archive_plan | sumber |
null_resource.archive | sumber |
null_resource.sam_metadata_aws_lambda_function | sumber |
null_resource.sam_metadata_aws_lambda_layer_version | sumber |
AWS_ARN.LOG_GROUP_ARN | sumber data |
AWS_CALLER_IDENTITY.CURRENT | sumber data |
AWS_Cloudwatch_log_group.lambda | sumber data |
aws_iam_policy.tracing | sumber data |
aws_iam_policy.vpc | sumber data |
aws_iam_policy_document.additional_inline | sumber data |
aws_iam_policy_document.assume_role | sumber data |
aws_iam_policy_document.async | sumber data |
aws_iam_policy_document.dead_letter | sumber data |
aws_iam_policy_document.logs | sumber data |
aws_partition.current | sumber data |
AWS_REGION.CURRENT | sumber data |
external_external.archive_prepare | sumber data |
Nama | Keterangan | Jenis | Bawaan | Diperlukan |
---|---|---|---|---|
diizinkan_triggers | Peta pemicu yang diizinkan untuk membuat izin Lambda | map(any) | {} | TIDAK |
arsitektur | Instruksi mengatur arsitektur untuk fungsi lambda Anda. Nilai yang valid adalah ["x86_64"] dan ["ARM64"]. | list(string) | null | TIDAK |
Artifacts_dir | Nama direktori di mana artefak harus disimpan | string | "builds" | TIDAK |
asume_role_policy_statements | Peta pernyataan kebijakan dinamis untuk mengasumsikan peran fungsi lambda (hubungan kepercayaan) | any | {} | TIDAK |
lampiran_async_event_policy | Mengontrol apakah kebijakan acara async harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_cloudwatch_logs_policy | Mengontrol apakah kebijakan log cloudWatch harus ditambahkan ke peran IAM untuk fungsi lambda | bool | true | TIDAK |
lampiran_create_log_group_permission | Mengontrol apakah akan menambahkan izin Buat Grup Log ke Kebijakan Log CloudWatch | bool | true | TIDAK |
lampiran_dead_letter_policy | Mengontrol apakah kebijakan pemberitahuan surat SNS/SQS harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_network_policy | Mengontrol apakah kebijakan VPC/jaringan harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_policies | Mengontrol apakah daftar kebijakan harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_policy | Mengontrol apakah kebijakan harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_policy_json | Mengontrol apakah policy_json harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_policy_jsons | Mengontrol apakah kebijakan_jsons harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_policy_statements | Mengontrol apakah kebijakan_statements harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
lampiran_tracing_policy | Mengontrol apakah kebijakan penelusuran x-ray harus ditambahkan ke peran IAM untuk fungsi lambda | bool | false | TIDAK |
otorisasi_type | Jenis otentikasi yang digunakan URL fungsi lambda. Setel ke 'AWS_IAM' untuk membatasi akses ke pengguna IAM yang diautentikasi saja. Diatur ke 'tidak ada' untuk memotong otentikasi IAM dan membuat titik akhir publik. | string | "NONE" | TIDAK |
build_in_docker | Apakah akan membangun dependensi di Docker | bool | false | TIDAK |
cloudwatch_logs_kms_key_id | Kunci KMS dari KMS untuk digunakan saat mengenkripsi data log. | string | null | TIDAK |
cloudwatch_logs_log_group_class | Menentukan kelas log grup log. Nilai yang mungkin adalah: STANDARD atau INFREQUENT_ACCESS | string | null | TIDAK |
cloudwatch_logs_retention_in_days | Menentukan jumlah hari Anda ingin mempertahankan acara log di grup log yang ditentukan. Nilai yang mungkin adalah: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, dan 3653. | number | null | TIDAK |
cloudwatch_logs_skip_destroy | Apakah akan menyimpan grup log (dan log apa pun yang mungkin dikandungnya) pada waktu hancur. | bool | false | TIDAK |
cloudwatch_logs_tags | Peta tag untuk ditetapkan ke sumber daya. | map(string) | {} | TIDAK |
code_signing_config_arn | Amazon Resource Name (ARN) untuk konfigurasi penandatanganan kode | string | null | TIDAK |
kompatibel_architectures | Daftar Arsitektur Lambda Layer kompatibel dengan. Saat ini X86_64 dan ARM64 dapat ditentukan. | list(string) | null | TIDAK |
kompatibel_runtimes | Daftar runtimes yang kompatibel dengan lapisan ini. Hingga 5 runtime dapat ditentukan. | list(string) | [] | TIDAK |
CORS | Pengaturan CORS untuk digunakan oleh URL fungsi lambda | any | {} | TIDAK |
membuat | Mengontrol apakah sumber daya harus dibuat | bool | true | TIDAK |
create_async_event_config | Mengontrol apakah konfigurasi acara async untuk fungsi/alias lambda harus dibuat | bool | false | TIDAK |
create_current_version_allowed_triggers | Apakah akan mengizinkan pemicu pada versi fungsi Lambda saat ini (ini akan mencabut izin dari versi sebelumnya karena Terraform hanya mengelola sumber daya saat ini) | bool | true | TIDAK |
create_current_version_async_event_config | Apakah akan mengizinkan konfigurasi acara ASYNC pada versi fungsi Lambda saat ini (ini akan mencabut izin dari versi sebelumnya karena Terraform hanya mengelola sumber daya saat ini) | bool | true | TIDAK |
create_function | Mengontrol apakah sumber daya fungsi lambda harus dibuat | bool | true | TIDAK |
create_lambda_function_url | Mengontrol apakah sumber daya URL fungsi lambda harus dibuat | bool | false | TIDAK |
create_layer | Mengontrol apakah sumber daya lapisan lambda harus dibuat | bool | false | TIDAK |
create_package | Mengontrol apakah paket lambda harus dibuat | bool | true | TIDAK |
create_role | Mengontrol apakah peran IAM untuk fungsi lambda harus dibuat | bool | true | TIDAK |
create_sam_metadata | Mengontrol apakah sumber daya nol Sam metadata harus dibuat | bool | false | TIDAK |
create_unqalified_alias_allowed_triggers | Apakah akan mengizinkan pemicu pada alias yang tidak memenuhi syarat menunjuk ke $ versi terbaru | bool | true | TIDAK |
create_unqalified_alias_async_event_config | Apakah akan mengizinkan konfigurasi acara async pada alias yang tidak memenuhi syarat menunjuk ke $ versi terbaru | bool | true | TIDAK |
create_unqalified_alias_lambda_function_url | Apakah akan menggunakan alias yang tidak memenuhi syarat menunjuk ke $ versi terbaru di URL fungsi lambda | bool | true | TIDAK |
dead_letter_target_arn | ARN dari topik SNS atau antrian SQS untuk memberi tahu ketika doa gagal. | string | null | TIDAK |
keterangan | Deskripsi fungsi lambda Anda (atau lapisan) | string | "" | TIDAK |
destination_on_failure | Nama Sumber Daya Amazon (ARN) dari Sumber Daya Tujuan untuk Undangan Asynchronous Gagal | string | null | TIDAK |
destination_on_success | Nama Sumber Daya Amazon (ARN) dari Sumber Daya Tujuan untuk Doa Asynchronous yang Berhasil | string | null | TIDAK |
Docker_additional_options | Opsi tambahan untuk diteruskan ke perintah Run Docker (misalnya untuk mengatur variabel lingkungan, volume, dll.) | list(string) | [] | TIDAK |
Docker_build_root | Root dir mana untuk membangun di docker | string | "" | TIDAK |
Docker_entrypoint | Jalur ke titik entri Docker untuk digunakan | string | null | TIDAK |
Docker_file | Jalur ke dockerfile saat membangun di Docker | string | "" | TIDAK |
Docker_image | Gambar buruh pelabuhan untuk digunakan untuk build | string | "" | TIDAK |
Docker_pip_cache | Apakah akan memasang folder cache Pip bersama ke lingkungan Docker atau tidak | any | null | TIDAK |
Docker_with_ssh_agent | Apakah akan meneruskan ssh_auth_sock ke lingkungan buruh pelabuhan atau tidak | bool | false | TIDAK |
lingkungan_variable | Peta yang mendefinisikan variabel lingkungan untuk fungsi lambda. | map(string) | {} | TIDAK |
Ephemeral_storage_size | Jumlah penyimpanan fana (/TMP) di MB fungsi lambda Anda dapat digunakan saat runtime. Nilai yang valid antara 512 MB hingga 10.240 MB (10 GB). | number | 512 | TIDAK |
event_source_mapping | Peta pemetaan sumber acara | any | {} | TIDAK |
file_system_arn | Amazon Resource Name (ARN) dari Amazon EFS Access Point yang menyediakan akses ke sistem file. | string | null | TIDAK |
file_system_local_mount_path | Jalur di mana fungsi dapat mengakses sistem file, dimulai dengan /mnt /. | string | null | TIDAK |
function_name | Nama unik untuk fungsi lambda Anda | string | "" | TIDAK |
function_tags | Peta tag untuk hanya menetapkan ke fungsi lambda | map(string) | {} | TIDAK |
pawang | Lambda Function Entrpoint dalam kode Anda | string | "" | TIDAK |
hash_extra | String untuk ditambahkan ke fungsi hashing. Berguna saat membangun jalur sumber yang sama untuk fungsi yang berbeda. | string | "" | TIDAK |
abaikan_source_code_hash | Apakah akan mengabaikan perubahan pada hash kode sumber fungsi. Setel ke True jika Anda mengelola infrastruktur dan penyebaran kode secara terpisah. | bool | false | TIDAK |
image_config_command | CMD untuk gambar Docker | list(string) | [] | TIDAK |
image_config_entry_point | Titik masuk untuk gambar Docker | list(string) | [] | TIDAK |
image_config_working_directory | Direktori Kerja untuk Gambar Docker | string | null | TIDAK |
Image_uri | Gambar ECR URI yang berisi paket penyebaran fungsi. | string | null | TIDAK |
Invoke_mode | Memohon mode URL fungsi lambda. Nilai yang valid disangga (default) dan response_stream. | string | null | TIDAK |
ipv6_allowed_for_dual_stack | Memungkinkan lalu lintas IPv6 keluar pada fungsi VPC yang terhubung ke subnet dual-stack | bool | null | TIDAK |
kms_key_arn | Kunci KMS ARN untuk digunakan oleh fungsi lambda Anda | string | null | TIDAK |
lambda_at_edge | Atur ini ke true jika menggunakan lambda@edge, untuk mengaktifkan penerbitan, membatasi batas waktu, dan mengizinkan edgelambda.amazonaws.com untuk memohon fungsi tersebut | bool | false | TIDAK |
lambda_at_edge_logs_all_region | Apakah akan menentukan wildcard dalam kebijakan IAM yang digunakan oleh lambda@edge untuk memungkinkan logging di semua wilayah | bool | true | TIDAK |
lambda_role | Peran IAM dan melekat pada fungsi lambda. Ini mengatur siapa / apa yang dapat memohon fungsi lambda Anda, serta sumber daya apa yang dimiliki fungsi Lambda kami. Lihat Model Izin Lambda untuk lebih jelasnya. | string | "" | TIDAK |
layer_name | Nama Lambda Layer Untuk Membuat | string | "" | TIDAK |
layer_skip_destroy | Apakah akan mempertahankan versi lama dari lapisan Lambda yang sebelumnya digunakan. | bool | false | TIDAK |
lapisan | Daftar versi Lambda Layer ARNS (maksimum 5) untuk melampirkan fungsi lambda Anda. | list(string) | null | TIDAK |
lisensi_info | Info lisensi untuk lapisan Lambda Anda. Misalnya, MIT atau URL penuh lisensi. | string | "" | TIDAK |
local_existing_package | Jalur absolut ke file zip yang ada untuk digunakan | string | null | TIDAK |
LOGGING_APPLICATION_LOG_LEVEL | Level log aplikasi fungsi Lambda. Nilai yang valid adalah "jejak", "debug", "info", "warn", "error", atau "fatal". | string | "INFO" | TIDAK |
LOGGING_LOG_FORMAT | Format log dari fungsi lambda. Nilai yang valid adalah "json" atau "teks". | string | "Text" | TIDAK |
logging_log_group | Grup log CloudWatch untuk mengirim log ke. | string | null | TIDAK |
LOGGING_SYSTEM_LOG_LEVEL | Level log sistem fungsi lambda. Nilai yang valid adalah "debug", "info", atau "warn". | string | "INFO" | TIDAK |
Maximum_event_age_in_seconds | Usia maksimum permintaan yang dikirim Lambda ke fungsi untuk diproses dalam hitungan detik. Nilai yang valid antara 60 dan 21600. | number | null | TIDAK |
maksimum_retry_attempts | Jumlah maksimum kali untuk mencoba lagi ketika fungsi mengembalikan kesalahan. Nilai yang valid antara 0 dan 2. Default ke 2. | number | null | TIDAK |
Memory_size | Jumlah memori di MB fungsi lambda Anda dapat digunakan saat runtime. Nilai yang valid antara 128 MB hingga 10.240 MB (10 GB), dalam peningkatan 64 MB. | number | 128 | TIDAK |
number_of_policies | Jumlah kebijakan untuk dilampirkan pada peran IAM untuk fungsi lambda | number | 0 | TIDAK |
number_of_policy_jsons | Jumlah Kebijakan JSON untuk melampirkan peran IAM untuk fungsi Lambda | number | 0 | TIDAK |
package_type | Jenis Paket Penempatan Lambda. Opsi yang valid: zip atau gambar | string | "Zip" | TIDAK |
kebijakan | Daftar Pernyataan Kebijakan ATN untuk melampirkan peran fungsi Lambda | list(string) | [] | TIDAK |
kebijakan | Dokumen Kebijakan Tambahan ARN untuk dilampirkan ke Peran Fungsi Lambda | string | null | TIDAK |
policy_json | Dokumen Kebijakan Tambahan sebagai JSON untuk dilampirkan pada peran fungsi Lambda | string | null | TIDAK |
policy_jsons | Daftar Dokumen Kebijakan Tambahan sebagai JSON untuk melampirkan peran fungsi Lambda | list(string) | [] | TIDAK |
policy_name | Nama kebijakan iam. Itu mengesampingkan nilai default, yang sama dengan role_name | string | null | TIDAK |
policy_path | Jalur kebijakan untuk itu harus ditambahkan ke peran IAM untuk fungsi lambda | string | null | TIDAK |
policy_statements | Peta Pernyataan Kebijakan Dinamis Untuk Melampirkan ke Peran Fungsi Lambda | any | {} | TIDAK |
provisioned_concurrent_executions | Jumlah kapasitas untuk dialokasikan. Diatur ke 1 atau lebih besar untuk mengaktifkan, atau diatur ke 0 untuk menonaktifkan konkurensi yang disediakan. | number | -1 | TIDAK |
menerbitkan | Apakah akan mempublikasikan kreasi/perubahan sebagai versi fungsi lambda baru. | bool | false | TIDAK |
putin_khuylo | Apakah Anda setuju bahwa Putin tidak menghormati kedaulatan Ukraina dan integritas teritorial? Info lebih lanjut: https://en.wikipedia.org/wiki/putin_khuylo! | bool | true | TIDAK |
receate_missing_package | Apakah akan menciptakan kembali paket lambda yang hilang jika hilang secara lokal atau tidak | bool | true | TIDAK |
ganti_security_groups_on_destroy | (Opsional) Ketika benar, semua grup keamanan yang ditentukan dalam VPC_Security_Group_ids akan diganti dengan grup keamanan default setelah fungsi dihancurkan. Atur variabel replacement_security_group_ids untuk menggunakan daftar grup keamanan khusus untuk penggantian. | bool | null | TIDAK |
replacement_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 | TIDAK |
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 | TIDAK |
role_description | Description of IAM role to use for Lambda Function | string | null | TIDAK |
role_force_detach_policies | Specifies to force detaching any policies the IAM role has before destroying it. | bool | true | TIDAK |
role_maximum_session_duration | Maximum session duration, in seconds, for the IAM role | number | 3600 | TIDAK |
role_name | Name of IAM role to use for Lambda Function | string | null | TIDAK |
role_path | Path of IAM role to use for Lambda Function | string | null | TIDAK |
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 | TIDAK |
role_tags | A map of tags to assign to IAM role | map(string) | {} | TIDAK |
runtime | Lambda Function runtime | string | "" | TIDAK |
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" | TIDAK |
s3_bucket | S3 bucket to store artifacts | string | null | TIDAK |
s3_existing_package | The S3 bucket object with keys bucket, key, version pointing to an existing zip-file to use | map(string) | null | TIDAK |
s3_kms_key_id | Specifies a custom KMS key to use for S3 object encryption. | string | null | TIDAK |
s3_object_override_default_tags | Whether to override the default_tags from provider? NB: S3 objects support a maximum of 10 tags. | bool | false | TIDAK |
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" | TIDAK |
s3_object_tags | A map of tags to assign to S3 bucket object. | map(string) | {} | TIDAK |
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 | TIDAK |
s3_prefix | Directory name where artifacts should be stored in the S3 bucket. If unset, the path from artifacts_dir is used | string | null | TIDAK |
s3_server_side_encryption | Specifies server-side encryption of the object in S3. Valid values are "AES256" and "aws:kms". | string | null | TIDAK |
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 | TIDAK |
snap_start | (Optional) Snap start settings for low-latency startups | bool | false | TIDAK |
source_path | The absolute path to a local file or directory containing your Lambda source code | any | null | TIDAK |
store_on_s3 | Whether to store produced artifacts on S3 or locally. | bool | false | TIDAK |
tags | A map of tags to assign to resources. | map(string) | {} | TIDAK |
timeout | The amount of time your Lambda Function has to run in seconds. | number | 3 | TIDAK |
timeouts | Define maximum timeout for creating, updating, and deleting Lambda Function resources | map(string) | {} | TIDAK |
tracing_mode | Tracing mode of the Lambda Function. Valid value can be either PassThrough or Active. | string | null | TIDAK |
trigger_on_package_timestamp | Whether to recreate the Lambda package if the timestamp changes | bool | true | TIDAK |
trusted_entities | List of additional trusted entities for assuming Lambda Function role (trust relationship) | any | [] | TIDAK |
use_existing_cloudwatch_log_group | Whether to use an existing CloudWatch log group or create new | bool | false | TIDAK |
vpc_security_group_ids | List of security group ids when Lambda Function should run in the VPC. | list(string) | null | TIDAK |
vpc_subnet_ids | List of subnet ids when Lambda Function should run in the VPC. Usually private or intra subnets. | list(string) | null | TIDAK |
Nama | Keterangan |
---|---|
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.