-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: GCForms release v3.21.0 #823
Conversation
Production: ecr✅ Terraform Init: Plan: 2 to add, 0 to change, 0 to destroy Show summary
Show planResource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_ecr_lifecycle_policy.idp[0] will be created
+ resource "aws_ecr_lifecycle_policy" "idp" {
+ id = (known after apply)
+ policy = jsonencode(
{
+ rules = [
+ {
+ action = {
+ type = "expire"
}
+ description = "Keep last 10 images"
+ rulePriority = 1
+ selection = {
+ countNumber = 10
+ countType = "imageCountMoreThan"
+ tagStatus = "any"
}
},
]
}
)
+ registry_id = (known after apply)
+ repository = "idp/zitadel"
}
# aws_ecr_repository.idp[0] will be created
+ resource "aws_ecr_repository" "idp" {
+ arn = (known after apply)
+ id = (known after apply)
+ image_tag_mutability = "MUTABLE"
+ name = "idp/zitadel"
+ registry_id = (known after apply)
+ repository_url = (known after apply)
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ image_scanning_configuration {
+ scan_on_push = true
}
}
Plan: 2 to add, 0 to change, 0 to destroy.
Changes to Outputs:
~ ecr_repository_url_idp = null -> (known after apply)
─────────────────────────────────────────────────────────────────────────────
Saved the plan to: plan.tfplan
To perform exactly these actions, run the following command to apply:
terraform apply "plan.tfplan"
Show Conftest resultsWARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.idp[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"audit-logs-archiver-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"audit-logs-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"cognito-email-sender-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"cognito-pre-sign-up-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"form-archiver-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"load-testing-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"nagware-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"notify-slack-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"reliability-dlq-consumer-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"reliability-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"response-archiver-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"submission-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.lambda[\"vault-integrity-lambda\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecr_repository.viewer_repository"]
34 tests, 19 passed, 15 warnings, 0 failures, 0 exceptions
|
Production: network✅ Terraform Init: Plan: 15 to add, 0 to change, 0 to destroy Show summary
Show planResource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_security_group.idp_db[0] will be created
+ resource "aws_security_group" "idp_db" {
+ arn = (known after apply)
+ description = "Zitadel IdP database"
+ egress = (known after apply)
+ id = (known after apply)
+ ingress = (known after apply)
+ name = "idp_db"
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ vpc_id = "vpc-0e852a6f3554a8bca"
}
# aws_security_group.idp_ecs[0] will be created
+ resource "aws_security_group" "idp_ecs" {
+ arn = (known after apply)
+ description = "Zitadel IdP ECS Tasks"
+ egress = (known after apply)
+ id = (known after apply)
+ ingress = (known after apply)
+ name = "idp_ecs"
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ vpc_id = "vpc-0e852a6f3554a8bca"
}
# aws_security_group.idp_lb[0] will be created
+ resource "aws_security_group" "idp_lb" {
+ arn = (known after apply)
+ description = "Zitadel IdP load balancer"
+ egress = (known after apply)
+ id = (known after apply)
+ ingress = (known after apply)
+ name = "idp_lb"
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ vpc_id = "vpc-0e852a6f3554a8bca"
}
# aws_security_group_rule.idp_db_egress_privatelink[0] will be created
+ resource "aws_security_group_rule" "idp_db_egress_privatelink" {
+ description = "Egress from Zitadel IdP database to PrivateLink endpoints"
+ from_port = 443
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = "sg-0799d12ff9d17bded"
+ to_port = 443
+ type = "egress"
}
# aws_security_group_rule.idp_db_ingress_ecs[0] will be created
+ resource "aws_security_group_rule" "idp_db_ingress_ecs" {
+ description = "Ingress to database from Zitadel IdP ECS task"
+ from_port = 5432
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 5432
+ type = "ingress"
}
# aws_security_group_rule.idp_ecs_egress_db[0] will be created
+ resource "aws_security_group_rule" "idp_ecs_egress_db" {
+ description = "Egress from Zitadel IdP ECS task to database"
+ from_port = 5432
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 5432
+ type = "egress"
}
# aws_security_group_rule.idp_ecs_egress_internet[0] will be created
+ resource "aws_security_group_rule" "idp_ecs_egress_internet" {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "Egress from Zitadel IdP ECS task to internet (HTTPS)"
+ from_port = 443
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 443
+ type = "egress"
}
# aws_security_group_rule.idp_ecs_egress_privatelink[0] will be created
+ resource "aws_security_group_rule" "idp_ecs_egress_privatelink" {
+ description = "Egress from Zitadel IdP ECS task to PrivateLink endpoints"
+ from_port = 443
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = "sg-0799d12ff9d17bded"
+ to_port = 443
+ type = "egress"
}
# aws_security_group_rule.idp_ecs_egress_smtp_tls[0] will be created
+ resource "aws_security_group_rule" "idp_ecs_egress_smtp_tls" {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "Egress from Zitadel IdP ECS task to SMTP"
+ from_port = 465
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 465
+ type = "egress"
}
# aws_security_group_rule.idp_ecs_ingress_lb[0] will be created
+ resource "aws_security_group_rule" "idp_ecs_ingress_lb" {
+ description = "Ingress from load balancer to Zitadel IdP ECS task"
+ from_port = 8080
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 8080
+ type = "ingress"
}
# aws_security_group_rule.idp_lb_egress_ecs[0] will be created
+ resource "aws_security_group_rule" "idp_lb_egress_ecs" {
+ description = "Egress from load balancer to Zitadel IdP ECS task"
+ from_port = 8080
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 8080
+ type = "egress"
}
# aws_security_group_rule.idp_lb_ingress_internet_http[0] will be created
+ resource "aws_security_group_rule" "idp_lb_ingress_internet_http" {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "Ingress from internet to the Zitadel IdP load balancer (HTTP)"
+ from_port = 80
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 80
+ type = "ingress"
}
# aws_security_group_rule.idp_lb_ingress_internet_https[0] will be created
+ resource "aws_security_group_rule" "idp_lb_ingress_internet_https" {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = "Ingress from internet to the Zitadel IdP load balancer (HTTPS)"
+ from_port = 443
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = (known after apply)
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 443
+ type = "ingress"
}
# aws_security_group_rule.privatelink_idp_db_ingress[0] will be created
+ resource "aws_security_group_rule" "privatelink_idp_db_ingress" {
+ description = "Security group rule for Zitadel IdP database ingress"
+ from_port = 443
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = "sg-0799d12ff9d17bded"
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 443
+ type = "ingress"
}
# aws_security_group_rule.privatelink_idp_ecs_ingress[0] will be created
+ resource "aws_security_group_rule" "privatelink_idp_ecs_ingress" {
+ description = "Security group rule for Zitadel IdP ECS task ingress"
+ from_port = 443
+ id = (known after apply)
+ protocol = "tcp"
+ security_group_id = "sg-0799d12ff9d17bded"
+ security_group_rule_id = (known after apply)
+ self = false
+ source_security_group_id = (known after apply)
+ to_port = 443
+ type = "ingress"
}
Plan: 15 to add, 0 to change, 0 to destroy.
Changes to Outputs:
~ idp_db_security_group_id = null -> (known after apply)
~ idp_ecs_security_group_id = null -> (known after apply)
~ idp_lb_security_group_id = null -> (known after apply)
─────────────────────────────────────────────────────────────────────────────
Saved the plan to: plan.tfplan
To perform exactly these actions, run the following command to apply:
terraform apply "plan.tfplan"
Show Conftest resultsWARN - plan.json - main - Missing Common Tags: ["aws_default_network_acl.forms"]
WARN - plan.json - main - Missing Common Tags: ["aws_default_security_group.default"]
WARN - plan.json - main - Missing Common Tags: ["aws_eip.forms_natgw[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_eip.forms_natgw[1]"]
WARN - plan.json - main - Missing Common Tags: ["aws_eip.forms_natgw[2]"]
WARN - plan.json - main - Missing Common Tags: ["aws_flow_log.vpc_flow_logs[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_internet_gateway.forms"]
WARN - plan.json - main - Missing Common Tags: ["aws_nat_gateway.forms[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_nat_gateway.forms[1]"]
WARN - plan.json - main - Missing Common Tags: ["aws_nat_gateway.forms[2]"]
WARN - plan.json - main - Missing Common Tags: ["aws_route_table.forms_private_subnet[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_route_table.forms_private_subnet[1]"]
WARN - plan.json - main - Missing Common Tags: ["aws_route_table.forms_private_subnet[2]"]
WARN - plan.json - main - Missing Common Tags: ["aws_route_table.forms_public_subnet"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.connector_db"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.forms"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.forms_database"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.forms_egress"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.forms_load_balancer"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.forms_redis"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.idp_db[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.idp_ecs[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.idp_lb[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_security_group.lambda_nagware"]
WARN - plan.json - main - Missing... |
Production: load_balancer✅ Terraform Init: Plan: 0 to add, 0 to change, 0 to destroy Show summary
Show planChanges to Outputs:
~ kinesis_firehose_waf_logs_arn = "" -> "arn:aws:firehose:ca-central-1:957818836222:deliverystream/aws-waf-logs-forms"
You can apply this plan to save these new output values to the Terraform
state, without changing any real infrastructure.
─────────────────────────────────────────────────────────────────────────────
Saved the plan to: plan.tfplan
To perform exactly these actions, run the following command to apply:
terraform apply "plan.tfplan"
Show Conftest resultsWARN - plan.json - main - Missing Common Tags: ["aws_acm_certificate.form_viewer"]
WARN - plan.json - main - Missing Common Tags: ["aws_acm_certificate.form_viewer_maintenance_mode"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudfront_distribution.maintenance_mode"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_role.firehose_waf_logs"]
WARN - plan.json - main - Missing Common Tags: ["aws_kinesis_firehose_delivery_stream.firehose_waf_logs"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb.form_viewer"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_listener.form_viewer_http"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_listener.form_viewer_https"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_target_group.form_viewer_1"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_target_group.form_viewer_2"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_bucket.maintenance_mode"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_css_files[\"style.css\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_html_files[\"index-fr.html\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_html_files[\"index.html\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_ico_files[\"favicon.ico\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_svg_files[\"site-unavailable.svg\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_shield_protection.alb"]
WARN - plan.json - main - Missing Common Tags: ["aws_shield_protection.route53_hosted_zone[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_wafv2_ip_set.ipv4_blocklist"]
WARN - plan.json - main - Missing Common Tags: ["aws_wafv2_regex_pattern_set.cognito_login_paths"]
WARN - plan.json - main - Missing Common Tags:... |
Production: idp✅ Terraform Init: Plan: 73 to add, 0 to change, 0 to destroy Show summary
✂ Warning: plan has been truncated! See the full plan in the logs. Show planResource actions are indicated with the following symbols:
+ create
<= read (data resources)
Terraform will perform the following actions:
# data.aws_iam_policy_document.ecs_task_ssm_parameters will be read during apply
# (config refers to values not yet known)
<= data "aws_iam_policy_document" "ecs_task_ssm_parameters" {
+ id = (known after apply)
+ json = (known after apply)
+ minified_json = (known after apply)
+ statement {
+ actions = [
+ "ssm:GetParameter",
+ "ssm:GetParameters",
]
+ effect = "Allow"
+ resources = [
+ (known after apply),
+ (known after apply),
+ (known after apply),
+ (known after apply),
+ (known after apply),
+ (known after apply),
+ (known after apply),
+ (known after apply),
+ (known after apply),
]
+ sid = "GetSSMParameters"
}
}
# data.aws_iam_policy_document.idp_send_email will be read during apply
# (config refers to values not yet known)
<= data "aws_iam_policy_document" "idp_send_email" {
+ id = (known after apply)
+ json = (known after apply)
+ minified_json = (known after apply)
+ statement {
+ actions = [
+ "ses:SendRawEmail",
]
+ effect = "Allow"
+ resources = [
+ (known after apply),
]
}
}
# aws_acm_certificate.idp will be created
+ resource "aws_acm_certificate" "idp" {
+ arn = (known after apply)
+ domain_name = "auth.forms-formulaires.alpha.canada.ca"
+ domain_validation_options = [
+ {
+ domain_name = "auth.forms-formulaires.alpha.canada.ca"
+ resource_record_name = (known after apply)
+ resource_record_type = (known after apply)
+ resource_record_value = (known after apply)
},
]
+ id = (known after apply)
+ key_algorithm = (known after apply)
+ not_after = (known after apply)
+ not_before = (known after apply)
+ pending_renewal = (known after apply)
+ renewal_eligibility = (known after apply)
+ renewal_summary = (known after apply)
+ status = (known after apply)
+ subject_alternative_names = [
+ "auth.forms-formulaires.alpha.canada.ca",
]
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ type = (known after apply)
+ validation_emails = (known after apply)
+ validation_method = "DNS"
+ options (known after apply)
}
# aws_acm_certificate_validation.idp will be created
+ resource "aws_acm_certificate_validation" "idp" {
+ certificate_arn = (known after apply)
+ id = (known after apply)
+ validation_record_fqdns = (known after apply)
}
# aws_alb_listener_rule.idp_protocol_version will be created
+ resource "aws_alb_listener_rule" "idp_protocol_version" {
+ arn = (known after apply)
+ id = (known after apply)
+ listener_arn = (known after apply)
+ priority = 100
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ action {
+ order = (known after apply)
+ target_group_arn = (known after apply)
+ type = "forward"
}
+ condition {
+ path_pattern {
+ values = [
+ "/*/v?/*",
+ "/.well-known/openid-configuration",
]
}
}
}
# aws_iam_access_key.idp_send_email will be created
+ resource "aws_iam_access_key" "idp_send_email" {
+ create_date = (known after apply)
+ encrypted_secret = (known after apply)
+ encrypted_ses_smtp_password_v4 = (known after apply)
+ id = (known after apply)
+ key_fingerprint = (known after apply)
+ secret = (sensitive value)
+ ses_smtp_password_v4 = (sensitive value)
+ status = "Active"
+ user = "idp_send_email"
}
# aws_iam_group.idp_send_email will be created
+ resource "aws_iam_group" "idp_send_email" {
+ arn = (known after apply)
+ id = (known after apply)
+ name = "idp_send_email"
+ path = "/"
+ unique_id = (known after apply)
}
# aws_iam_group_membership.idp_send_email will be created
+ resource "aws_iam_group_membership" "idp_send_email" {
+ group = "idp_send_email"
+ id = (known after apply)
+ name = "idp_send_email"
+ users = [
+ "idp_send_email",
]
}
# aws_iam_group_policy_attachment.idp_send_email will be created
+ resource "aws_iam_group_policy_attachment" "idp_send_email" {
+ group = "idp_send_email"
+ id = (known after apply)
+ policy_arn = (known after apply)
}
# aws_iam_policy.idp_send_email will be created
+ resource "aws_iam_policy" "idp_send_email" {
+ arn = (known after apply)
+ attachment_count = (known after apply)
+ id = (known after apply)
+ name = "idp_send_email"
+ name_prefix = (known after apply)
+ path = "/"
+ policy = (known after apply)
+ policy_id = (known after apply)
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
}
# aws_iam_user.idp_send_email will be created
+ resource "aws_iam_user" "idp_send_email" {
+ arn = (known after apply)
+ force_destroy = false
+ id = (known after apply)
+ name = "idp_send_email"
+ path = "/"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ unique_id = (known after apply)
}
# aws_lb.idp will be created
+ resource "aws_lb" "idp" {
+ arn = (known after apply)
+ arn_suffix = (known after apply)
+ client_keep_alive = 3600
+ desync_mitigation_mode = "defensive"
+ dns_name = (known after apply)
+ drop_invalid_header_fields = true
+ enable_deletion_protection = true
+ enable_http2 = true
+ enable_tls_version_and_cipher_suite_headers = false
+ enable_waf_fail_open = false
+ enable_xff_client_port = false
+ enforce_security_group_inbound_rules_on_private_link_traffic = (known after apply)
+ id = (known after apply)
+ idle_timeout = 60
+ internal = false
+ ip_address_type = (known after apply)
+ load_balancer_type = "application"
+ name = "idp"
+ name_prefix = (known after apply)
+ preserve_host_header = false
+ security_groups = [
+ null,
]
+ subnets = [
+ "subnet-0133239e9f30e9b85",
+ "subnet-01cc2a8428d4971fc",
+ "subnet-0251ed3bd219fb8e4",
]
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ vpc_id = (known after apply)
+ xff_header_processing_mode = "append"
+ zone_id = (known after apply)
+ access_logs {
+ bucket = "cbs-satellite-957818836222"
+ enabled = true
+ prefix = "lb_logs"
}
+ subnet_mapping (known after apply)
}
# aws_lb_listener.idp will be created
+ resource "aws_lb_listener" "idp" {
+ arn = (known after apply)
+ certificate_arn = (known after apply)
+ id = (known after apply)
+ load_balancer_arn = (known after apply)
+ port = 443
+ protocol = "HTTPS"
+ ssl_policy = "ELBSecurityPolicy-TLS13-1-2-2021-06"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ default_action {
+ order = (known after apply)
+ target_group_arn = (known after apply)
+ type = "forward"
}
+ mutual_authentication (known after apply)
}
# aws_lb_listener.idp_http_redirect will be created
+ resource "aws_lb_listener" "idp_http_redirect" {
+ arn = (known after apply)
+ id = (known after apply)
+ load_balancer_arn = (known after apply)
+ port = 80
+ protocol = "HTTP"
+ ssl_policy = (known after apply)
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ default_action {
+ order = (known after apply)
+ type = "redirect"
+ redirect {
+ host = "#{host}"
+ path = "/#{path}"
+ port = "443"
+ protocol = "HTTPS"
+ query = "#{query}"
+ status_code = "HTTP_301"
}
}
+ mutual_authentication (known after apply)
}
# aws_lb_target_group.idp["HTTP1"] will be created
+ resource "aws_lb_target_group" "idp" {
+ arn = (known after apply)
+ arn_suffix = (known after apply)
+ connection_termination = (known after apply)
+ deregistration_delay = "30"
+ id = (known after apply)
+ ip_address_type = (known after apply)
+ lambda_multi_value_headers_enabled = false
+ load_balancer_arns = (known after apply)
+ load_balancing_algorithm_type = (known after apply)
+ load_balancing_anomaly_mitigation = (known after apply)
+ load_balancing_cross_zone_enabled = (known after apply)
+ name = (known after apply)
+ name_prefix = (known after apply)
+ port = 8080
+ preserve_client_ip = (known after apply)
+ protocol = "HTTPS"
+ protocol_version = "HTTP1"
+ proxy_protocol_v2 = false
+ slow_start = 0
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ target_type = "ip"
+ vpc_id = "vpc-0e852a6f3554a8bca"
+ health_check {
+ enabled = true
+ healthy_threshold = 3
+ interval = 30
+ matcher = "200-399"
+ path = "/debug/healthz"
+ port = "traffic-port"
+ protocol = "HTTPS"
+ timeout = (known after apply)
+ unhealthy_threshold = 3
}
+ stickiness {
+ cookie_duration = 86400
+ enabled = true
+ type = "lb_cookie"
}
+ target_failover (known after apply)
+ target_group_health (known after apply)
+ target_health_state (known after apply)
}
# aws_lb_target_group.idp["HTTP2"] will be created
+ resource "aws_lb_target_group" "idp" {
+ arn = (known after apply)
+ arn_suffix = (known after apply)
+ connection_termination = (known after apply)
+ deregistration_delay = "30"
+ id = (known after apply)
+ ip_address_type = (known after apply)
+ lambda_multi_value_headers_enabled = false
+ load_balancer_arns = (known after apply)
+ load_balancing_algorithm_type = (known after apply)
+ load_balancing_anomaly_mitigation = (known after apply)
+ load_balancing_cross_zone_enabled = (known after apply)
+ name = (known after apply)
+ name_prefix = (known after apply)
+ port = 8080
+ preserve_client_ip = (known after apply)
+ protocol = "HTTPS"
+ protocol_version = "HTTP2"
+ proxy_protocol_v2 = false
+ slow_start = 0
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ target_type = "ip"
+ vpc_id = "vpc-0e852a6f3554a8bca"
+ health_check {
+ enabled = true
+ healthy_threshold = 3
+ interval = 30
+ matcher = "200-399"
+ path = "/debug/healthz"
+ port = "traffic-port"
+ protocol = "HTTPS"
+ timeout = (known after apply)
+ unhealthy_threshold = 3
}
+ stickiness {
+ cookie_duration = 86400
+ enabled = true
+ type = "lb_cookie"
}
+ target_failover (known after apply)
+ target_group_health (known after apply)
+ target_health_state (known after apply)
}
# aws_route53_record.idp will be created
+ resource "aws_route53_record" "idp" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "auth.forms-formulaires.alpha.canada.ca"
+ type = "A"
+ zone_id = "Z1031499PBK3926Y7HKK"
+ alias {
+ evaluate_target_health = true
+ name = (known after apply)
+ zone_id = (known after apply)
}
}
# aws_route53_record.idp_dkim_CNAME[0] will be created
+ resource "aws_route53_record" "idp_dkim_CNAME" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ records = (known after apply)
+ ttl = 300
+ type = "CNAME"
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_route53_record.idp_dkim_CNAME[1] will be created
+ resource "aws_route53_record" "idp_dkim_CNAME" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ records = (known after apply)
+ ttl = 300
+ type = "CNAME"
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_route53_record.idp_dkim_CNAME[2] will be created
+ resource "aws_route53_record" "idp_dkim_CNAME" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ records = (known after apply)
+ ttl = 300
+ type = "CNAME"
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_route53_record.idp_dmarc_TXT will be created
+ resource "aws_route53_record" "idp_dmarc_TXT" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "_dmarc.auth.forms-formulaires.alpha.canada.ca"
+ records = [
+ "v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:[email protected]",
]
+ ttl = 300
+ type = "TXT"
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_route53_record.idp_ses_verification_TXT will be created
+ resource "aws_route53_record" "idp_ses_verification_TXT" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ records = (known after apply)
+ ttl = 600
+ type = "TXT"
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_route53_record.idp_spf_TXT will be created
+ resource "aws_route53_record" "idp_spf_TXT" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "auth.forms-formulaires.alpha.canada.ca"
+ records = [
+ "v=spf1 include:amazonses.com -all",
]
+ ttl = 300
+ type = "TXT"
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_route53_record.idp_validation["auth.forms-formulaires.alpha.canada.ca"] will be created
+ resource "aws_route53_record" "idp_validation" {
+ allow_overwrite = true
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ records = (known after apply)
+ ttl = 60
+ type = (known after apply)
+ zone_id = "Z1031499PBK3926Y7HKK"
}
# aws_secretsmanager_secret.zidatel_database_proxy_auth will be created
+ resource "aws_secretsmanager_secret" "zidatel_database_proxy_auth" {
+ arn = (known after apply)
+ force_overwrite_replica_secret = false
+ id = (known after apply)
+ name = "zidatel_database_proxy_auth"
+ name_prefix = (known after apply)
+ policy = (known after apply)
+ recovery_window_in_days = 30
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ replica (known after apply)
}
# aws_secretsmanager_secret_version.zidatel_database_proxy_auth will be created
+ resource "aws_secretsmanager_secret_version" "zidatel_database_proxy_auth" {
+ arn = (known after apply)
+ id = (known after apply)
+ secret_id = (known after apply)
+ secret_string = (sensitive value)
+ version_id = (known after apply)
+ version_stages = (known after apply)
}
# aws_ses_domain_dkim.idp will be created
+ resource "aws_ses_domain_dkim" "idp" {
+ dkim_tokens = (known after apply)
+ domain = "auth.forms-formulaires.alpha.canada.ca"
+ id = (known after apply)
}
# aws_ses_domain_identity.idp will be created
+ resource "aws_ses_domain_identity" "idp" {
+ arn = (known after apply)
+ domain = "auth.forms-formulaires.alpha.canada.ca"
+ id = (known after apply)
+ verification_token = (known after apply)
}
# aws_ses_domain_identity_verification.idp will be created
+ resource "aws_ses_domain_identity_verification" "idp" {
+ arn = (known after apply)
+ domain = (known after apply)
+ id = (known after apply)
}
# aws_shield_protection.idp will be created
+ resource "aws_shield_protection" "idp" {
+ arn = (known after apply)
+ id = (known after apply)
+ name = "LoadBalancerIdP"
+ resource_arn = (known after apply)
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
}
# aws_ssm_parameter.idp_database_cluster_admin_password will be created
+ resource "aws_ssm_parameter" "idp_database_cluster_admin_password" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "idp_database_cluster_admin_password"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.idp_database_cluster_admin_username will be created
+ resource "aws_ssm_parameter" "idp_database_cluster_admin_username" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "idp_database_cluster_admin_username"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_admin_password will be created
+ resource "aws_ssm_parameter" "zitadel_admin_password" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_admin_password"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_admin_username will be created
+ resource "aws_ssm_parameter" "zitadel_admin_username" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_admin_username"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_database_host will be created
+ resource "aws_ssm_parameter" "zitadel_database_host" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_database_host"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_database_name will be created
+ resource "aws_ssm_parameter" "zitadel_database_name" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_database_name"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_database_user_password will be created
+ resource "aws_ssm_parameter" "zitadel_database_user_password" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_database_user_password"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_database_user_username will be created
+ resource "aws_ssm_parameter" "zitadel_database_user_username" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_database_user_username"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ tier = (known after apply)
+ type = "SecureString"
+ value = (sensitive value)
+ version = (known after apply)
}
# aws_ssm_parameter.zitadel_secret_key will be created
+ resource "aws_ssm_parameter" "zitadel_secret_key" {
+ arn = (known after apply)
+ data_type = (known after apply)
+ id = (known after apply)
+ insecure_value = (known after apply)
+ key_id = (known after apply)
+ name = "zitadel_secret_key"
+ tags = {
+ "CostCentre" = "forms-platform-production"
+... Show Conftest resultsWARN - plan.json - main - Missing Common Tags: ["aws_alb_listener_rule.idp_protocol_version"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.idp_send_email"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_user.idp_send_email"]
WARN - plan.json - main - Missing Common Tags: ["aws_shield_protection.idp"]
23 tests, 19 passed, 4 warnings, 0 failures, 0 exceptions
|
Production: alarms✅ Terraform Init: Plan: 11 to add, 0 to change, 0 to destroy Show summary
Show planResource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_cloudwatch_log_subscription_filter.idp_error_detection[0] will be created
+ resource "aws_cloudwatch_log_subscription_filter" "idp_error_detection" {
+ destination_arn = "arn:aws:lambda:ca-central-1:957818836222:function:notify-slack"
+ distribution = "ByLogStream"
+ filter_pattern = "level=error"
+ id = (known after apply)
+ log_group_name = "/aws/ecs/idp/zitadel"
+ name = "error_detection_in_idp_logs"
+ role_arn = (known after apply)
}
# aws_cloudwatch_metric_alarm.idb_lb_healthy_host_count["HTTP1"] will be created
+ resource "aws_cloudwatch_metric_alarm" "idb_lb_healthy_host_count" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP LB Critical - no healthy HTTP1 hosts in a 1 minute period"
+ alarm_name = "IdP-HealthyHostCount-HTTP1"
+ arn = (known after apply)
+ comparison_operator = "LessThanThreshold"
+ dimensions = {
+ "LoadBalancer" = "loadbalancer/app/idp/1234567890123456"
+ "TargetGroup" = "targetgroup/idp-tg-http1-abc/1234567890123456"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "HealthyHostCount"
+ namespace = "AWS/ApplicationELB"
+ period = 60
+ statistic = "Maximum"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 1
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idb_lb_healthy_host_count["HTTP2"] will be created
+ resource "aws_cloudwatch_metric_alarm" "idb_lb_healthy_host_count" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP LB Critical - no healthy HTTP2 hosts in a 1 minute period"
+ alarm_name = "IdP-HealthyHostCount-HTTP2"
+ arn = (known after apply)
+ comparison_operator = "LessThanThreshold"
+ dimensions = {
+ "LoadBalancer" = "loadbalancer/app/idp/1234567890123456"
+ "TargetGroup" = "targetgroup/idp-tg-http2-abc/1234567890123456"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "HealthyHostCount"
+ namespace = "AWS/ApplicationELB"
+ period = 60
+ statistic = "Maximum"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 1
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idb_lb_unhealthy_host_count["HTTP1"] will be created
+ resource "aws_cloudwatch_metric_alarm" "idb_lb_unhealthy_host_count" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP LB Warning - unhealthy HTTP1 host count >= 1 in a 1 minute period"
+ alarm_name = "IdP-UnhealthyHostCount-HTTP1"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanOrEqualToThreshold"
+ dimensions = {
+ "LoadBalancer" = "loadbalancer/app/idp/1234567890123456"
+ "TargetGroup" = "targetgroup/idp-tg-http1-abc/1234567890123456"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "UnHealthyHostCount"
+ namespace = "AWS/ApplicationELB"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 60
+ statistic = "Maximum"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 1
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idb_lb_unhealthy_host_count["HTTP2"] will be created
+ resource "aws_cloudwatch_metric_alarm" "idb_lb_unhealthy_host_count" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP LB Warning - unhealthy HTTP2 host count >= 1 in a 1 minute period"
+ alarm_name = "IdP-UnhealthyHostCount-HTTP2"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanOrEqualToThreshold"
+ dimensions = {
+ "LoadBalancer" = "loadbalancer/app/idp/1234567890123456"
+ "TargetGroup" = "targetgroup/idp-tg-http2-abc/1234567890123456"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "UnHealthyHostCount"
+ namespace = "AWS/ApplicationELB"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 60
+ statistic = "Maximum"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 1
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idp_bounce_rate_high[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "idp_bounce_rate_high" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP SES Warning - bounce rate >=7% over the last 12 hours"
+ alarm_name = "IdP-SESBounceRate"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanOrEqualToThreshold"
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "Reputation.BounceRate"
+ namespace = "AWS/SES"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 43200
+ statistic = "Average"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 0.07
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idp_complaint_rate_high[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "idp_complaint_rate_high" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP SES Warning - complaint rate >=0.4% over the last 12 hours"
+ alarm_name = "IdP-SESComplaintRate"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanOrEqualToThreshold"
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "Reputation.ComplaintRate"
+ namespace = "AWS/SES"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 43200
+ statistic = "Average"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 0.004
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idp_cpu_utilization_high_warn[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "idp_cpu_utilization_high_warn" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP ECS Warning - High CPU usage has been detected."
+ alarm_name = "IdP-CpuUtilizationWarn"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanThreshold"
+ dimensions = {
+ "ClusterName" = "idp"
+ "ServiceName" = "zitadel"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 2
+ id = (known after apply)
+ metric_name = "CPUUtilization"
+ namespace = "AWS/ECS"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 120
+ statistic = "Maximum"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 50
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idp_memory_utilization_high_warn[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "idp_memory_utilization_high_warn" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP ECS Warning - High memory usage has been detected."
+ alarm_name = "IdP-MemoryUtilizationWarn"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanThreshold"
+ dimensions = {
+ "ClusterName" = "idp"
+ "ServiceName" = "zitadel"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 2
+ id = (known after apply)
+ metric_name = "MemoryUtilization"
+ namespace = "AWS/ECS"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 120
+ statistic = "Maximum"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 50
+ treat_missing_data = "notBreaching"
}
# aws_cloudwatch_metric_alarm.idp_rds_cpu_utilization[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "idp_rds_cpu_utilization" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP RDS Warning - high CPU use for RDS cluster in a 5 minute period"
+ alarm_name = "IdP-RDSCpuUtilization"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanThreshold"
+ dimensions = {
+ "DBClusterIdentifier" = "idp-cluster"
}
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 1
+ id = (known after apply)
+ metric_name = "CPUUtilization"
+ namespace = "AWS/RDS"
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ period = 300
+ statistic = "Average"
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 80
+ treat_missing_data = "missing"
}
# aws_cloudwatch_metric_alarm.idp_response_time_warn[0] will be created
+ resource "aws_cloudwatch_metric_alarm" "idp_response_time_warn" {
+ actions_enabled = true
+ alarm_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-warning",
]
+ alarm_description = "IdP LB Warning - The latency of response times from the IdP are abnormally high."
+ alarm_name = "IdP-ResponseTimeWarn"
+ arn = (known after apply)
+ comparison_operator = "GreaterThanThreshold"
+ datapoints_to_alarm = 2
+ evaluate_low_sample_count_percentiles = (known after apply)
+ evaluation_periods = 5
+ id = (known after apply)
+ ok_actions = [
+ "arn:aws:sns:ca-central-1:957818836222:alert-ok",
]
+ tags_all = {
+ "CostCentre" = "forms-platform-production"
+ "Terraform" = "true"
}
+ threshold = 1
+ treat_missing_data = "notBreaching"
+ metric_query {
+ id = "response_time"
+ return_data = true
# (3 unchanged attributes hidden)
+ metric {
+ dimensions = {
+ "LoadBalancer" = "loadbalancer/app/idp/1234567890123456"
}
+ metric_name = "TargetResponseTime"
+ namespace = "AWS/ApplicationELB"
+ period = 60
+ stat = "Average"
# (1 unchanged attribute hidden)
}
}
}
Plan: 11 to add, 0 to change, 0 to destroy.
Warning: Argument is deprecated
with module.athena_bucket.aws_s3_bucket.this,
on .terraform/modules/athena_bucket/S3/main.tf line 8, in resource "aws_s3_bucket" "this":
8: resource "aws_s3_bucket" "this" {
Use the aws_s3_bucket_lifecycle_configuration resource instead
(and 3 more similar warnings elsewhere)
─────────────────────────────────────────────────────────────────────────────
Saved the plan to: plan.tfplan
To perform exactly these actions, run the following command to apply:
terraform apply "plan.tfplan"
Show Conftest resultsWARN - plan.json - main - Missing Common Tags: ["aws_athena_data_catalog.dynamodb"]
WARN - plan.json - main - Missing Common Tags: ["aws_athena_data_catalog.rds_data_catalog"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.codedeploy_sns"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.notify_slack"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ELB_5xx_error_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ELB_healthy_hosts"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup1"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup2"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.alb_ddos"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.audit_log_dead_letter_queue_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.cognito_login_outside_canada_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.cognito_signin_exceeded"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ddos_detected_forms_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ddos_detected_route53_warn[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.forms_cpu_utilization_high_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.forms_memory_utilization_high_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.healthcheck_lambda_form_archiver_invocations"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.healthcheck_lambda_nagware_invocations_schedule"]
WARN - plan.json - main - Missing Common Tags:... |
🤖 Created releases:
|
🤖 I have created a release beep boop
3.21.0 (2024-09-12)
Features
This PR was generated with Release Please. See documentation.