Skip to content

Commit 91c811b

Browse files
authored
feat: Add snap_start functionality (#406)
1 parent a802b6d commit 91c811b

File tree

5 files changed

+21
-4
lines changed

5 files changed

+21
-4
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ Q4: What does this error mean - `"We currently do not support adding policies fo
659659
| Name | Version |
660660
|------|---------|
661661
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
662-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.9 |
662+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.44 |
663663
| <a name="requirement_external"></a> [external](#requirement\_external) | >= 1.0 |
664664
| <a name="requirement_local"></a> [local](#requirement\_local) | >= 1.0 |
665665
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
@@ -668,7 +668,7 @@ Q4: What does this error mean - `"We currently do not support adding policies fo
668668

669669
| Name | Version |
670670
|------|---------|
671-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.9 |
671+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.44 |
672672
| <a name="provider_external"></a> [external](#provider\_external) | >= 1.0 |
673673
| <a name="provider_local"></a> [local](#provider\_local) | >= 1.0 |
674674
| <a name="provider_null"></a> [null](#provider\_null) | >= 2.0 |
@@ -832,6 +832,7 @@ No modules.
832832
| <a name="input_s3_object_tags_only"></a> [s3\_object\_tags\_only](#input\_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` | no |
833833
| <a name="input_s3_prefix"></a> [s3\_prefix](#input\_s3\_prefix) | Directory name where artifacts should be stored in the S3 bucket. If unset, the path from `artifacts_dir` is used | `string` | `null` | no |
834834
| <a name="input_s3_server_side_encryption"></a> [s3\_server\_side\_encryption](#input\_s3\_server\_side\_encryption) | Specifies server-side encryption of the object in S3. Valid values are "AES256" and "aws:kms". | `string` | `null` | no |
835+
| <a name="input_snap_start"></a> [snap\_start](#input\_snap\_start) | (Optional) Snap start settings for low-latency startups | `bool` | `false` | no |
835836
| <a name="input_source_path"></a> [source\_path](#input\_source\_path) | The absolute path to a local file or directory containing your Lambda source code | `any` | `null` | no |
836837
| <a name="input_store_on_s3"></a> [store\_on\_s3](#input\_store\_on\_s3) | Whether to store produced artifacts on S3 or locally. | `bool` | `false` | no |
837838
| <a name="input_tags"></a> [tags](#input\_tags) | A map of tags to assign to resources. | `map(string)` | `{}` | no |

examples/simple/main.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ module "lambda_function" {
5454
# create_package = false
5555
# local_existing_package = data.null_data_source.downloaded_package.outputs["filename"]
5656

57+
# snap_start = true
58+
5759
# policy_json = <<EOF
5860
#{
5961
# "Version": "2012-10-17",

main.tf

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ resource "aws_lambda_function" "this" {
3333
runtime = var.package_type != "Zip" ? null : var.runtime
3434
layers = var.layers
3535
timeout = var.lambda_at_edge ? min(var.timeout, 30) : var.timeout
36-
publish = var.lambda_at_edge ? true : var.publish
36+
publish = (var.lambda_at_edge || var.snap_start) ? true : var.publish
3737
kms_key_arn = var.kms_key_arn
3838
image_uri = var.image_uri
3939
package_type = var.package_type
@@ -102,6 +102,14 @@ resource "aws_lambda_function" "this" {
102102
}
103103
}
104104

105+
dynamic "snap_start" {
106+
for_each = var.snap_start ? [true] : []
107+
108+
content {
109+
apply_on = "PublishedVersions"
110+
}
111+
}
112+
105113
tags = var.tags
106114

107115
depends_on = [

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,12 @@ variable "image_config_working_directory" {
217217
default = null
218218
}
219219

220+
variable "snap_start" {
221+
description = "(Optional) Snap start settings for low-latency startups"
222+
type = bool
223+
default = false
224+
}
225+
220226
###############
221227
# Function URL
222228
###############

versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.9"
7+
version = ">= 4.44"
88
}
99
external = {
1010
source = "hashicorp/external"

0 commit comments

Comments
 (0)