Skip to content

Commit aeb4411

Browse files
committed
refactor: refactor packaging script
1 parent da8943d commit aeb4411

File tree

7 files changed

+31
-94
lines changed

7 files changed

+31
-94
lines changed

api/terraform/apigateway.tf

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -61,45 +61,7 @@ resource "aws_api_gateway_api_key" "openai" {
6161
resource "aws_api_gateway_deployment" "openai" {
6262
rest_api_id = aws_api_gateway_rest_api.openai.id
6363
triggers = {
64-
redeployment = sha1(jsonencode([
65-
aws_api_gateway_rest_api.openai.body,
66-
67-
# 1 thru 10
68-
module.default_grammar.sha1_deployment_trigger,
69-
module.default_summarize.sha1_deployment_trigger,
70-
module.default_parse_data.sha1_deployment_trigger,
71-
module.default_emoji_translation.sha1_deployment_trigger,
72-
module.default_time_complexity.sha1_deployment_trigger,
73-
module.default_explain_code.sha1_deployment_trigger,
74-
module.default_keywords.sha1_deployment_trigger,
75-
module.default_product_name_gen.sha1_deployment_trigger,
76-
module.default_fix_python_bugs.sha1_deployment_trigger,
77-
module.default_spreadsheet_gen.sha1_deployment_trigger,
78-
79-
# 11 thru 20
80-
module.default_tweet_classifier.sha1_deployment_trigger,
81-
module.default_airport_codes.sha1_deployment_trigger,
82-
module.default_mood_color.sha1_deployment_trigger,
83-
module.default_vr_fitness.sha1_deployment_trigger,
84-
module.default_marv_sarcastic_chat.sha1_deployment_trigger,
85-
module.default_turn_by_turn_directions.sha1_deployment_trigger,
86-
module.default_interview_questions.sha1_deployment_trigger,
87-
module.default_function_from_spec.sha1_deployment_trigger,
88-
module.default_code_improvement.sha1_deployment_trigger,
89-
module.default_single_page_website.sha1_deployment_trigger,
90-
91-
# 21 thru 30
92-
module.default_rap_battle.sha1_deployment_trigger,
93-
module.default_memo_writer.sha1_deployment_trigger,
94-
module.default_emoji_chatbot.sha1_deployment_trigger,
95-
module.default_translation.sha1_deployment_trigger,
96-
module.default_socratic_tutor.sha1_deployment_trigger,
97-
module.default_sql_translate.sha1_deployment_trigger,
98-
module.default_meeting_notes_summarizer.sha1_deployment_trigger,
99-
module.default_review_classifier.sha1_deployment_trigger,
100-
module.default_pro_con_discusser.sha1_deployment_trigger,
101-
module.default_lesson_plan_writer.sha1_deployment_trigger
102-
]))
64+
redeployment = timestamp()
10365
}
10466
lifecycle {
10567
create_before_destroy = true

api/terraform/endpoint/mapping-templates/openai-integration.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## see https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
22
{
3+
"object_type": "chat.completion",
34
"model": "${mapping_model}",
45
"end_point": "${mapping_end_point}",
56
"temperature": ${mapping_temperature},

api/terraform/endpoint/outputs.tf

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +0,0 @@
1-
2-
output "aws_api_gateway_integration" {
3-
value = aws_api_gateway_integration.post
4-
}
5-
6-
output "aws_api_gateway_method" {
7-
value = aws_api_gateway_method.post
8-
}
9-
10-
output "aws_api_gateway_method_response_endpoint_response_200" {
11-
value = aws_api_gateway_method_response.post_200
12-
}
13-
14-
output "sha1_deployment_trigger" {
15-
value = sha1(jsonencode([
16-
aws_api_gateway_integration.post,
17-
aws_api_gateway_method.post,
18-
aws_api_gateway_method_response.post_200.id,
19-
]))
20-
}

api/terraform/lambda_langchain.tf

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
# that call this Lambda, rather than here.
1414
#------------------------------------------------------------------------------
1515
locals {
16-
langchain_function_name = "lambda_langchain"
17-
langchain_build_path = "${path.module}/build/"
18-
langchain_openai_api_directory = "${path.module}/python/openai_api"
19-
langchain_source_directory = "${local.langchain_openai_api_directory}/${local.langchain_function_name}"
20-
langchain_packaging_script = "${local.langchain_source_directory}/create_pkg.sh"
21-
langchain_dist_package_name = "${local.langchain_function_name}_dist_pkg.zip"
16+
langchain_function_name = "lambda_langchain"
17+
langchain_build_path = "${path.module}/build/distribution_package"
18+
langchain_source_directory = "${path.module}/python/openai_api"
19+
langchain_packaging_script = "${local.langchain_source_directory}/create_pkg.sh"
20+
langchain_dist_package_name = "${local.langchain_function_name}_dist_pkg.zip"
2221
}
2322

2423
###############################################################################
@@ -27,18 +26,15 @@ locals {
2726
###############################################################################
2827
resource "null_resource" "package_lambda_langchain" {
2928
triggers = {
30-
redeployment = sha1(jsonencode([
31-
file("${local.langchain_source_directory}/lambda_handler.py"),
32-
file("${local.langchain_packaging_script}")
33-
]))
29+
always_redeploy = timestamp()
3430
}
3531

3632
provisioner "local-exec" {
3733
interpreter = ["/bin/bash"]
3834
command = local.langchain_packaging_script
3935

4036
environment = {
41-
PARENT_DIRECTORY = local.langchain_openai_api_directory
37+
TERRAFORM_ROOT = path.module
4238
SOURCE_CODE_PATH = local.langchain_source_directory
4339
BUILD_PATH = local.langchain_build_path
4440
PACKAGE_FOLDER = local.langchain_function_name
@@ -49,7 +45,7 @@ resource "null_resource" "package_lambda_langchain" {
4945
data "archive_file" "lambda_langchain" {
5046
# see https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
5147
source_dir = local.langchain_build_path
52-
output_path = "${local.langchain_build_path}/${local.langchain_dist_package_name}"
48+
output_path = "${path.module}/build/${local.langchain_dist_package_name}"
5349
type = "zip"
5450
depends_on = [null_resource.package_lambda_langchain]
5551
}
@@ -59,7 +55,7 @@ data "archive_file" "lambda_langchain" {
5955
###############################################################################
6056
data "external" "env_lambda_langchain" {
6157
# kluge to read and map the openai api key and org data contained in .env
62-
program = ["${local.langchain_source_directory}/env.sh"]
58+
program = ["${local.langchain_source_directory}/${local.langchain_function_name}/env.sh"]
6359

6460
# For Windows (or Powershell core on MacOS and Linux),
6561
# run a Powershell script instead
@@ -79,7 +75,7 @@ resource "aws_lambda_function" "lambda_langchain" {
7975
runtime = var.lambda_python_runtime
8076
memory_size = var.lambda_memory_size
8177
timeout = var.lambda_timeout
82-
handler = "lambda_handler.handler"
78+
handler = "openai_api.lambda_langchain.lambda_handler.handler"
8379
architectures = var.compatible_architectures
8480
filename = data.archive_file.lambda_langchain.output_path
8581
source_code_hash = data.archive_file.lambda_langchain.output_base64sha256
@@ -93,6 +89,7 @@ resource "aws_lambda_function" "lambda_langchain" {
9389
OPENAI_API_KEY = data.external.env_lambda_langchain.result["OPENAI_API_KEY"]
9490
OPENAI_ENDPOINT_IMAGE_N = var.openai_endpoint_image_n
9591
OPENAI_ENDPOINT_IMAGE_SIZE = var.openai_endpoint_image_size
92+
AWS_DEPLOYED = true
9693
}
9794
}
9895
}

api/terraform/lambda_layer.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
locals {
1111
layer_slug = "genai"
1212
layer_name = "layer_${local.layer_slug}"
13-
layer_parent_directory = "${path.module}/python/"
14-
layer_source_directory = "${local.layer_parent_directory}${local.layer_name}"
13+
layer_parent_directory = "${path.module}/python"
14+
layer_source_directory = "${local.layer_parent_directory}/${local.layer_name}"
1515
layer_packaging_script = "${local.layer_source_directory}/create_container.sh"
1616
layer_package_folder = local.layer_slug
1717
layer_dist_build_path = "${path.module}/build/"
18-
layer_dist_package_name = "${local.layer_dist_build_path}${local.layer_name}_dst.zip"
18+
layer_dist_package_name = "${local.layer_name}_dst.zip"
1919
}
2020

2121
###############################################################################
@@ -39,7 +39,6 @@ resource "null_resource" "package_layer_genai" {
3939
command = local.layer_packaging_script
4040

4141
environment = {
42-
PARENT_DIRECTORY = local.layer_parent_directory
4342
SOURCE_CODE_PATH = local.layer_source_directory
4443
RUNTIME = var.lambda_python_runtime
4544
CONTAINER_NAME = local.layer_name

api/terraform/lambda_openai_v2.tf

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
# that call this Lambda, rather than here.
1414
#------------------------------------------------------------------------------
1515
locals {
16-
openai_v2_function_name = "lambda_openai_v2"
17-
openai_v2_build_path = "${path.module}/build/"
18-
openai_v2_openai_api_directory = "${path.module}/python/openai_api"
19-
openai_v2_source_directory = "${local.openai_v2_openai_api_directory}/${local.openai_v2_function_name}"
20-
openai_v2_packaging_script = "${local.openai_v2_source_directory}/create_pkg.sh"
21-
openai_v2_dist_package_name = "${local.openai_v2_function_name}_dist_pkg.zip"
16+
openai_v2_function_name = "lambda_openai_v2"
17+
openai_v2_build_path = "${path.module}/build/distribution_package"
18+
openai_v2_source_directory = "${path.module}/python/openai_api"
19+
openai_v2_packaging_script = "${local.openai_v2_source_directory}/create_pkg.sh"
20+
openai_v2_dist_package_name = "${local.openai_v2_function_name}_dist_pkg.zip"
2221
}
2322

2423
###############################################################################
@@ -27,18 +26,15 @@ locals {
2726
###############################################################################
2827
resource "null_resource" "package_lambda_openai_v2" {
2928
triggers = {
30-
redeployment = sha1(jsonencode([
31-
file("${local.openai_v2_source_directory}/lambda_handler.py"),
32-
file("${local.openai_v2_packaging_script}")
33-
]))
29+
always_redeploy = timestamp()
3430
}
3531

3632
provisioner "local-exec" {
3733
interpreter = ["/bin/bash"]
3834
command = local.openai_v2_packaging_script
3935

4036
environment = {
41-
PARENT_DIRECTORY = local.openai_v2_openai_api_directory
37+
TERRAFORM_ROOT = path.module
4238
SOURCE_CODE_PATH = local.openai_v2_source_directory
4339
BUILD_PATH = local.openai_v2_build_path
4440
PACKAGE_FOLDER = local.openai_v2_function_name
@@ -48,8 +44,8 @@ resource "null_resource" "package_lambda_openai_v2" {
4844

4945
data "archive_file" "lambda_openai_v2" {
5046
# see https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
51-
source_dir = "${local.openai_v2_source_directory}/${local.openai_v2_function_name}/"
52-
output_path = "${local.openai_v2_build_path}/${local.openai_v2_dist_package_name}"
47+
source_dir = local.openai_v2_build_path
48+
output_path = "${path.module}/build/${local.openai_v2_dist_package_name}"
5349
type = "zip"
5450
depends_on = [null_resource.package_lambda_openai_v2]
5551
}
@@ -59,7 +55,7 @@ data "archive_file" "lambda_openai_v2" {
5955
###############################################################################
6056
data "external" "env_lambda_openai_v2" {
6157
# kluge to read and map the openai api key and org data contained in .env
62-
program = ["${local.openai_v2_source_directory}/env.sh"]
58+
program = ["${local.openai_v2_source_directory}/${local.openai_v2_function_name}/env.sh"]
6359

6460
# For Windows (or Powershell core on MacOS and Linux),
6561
# run a Powershell script instead
@@ -79,7 +75,7 @@ resource "aws_lambda_function" "lambda_openai_v2" {
7975
runtime = var.lambda_python_runtime
8076
memory_size = var.lambda_memory_size
8177
timeout = var.lambda_timeout
82-
handler = "lambda_handler.handler"
78+
handler = "openai_api.lambda_openai_v2.lambda_handler.handler"
8379
architectures = var.compatible_architectures
8480
filename = data.archive_file.lambda_openai_v2.output_path
8581
source_code_hash = data.archive_file.lambda_openai_v2.output_base64sha256
@@ -93,6 +89,7 @@ resource "aws_lambda_function" "lambda_openai_v2" {
9389
OPENAI_API_KEY = data.external.env_lambda_openai_v2.result["OPENAI_API_KEY"]
9490
OPENAI_ENDPOINT_IMAGE_N = var.openai_endpoint_image_n
9591
OPENAI_ENDPOINT_IMAGE_SIZE = var.openai_endpoint_image_size
92+
AWS_DEPLOYED = true
9693
}
9794
}
9895
}

api/terraform/route53.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ module "acm" {
6060
# aws = var.aws_region
6161
# }
6262

63-
domain_name = local.api_gateway_subdomain
64-
zone_id = data.aws_route53_zone.root_domain[count.index].id
63+
domain_name = local.api_gateway_subdomain
64+
zone_id = data.aws_route53_zone.root_domain[count.index].id
65+
validation_method = "DNS"
6566

6667
subject_alternative_names = [
6768
"*.${local.api_gateway_subdomain}",

0 commit comments

Comments
 (0)