-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtemplate.json
More file actions
1 lines (1 loc) · 43.7 KB
/
template.json
File metadata and controls
1 lines (1 loc) · 43.7 KB
1
{"Description":"Minute AI - Meeting Transcription & Minuting on AWS","Resources":{"AppRegistryApplication":{"Type":"AWS::ServiceCatalogAppRegistry::Application","Properties":{"Description":"NDX:Try - Minute AI Meeting Transcription & Minuting","Name":{"Fn::Join":["",["NDXTry_Minute_",{"Ref":"AWS::AccountId"}]]},"Tags":{"Project":"ndx-try-aws-scenarios","Scenario":"minute"}},"Metadata":{"aws:cdk:path":"MinuteStack/AppRegistryApplication"}},"AppRegistryAssociation":{"Type":"AWS::ServiceCatalogAppRegistry::ResourceAssociation","Properties":{"Application":{"Fn::GetAtt":["AppRegistryApplication","Id"]},"Resource":{"Ref":"AWS::StackId"},"ResourceType":"CFN_STACK"},"Metadata":{"aws:cdk:path":"MinuteStack/AppRegistryAssociation"}},"NetworkingVpc6B5E6F44":{"Type":"AWS::EC2::VPC","Properties":{"CidrBlock":"10.0.0.0/16","EnableDnsHostnames":true,"EnableDnsSupport":true,"InstanceTenancy":"default","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Name","Value":"NdxMinute-VPC"},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/Resource"}},"NetworkingVpcPublicSubnet1Subnet918289EE":{"Type":"AWS::EC2::Subnet","Properties":{"AvailabilityZone":{"Fn::Select":[0,{"Fn::GetAZs":""}]},"CidrBlock":"10.0.0.0/24","MapPublicIpOnLaunch":true,"Tags":[{"Key":"aws-cdk:subnet-name","Value":"Public"},{"Key":"aws-cdk:subnet-type","Value":"Public"},{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Name","Value":"MinuteStack/Networking/Vpc/PublicSubnet1"},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet1/Subnet"}},"NetworkingVpcPublicSubnet1RouteTable8FB3C18A":{"Type":"AWS::EC2::RouteTable","Properties":{"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Name","Value":"MinuteStack/Networking/Vpc/PublicSubnet1"},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet1/RouteTable"}},"NetworkingVpcPublicSubnet1RouteTableAssociationD13830EA":{"Type":"AWS::EC2::SubnetRouteTableAssociation","Properties":{"RouteTableId":{"Ref":"NetworkingVpcPublicSubnet1RouteTable8FB3C18A"},"SubnetId":{"Ref":"NetworkingVpcPublicSubnet1Subnet918289EE"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet1/RouteTableAssociation"}},"NetworkingVpcPublicSubnet1DefaultRoute80C01FA6":{"Type":"AWS::EC2::Route","Properties":{"DestinationCidrBlock":"0.0.0.0/0","GatewayId":{"Ref":"NetworkingVpcIGW21218DAB"},"RouteTableId":{"Ref":"NetworkingVpcPublicSubnet1RouteTable8FB3C18A"}},"DependsOn":["NetworkingVpcVPCGW12E561D8"],"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet1/DefaultRoute"}},"NetworkingVpcPublicSubnet2Subnet9D9E5AFB":{"Type":"AWS::EC2::Subnet","Properties":{"AvailabilityZone":{"Fn::Select":[1,{"Fn::GetAZs":""}]},"CidrBlock":"10.0.1.0/24","MapPublicIpOnLaunch":true,"Tags":[{"Key":"aws-cdk:subnet-name","Value":"Public"},{"Key":"aws-cdk:subnet-type","Value":"Public"},{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Name","Value":"MinuteStack/Networking/Vpc/PublicSubnet2"},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet2/Subnet"}},"NetworkingVpcPublicSubnet2RouteTable22886677":{"Type":"AWS::EC2::RouteTable","Properties":{"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Name","Value":"MinuteStack/Networking/Vpc/PublicSubnet2"},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet2/RouteTable"}},"NetworkingVpcPublicSubnet2RouteTableAssociation2D4CEA06":{"Type":"AWS::EC2::SubnetRouteTableAssociation","Properties":{"RouteTableId":{"Ref":"NetworkingVpcPublicSubnet2RouteTable22886677"},"SubnetId":{"Ref":"NetworkingVpcPublicSubnet2Subnet9D9E5AFB"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet2/RouteTableAssociation"}},"NetworkingVpcPublicSubnet2DefaultRouteDF98F60F":{"Type":"AWS::EC2::Route","Properties":{"DestinationCidrBlock":"0.0.0.0/0","GatewayId":{"Ref":"NetworkingVpcIGW21218DAB"},"RouteTableId":{"Ref":"NetworkingVpcPublicSubnet2RouteTable22886677"}},"DependsOn":["NetworkingVpcVPCGW12E561D8"],"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/PublicSubnet2/DefaultRoute"}},"NetworkingVpcIGW21218DAB":{"Type":"AWS::EC2::InternetGateway","Properties":{"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Name","Value":"NdxMinute-VPC"},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/IGW"}},"NetworkingVpcVPCGW12E561D8":{"Type":"AWS::EC2::VPCGatewayAttachment","Properties":{"InternetGatewayId":{"Ref":"NetworkingVpcIGW21218DAB"},"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/Vpc/VPCGW"}},"NetworkingAlbSecurityGroup5ADC578E":{"Type":"AWS::EC2::SecurityGroup","Properties":{"GroupDescription":"ALB security group for Minute AI","GroupName":"NdxMinute-ALB-SG","SecurityGroupIngress":[{"CidrIp":"0.0.0.0/0","Description":"Allow HTTP from internet","FromPort":80,"IpProtocol":"tcp","ToPort":80}],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/AlbSecurityGroup/Resource"}},"NetworkingAlbSecurityGrouptoMinuteStackNetworkingFargateSecurityGroup8A63491E8081495CEBC6":{"Type":"AWS::EC2::SecurityGroupEgress","Properties":{"Description":"Allow HTTP to frontend tasks","DestinationSecurityGroupId":{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]},"FromPort":8081,"GroupId":{"Fn::GetAtt":["NetworkingAlbSecurityGroup5ADC578E","GroupId"]},"IpProtocol":"tcp","ToPort":8081},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/AlbSecurityGroup/to MinuteStackNetworkingFargateSecurityGroup8A63491E:8081"}},"NetworkingFargateSecurityGroupFC850E44":{"Type":"AWS::EC2::SecurityGroup","Properties":{"GroupDescription":"Fargate task security group for Minute AI","GroupName":"NdxMinute-Fargate-SG","SecurityGroupEgress":[{"CidrIp":"0.0.0.0/0","Description":"Allow all outbound traffic by default","IpProtocol":"-1"}],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/FargateSecurityGroup/Resource"}},"NetworkingFargateSecurityGroupfromMinuteStackNetworkingAlbSecurityGroup05BCC2D38081D336DF09":{"Type":"AWS::EC2::SecurityGroupIngress","Properties":{"Description":"Allow HTTP from ALB to frontend","FromPort":8081,"GroupId":{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]},"IpProtocol":"tcp","SourceSecurityGroupId":{"Fn::GetAtt":["NetworkingAlbSecurityGroup5ADC578E","GroupId"]},"ToPort":8081},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/FargateSecurityGroup/from MinuteStackNetworkingAlbSecurityGroup05BCC2D3:8081"}},"NetworkingFargateSecurityGroupfromMinuteStackNetworkingFargateSecurityGroup8A63491E808059084FC6":{"Type":"AWS::EC2::SecurityGroupIngress","Properties":{"Description":"Allow frontend to backend via Cloud Map","FromPort":8080,"GroupId":{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]},"IpProtocol":"tcp","SourceSecurityGroupId":{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]},"ToPort":8080},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/FargateSecurityGroup/from MinuteStackNetworkingFargateSecurityGroup8A63491E:8080"}},"NetworkingAuroraSecurityGroupDB53DF94":{"Type":"AWS::EC2::SecurityGroup","Properties":{"GroupDescription":"Aurora PostgreSQL security group for Minute AI","GroupName":"NdxMinute-Aurora-SG","SecurityGroupEgress":[{"CidrIp":"255.255.255.255/32","Description":"Disallow all traffic","FromPort":252,"IpProtocol":"icmp","ToPort":86}],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/AuroraSecurityGroup/Resource"}},"NetworkingAuroraSecurityGroupfromMinuteStackNetworkingFargateSecurityGroup8A63491E5432509FB9ED":{"Type":"AWS::EC2::SecurityGroupIngress","Properties":{"Description":"Allow PostgreSQL from Fargate tasks","FromPort":5432,"GroupId":{"Fn::GetAtt":["NetworkingAuroraSecurityGroupDB53DF94","GroupId"]},"IpProtocol":"tcp","SourceSecurityGroupId":{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]},"ToPort":5432},"Metadata":{"aws:cdk:path":"MinuteStack/Networking/AuroraSecurityGroup/from MinuteStackNetworkingFargateSecurityGroup8A63491E:5432"}},"DatabaseDbSecret1098DC6E":{"Type":"AWS::SecretsManager::Secret","Properties":{"Description":"Database credentials for Minute AI","GenerateSecretString":{"ExcludePunctuation":true,"GenerateStringKey":"password","PasswordLength":32,"SecretStringTemplate":"{\"username\":\"minuteadmin\"}"},"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Database/DbSecret/Resource"}},"DatabaseDbSecretAttachment34026B56":{"Type":"AWS::SecretsManager::SecretTargetAttachment","Properties":{"SecretId":{"Ref":"DatabaseDbSecret1098DC6E"},"TargetId":{"Ref":"DatabaseAuroraCF3B5693"},"TargetType":"AWS::RDS::DBCluster"},"Metadata":{"aws:cdk:path":"MinuteStack/Database/DbSecret/Attachment/Resource"}},"DatabaseAuroraSubnetsC2098A6E":{"Type":"AWS::RDS::DBSubnetGroup","Properties":{"DBSubnetGroupDescription":"Subnets for Aurora database","SubnetIds":[{"Ref":"NetworkingVpcPublicSubnet1Subnet918289EE"},{"Ref":"NetworkingVpcPublicSubnet2Subnet9D9E5AFB"}],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Database/Aurora/Subnets/Default"}},"DatabaseAuroraCF3B5693":{"Type":"AWS::RDS::DBCluster","Properties":{"BackupRetentionPeriod":1,"CopyTagsToSnapshot":true,"DBClusterParameterGroupName":"default.aurora-postgresql16","DBSubnetGroupName":{"Ref":"DatabaseAuroraSubnetsC2098A6E"},"DatabaseName":"minute_db","DeletionProtection":false,"Engine":"aurora-postgresql","EngineVersion":"16.4","MasterUserPassword":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:password::}}"]]},"MasterUsername":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:username::}}"]]},"Port":5432,"ServerlessV2ScalingConfiguration":{"MaxCapacity":2,"MinCapacity":0.5},"StorageEncrypted":true,"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VpcSecurityGroupIds":[{"Fn::GetAtt":["NetworkingAuroraSecurityGroupDB53DF94","GroupId"]}]},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Database/Aurora/Resource"}},"DatabaseAurorawriter2449CF28":{"Type":"AWS::RDS::DBInstance","Properties":{"DBClusterIdentifier":{"Ref":"DatabaseAuroraCF3B5693"},"DBInstanceClass":"db.serverless","Engine":"aurora-postgresql","PromotionTier":0,"PubliclyAccessible":false,"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"DependsOn":["NetworkingVpcPublicSubnet1DefaultRoute80C01FA6","NetworkingVpcPublicSubnet1RouteTableAssociationD13830EA","NetworkingVpcPublicSubnet2DefaultRouteDF98F60F","NetworkingVpcPublicSubnet2RouteTableAssociation2D4CEA06"],"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Database/Aurora/writer/Resource"}},"QueuesTranscriptionDLQ6D36226D":{"Type":"AWS::SQS::Queue","Properties":{"MessageRetentionPeriod":1209600,"QueueName":"minute-transcription-dlq","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Queues/TranscriptionDLQ/Resource"}},"QueuesTranscriptionQueueA02E7327":{"Type":"AWS::SQS::Queue","Properties":{"MessageRetentionPeriod":345600,"QueueName":"minute-transcription-queue","RedrivePolicy":{"deadLetterTargetArn":{"Fn::GetAtt":["QueuesTranscriptionDLQ6D36226D","Arn"]},"maxReceiveCount":4},"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VisibilityTimeout":1800},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Queues/TranscriptionQueue/Resource"}},"QueuesLlmDLQ37A16FA3":{"Type":"AWS::SQS::Queue","Properties":{"MessageRetentionPeriod":1209600,"QueueName":"minute-llm-dlq","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Queues/LlmDLQ/Resource"}},"QueuesLlmQueueE3526008":{"Type":"AWS::SQS::Queue","Properties":{"MessageRetentionPeriod":345600,"QueueName":"minute-llm-queue","RedrivePolicy":{"deadLetterTargetArn":{"Fn::GetAtt":["QueuesLlmDLQ37A16FA3","Arn"]},"maxReceiveCount":4},"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"VisibilityTimeout":1800},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Queues/LlmQueue/Resource"}},"StorageDataBucketB1B922FA":{"Type":"AWS::S3::Bucket","Properties":{"BucketEncryption":{"ServerSideEncryptionConfiguration":[{"ServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]},"CorsConfiguration":{"CorsRules":[{"AllowedHeaders":["*"],"AllowedMethods":["GET","PUT","POST","DELETE"],"AllowedOrigins":["*"]}]},"PublicAccessBlockConfiguration":{"BlockPublicAcls":true,"BlockPublicPolicy":true,"IgnorePublicAcls":true,"RestrictPublicBuckets":true},"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Storage/DataBucket/Resource"}},"StorageDataBucketPolicyC997B69E":{"Type":"AWS::S3::BucketPolicy","Properties":{"Bucket":{"Ref":"StorageDataBucketB1B922FA"},"PolicyDocument":{"Statement":[{"Action":"s3:*","Condition":{"Bool":{"aws:SecureTransport":"false"}},"Effect":"Deny","Principal":{"AWS":"*"},"Resource":[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},"/*"]]}]},{"Action":["s3:GetObject","s3:PutObject","s3:DeleteObject"],"Effect":"Allow","Principal":{"Service":"transcribe.amazonaws.com"},"Resource":{"Fn::Join":["",[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},"/*"]]}}],"Version":"2012-10-17"}},"Metadata":{"aws:cdk:path":"MinuteStack/Storage/DataBucket/Policy/Resource"}},"ComputeCluster4F8E5F81":{"Type":"AWS::ECS::Cluster","Properties":{"ClusterName":"NdxMinute","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/Cluster/Resource"}},"ComputeNamespace07358158":{"Type":"AWS::ServiceDiscovery::PrivateDnsNamespace","Properties":{"Name":"minute-internal","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"Vpc":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/Namespace/Resource"}},"ComputeLogGroup1A40385B":{"Type":"AWS::Logs::LogGroup","Properties":{"LogGroupName":"/ndx-minute","RetentionInDays":7,"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"UpdateReplacePolicy":"Delete","DeletionPolicy":"Delete","Metadata":{"aws:cdk:path":"MinuteStack/Compute/LogGroup/Resource"}},"ComputeExecutionRoleCE43D454":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"}}],"Version":"2012-10-17"},"ManagedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"]]}],"RoleName":"InnovationSandbox-ndx-minute-exec","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/ExecutionRole/Resource"}},"ComputeExecutionRoleDefaultPolicy29213E53":{"Type":"AWS::IAM::Policy","Properties":{"PolicyDocument":{"Statement":[{"Action":["secretsmanager:GetSecretValue","secretsmanager:DescribeSecret"],"Effect":"Allow","Resource":{"Ref":"DatabaseDbSecret1098DC6E"}},{"Action":["ecr:BatchCheckLayerAvailability","ecr:GetDownloadUrlForLayer","ecr:BatchGetImage"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ecr:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":repository/minute-frontend"]]}},{"Action":"ecr:GetAuthorizationToken","Effect":"Allow","Resource":"*"},{"Action":["ecr:BatchCheckLayerAvailability","ecr:GetDownloadUrlForLayer","ecr:BatchGetImage"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ecr:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":repository/minute-backend"]]}},{"Action":["ecr:BatchCheckLayerAvailability","ecr:GetDownloadUrlForLayer","ecr:BatchGetImage"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":ecr:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":repository/minute-worker"]]}},{"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::GetAtt":["ComputeLogGroup1A40385B","Arn"]}}],"Version":"2012-10-17"},"PolicyName":"ComputeExecutionRoleDefaultPolicy29213E53","Roles":[{"Ref":"ComputeExecutionRoleCE43D454"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/ExecutionRole/DefaultPolicy/Resource"}},"ComputeBackendTaskRole2A6DA82D":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"}}],"Version":"2012-10-17"},"RoleName":"InnovationSandbox-ndx-minute-backend-task","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/BackendTaskRole/Resource"}},"ComputeBackendTaskRoleDefaultPolicyBF2D54F3":{"Type":"AWS::IAM::Policy","Properties":{"PolicyDocument":{"Statement":[{"Action":["s3:GetObject*","s3:GetBucket*","s3:List*","s3:DeleteObject*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging","s3:Abort*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},"/*"]]}]},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesTranscriptionQueueA02E7327","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesTranscriptionDLQ6D36226D","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesLlmQueueE3526008","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesLlmDLQ37A16FA3","Arn"]}},{"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::GetAtt":["ComputeLogGroup1A40385B","Arn"]}},{"Action":["ssmmessages:CreateControlChannel","ssmmessages:CreateDataChannel","ssmmessages:OpenControlChannel","ssmmessages:OpenDataChannel"],"Effect":"Allow","Resource":"*"},{"Action":"logs:DescribeLogGroups","Effect":"Allow","Resource":"*"},{"Action":["logs:CreateLogStream","logs:DescribeLogStreams","logs:PutLogEvents"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"PolicyName":"ComputeBackendTaskRoleDefaultPolicyBF2D54F3","Roles":[{"Ref":"ComputeBackendTaskRole2A6DA82D"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/BackendTaskRole/DefaultPolicy/Resource"}},"ComputeWorkerTaskRole3135DAE0":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"}}],"Version":"2012-10-17"},"RoleName":"InnovationSandbox-ndx-minute-worker-task","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/WorkerTaskRole/Resource"}},"ComputeWorkerTaskRoleDefaultPolicyA8BEE6C7":{"Type":"AWS::IAM::Policy","Properties":{"PolicyDocument":{"Statement":[{"Action":["s3:GetObject*","s3:GetBucket*","s3:List*","s3:DeleteObject*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging","s3:Abort*"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["StorageDataBucketB1B922FA","Arn"]},"/*"]]}]},{"Action":["sqs:ReceiveMessage","sqs:ChangeMessageVisibility","sqs:GetQueueUrl","sqs:DeleteMessage","sqs:GetQueueAttributes"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesTranscriptionQueueA02E7327","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesTranscriptionQueueA02E7327","Arn"]}},{"Action":["sqs:ReceiveMessage","sqs:ChangeMessageVisibility","sqs:GetQueueUrl","sqs:DeleteMessage","sqs:GetQueueAttributes"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesLlmQueueE3526008","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesLlmQueueE3526008","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesTranscriptionDLQ6D36226D","Arn"]}},{"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Effect":"Allow","Resource":{"Fn::GetAtt":["QueuesLlmDLQ37A16FA3","Arn"]}},{"Action":["bedrock:InvokeModel","bedrock:InvokeModelWithResponseStream","bedrock:Converse","bedrock:ConverseStream"],"Effect":"Allow","Resource":["arn:aws:bedrock:*::foundation-model/anthropic.*","arn:aws:bedrock:*::foundation-model/amazon.nova-*"]},{"Action":["transcribe:StartTranscriptionJob","transcribe:GetTranscriptionJob"],"Effect":"Allow","Resource":"*"},{"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::GetAtt":["ComputeLogGroup1A40385B","Arn"]}},{"Action":["ssmmessages:CreateControlChannel","ssmmessages:CreateDataChannel","ssmmessages:OpenControlChannel","ssmmessages:OpenDataChannel"],"Effect":"Allow","Resource":"*"},{"Action":"logs:DescribeLogGroups","Effect":"Allow","Resource":"*"},{"Action":["logs:CreateLogStream","logs:DescribeLogStreams","logs:PutLogEvents"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"PolicyName":"ComputeWorkerTaskRoleDefaultPolicyA8BEE6C7","Roles":[{"Ref":"ComputeWorkerTaskRole3135DAE0"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/WorkerTaskRole/DefaultPolicy/Resource"}},"ComputeFrontendTaskRole8DA2A7B1":{"Type":"AWS::IAM::Role","Properties":{"AssumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"}}],"Version":"2012-10-17"},"RoleName":"InnovationSandbox-ndx-minute-frontend-task","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/FrontendTaskRole/Resource"}},"ComputeFrontendTaskRoleDefaultPolicy66A31476":{"Type":"AWS::IAM::Policy","Properties":{"PolicyDocument":{"Statement":[{"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Effect":"Allow","Resource":{"Fn::GetAtt":["ComputeLogGroup1A40385B","Arn"]}},{"Action":["ssmmessages:CreateControlChannel","ssmmessages:CreateDataChannel","ssmmessages:OpenControlChannel","ssmmessages:OpenDataChannel"],"Effect":"Allow","Resource":"*"},{"Action":"logs:DescribeLogGroups","Effect":"Allow","Resource":"*"},{"Action":["logs:CreateLogStream","logs:DescribeLogStreams","logs:PutLogEvents"],"Effect":"Allow","Resource":"*"}],"Version":"2012-10-17"},"PolicyName":"ComputeFrontendTaskRoleDefaultPolicy66A31476","Roles":[{"Ref":"ComputeFrontendTaskRole8DA2A7B1"}]},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/FrontendTaskRole/DefaultPolicy/Resource"}},"ComputeBackendTaskDef456FE261":{"Type":"AWS::ECS::TaskDefinition","Properties":{"ContainerDefinitions":[{"Environment":[{"Name":"ENVIRONMENT","Value":"local"},{"Name":"POSTGRES_HOST","Value":{"Fn::GetAtt":["DatabaseAuroraCF3B5693","Endpoint.Address"]}},{"Name":"POSTGRES_PORT","Value":{"Fn::GetAtt":["DatabaseAuroraCF3B5693","Endpoint.Port"]}},{"Name":"POSTGRES_DB","Value":"minute_db"},{"Name":"POSTGRES_USER","Value":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:username::}}"]]}},{"Name":"POSTGRES_PASSWORD","Value":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:password::}}"]]}},{"Name":"DATA_S3_BUCKET","Value":{"Ref":"StorageDataBucketB1B922FA"}},{"Name":"TRANSCRIPTION_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesTranscriptionQueueA02E7327","QueueName"]}},{"Name":"TRANSCRIPTION_DEADLETTER_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesTranscriptionDLQ6D36226D","QueueName"]}},{"Name":"LLM_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesLlmQueueE3526008","QueueName"]}},{"Name":"LLM_DEADLETTER_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesLlmDLQ37A16FA3","QueueName"]}},{"Name":"QUEUE_SERVICE_NAME","Value":"sqs"},{"Name":"STORAGE_SERVICE_NAME","Value":"s3"},{"Name":"AWS_DEFAULT_REGION","Value":{"Ref":"AWS::Region"}},{"Name":"AWS_REGION","Value":{"Ref":"AWS::Region"}},{"Name":"AWS_ACCOUNT_ID","Value":{"Ref":"AWS::AccountId"}},{"Name":"USE_LOCALSTACK","Value":"false"},{"Name":"PORT","Value":"8080"},{"Name":"REPO","Value":"minute"}],"Essential":true,"HealthCheck":{"Command":["CMD-SHELL","curl -f http://localhost:8080/healthcheck || exit 1"],"Interval":30,"Retries":5,"StartPeriod":300,"Timeout":10},"Image":{"Fn::Join":["",[{"Ref":"AWS::AccountId"},".dkr.ecr.",{"Ref":"AWS::Region"},".",{"Ref":"AWS::URLSuffix"},"/minute-backend:latest"]]},"LogConfiguration":{"LogDriver":"awslogs","Options":{"awslogs-group":{"Ref":"ComputeLogGroup1A40385B"},"awslogs-stream-prefix":"backend","awslogs-region":{"Ref":"AWS::Region"}}},"Name":"backend","PortMappings":[{"ContainerPort":8080,"Protocol":"tcp"}]}],"Cpu":"1024","ExecutionRoleArn":{"Fn::GetAtt":["ComputeExecutionRoleCE43D454","Arn"]},"Family":"MinuteStackComputeBackendTaskDef545B1441","Memory":"2048","NetworkMode":"awsvpc","RequiresCompatibilities":["FARGATE"],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TaskRoleArn":{"Fn::GetAtt":["ComputeBackendTaskRole2A6DA82D","Arn"]}},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/BackendTaskDef/Resource"}},"ComputeBackendService32A5EB00":{"Type":"AWS::ECS::Service","Properties":{"Cluster":{"Ref":"ComputeCluster4F8E5F81"},"DeploymentConfiguration":{"Alarms":{"AlarmNames":[],"Enable":false,"Rollback":false},"MaximumPercent":200,"MinimumHealthyPercent":50},"DesiredCount":1,"EnableECSManagedTags":false,"EnableExecuteCommand":true,"HealthCheckGracePeriodSeconds":900,"LaunchType":"FARGATE","NetworkConfiguration":{"AwsvpcConfiguration":{"AssignPublicIp":"ENABLED","SecurityGroups":[{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]}],"Subnets":[{"Ref":"NetworkingVpcPublicSubnet1Subnet918289EE"},{"Ref":"NetworkingVpcPublicSubnet2Subnet9D9E5AFB"}]}},"ServiceName":"NdxMinute-Backend","ServiceRegistries":[{"RegistryArn":{"Fn::GetAtt":["ComputeBackendServiceCloudmapService4A0DACEB","Arn"]}}],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TaskDefinition":{"Ref":"ComputeBackendTaskDef456FE261"}},"DependsOn":["ComputeBackendTaskRoleDefaultPolicyBF2D54F3","ComputeBackendTaskRole2A6DA82D"],"Metadata":{"aws:cdk:path":"MinuteStack/Compute/BackendService/Service"}},"ComputeBackendServiceCloudmapService4A0DACEB":{"Type":"AWS::ServiceDiscovery::Service","Properties":{"DnsConfig":{"DnsRecords":[{"TTL":60,"Type":"A"}],"NamespaceId":{"Fn::GetAtt":["ComputeNamespace07358158","Id"]},"RoutingPolicy":"MULTIVALUE"},"HealthCheckCustomConfig":{"FailureThreshold":1},"Name":"minute-backend","NamespaceId":{"Fn::GetAtt":["ComputeNamespace07358158","Id"]},"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"DependsOn":["ComputeBackendTaskRoleDefaultPolicyBF2D54F3","ComputeBackendTaskRole2A6DA82D"],"Metadata":{"aws:cdk:path":"MinuteStack/Compute/BackendService/CloudmapService/Resource"}},"ComputeWorkerTaskDef5D93855B":{"Type":"AWS::ECS::TaskDefinition","Properties":{"ContainerDefinitions":[{"Environment":[{"Name":"ENVIRONMENT","Value":"local"},{"Name":"POSTGRES_HOST","Value":{"Fn::GetAtt":["DatabaseAuroraCF3B5693","Endpoint.Address"]}},{"Name":"POSTGRES_PORT","Value":{"Fn::GetAtt":["DatabaseAuroraCF3B5693","Endpoint.Port"]}},{"Name":"POSTGRES_DB","Value":"minute_db"},{"Name":"POSTGRES_USER","Value":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:username::}}"]]}},{"Name":"POSTGRES_PASSWORD","Value":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:password::}}"]]}},{"Name":"DATA_S3_BUCKET","Value":{"Ref":"StorageDataBucketB1B922FA"}},{"Name":"TRANSCRIPTION_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesTranscriptionQueueA02E7327","QueueName"]}},{"Name":"TRANSCRIPTION_DEADLETTER_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesTranscriptionDLQ6D36226D","QueueName"]}},{"Name":"LLM_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesLlmQueueE3526008","QueueName"]}},{"Name":"LLM_DEADLETTER_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesLlmDLQ37A16FA3","QueueName"]}},{"Name":"QUEUE_SERVICE_NAME","Value":"sqs"},{"Name":"STORAGE_SERVICE_NAME","Value":"s3"},{"Name":"AWS_DEFAULT_REGION","Value":{"Ref":"AWS::Region"}},{"Name":"AWS_REGION","Value":{"Ref":"AWS::Region"}},{"Name":"AWS_ACCOUNT_ID","Value":{"Ref":"AWS::AccountId"}},{"Name":"USE_LOCALSTACK","Value":"false"},{"Name":"REPO","Value":"minute"},{"Name":"FAST_LLM_PROVIDER","Value":"bedrock"},{"Name":"BEST_LLM_PROVIDER","Value":"bedrock"},{"Name":"FAST_LLM_MODEL_NAME","Value":"amazon.nova-lite-v1:0"},{"Name":"BEST_LLM_MODEL_NAME","Value":"anthropic.claude-sonnet-4-20250514-v1:0"},{"Name":"TRANSCRIPTION_SERVICES","Value":"[\"aws_transcribe\"]"},{"Name":"MAX_TRANSCRIPTION_PROCESSES","Value":"2"},{"Name":"MAX_LLM_PROCESSES","Value":"2"}],"Essential":true,"HealthCheck":{"Command":["CMD-SHELL","pgrep -f \"worker\" || exit 1"],"Interval":30,"Retries":5,"StartPeriod":300,"Timeout":10},"Image":{"Fn::Join":["",[{"Ref":"AWS::AccountId"},".dkr.ecr.",{"Ref":"AWS::Region"},".",{"Ref":"AWS::URLSuffix"},"/minute-worker:latest"]]},"LogConfiguration":{"LogDriver":"awslogs","Options":{"awslogs-group":{"Ref":"ComputeLogGroup1A40385B"},"awslogs-stream-prefix":"worker","awslogs-region":{"Ref":"AWS::Region"}}},"Name":"worker"}],"Cpu":"2048","ExecutionRoleArn":{"Fn::GetAtt":["ComputeExecutionRoleCE43D454","Arn"]},"Family":"MinuteStackComputeWorkerTaskDefB039BB33","Memory":"8192","NetworkMode":"awsvpc","RequiresCompatibilities":["FARGATE"],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TaskRoleArn":{"Fn::GetAtt":["ComputeWorkerTaskRole3135DAE0","Arn"]}},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/WorkerTaskDef/Resource"}},"ComputeWorkerService489AD76D":{"Type":"AWS::ECS::Service","Properties":{"Cluster":{"Ref":"ComputeCluster4F8E5F81"},"DeploymentConfiguration":{"Alarms":{"AlarmNames":[],"Enable":false,"Rollback":false},"MaximumPercent":200,"MinimumHealthyPercent":50},"DesiredCount":1,"EnableECSManagedTags":false,"EnableExecuteCommand":true,"LaunchType":"FARGATE","NetworkConfiguration":{"AwsvpcConfiguration":{"AssignPublicIp":"ENABLED","SecurityGroups":[{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]}],"Subnets":[{"Ref":"NetworkingVpcPublicSubnet1Subnet918289EE"},{"Ref":"NetworkingVpcPublicSubnet2Subnet9D9E5AFB"}]}},"ServiceName":"NdxMinute-Worker","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TaskDefinition":{"Ref":"ComputeWorkerTaskDef5D93855B"}},"DependsOn":["ComputeWorkerTaskRoleDefaultPolicyA8BEE6C7","ComputeWorkerTaskRole3135DAE0"],"Metadata":{"aws:cdk:path":"MinuteStack/Compute/WorkerService/Service"}},"ComputeFrontendTaskDef9F702E49":{"Type":"AWS::ECS::TaskDefinition","Properties":{"ContainerDefinitions":[{"Environment":[{"Name":"ENVIRONMENT","Value":"local"},{"Name":"POSTGRES_HOST","Value":{"Fn::GetAtt":["DatabaseAuroraCF3B5693","Endpoint.Address"]}},{"Name":"POSTGRES_PORT","Value":{"Fn::GetAtt":["DatabaseAuroraCF3B5693","Endpoint.Port"]}},{"Name":"POSTGRES_DB","Value":"minute_db"},{"Name":"POSTGRES_USER","Value":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:username::}}"]]}},{"Name":"POSTGRES_PASSWORD","Value":{"Fn::Join":["",["{{resolve:secretsmanager:",{"Ref":"DatabaseDbSecret1098DC6E"},":SecretString:password::}}"]]}},{"Name":"DATA_S3_BUCKET","Value":{"Ref":"StorageDataBucketB1B922FA"}},{"Name":"TRANSCRIPTION_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesTranscriptionQueueA02E7327","QueueName"]}},{"Name":"TRANSCRIPTION_DEADLETTER_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesTranscriptionDLQ6D36226D","QueueName"]}},{"Name":"LLM_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesLlmQueueE3526008","QueueName"]}},{"Name":"LLM_DEADLETTER_QUEUE_NAME","Value":{"Fn::GetAtt":["QueuesLlmDLQ37A16FA3","QueueName"]}},{"Name":"QUEUE_SERVICE_NAME","Value":"sqs"},{"Name":"STORAGE_SERVICE_NAME","Value":"s3"},{"Name":"AWS_DEFAULT_REGION","Value":{"Ref":"AWS::Region"}},{"Name":"AWS_REGION","Value":{"Ref":"AWS::Region"}},{"Name":"AWS_ACCOUNT_ID","Value":{"Ref":"AWS::AccountId"}},{"Name":"USE_LOCALSTACK","Value":"false"},{"Name":"PORT","Value":"8081"},{"Name":"NODE_ENV","Value":"production"},{"Name":"BACKEND_HOST","Value":"http://minute-backend.minute-internal:8080"}],"Essential":true,"HealthCheck":{"Command":["CMD-SHELL","wget -q --spider http://localhost:8081/health || exit 1"],"Interval":30,"Retries":5,"StartPeriod":300,"Timeout":10},"Image":{"Fn::Join":["",[{"Ref":"AWS::AccountId"},".dkr.ecr.",{"Ref":"AWS::Region"},".",{"Ref":"AWS::URLSuffix"},"/minute-frontend:latest"]]},"LogConfiguration":{"LogDriver":"awslogs","Options":{"awslogs-group":{"Ref":"ComputeLogGroup1A40385B"},"awslogs-stream-prefix":"frontend","awslogs-region":{"Ref":"AWS::Region"}}},"Name":"frontend","PortMappings":[{"ContainerPort":8081,"Protocol":"tcp"}]}],"Cpu":"512","ExecutionRoleArn":{"Fn::GetAtt":["ComputeExecutionRoleCE43D454","Arn"]},"Family":"MinuteStackComputeFrontendTaskDefE439C25A","Memory":"1024","NetworkMode":"awsvpc","RequiresCompatibilities":["FARGATE"],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TaskRoleArn":{"Fn::GetAtt":["ComputeFrontendTaskRole8DA2A7B1","Arn"]}},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/FrontendTaskDef/Resource"}},"ComputeFrontendService389FAEFF":{"Type":"AWS::ECS::Service","Properties":{"Cluster":{"Ref":"ComputeCluster4F8E5F81"},"DeploymentConfiguration":{"Alarms":{"AlarmNames":[],"Enable":false,"Rollback":false},"MaximumPercent":200,"MinimumHealthyPercent":50},"DesiredCount":1,"EnableECSManagedTags":false,"EnableExecuteCommand":true,"HealthCheckGracePeriodSeconds":300,"LaunchType":"FARGATE","LoadBalancers":[{"ContainerName":"frontend","ContainerPort":8081,"TargetGroupArn":{"Ref":"ComputeALBHTTPFrontendTargetGroup18ED4AD1"}}],"NetworkConfiguration":{"AwsvpcConfiguration":{"AssignPublicIp":"ENABLED","SecurityGroups":[{"Fn::GetAtt":["NetworkingFargateSecurityGroupFC850E44","GroupId"]}],"Subnets":[{"Ref":"NetworkingVpcPublicSubnet1Subnet918289EE"},{"Ref":"NetworkingVpcPublicSubnet2Subnet9D9E5AFB"}]}},"ServiceName":"NdxMinute-Frontend","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TaskDefinition":{"Ref":"ComputeFrontendTaskDef9F702E49"}},"DependsOn":["ComputeALBHTTPFrontendTargetRule851D3EBE","ComputeFrontendTaskRoleDefaultPolicy66A31476","ComputeFrontendTaskRole8DA2A7B1"],"Metadata":{"aws:cdk:path":"MinuteStack/Compute/FrontendService/Service"}},"ComputeALB00A47009":{"Type":"AWS::ElasticLoadBalancingV2::LoadBalancer","Properties":{"LoadBalancerAttributes":[{"Key":"deletion_protection.enabled","Value":"false"}],"Name":"NdxMinute-ALB","Scheme":"internet-facing","SecurityGroups":[{"Fn::GetAtt":["NetworkingAlbSecurityGroup5ADC578E","GroupId"]}],"Subnets":[{"Ref":"NetworkingVpcPublicSubnet1Subnet918289EE"},{"Ref":"NetworkingVpcPublicSubnet2Subnet9D9E5AFB"}],"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"Type":"application"},"DependsOn":["NetworkingVpcPublicSubnet1DefaultRoute80C01FA6","NetworkingVpcPublicSubnet1RouteTableAssociationD13830EA","NetworkingVpcPublicSubnet2DefaultRouteDF98F60F","NetworkingVpcPublicSubnet2RouteTableAssociation2D4CEA06"],"Metadata":{"aws:cdk:path":"MinuteStack/Compute/ALB/Resource"}},"ComputeALBHTTP30E88DD3":{"Type":"AWS::ElasticLoadBalancingV2::Listener","Properties":{"DefaultActions":[{"FixedResponseConfig":{"ContentType":"text/plain","MessageBody":"Service starting...","StatusCode":"503"},"Type":"fixed-response"}],"LoadBalancerArn":{"Ref":"ComputeALB00A47009"},"Port":80,"Protocol":"HTTP"},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/ALB/HTTP/Resource"}},"ComputeALBHTTPFrontendTargetGroup18ED4AD1":{"Type":"AWS::ElasticLoadBalancingV2::TargetGroup","Properties":{"HealthCheckIntervalSeconds":30,"HealthCheckPath":"/","HealthCheckTimeoutSeconds":10,"HealthyThresholdCount":2,"Matcher":{"HttpCode":"200-399"},"Port":8081,"Protocol":"HTTP","Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}],"TargetGroupAttributes":[{"Key":"deregistration_delay.timeout_seconds","Value":"30"},{"Key":"stickiness.enabled","Value":"false"}],"TargetType":"ip","UnhealthyThresholdCount":5,"VpcId":{"Ref":"NetworkingVpc6B5E6F44"}},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/ALB/HTTP/FrontendTargetGroup/Resource"}},"ComputeALBHTTPFrontendTargetRule851D3EBE":{"Type":"AWS::ElasticLoadBalancingV2::ListenerRule","Properties":{"Actions":[{"TargetGroupArn":{"Ref":"ComputeALBHTTPFrontendTargetGroup18ED4AD1"},"Type":"forward"}],"Conditions":[{"Field":"path-pattern","PathPatternConfig":{"Values":["/*"]}}],"ListenerArn":{"Ref":"ComputeALBHTTP30E88DD3"},"Priority":1},"Metadata":{"aws:cdk:path":"MinuteStack/Compute/ALB/HTTP/FrontendTargetRule/Resource"}},"CDNDistributionD4FAE585":{"Type":"AWS::CloudFront::Distribution","Properties":{"DistributionConfig":{"Comment":"Minute AI - HTTPS Termination","DefaultCacheBehavior":{"AllowedMethods":["GET","HEAD","OPTIONS","PUT","PATCH","POST","DELETE"],"CachePolicyId":"4135ea2d-6df8-44a3-9df3-4b5a84be39ad","Compress":true,"OriginRequestPolicyId":"216adef6-5c7f-47e4-b989-5492eafa07d3","TargetOriginId":"MinuteStackCDNDistributionOrigin1DF8764DE","ViewerProtocolPolicy":"redirect-to-https"},"Enabled":true,"HttpVersion":"http2","IPV6Enabled":true,"Origins":[{"CustomOriginConfig":{"OriginProtocolPolicy":"http-only","OriginSSLProtocols":["TLSv1.2"]},"DomainName":{"Fn::GetAtt":["ComputeALB00A47009","DNSName"]},"Id":"MinuteStackCDNDistributionOrigin1DF8764DE"}]},"Tags":[{"Key":"awsApplication","Value":{"Fn::GetAtt":["AppRegistryApplication","Arn"]}},{"Key":"Project","Value":"ndx-try-aws-scenarios"},{"Key":"Scenario","Value":"minute"}]},"Metadata":{"aws:cdk:path":"MinuteStack/CDN/Distribution/Resource"}}},"Outputs":{"MinuteUrl":{"Description":"URL to access Minute AI (HTTPS)","Value":{"Fn::Join":["",["https://",{"Fn::GetAtt":["CDNDistributionD4FAE585","DomainName"]}]]},"Export":{"Name":"MinuteStack-MinuteUrl"}},"CloudWatchLogsUrl":{"Description":"CloudWatch Logs URL","Value":{"Fn::Join":["",["https://",{"Ref":"AWS::Region"},".console.aws.amazon.com/cloudwatch/home?region=",{"Ref":"AWS::Region"},"#logsV2:log-groups/log-group/%2Fndx-minute"]]}},"DataBucketName":{"Description":"S3 bucket for audio data","Value":{"Ref":"StorageDataBucketB1B922FA"}}},"Conditions":{"CDKMetadataAvailable":{"Fn::Or":[{"Fn::Or":[{"Fn::Equals":[{"Ref":"AWS::Region"},"af-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-east-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-northeast-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-northeast-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-northeast-3"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-south-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-southeast-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-southeast-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-southeast-3"]}]},{"Fn::Or":[{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-southeast-4"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ca-central-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ca-west-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"cn-north-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"cn-northwest-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-central-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-central-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-north-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-south-2"]}]},{"Fn::Or":[{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-west-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-west-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-west-3"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"il-central-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"me-central-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"me-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"sa-east-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-east-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-east-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-west-1"]}]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-west-2"]}]}}}