-
Notifications
You must be signed in to change notification settings - Fork 155
/
Copy pathmain.tf
78 lines (63 loc) · 1.73 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
provider "aws" {
region = "eu-west-1"
# Make it faster by skipping something
skip_metadata_api_check = true
skip_region_validation = true
skip_credentials_validation = true
}
module "eventbridge" {
source = "../../"
create_bus = false
rules = {
crons = {
description = "Trigger for a Lambda"
schedule_expression = "rate(5 minutes)"
}
}
targets = {
crons = [
{
name = "lambda-loves-cron"
arn = module.lambda.lambda_function_arn
input = jsonencode({ "job" : "cron-by-rate" })
}
]
}
}
##################
# Extra resources
##################
resource "random_pet" "this" {
length = 2
}
#############################################
# Using packaged function from Lambda module
#############################################
module "lambda" {
source = "terraform-aws-modules/lambda/aws"
version = "~> 6.0"
function_name = "${random_pet.this.id}-lambda"
handler = "index.lambda_handler"
runtime = "python3.8"
create_package = false
local_existing_package = local.downloaded
create_current_version_allowed_triggers = false
allowed_triggers = {
ScanAmiRule = {
principal = "events.amazonaws.com"
source_arn = module.eventbridge.eventbridge_rule_arns["crons"]
}
}
}
locals {
package_url = "https://raw.githubusercontent.com/terraform-aws-modules/terraform-aws-lambda/master/examples/fixtures/python3.8-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}"
}
}