Skip to content

Commit a175a50

Browse files
committed
Migrate to remote state
1 parent 317859b commit a175a50

File tree

8 files changed

+68
-649
lines changed

8 files changed

+68
-649
lines changed

terraform/dynamo.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ resource "aws_dynamodb_table" "api_cache_table" {
1111

1212
ttl {
1313
attribute_name = "TimeToExist"
14-
enabled = true
14+
enabled = true
1515
}
1616
}
1717

@@ -20,7 +20,7 @@ resource "aws_dynamodb_table" "api_notifications_table" {
2020
read_capacity = 10
2121
write_capacity = 10
2222
hash_key = "RequesterId"
23-
range_key = "MachineId"
23+
range_key = "MachineId"
2424

2525
attribute {
2626
name = "RequesterId"
@@ -34,6 +34,6 @@ resource "aws_dynamodb_table" "api_notifications_table" {
3434

3535
ttl {
3636
attribute_name = "TimeToExist"
37-
enabled = true
37+
enabled = true
3838
}
39-
}
39+
}

terraform/gateway.tf

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,34 @@ resource "aws_api_gateway_rest_api" "laundry_view_api" {
44
}
55

66
resource "aws_api_gateway_resource" "laundry_view_api_proxy" {
7-
rest_api_id = "${aws_api_gateway_rest_api.laundry_view_api.id}"
8-
parent_id = "${aws_api_gateway_rest_api.laundry_view_api.root_resource_id}"
7+
rest_api_id = aws_api_gateway_rest_api.laundry_view_api.id
8+
parent_id = aws_api_gateway_rest_api.laundry_view_api.root_resource_id
99
path_part = "lv_api"
1010
}
1111

1212
resource "aws_api_gateway_method" "laundry_view_api_proxy" {
13-
rest_api_id = "${aws_api_gateway_rest_api.laundry_view_api.id}"
14-
resource_id = "${aws_api_gateway_resource.laundry_view_api_proxy.id}"
13+
rest_api_id = aws_api_gateway_rest_api.laundry_view_api.id
14+
resource_id = aws_api_gateway_resource.laundry_view_api_proxy.id
1515
http_method = "ANY"
1616
authorization = "NONE"
1717
}
1818

1919
resource "aws_api_gateway_integration" "lambda" {
20-
rest_api_id = "${aws_api_gateway_rest_api.laundry_view_api.id}"
21-
resource_id = "${aws_api_gateway_method.laundry_view_api_proxy.resource_id}"
22-
http_method = "${aws_api_gateway_method.laundry_view_api_proxy.http_method}"
20+
rest_api_id = aws_api_gateway_rest_api.laundry_view_api.id
21+
resource_id = aws_api_gateway_method.laundry_view_api_proxy.resource_id
22+
http_method = aws_api_gateway_method.laundry_view_api_proxy.http_method
2323

2424
integration_http_method = "POST"
2525
type = "AWS_PROXY"
26-
uri = "${aws_lambda_function.lvapi_func.invoke_arn}"
26+
uri = aws_lambda_function.lvapi_func.invoke_arn
2727
}
2828

2929
resource "aws_api_gateway_deployment" "laundry_view_api" {
30-
depends_on = [
31-
"aws_api_gateway_integration.lambda",
32-
// "aws_api_gateway_integration.lambda_root",
33-
]
30+
depends_on = [aws_api_gateway_integration.lambda]
3431

35-
rest_api_id = "${aws_api_gateway_rest_api.laundry_view_api.id}"
32+
// "aws_api_gateway_integration.lambda_root",
33+
34+
rest_api_id = aws_api_gateway_rest_api.laundry_view_api.id
3635
stage_name = "prod"
3736
}
3837

@@ -47,13 +46,11 @@ resource "aws_api_gateway_domain_name" "laundry_view_api" {
4746
}
4847

4948
resource "aws_api_gateway_base_path_mapping" "test" {
50-
api_id = "${aws_api_gateway_rest_api.laundry_view_api.id}"
51-
stage_name = "${aws_api_gateway_deployment.laundry_view_api.stage_name}"
52-
domain_name = "${aws_api_gateway_domain_name.laundry_view_api.domain_name}"
49+
api_id = aws_api_gateway_rest_api.laundry_view_api.id
50+
stage_name = aws_api_gateway_deployment.laundry_view_api.stage_name
51+
domain_name = aws_api_gateway_domain_name.laundry_view_api.domain_name
5352
}
5453

55-
56-
5754
output "base_url" {
58-
value = "${aws_api_gateway_deployment.laundry_view_api.invoke_url}"
59-
}
55+
value = aws_api_gateway_deployment.laundry_view_api.invoke_url
56+
}

terraform/iam.tf

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
1-
21
# IAM role which dictates what other AWS services the Lambda function
32
# may access.
43
data "aws_iam_policy_document" "assume_role_policy" {
54
statement {
6-
actions = ["sts:AssumeRole"],
5+
actions = ["sts:AssumeRole"]
76
principals {
8-
type = "Service"
7+
type = "Service"
98
identifiers = ["lambda.amazonaws.com"]
109
}
11-
1210
}
1311
}
1412

1513
resource "aws_iam_role" "lvapi_lambda_role" {
1614
name = "LaundryViewApi-lambda-role"
1715

18-
assume_role_policy = "${data.aws_iam_policy_document.assume_role_policy.json}"
16+
assume_role_policy = data.aws_iam_policy_document.assume_role_policy.json
1917
}
2018

