makes solr ec2 based and adds resiliency to running balances.

This commit is contained in:
2024-09-25 22:01:12 -07:00
parent dc44233640
commit db9e0dc459
8 changed files with 977 additions and 131 deletions

View File

@@ -1,7 +1,7 @@
{:db {:server "database"}
:datomic-url "datomic:ddb://us-east-1/integreat/integreat-prod"
:base-url "https://app.integreatconsult.com"
:solr-uri "http://solr-prod.local:8983"
:solr-uri "http://solr-ec2-prod.local:8983"
:solr-impl :solr
:scheme "https"
:dd-env "prod"

View File

@@ -667,6 +667,7 @@
:db/cardinality :db.cardinality/one
:db/doc "Last time Quickbooks updated",
:db/ident :intuit-bank-account/last-synced}
{:db/ident :unknown-account}
{:db/unique #:db{:ident :db.unique/identity},
:db/valueType #:db{:ident :db.type/long},

View File

@@ -622,6 +622,31 @@
(range length)))]
(sort comparator results)))
;; TODO replace COULD JUST BE SORT-3
(defn apply-sort-4 [args results]
(let [sort-bys (-> []
(into (:sort args))
(conj {:sort-key "default" :asc (if (contains? args :default-asc?)
(:default-asc? args)
true)})
(conj {:sort-key "e" :asc true}))
length (count sort-bys)
comparator (fn [xs ys]
(reduce
(fn [_ i]
(let [comparison (if (:asc (nth sort-bys i))
(compare (nth xs i) (nth ys i))
(compare (nth ys i) (nth xs i)))]
(if (not= 0 comparison)
(reduced comparison)
0)))
0
(range length)))]
(sort comparator results)))
(defn apply-pagination-raw [args results]
{:entries (->> results
(drop (or (:start args) 0))

View File

@@ -95,8 +95,7 @@
(for [a (:accounts accounts)]
(remove-nils
{:plaid-account/external-id (:account_id a)
:plaid-account/last-synced (coerce/to-date (coerce/to-date-time (-> item :status :transactions :last_successful_update)))
:plaid-account/balance (or (some-> a
:plaid-account/last-synced (coerce/to-date (coerce/to-date-time (-> item :status :transactions :last_successful_update))) :plaid-account/balance (or (some-> a
:balances
:current
double)

View File

@@ -2,6 +2,7 @@
(:require
[auto-ap.datomic :refer [conn pull-id pull-ref transact-with-backoff]]
[auto-ap.utils :refer [by dollars= heartbeat]]
[auto-ap.logging :as alog]
[clj-time.coerce :as c]
[clj-time.core :as t]
[com.brunobonacci.mulog :as mu]
@@ -324,7 +325,9 @@
({:bank-account-type/check :account-type/asset
:bank-account-type/cash :account-type/asset
:bank-account-type/credit :account-type/liability}
(:db/ident (:bank-account/type (bank-accounts a)))))
(:db/ident (:bank-account/type (bank-accounts a))))
:account-type/asset ;; DEFAULT TO ASSET, for things like unknown
)
:numeric_code (or (:account/numeric-code (accounts a))
(:bank-account/numeric-code (bank-accounts a)))
:client_id client-id})))
@@ -394,120 +397,134 @@
(do (println (count a))
(count a)))))
(defn accounts-needing-rebuild [ db client]
(let [client (pull-id db client)]
(->> (dc/qseq {:query '[:find ?c ?a ?l (min ?d)
(->> (dc/qseq {:query '[:find ?c ?a ?l
:in $ $recent ?c
:where
[$recent ?jel :journal-entry-line/dirty true]
[?jel :journal-entry-line/account ?a]
[?jel :journal-entry-line/location ?l]
[?je :journal-entry/line-items ?jel]
[?je :journal-entry/client ?c]
[?je :journal-entry/date ?d]]
[(get-else $ ?jel :journal-entry-line/account :unknown-account) ?a]
[(get-else $ ?jel :journal-entry-line/location "Unknown") ?l]]
:args [db (dc/since db (c/to-date (t/plus (t/now) (t/hours -8)))) client]})
(map (fn [[client account location starting-at ]]
(map (fn [[client account location]]
{:client client
:account account
:starting-at starting-at
:location location})))))
(defn all-accounts-needing-rebuild [ db client]
(let [client (pull-id db client)]
(->> (dc/qseq {:query '[:find ?c ?a ?l (min ?d)
(->> (dc/qseq {:query '[:find ?c ?a ?l
:in $ ?c
:where
[?je :journal-entry/client ?c]
[?je :journal-entry/line-items ?jel]
[?jel :journal-entry-line/account ?a]
[?jel :journal-entry-line/location ?l]
[?je :journal-entry/date ?d]]
[(get-else $ ?jel :journal-entry-line/account :unknown-account) ?a]
[(get-else $ ?jel :journal-entry-line/location "Unknown") ?l] ]
:args [db client]})
(map (fn [[client account location starting-at ]]
(map (fn [[client account location ]]
{:client client
:account account
:starting-at starting-at
:location location})))))
(defn find-running-balance-start [{:keys [client account location starting-at]} db ]
(defn get-entries-to-refresh [{:keys [client account location]} db ]
(let [client (pull-id db client)
account (pull-id db account)]
(or
(->> (dc/index-pull db
{:index :avet
:selector [:db/id :journal-entry-line/running-balance :journal-entry-line/client+account+location+date]
:start [:journal-entry-line/client+account+location+date [client account location starting-at]]
:reverse true})
(take-while (fn [result]
(= [client
account
location]
(take 3 (:journal-entry-line/client+account+location+date result)))))
(take 5)
(drop-while (fn [{[_ _ _ date] :journal-entry-line/client+account+location+date}]
(>= (compare date starting-at) 0)))
first
:journal-entry-line/running-balance)
0.0)))
account-id (if (= :unknown-account account)
nil
(pull-id db account))
matching-location (if (= "Unknown" location)
nil
location)]
(defn get-dirty-entries [{:keys [client account location starting-at]} db ]
(let [client (pull-id db client)
account (pull-id db account)]
(into []
(comp
(take-while (fn [{[result-client result-account result-location] :journal-entry-line/client+account+location+date}]
(and
(= client result-client)
(= account result-account)
(= location result-location))))
(= account-id result-account)
(= matching-location result-location))))
(map (fn [result]
[(:db/id result) (:journal-entry-line/debit result 0.0) (:journal-entry-line/credit result 0.0) ])))
[(:db/id result) (:journal-entry-line/debit result 0.0) (:journal-entry-line/credit result 0.0) (:journal-entry-line/running-balance result 0.0) (:journal-entry-line/dirty result)])))
(dc/index-pull db
{:index :avet
:selector [:db/id :journal-entry-line/debit :journal-entry-line/credit :journal-entry-line/client+account+location+date]
:selector [:db/id :journal-entry-line/debit :journal-entry-line/credit :journal-entry-line/client+account+location+date :journal-entry-line/running-balance :journal-entry-line/dirty]
:start [:journal-entry-line/client+account+location+date
[client account location starting-at]]
}))))
[client
account-id
matching-location
#inst "0001-01-01" ]] }))))
(defn compute-running-balance [account-needing-refresh]
(mu/trace ::compute
[:dirty-count (count (:dirty-entries account-needing-refresh))]
(when (= 0 (count (:dirty-entries account-needing-refresh)))
(alog/warn ::no-entries-to-compute
:message "This typically means that an account is determined to be dirty, but no entries are found, meaning bad query"))
(second
(reduce
(fn [[running-balance rows] [id debit credit] ]
(fn [[running-balance changed-rows] [id debit credit extant-running-balance dirty] ]
(let [new-running-balance (+ running-balance
(if (#{:account-type/asset
:account-type/dividend
:account-type/expense} (:account-type account-needing-refresh))
(- debit credit)
(- credit debit)))]
(- credit debit)))
row-changed? (or (not (dollars= new-running-balance extant-running-balance))
dirty)]
[new-running-balance
(conj rows
{:db/id id
:journal-entry-line/running-balance new-running-balance
:journal-entry-line/dirty false})]))
[(:build-from account-needing-refresh) []]
(conj changed-rows
{:db/id id
:journal-entry-line/running-balance new-running-balance
:journal-entry-line/debit debit
:journal-entry-line/credit credit
:journal-entry-line/dirty false})
#_(if row-changed?
(conj changed-rows
{:db/id id
:journal-entry-line/running-balance new-running-balance
:journal-entry-line/debit debit
:journal-entry-line/credit credit
:journal-entry-line/dirty false})
changed-rows)]))
[0.0 []]
(:dirty-entries account-needing-refresh)))))
(let [db (dc/db conn)
account-needing-rebuild
{:account (pull-id (dc/db conn) [:bank-account/code "SCCB-2888CB"])
:client (pull-id (dc/db conn) [:client/code "SCCB"])
:location "A"}
result (-> account-needing-rebuild
(assoc :dirty-entries (get-entries-to-refresh account-needing-rebuild db))
(assoc :account-type (:account_type ((build-account-lookup (:client account-needing-rebuild)) (:account account-needing-rebuild))))
(compute-running-balance))]
(alog/info ::recomputed-entries-with-new-sum :count (count result))
result)
(defn refresh-running-balance-accounts [accounts-needing-rebuild clients c i db]
(mu/log ::found-accounts-needing-rebuild
:accounts (count accounts-needing-rebuild))
(let [so-far (atom 0)]
@(->> accounts-needing-rebuild
(s/->source)
(s/map (fn [account-needing-rebuild]
(de/future
(mu/with-context {:account account-needing-rebuild}
(-> account-needing-rebuild
(assoc :build-from (find-running-balance-start account-needing-rebuild db))
(assoc :dirty-entries (get-dirty-entries account-needing-rebuild db))
(assoc :account-type (:account_type ((build-account-lookup (:client account-needing-rebuild)) (:account account-needing-rebuild))))
(compute-running-balance))))))
(->
(de/future
(mu/with-context {:account account-needing-rebuild}
(let [result (-> account-needing-rebuild
(assoc :dirty-entries (get-entries-to-refresh account-needing-rebuild db))
(assoc :account-type (:account_type ((build-account-lookup (:client account-needing-rebuild)) (:account account-needing-rebuild))))
(compute-running-balance))]
(alog/info ::recomputed-entries-with-new-sum :count (count result) )
result)
))
(de/catch (fn [error]
(alog/error ::cant-rebuild
:error error)
nil)))))
(s/realize-each)
(s/mapcat (fn [x]
x))
@@ -528,17 +545,21 @@
:client-index i
:client-count (count clients)))))))
(defn clients-needing-refresh []
(map first
(dc/q '[:find (pull ?c [:client/code :db/id])
:in $ $recent
:where [$recent ?jel :journal-entry-line/dirty true]
[$ ?je :journal-entry/line-items ?jel]
[$ ?je :journal-entry/client ?c]]
(dc/db conn)
(dc/since
(dc/db conn)
(c/to-date (t/plus (t/now) (t/hours -4)))))))
(->>
(dc/q '[:find (pull ?c [:client/code :db/id]) (count ?jel)
:in $ $recent
:where [$recent ?jel :journal-entry-line/dirty true]
[$ ?je :journal-entry/line-items ?jel]
[$ ?je :journal-entry/client ?c]
[$ ?jel :journal-entry-line/dirty true]]
(dc/db conn)
(dc/since
(dc/db conn)
(c/to-date (t/plus (t/now) (t/hours -8)))))
(map (fn [[client outdated]]
(assoc client :dirty-count outdated)))))
(defn refresh-running-balance-cache
([] (refresh-running-balance-cache (shuffle (clients-needing-refresh))))
@@ -575,6 +596,30 @@
(refresh-running-balance-accounts accounts-needing-rebuild clients c i db)
(mu/log ::client-completed))))))))
#_(seq (dc/q '[:find ?le ?d
:in $
:where [?le :journal-entry/date ?d]
[(<= ?d #inst "2000-01-01")]]
(dc/db conn)))
#_(comment [17592334354011 #inst "0024-08-03T07:52:58.000-00:00"]
[17592302554688 #inst "0023-07-20T07:52:58.000-00:00"]
[17592302554682 #inst "0023-07-16T07:52:58.000-00:00"]
[17592302554691 #inst "0023-07-22T07:52:58.000-00:00"]
[17592334353995 #inst "0024-08-10T07:52:58.000-00:00"]
[17592302554694 #inst "0023-07-27T07:52:58.000-00:00"]
[17592241669405 #inst "0218-08-04T07:52:58.000-00:00"]
[17592334353207 #inst "0024-07-27T07:52:58.000-00:00"]
[17592302554685 #inst "0023-07-16T07:52:58.000-00:00"]
[17592334353244 #inst "0024-07-14T07:52:58.000-00:00"])
;; TODO
;; 1. Having an uncategorized running balance
;; 1a. dirty should always be 0
;; 2. rebuild from beginning of history always, only update entry if it currently doesn't match
;; 3. deterministic order (date + entityid)
;; TODO only enable once IOL is set up in clod
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
(mount/defstate running-balance-cache-worker

View File

@@ -1,7 +1,7 @@
(ns auto-ap.ssr.ledger
(:require [auto-ap.client-routes :as client-routes]
[auto-ap.datomic
:refer [add-sorter-fields apply-pagination apply-sort-3
:refer [add-sorter-fields apply-pagination apply-sort-4
audit-transact audit-transact-batch conn merge-query
observable-query pull-many remove-nils]]
[auto-ap.datomic.accounts :as d-accounts]
@@ -289,7 +289,7 @@
(merge-query {:query {:find ['?sort-default '?e]}})))]
(->> (observable-query query)
(apply-sort-3 (assoc query-params :default-asc? true))
(apply-sort-4 (assoc query-params :default-asc? true))
(apply-pagination query-params))))
(def default-read

View File

@@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.8.3",
"serial": 693,
"terraform_version": "1.9.2",
"serial": 712,
"lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51",
"outputs": {
"aws_access_key_id": {
@@ -18,12 +18,107 @@
"type": "string",
"sensitive": true
},
"ec2_public_ip": {
"value": "54.175.3.15",
"type": "string"
},
"queue_url": {
"value": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-prod",
"type": "string"
}
},
"resources": [
{
"mode": "data",
"type": "aws_ami",
"name": "amazon_linux_2023",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"architecture": "arm64",
"arn": "arn:aws:ec2:us-east-1::image/ami-0fea1219385942eb5",
"block_device_mappings": [
{
"device_name": "/dev/xvda",
"ebs": {
"delete_on_termination": "true",
"encrypted": "false",
"iops": "3000",
"snapshot_id": "snap-0631ed3b265acda34",
"throughput": "125",
"volume_size": "30",
"volume_type": "gp3"
},
"no_device": "",
"virtual_name": ""
}
],
"boot_mode": "uefi",
"creation_date": "2024-09-17T21:17:56.000Z",
"deprecation_time": "2026-09-17T21:17:56.000Z",
"description": "Amazon Linux AMI 2023.0.20240917 arm64 ECS HVM EBS",
"ena_support": true,
"executable_users": null,
"filter": [
{
"name": "architecture",
"values": [
"arm64"
]
},
{
"name": "name",
"values": [
"al2023-ami-*"
]
},
{
"name": "virtualization-type",
"values": [
"hvm"
]
}
],
"hypervisor": "xen",
"id": "ami-0fea1219385942eb5",
"image_id": "ami-0fea1219385942eb5",
"image_location": "amazon/al2023-ami-ecs-hvm-2023.0.20240917-kernel-6.1-arm64",
"image_owner_alias": "amazon",
"image_type": "machine",
"imds_support": "v2.0",
"include_deprecated": false,
"kernel_id": "",
"most_recent": true,
"name": "al2023-ami-ecs-hvm-2023.0.20240917-kernel-6.1-arm64",
"name_regex": null,
"owner_id": "591542846629",
"owners": null,
"platform": "",
"platform_details": "Linux/UNIX",
"product_codes": [],
"public": true,
"ramdisk_id": "",
"root_device_name": "/dev/xvda",
"root_device_type": "ebs",
"root_snapshot_id": "snap-0631ed3b265acda34",
"sriov_net_support": "simple",
"state": "available",
"state_reason": {
"code": "UNSET",
"message": "UNSET"
},
"tags": {},
"timeouts": null,
"tpm_support": "",
"usage_operation": "RunInstances",
"virtualization_type": "hvm"
},
"sensitive_attributes": []
}
]
},
{
"mode": "data",
"type": "aws_caller_identity",
@@ -115,8 +210,8 @@
"early_renewal_duration": "",
"id": "arn:aws:acm:us-east-1:679918342773:certificate/edf1d7f0-8358-4a40-a44f-3ccdb81da12f",
"key_algorithm": "RSA_2048",
"not_after": "2024-07-27T23:59:59Z",
"not_before": "2023-06-29T00:00:00Z",
"not_after": "2025-06-27T23:59:59Z",
"not_before": "2024-05-29T00:00:00Z",
"options": [
{
"certificate_transparency_logging_preference": "ENABLED"
@@ -129,7 +224,7 @@
{
"renewal_status": "SUCCESS",
"renewal_status_reason": "",
"updated_at": "2023-06-29T04:17:46Z"
"updated_at": "2024-05-29T05:27:07Z"
}
],
"status": "ISSUED",
@@ -180,8 +275,8 @@
"early_renewal_duration": "",
"id": "arn:aws:acm:us-east-1:679918342773:certificate/9dce79fb-fc06-438b-8188-f54313b5161a",
"key_algorithm": "RSA_2048",
"not_after": "2024-09-01T23:59:59Z",
"not_before": "2023-08-04T00:00:00Z",
"not_after": "2025-08-03T23:59:59Z",
"not_before": "2024-07-04T00:00:00Z",
"options": [
{
"certificate_transparency_logging_preference": "ENABLED"
@@ -190,7 +285,13 @@
"pending_renewal": false,
"private_key": null,
"renewal_eligibility": "ELIGIBLE",
"renewal_summary": [],
"renewal_summary": [
{
"renewal_status": "SUCCESS",
"renewal_status_reason": "",
"updated_at": "2024-07-04T02:01:27Z"
}
],
"status": "ISSUED",
"subject_alternative_names": [
"data.prod.app.integreatconsult.com"
@@ -214,6 +315,45 @@
}
]
},
{
"mode": "managed",
"type": "aws_ebs_volume",
"name": "solr_ec2_storage",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:ec2:us-east-1:679918342773:volume/vol-0069283d41ff6c010",
"availability_zone": "us-east-1a",
"encrypted": false,
"final_snapshot": false,
"id": "vol-0069283d41ff6c010",
"iops": 100,
"kms_key_id": "",
"multi_attach_enabled": false,
"outpost_arn": "",
"size": 30,
"snapshot_id": "",
"tags": {
"Name": "solr_storage_prod"
},
"tags_all": {
"Name": "solr_storage_prod"
},
"throughput": 0,
"timeouts": null,
"type": "gp2"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjMwMDAwMDAwMDAwMH19",
"dependencies": [
"aws_instance.solr_ec2",
"data.aws_ami.amazon_linux_2023"
]
}
]
},
{
"mode": "managed",
"type": "aws_ecs_service",
@@ -295,7 +435,7 @@
],
"tags": {},
"tags_all": {},
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:789",
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:834",
"timeouts": {
"create": null,
"delete": null,
@@ -385,7 +525,7 @@
],
"tags": {},
"tags_all": {},
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/solr_prod:2",
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/solr_prod:4",
"timeouts": {
"create": null,
"delete": null,
@@ -527,9 +667,9 @@
"provisioned_throughput_in_mibps": 0,
"size_in_bytes": [
{
"value": 757790720,
"value": 1429075968,
"value_in_ia": 0,
"value_in_standard": 757790720
"value_in_standard": 1429075968
}
],
"tags": {
@@ -569,13 +709,13 @@
[
{
"type": "get_attr",
"value": "secret"
"value": "ses_smtp_password_v4"
}
],
[
{
"type": "get_attr",
"value": "ses_smtp_password_v4"
"value": "secret"
}
]
],
@@ -628,6 +768,137 @@
}
]
},
{
"mode": "managed",
"type": "aws_instance",
"name": "solr_ec2",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 1,
"attributes": {
"ami": "ami-0fea1219385942eb5",
"arn": "arn:aws:ec2:us-east-1:679918342773:instance/i-0ce809d16781daada",
"associate_public_ip_address": true,
"availability_zone": "us-east-1a",
"capacity_reservation_specification": [
{
"capacity_reservation_preference": "open",
"capacity_reservation_target": []
}
],
"cpu_core_count": 2,
"cpu_options": [
{
"amd_sev_snp": "",
"core_count": 2,
"threads_per_core": 1
}
],
"cpu_threads_per_core": 1,
"credit_specification": [],
"disable_api_stop": false,
"disable_api_termination": false,
"ebs_block_device": [],
"ebs_optimized": false,
"enclave_options": [
{
"enabled": false
}
],
"ephemeral_block_device": [],
"get_password_data": false,
"hibernation": false,
"host_id": "",
"host_resource_group_arn": null,
"iam_instance_profile": "",
"id": "i-0ce809d16781daada",
"instance_initiated_shutdown_behavior": "stop",
"instance_state": "running",
"instance_type": "m7g.large",
"ipv6_address_count": 0,
"ipv6_addresses": [],
"key_name": "http-proxy",
"launch_template": [],
"maintenance_options": [
{
"auto_recovery": "default"
}
],
"metadata_options": [
{
"http_endpoint": "enabled",
"http_put_response_hop_limit": 2,
"http_tokens": "required",
"instance_metadata_tags": "disabled"
}
],
"monitoring": false,
"network_interface": [],
"outpost_arn": "",
"password_data": "",
"placement_group": "",
"placement_partition_number": 0,
"primary_network_interface_id": "eni-07dec2725fa4c70ed",
"private_dns": "ip-172-31-38-103.ec2.internal",
"private_dns_name_options": [
{
"enable_resource_name_dns_a_record": false,
"enable_resource_name_dns_aaaa_record": false,
"hostname_type": "ip-name"
}
],
"private_ip": "172.31.38.103",
"public_dns": "ec2-54-175-3-15.compute-1.amazonaws.com",
"public_ip": "54.175.3.15",
"root_block_device": [
{
"delete_on_termination": true,
"device_name": "/dev/xvda",
"encrypted": false,
"iops": 3000,
"kms_key_id": "",
"tags": null,
"throughput": 125,
"volume_id": "vol-0ec6fb488e712ba93",
"volume_size": 30,
"volume_type": "gp3"
}
],
"secondary_private_ips": [],
"security_groups": [
"datomic-access",
"http-proxy-2",
"integreat-app"
],
"source_dest_check": true,
"subnet_id": "subnet-89bab8d4",
"tags": {
"Name": "solr_ec2_prod"
},
"tags_all": {
"Name": "solr_ec2_prod"
},
"tenancy": "default",
"timeouts": null,
"user_data": null,
"user_data_base64": null,
"user_data_replace_on_change": false,
"volume_tags": null,
"vpc_security_group_ids": [
"sg-004e5855310c453a3",
"sg-02d167406b1082698",
"sg-08cd873bd29a2b3c9"
]
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwidXBkYXRlIjo2MDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
"dependencies": [
"data.aws_ami.amazon_linux_2023"
]
}
]
},
{
"mode": "managed",
"type": "aws_lb",
@@ -1334,6 +1605,32 @@
}
]
},
{
"mode": "managed",
"type": "aws_service_discovery_instance",
"name": "solr_instance",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"attributes": {
"AWS_INSTANCE_IPV4": "172.31.38.103"
},
"id": "solr-ec2",
"instance_id": "solr-ec2",
"service_id": "srv-ren22oppkwwryqqr"
},
"sensitive_attributes": [],
"private": "bnVsbA==",
"dependencies": [
"aws_instance.solr_ec2",
"aws_service_discovery_service.solr_ec2",
"data.aws_ami.amazon_linux_2023"
]
}
]
},
{
"mode": "managed",
"type": "aws_service_discovery_service",
@@ -1418,6 +1715,48 @@
}
]
},
{
"mode": "managed",
"type": "aws_service_discovery_service",
"name": "solr_ec2",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-ren22oppkwwryqqr",
"description": "",
"dns_config": [
{
"dns_records": [
{
"ttl": 60,
"type": "A"
}
],
"namespace_id": "ns-gv2z744em7myo2jp",
"routing_policy": "MULTIVALUE"
}
],
"force_destroy": false,
"health_check_config": [],
"health_check_custom_config": [
{
"failure_threshold": 1
}
],
"id": "srv-ren22oppkwwryqqr",
"name": "solr-ec2-prod",
"namespace_id": "ns-gv2z744em7myo2jp",
"tags": {},
"tags_all": {},
"type": "DNS_HTTP"
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "aws_ses_receipt_rule",
@@ -1594,6 +1933,34 @@
}
]
},
{
"mode": "managed",
"type": "aws_volume_attachment",
"name": "attach_solr_storage",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"device_name": "/dev/xvdf",
"force_detach": null,
"id": "vai-3578365595",
"instance_id": "i-0ce809d16781daada",
"skip_destroy": null,
"stop_instance_before_detaching": null,
"timeouts": null,
"volume_id": "vol-0069283d41ff6c010"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwfX0=",
"dependencies": [
"aws_ebs_volume.solr_ec2_storage",
"aws_instance.solr_ec2",
"data.aws_ami.amazon_linux_2023"
]
}
]
},
{
"module": "module.bulk_journal_import_job[0]",
"mode": "managed",
@@ -3404,7 +3771,7 @@
"revision": 5,
"runtime_platform": [],
"skip_destroy": false,
"tags": null,
"tags": {},
"tags_all": {},
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
"volume": []

View File

@@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.8.3",
"serial": 689,
"terraform_version": "1.9.2",
"serial": 704,
"lineage": "9b630886-8cee-a57d-c7a2-4f19f13f9c51",
"outputs": {
"aws_access_key_id": {
@@ -18,12 +18,107 @@
"type": "string",
"sensitive": true
},
"ec2_public_ip": {
"value": "54.162.172.142",
"type": "string"
},
"queue_url": {
"value": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-prod",
"type": "string"
}
},
"resources": [
{
"mode": "data",
"type": "aws_ami",
"name": "amazon_linux_2",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"architecture": "arm64",
"arn": "arn:aws:ec2:us-east-1::image/ami-0c32fe44cfb616fdd",
"block_device_mappings": [
{
"device_name": "/dev/xvda",
"ebs": {
"delete_on_termination": "true",
"encrypted": "false",
"iops": "0",
"snapshot_id": "snap-0d41f1cffffa2ecba",
"throughput": "0",
"volume_size": "8",
"volume_type": "gp2"
},
"no_device": "",
"virtual_name": ""
}
],
"boot_mode": "",
"creation_date": "2024-09-16T18:28:30.000Z",
"deprecation_time": "2025-07-01T00:00:00.000Z",
"description": "Amazon Linux 2 LTS Arm64 AMI 2.0.20240916.0 arm64 HVM gp2",
"ena_support": true,
"executable_users": null,
"filter": [
{
"name": "architecture",
"values": [
"arm64"
]
},
{
"name": "name",
"values": [
"amzn2-ami-hvm-*"
]
},
{
"name": "virtualization-type",
"values": [
"hvm"
]
}
],
"hypervisor": "xen",
"id": "ami-0c32fe44cfb616fdd",
"image_id": "ami-0c32fe44cfb616fdd",
"image_location": "amazon/amzn2-ami-hvm-2.0.20240916.0-arm64-gp2",
"image_owner_alias": "amazon",
"image_type": "machine",
"imds_support": "",
"include_deprecated": false,
"kernel_id": "",
"most_recent": true,
"name": "amzn2-ami-hvm-2.0.20240916.0-arm64-gp2",
"name_regex": null,
"owner_id": "137112412989",
"owners": null,
"platform": "",
"platform_details": "Linux/UNIX",
"product_codes": [],
"public": true,
"ramdisk_id": "",
"root_device_name": "/dev/xvda",
"root_device_type": "ebs",
"root_snapshot_id": "snap-0d41f1cffffa2ecba",
"sriov_net_support": "simple",
"state": "available",
"state_reason": {
"code": "UNSET",
"message": "UNSET"
},
"tags": {},
"timeouts": null,
"tpm_support": "",
"usage_operation": "RunInstances",
"virtualization_type": "hvm"
},
"sensitive_attributes": []
}
]
},
{
"mode": "data",
"type": "aws_caller_identity",
@@ -115,8 +210,8 @@
"early_renewal_duration": "",
"id": "arn:aws:acm:us-east-1:679918342773:certificate/edf1d7f0-8358-4a40-a44f-3ccdb81da12f",
"key_algorithm": "RSA_2048",
"not_after": "2024-07-27T23:59:59Z",
"not_before": "2023-06-29T00:00:00Z",
"not_after": "2025-06-27T23:59:59Z",
"not_before": "2024-05-29T00:00:00Z",
"options": [
{
"certificate_transparency_logging_preference": "ENABLED"
@@ -129,7 +224,7 @@
{
"renewal_status": "SUCCESS",
"renewal_status_reason": "",
"updated_at": "2023-06-29T04:17:46Z"
"updated_at": "2024-05-29T05:27:07Z"
}
],
"status": "ISSUED",
@@ -143,7 +238,14 @@
"validation_method": "DNS",
"validation_option": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "private_key"
}
]
],
"private": "bnVsbA=="
}
]
@@ -173,8 +275,8 @@
"early_renewal_duration": "",
"id": "arn:aws:acm:us-east-1:679918342773:certificate/9dce79fb-fc06-438b-8188-f54313b5161a",
"key_algorithm": "RSA_2048",
"not_after": "2024-09-01T23:59:59Z",
"not_before": "2023-08-04T00:00:00Z",
"not_after": "2025-08-03T23:59:59Z",
"not_before": "2024-07-04T00:00:00Z",
"options": [
{
"certificate_transparency_logging_preference": "ENABLED"
@@ -183,7 +285,13 @@
"pending_renewal": false,
"private_key": null,
"renewal_eligibility": "ELIGIBLE",
"renewal_summary": [],
"renewal_summary": [
{
"renewal_status": "SUCCESS",
"renewal_status_reason": "",
"updated_at": "2024-07-04T02:01:27Z"
}
],
"status": "ISSUED",
"subject_alternative_names": [
"data.prod.app.integreatconsult.com"
@@ -195,11 +303,57 @@
"validation_method": "DNS",
"validation_option": []
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "private_key"
}
]
],
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "aws_ebs_volume",
"name": "solr_ec2_storage",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:ec2:us-east-1:679918342773:volume/vol-010fe54b640fb8a99",
"availability_zone": "us-east-1a",
"encrypted": false,
"final_snapshot": false,
"id": "vol-010fe54b640fb8a99",
"iops": 100,
"kms_key_id": "",
"multi_attach_enabled": false,
"outpost_arn": "",
"size": 30,
"snapshot_id": "",
"tags": {
"Name": "solr_storage_prod"
},
"tags_all": {
"Name": "solr_storage_prod"
},
"throughput": 0,
"timeouts": null,
"type": "gp2"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjMwMDAwMDAwMDAwMH19",
"dependencies": [
"aws_instance.solr_ec2",
"data.aws_ami.amazon_linux_2"
]
}
]
},
{
"mode": "managed",
"type": "aws_ecs_service",
@@ -281,7 +435,7 @@
],
"tags": {},
"tags_all": {},
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:782",
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod:834",
"timeouts": {
"create": null,
"delete": null,
@@ -371,7 +525,7 @@
],
"tags": {},
"tags_all": {},
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/solr_prod:1",
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/solr_prod:4",
"timeouts": {
"create": null,
"delete": null,
@@ -513,9 +667,9 @@
"provisioned_throughput_in_mibps": 0,
"size_in_bytes": [
{
"value": 699342848,
"value": 1429075968,
"value_in_ia": 0,
"value_in_standard": 699342848
"value_in_standard": 1429075968
}
],
"tags": {
@@ -551,7 +705,20 @@
"status": "Active",
"user": "integreat-prod"
},
"sensitive_attributes": [],
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "ses_smtp_password_v4"
}
],
[
{
"type": "get_attr",
"value": "secret"
}
]
],
"dependencies": [
"aws_iam_user.app_user"
]
@@ -601,6 +768,152 @@
}
]
},
{
"mode": "managed",
"type": "aws_instance",
"name": "solr_ec2",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 1,
"attributes": {
"ami": "ami-0c32fe44cfb616fdd",
"arn": "arn:aws:ec2:us-east-1:679918342773:instance/i-0bbdf9c800a03cba7",
"associate_public_ip_address": true,
"availability_zone": "us-east-1a",
"capacity_reservation_specification": [
{
"capacity_reservation_preference": "open",
"capacity_reservation_target": []
}
],
"cpu_core_count": 2,
"cpu_options": [
{
"amd_sev_snp": "",
"core_count": 2,
"threads_per_core": 1
}
],
"cpu_threads_per_core": 1,
"credit_specification": [],
"disable_api_stop": false,
"disable_api_termination": false,
"ebs_block_device": [
{
"delete_on_termination": false,
"device_name": "/dev/xvdf",
"encrypted": false,
"iops": 100,
"kms_key_id": "",
"snapshot_id": "",
"tags": {
"Name": "solr_storage_prod"
},
"throughput": 0,
"volume_id": "vol-010fe54b640fb8a99",
"volume_size": 30,
"volume_type": "gp2"
}
],
"ebs_optimized": false,
"enclave_options": [
{
"enabled": false
}
],
"ephemeral_block_device": [],
"get_password_data": false,
"hibernation": false,
"host_id": "",
"host_resource_group_arn": null,
"iam_instance_profile": "",
"id": "i-0bbdf9c800a03cba7",
"instance_initiated_shutdown_behavior": "stop",
"instance_state": "running",
"instance_type": "m7g.large",
"ipv6_address_count": 0,
"ipv6_addresses": [],
"key_name": "http-proxy",
"launch_template": [],
"maintenance_options": [
{
"auto_recovery": "default"
}
],
"metadata_options": [
{
"http_endpoint": "enabled",
"http_put_response_hop_limit": 1,
"http_tokens": "optional",
"instance_metadata_tags": "disabled"
}
],
"monitoring": false,
"network_interface": [],
"outpost_arn": "",
"password_data": "",
"placement_group": "",
"placement_partition_number": 0,
"primary_network_interface_id": "eni-0c7562b5274a4b60d",
"private_dns": "ip-172-31-46-148.ec2.internal",
"private_dns_name_options": [
{
"enable_resource_name_dns_a_record": false,
"enable_resource_name_dns_aaaa_record": false,
"hostname_type": "ip-name"
}
],
"private_ip": "172.31.46.148",
"public_dns": "ec2-54-162-172-142.compute-1.amazonaws.com",
"public_ip": "54.162.172.142",
"root_block_device": [
{
"delete_on_termination": true,
"device_name": "/dev/xvda",
"encrypted": false,
"iops": 100,
"kms_key_id": "",
"tags": {},
"throughput": 0,
"volume_id": "vol-0fea5a3f3ca20ab76",
"volume_size": 30,
"volume_type": "gp2"
}
],
"secondary_private_ips": [],
"security_groups": [
"datomic-access",
"integreat-app"
],
"source_dest_check": true,
"subnet_id": "subnet-89bab8d4",
"tags": {
"Name": "solr_ec2_prod"
},
"tags_all": {
"Name": "solr_ec2_prod"
},
"tenancy": "default",
"timeouts": null,
"user_data": null,
"user_data_base64": null,
"user_data_replace_on_change": false,
"volume_tags": null,
"vpc_security_group_ids": [
"sg-004e5855310c453a3",
"sg-02d167406b1082698",
"sg-08cd873bd29a2b3c9"
]
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwidXBkYXRlIjo2MDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjEifQ==",
"dependencies": [
"data.aws_ami.amazon_linux_2"
]
}
]
},
{
"mode": "managed",
"type": "aws_lb",
@@ -1307,6 +1620,32 @@
}
]
},
{
"mode": "managed",
"type": "aws_service_discovery_instance",
"name": "solr_instance",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"attributes": {
"AWS_INSTANCE_IPV4": "172.31.46.148"
},
"id": "solr-ec2",
"instance_id": "solr-ec2",
"service_id": "srv-ren22oppkwwryqqr"
},
"sensitive_attributes": [],
"private": "bnVsbA==",
"dependencies": [
"aws_instance.solr_ec2",
"aws_service_discovery_service.solr_ec2",
"data.aws_ami.amazon_linux_2"
]
}
]
},
{
"mode": "managed",
"type": "aws_service_discovery_service",
@@ -1391,6 +1730,48 @@
}
]
},
{
"mode": "managed",
"type": "aws_service_discovery_service",
"name": "solr_ec2",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-ren22oppkwwryqqr",
"description": "",
"dns_config": [
{
"dns_records": [
{
"ttl": 60,
"type": "A"
}
],
"namespace_id": "ns-gv2z744em7myo2jp",
"routing_policy": "MULTIVALUE"
}
],
"force_destroy": false,
"health_check_config": [],
"health_check_custom_config": [
{
"failure_threshold": 1
}
],
"id": "srv-ren22oppkwwryqqr",
"name": "solr-ec2-prod",
"namespace_id": "ns-gv2z744em7myo2jp",
"tags": {},
"tags_all": {},
"type": "DNS_HTTP"
},
"sensitive_attributes": [],
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "aws_ses_receipt_rule",
@@ -1567,6 +1948,34 @@
}
]
},
{
"mode": "managed",
"type": "aws_volume_attachment",
"name": "attach_solr_storage",
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"device_name": "/dev/xvdf",
"force_detach": null,
"id": "vai-172440334",
"instance_id": "i-0bbdf9c800a03cba7",
"skip_destroy": null,
"stop_instance_before_detaching": null,
"timeouts": null,
"volume_id": "vol-010fe54b640fb8a99"
},
"sensitive_attributes": [],
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwfX0=",
"dependencies": [
"aws_ebs_volume.solr_ec2_storage",
"aws_instance.solr_ec2",
"data.aws_ami.amazon_linux_2"
]
}
]
},
{
"module": "module.bulk_journal_import_job[0]",
"mode": "managed",
@@ -1629,7 +2038,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(1 hour)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -1676,7 +2085,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/close_auto_invoices_prod:3"
}
@@ -1767,7 +2176,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(60 minutes)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -1814,7 +2223,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/current_balance_cache_prod:3"
}
@@ -1905,7 +2314,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(1 hour)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -1952,7 +2361,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/import_uploaded_invoices_prod:3"
}
@@ -2043,7 +2452,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(6 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -2090,7 +2499,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/insight_outcome_recommendation_prod:2"
}
@@ -2181,7 +2590,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(6 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -2228,7 +2637,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/intuit_prod:4"
}
@@ -2498,7 +2907,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(6 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -2545,7 +2954,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/plaid_prod:4"
}
@@ -2636,7 +3045,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(1 hour)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -2683,7 +3092,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/reconcile_ledger_prod:3"
}
@@ -2815,7 +3224,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(4 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -2862,7 +3271,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/square_import_job_prod:6"
}
@@ -2953,7 +3362,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(3 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -3000,7 +3409,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/sysco_prod:3"
}
@@ -3091,7 +3500,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(4 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -3138,7 +3547,7 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/vendor_usages_prod:3"
}
@@ -3270,7 +3679,7 @@
"name_prefix": "",
"role_arn": "",
"schedule_expression": "rate(6 hours)",
"tags": null,
"tags": {},
"tags_all": {}
},
"sensitive_attributes": [],
@@ -3317,9 +3726,9 @@
"placement_constraint": [],
"platform_version": "",
"propagate_tags": "TASK_DEFINITION",
"tags": null,
"tags": {},
"task_count": 1,
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/yodlee2_prod:4"
"task_definition_arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/yodlee2_prod:5"
}
],
"event_bus_name": "default",
@@ -3356,17 +3765,17 @@
{
"schema_version": 1,
"attributes": {
"arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/yodlee2_prod:4",
"arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/yodlee2_prod:5",
"arn_without_revision": "arn:aws:ecs:us-east-1:679918342773:task-definition/yodlee2_prod",
"container_definitions": "[{\"cpu\":0,\"dockerLabels\":{\"com.datadoghq.tags.env\":\"prod\",\"com.datadoghq.tags.service\":\"yodlee2\"},\"environment\":[{\"name\":\"DD_CONTAINER_ENV_AS_TAGS\",\"value\":\"{\\\"INTEGREAT_JOB\\\":\\\"background_job\\\"}\"},{\"name\":\"DD_ENV\",\"value\":\"prod\"},{\"name\":\"DD_SERVICE\",\"value\":\"yodlee2\"},{\"name\":\"INTEGREAT_JOB\",\"value\":\"yodlee2\"},{\"name\":\"config\",\"value\":\"/usr/local/config/prod-background-worker.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat-cloud:prod\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-app-prod\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"},{\"containerPort\":9090,\"hostPort\":9090,\"protocol\":\"tcp\"}],\"systemControls\":[],\"volumesFrom\":[]},{\"cpu\":0,\"environment\":[{\"name\":\"DD_API_KEY\",\"value\":\"ce10d932c47b358e81081ae67bd8c112\"},{\"name\":\"ECS_FARGATE\",\"value\":\"true\"}],\"essential\":true,\"image\":\"public.ecr.aws/datadog/agent:latest\",\"mountPoints\":[],\"name\":\"datadog-agent\",\"portMappings\":[],\"systemControls\":[],\"volumesFrom\":[]}]",
"cpu": "1024",
"cpu": "2048",
"ephemeral_storage": [],
"execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole",
"family": "yodlee2_prod",
"id": "yodlee2_prod",
"inference_accelerator": [],
"ipc_mode": "",
"memory": "2048",
"memory": "4096",
"network_mode": "awsvpc",
"pid_mode": "",
"placement_constraints": [],
@@ -3374,7 +3783,7 @@
"requires_compatibilities": [
"FARGATE"
],
"revision": 4,
"revision": 5,
"runtime_platform": [],
"skip_destroy": false,
"tags": {},