1- data "external" "apprunner-deploy" {
2- program = [" ruby" , " ${ path . module } /apprunner_deploy.rb" ]
3- }
1+ # Note: apprunner_deploy.rb script handling is deferred
2+ # Image identifier and environment variables should be managed outside Terraform
3+ # Using lifecycle ignore_changes to prevent Terraform from reverting manual updates
4+
5+ resource "aws_apprunner_service" "main" {
6+ count = var. enable_apprunner ? 1 : 0
47
5- resource "aws_apprunner_service" "prd" {
6- service_name = " sponsor-app"
8+ service_name = var. service_name
79
810 source_configuration {
911 image_repository {
1012 image_configuration {
1113 port = " 3000"
12- runtime_environment_variables = merge (jsondecode (data. external . apprunner-deploy . result . runtime_environment_variables ), {
13- })
14- runtime_environment_secrets = jsondecode (data. external . apprunner-deploy . result . runtime_environment_secrets )
14+ runtime_environment_variables = {}
15+ runtime_environment_secrets = {}
1516 }
16- image_identifier = data . external . apprunner-deploy . result . image_identifier
17+ image_identifier = " ${ var . enable_shared_resources ? aws_ecr_repository . app [ 0 ] . repository_url : " 005216166247.dkr.ecr.us-west-2.amazonaws.com/sponsor-app " } :latest "
1718 image_repository_type = " ECR"
1819 }
1920 authentication_configuration {
20- access_role_arn = aws_iam_role. app-runner-access . arn
21+ access_role_arn = aws_iam_role. app-runner-access [ 0 ] . arn
2122 }
2223 auto_deployments_enabled = false
2324 }
@@ -38,18 +39,30 @@ resource "aws_apprunner_service" "prd" {
3839 }
3940
4041 tags = {
41- Name = " sponsor-app"
42- Environment = " production"
42+ Name = var.service_name
43+ Environment = var.environment
44+ }
45+
46+ lifecycle {
47+ ignore_changes = [
48+ source_configuration [0 ]. image_repository [0 ]. image_identifier ,
49+ source_configuration [0 ]. image_repository [0 ]. image_configuration [0 ]. runtime_environment_variables ,
50+ source_configuration [0 ]. image_repository [0 ]. image_configuration [0 ]. runtime_environment_secrets ,
51+ ]
4352 }
4453}
4554
4655resource "aws_iam_role" "app-runner-access" {
47- name = " AppraSponsorApp"
48- description = " prd tf/iam.tf"
49- assume_role_policy = data. aws_iam_policy_document . app-runner-access-trust . json
56+ count = var. enable_apprunner ? 1 : 0
57+
58+ name = var. iam_apprunner_access_name
59+ description = " ${ var . environment } tf/iam.tf"
60+ assume_role_policy = data. aws_iam_policy_document . app-runner-access-trust [0 ]. json
5061}
5162
5263data "aws_iam_policy_document" "app-runner-access-trust" {
64+ count = var. enable_apprunner ? 1 : 0
65+
5366 statement {
5467 effect = " Allow"
5568 actions = [" sts:AssumeRole" ]
@@ -63,11 +76,15 @@ data "aws_iam_policy_document" "app-runner-access-trust" {
6376}
6477
6578resource "aws_iam_role_policy" "app-runner-access" {
66- role = aws_iam_role. app-runner-access . name
67- policy = data. aws_iam_policy_document . app-runner-access . json
79+ count = var. enable_apprunner ? 1 : 0
80+
81+ role = aws_iam_role. app-runner-access [0 ]. name
82+ policy = data. aws_iam_policy_document . app-runner-access [0 ]. json
6883}
6984
7085data "aws_iam_policy_document" "app-runner-access" {
86+ count = var. enable_apprunner ? 1 : 0
87+
7188 statement {
7289 effect = " Allow"
7390 actions = [
@@ -85,8 +102,7 @@ data "aws_iam_policy_document" "app-runner-access" {
85102 " ecr:DescribeImages" ,
86103 ]
87104 resources = [
88- aws_ecr_repository . app . arn ,
105+ var . enable_shared_resources ? aws_ecr_repository . app [ 0 ] . arn : " arn:aws:ecr:us-west-2:005216166247:repository/sponsor-app " ,
89106 ]
90107 }
91108}
92-
0 commit comments