2119
data "aws_iam_policy_document" "lvapi_lambda_policy" {
@@ -26,7 +24,7 @@ data "aws_iam_policy_document" "lvapi_lambda_policy" {
2624
"logs:PutLogEvents",
2725
"cloudwatch:Describe*",
2826
"cloudwatch:Get*",
29-
"cloudwatch:List*"
27+
"cloudwatch:List*",
3028
]
3129
resources = ["*"]
3230
}
@@ -39,22 +37,20 @@ data "aws_iam_policy_document" "lvapi_lambda_policy" {
3937
"dynamodb:Scan",
4038
]
4139
resources = [
42-
"${aws_dynamodb_table.api_cache_table.arn}",
43-
"${aws_dynamodb_table.api_notifications_table.arn}"
40+
aws_dynamodb_table.api_cache_table.arn,
41+
aws_dynamodb_table.api_notifications_table.arn,
4442
]
4543
}
4644

4745
statement {
48-
actions = ["secretsmanager:*"]
49-
resources = ["${aws_secretsmanager_secret.firebase_secret.arn}"]
46+
actions = ["secretsmanager:*"]
47+
resources = [aws_secretsmanager_secret.firebase_secret.arn]
5048
}
51-
52-
5349
}
5450

5551
resource "aws_iam_role_policy" "lvapi_lambda_policy" {
5652
name = "lambda_policy"
57-
role = "${aws_iam_role.lvapi_lambda_role.id}"
53+
role = aws_iam_role.lvapi_lambda_role.id
5854

59-
policy = "${data.aws_iam_policy_document.lvapi_lambda_policy.json}"
60-
}
55+
policy = data.aws_iam_policy_document.lvapi_lambda_policy.json
56+
}

terraform/lambda.tf

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
resource "aws_lambda_function" "lvapi_func" {
22
function_name = "LaundryViewApi"
3-
filename = "${var.lvapi_func_filename}"
3+
filename = var.lvapi_func_filename
44

5-
source_code_hash = "${base64sha256(file(var.lvapi_func_filename))}"
5+
source_code_hash = filebase64sha256(var.lvapi_func_filename)
66

7-
handler = "${var.lvapi_func_handler}"
8-
runtime = "java8"
9-
timeout = "300"
7+
handler = var.lvapi_func_handler
8+
runtime = "java8"
9+
timeout = "300"
1010
memory_size = "512"
1111

12-
role = "${aws_iam_role.lvapi_lambda_role.arn}"
12+
role = aws_iam_role.lvapi_lambda_role.arn
1313

1414
environment {
1515
variables = {
16-
cache_table = "${aws_dynamodb_table.api_cache_table.name}"
17-
notification_table = "${aws_dynamodb_table.api_notifications_table.name}"
18-
firebase_secret_name = "${aws_secretsmanager_secret.firebase_secret.name}"
16+
cache_table = aws_dynamodb_table.api_cache_table.name
17+
notification_table = aws_dynamodb_table.api_notifications_table.name
18+
firebase_secret_name = aws_secretsmanager_secret.firebase_secret.name
1919
}
2020
}
2121
}
2222

2323
resource "aws_lambda_permission" "lvapi_gateway" {
2424
statement_id = "AllowAPIGatewayInvoke"
2525
action = "lambda:InvokeFunction"
26-
function_name = "${aws_lambda_function.lvapi_func.arn}"
26+
function_name = aws_lambda_function.lvapi_func.arn
2727
principal = "apigateway.amazonaws.com"
2828

2929
# The /*/* portion grants access from any method on any resource
@@ -32,22 +32,21 @@ resource "aws_lambda_permission" "lvapi_gateway" {
3232
}
3333

3434
resource "aws_cloudwatch_event_rule" "every_minute" {
35-
name = "every_minute"
36-
description = "Fires every minute"
35+
name = "every_minute"
36+
description = "Fires every minute"
3737
schedule_expression = "rate(1 minute)"
38-
is_enabled = true
38+
is_enabled = true
3939
}
4040

4141
resource "aws_cloudwatch_event_target" "lvperiodic_every_minute" {
42-
rule = "${aws_cloudwatch_event_rule.every_minute.name}"
43-
arn = "${aws_lambda_function.lvapi_func.arn}"
42+
rule = aws_cloudwatch_event_rule.every_minute.name
43+
arn = aws_lambda_function.lvapi_func.arn
4444
}
4545

4646
resource "aws_lambda_permission" "lvperiod_cloudwatch" {
47-
statement_id = "AllowExecutionFromCloudWatch"
48-
action = "lambda:InvokeFunction"
49-
function_name = "${aws_lambda_function.lvapi_func.function_name}"
50-
principal = "events.amazonaws.com"
51-
source_arn = "${aws_cloudwatch_event_rule.every_minute.arn}"
47+
statement_id = "AllowExecutionFromCloudWatch"
48+
action = "lambda:InvokeFunction"
49+
function_name = aws_lambda_function.lvapi_func.function_name
50+
principal = "events.amazonaws.com"
51+
source_arn = aws_cloudwatch_event_rule.every_minute.arn
5252
}
53-

terraform/main.tf

Lines changed: 0 additions & 4 deletions
This file was deleted.

terraform/provider.tf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
provider "aws" {
2+
region = "us-west-2"
3+
version = "~> 2.7.0"
4+
}
5+
6+
terraform {
7+
backend "s3" {
8+
bucket = "maths22-remote-tfstate"
9+
region = "us-west-2"
10+
key = "laundryview-api.tfstate"
11+
}
12+
13+
required_version = "> 0.12.0-rc1"
14+
}
15+

0 commit comments

Comments
 (0)