-
Notifications
You must be signed in to change notification settings - Fork 21
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
Fix for grant assign email with missing description #2725
Conversation
QA Summary
Test CoverageCoverage report for `packages/client`
Coverage report for `packages/server`
Pusher: @jeffsmohan, Action: |
Terraform Summary
Hint: If "Terraform Format & Style" failed, run OutputValidation Output
Plan OutputNote: Objects have changed outside of Terraform
Terraform detected the following changes made outside of Terraform since the
last "terraform apply" which may have affected this plan:
# module.api.aws_ecs_task_definition.default[0] has changed
~ resource "aws_ecs_task_definition" "default" {
id = "gost-staging-api"
+ tags = {}
# (13 unchanged attributes hidden)
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ transit_encryption_port = 0
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
# (1 unchanged block hidden)
}
# module.api.aws_iam_role.execution[0] has changed
~ resource "aws_iam_role" "execution" {
id = "gost-staging-api-ECSTaskExecution-20230217010414321500000009"
name = "gost-staging-api-ECSTaskExecution-20230217010414321500000009"
~ role_last_used = [
~ {
~ last_used_date = "2024-03-11T20:13:51Z" -> "2024-03-12T16:32:30Z"
# (1 unchanged element hidden)
},
]
tags = {}
# (11 unchanged attributes hidden)
# (2 unchanged blocks hidden)
}
# module.api.aws_iam_role.task[0] has changed
~ resource "aws_iam_role" "task" {
id = "gost-staging-api-ECSTask-2023021701041477300000000a"
name = "gost-staging-api-ECSTask-2023021701041477300000000a"
~ role_last_used = [
~ {
~ last_used_date = "2024-03-11T20:13:50Z" -> "2024-03-12T15:04:51Z"
# (1 unchanged element hidden)
},
]
tags = {}
# (11 unchanged attributes hidden)
# (6 unchanged blocks hidden)
}
Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.
─────────────────────────────────────────────────────────────────────────────
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
~ update in-place
- destroy
+/- create replacement and then destroy
Terraform will perform the following actions:
# module.api.aws_ecs_service.default[0] will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-api"
name = "gost-staging-api"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-api:178" -> (known after apply)
# (15 unchanged attributes hidden)
# (4 unchanged blocks hidden)
}
# module.api.aws_ecs_task_definition.default[0] must be replaced
+/- resource "aws_ecs_task_definition" "default" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-api:178" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-api" -> (known after apply)
~ container_definitions = jsonencode(
~ [ # forces replacement
~ {
~ dockerLabels = {
~ "com.datadoghq.tags.version" = "be99d94e2e0dc1f2757497adf3602972f70d86f9" -> "f8d887ec0e6054c8b8039e9b32e926c07b8ea550"
# (2 unchanged elements hidden)
}
~ environment = [
# (7 unchanged elements hidden)
{
name = "DD_SERVICE"
value = "gost"
},
~ {
name = "DD_VERSION"
~ value = "be99d94e2e0dc1f2757497adf3602972f70d86f9" -> "f8d887ec0e6054c8b8039e9b32e926c07b8ea550"
},
{
name = "ENABLE_GRANTS_DIGEST"
value = "false"
},
# (12 unchanged elements hidden)
]
~ image = "ghcr.io/usdigitalresponse/usdr-gost-api:be99d94e2e0dc1f2757497adf3602972f70d86f9@sha256:f38f1240c41d0b7c7f9b1615af0eda627c611c98af0a623f357267488e08a2d6" -> "ghcr.io/usdigitalresponse/usdr-gost-api:f8d887ec0e6054c8b8039e9b32e926c07b8ea550@sha256:68d983846ef8ffcb70bf8ce571a8c0df6da6c74f91eaa6a085b6960f8c89517f"
name = "api"
- systemControls = [] -> null
- volumesFrom = [] -> null
# (9 unchanged elements hidden)
} # forces replacement,
~ {
~ dockerLabels = {
~ "com.datadoghq.tags.version" = "be99d94e2e0dc1f2757497adf3602972f70d86f9" -> "f8d887ec0e6054c8b8039e9b32e926c07b8ea550"
# (2 unchanged elements hidden)
}
~ environment = [
# (3 unchanged elements hidden)
{
name = "DD_SERVICE"
value = "gost"
},
~ {
name = "DD_VERSION"
~ value = "be99d94e2e0dc1f2757497adf3602972f70d86f9" -> "f8d887ec0e6054c8b8039e9b32e926c07b8ea550"
},
{
name = "ECS_FARGATE"
value = "true"
},
]
- mountPoints = [] -> null
name = "datadog"
- portMappings = [] -> null
- systemControls = [] -> null
- volumesFrom = [] -> null
# (6 unchanged elements hidden)
} # forces replacement,
]
)
~ id = "gost-staging-api" -> (known after apply)
~ revision = 178 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- transit_encryption_port = 0 -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
# (1 unchanged block hidden)
}
# module.arpa_audit_report.aws_ecs_service.default will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-arpa_audit_report"
name = "gost-staging-arpa_audit_report"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-arpa_audit_report:147" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# module.arpa_audit_report.aws_ecs_task_definition.consumer must be replaced
+/- resource "aws_ecs_task_definition" "consumer" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-arpa_audit_report:147" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-arpa_audit_report" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "gost-staging-arpa_audit_report" -> (known after apply)
- ipc_mode = "" -> null
- pid_mode = "" -> null
~ revision = 147 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- transit_encryption_port = 0 -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
# (1 unchanged block hidden)
}
# module.arpa_treasury_report.aws_ecs_service.default will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-treasury_report"
name = "gost-staging-treasury_report"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-treasury_report:136" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# module.arpa_treasury_report.aws_ecs_task_definition.consumer must be replaced
+/- resource "aws_ecs_task_definition" "consumer" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-treasury_report:136" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-treasury_report" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "gost-staging-treasury_report" -> (known after apply)
- ipc_mode = "" -> null
- pid_mode = "" -> null
~ revision = 136 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
- volume {
- name = "data" -> null
- efs_volume_configuration {
- file_system_id = "fs-08f95063c1cdbe191" -> null
- root_directory = "/" -> null
- transit_encryption = "ENABLED" -> null
- transit_encryption_port = 0 -> null
- authorization_config {
- access_point_id = "fsap-03bc0296928aade4f" -> null
}
}
}
+ volume {
+ name = "data"
+ efs_volume_configuration {
+ file_system_id = "fs-08f95063c1cdbe191"
+ root_directory = "/"
+ transit_encryption = "ENABLED"
+ authorization_config {
+ access_point_id = "fsap-03bc0296928aade4f"
}
}
}
# (1 unchanged block hidden)
}
# module.consume_grants.aws_ecs_service.default will be updated in-place
~ resource "aws_ecs_service" "default" {
id = "arn:aws:ecs:us-west-2:357150818708:service/gost-staging/gost-staging-consume_grants"
name = "gost-staging-consume_grants"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-consume_grants:163" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# module.consume_grants.aws_ecs_task_definition.consume_grants must be replaced
+/- resource "aws_ecs_task_definition" "consume_grants" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-consume_grants:163" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/gost-staging-consume_grants" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "gost-staging-consume_grants" -> (known after apply)
- ipc_mode = "" -> null
- pid_mode = "" -> null
~ revision = 163 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
# (1 unchanged block hidden)
}
# module.website.aws_s3_object.deploy-config[0] will be updated in-place
~ resource "aws_s3_object" "deploy-config" {
~ content = <<-EOT
window.APP_CONFIG = window.APP_CONFIG || {};
window.APP_CONFIG.apiURLForGOST = 'https://api.staging.grants.usdr.dev/';
window.apiURLForGOST = window.APP_CONFIG.apiURLForGOST; // Legacy
window.APP_CONFIG.DD_RUM_ENABLED = true;
- window.APP_CONFIG.DD_RUM_CONFIG = {"allowedTracingUrls":["https://api.staging.grants.usdr.dev"],"applicationId":"15db471e-2ccb-4d3c-a6bf-99b750d748f5","clientToken":"pub50834fcc1999d53e546519b1a0f03934","defaultPrivacyLevel":"mask","env":"staging","service":"gost","sessionReplaySampleRate":1,"sessionSampleRate":10,"site":"datadoghq.com","trackLongTasks":true,"trackResources":true,"trackUserInteractions":true,"version":"be99d94e2e0dc1f2757497adf3602972f70d86f9"};
+ window.APP_CONFIG.DD_RUM_CONFIG = {"allowedTracingUrls":["https://api.staging.grants.usdr.dev"],"applicationId":"15db471e-2ccb-4d3c-a6bf-99b750d748f5","clientToken":"pub50834fcc1999d53e546519b1a0f03934","defaultPrivacyLevel":"mask","env":"staging","service":"gost","sessionReplaySampleRate":1,"sessionSampleRate":10,"site":"datadoghq.com","trackLongTasks":true,"trackResources":true,"trackUserInteractions":true,"version":"f8d887ec0e6054c8b8039e9b32e926c07b8ea550"};
window.APP_CONFIG.GOOGLE_TAG_ID = 'G-D5DFR7BN0N';
window.APP_CONFIG.featureFlags = {"myProfileEnabled":true,"newGrantsDetailPageEnabled":false,"newTerminologyEnabled":true};
window.APP_CONFIG.overrideFeatureFlag = (flagName, overrideValue) => {
const storageKey = 'featureFlags';
let overrides = {};
try {
overrides = JSON.parse(window.sessionStorage.getItem(storageKey)) || {};
} catch (e) {
console.error(`Error parsing window.sessionStorage.${storageKey} as JSON:`, e);
console.warn(`window.sessionStorage.${storageKey} will be replaced.`);
}
overrides[flagName] = overrideValue;
window.sessionStorage.setItem(storageKey, JSON.stringify(overrides));
console.log('New feature flag overrides in page session:',
window.sessionStorage.getItem(storageKey));
};
EOT
~ etag = "89e1681445ff707cb9de35703745f828" -> "227d7d55b91fe7e972bcd294c72a082d"
id = "/config/deploy-config.js"
tags = {}
~ version_id = "TIhO5Sjs4GUvP3grD.Z_BkJ9ir7e5Jqi" -> (known after apply)
# (10 unchanged attributes hidden)
}
# module.website.aws_s3_object.origin_dist_artifact["arpa_reporter/index.html"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "8026671159f0a16cd10b90ff79ea7fb4" -> "98bd6830e44f09dcf6da78b338782131"
id = "dist/arpa_reporter/index.html"
~ source_hash = "8026671159f0a16cd10b90ff79ea7fb4" -> "98bd6830e44f09dcf6da78b338782131"
tags = {}
~ version_id = "4760JWZnpI41Rw9DTlPRMvRt4hDzJn2Z" -> (known after apply)
# (11 unchanged attributes hidden)
}
# module.website.aws_s3_object.origin_dist_artifact["index.html"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "7383bb19c3d5d33ab4afee4c0e351c9a" -> "e893b701e4036ccdbfb5bf436de2efd6"
id = "dist/index.html"
~ source_hash = "7383bb19c3d5d33ab4afee4c0e351c9a" -> "e893b701e4036ccdbfb5bf436de2efd6"
tags = {}
~ version_id = "YRIRSxY0JmVCIzrOnKQ9Tpb5N0r6jCJu" -> (known after apply)
# (11 unchanged attributes hidden)
}
# module.website.aws_s3_object.origin_dist_artifact["js/111.1e4fca07.js"] will be destroyed
# (because key ["js/111.1e4fca07.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "57aeb29af0bd13e17d23cb236143ddf0" -> null
- force_destroy = false -> null
- id = "dist/js/111.1e4fca07.js" -> null
- key = "dist/js/111.1e4fca07.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/111.1e4fca07.js" -> null
- source_hash = "57aeb29af0bd13e17d23cb236143ddf0" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "0AHwwUJjjTRrwDSwUgFB824w0CIyprDJ" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/111.1e4fca07.js.map"] will be destroyed
# (because key ["js/111.1e4fca07.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "6c01e1460c0f6d0bb323c0a328ee4369" -> null
- force_destroy = false -> null
- id = "dist/js/111.1e4fca07.js.map" -> null
- key = "dist/js/111.1e4fca07.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/111.1e4fca07.js.map" -> null
- source_hash = "6c01e1460c0f6d0bb323c0a328ee4369" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "QxPurXAkPSZ569DlNEU4JLDqo1pnC0ia" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/111.5ede5a13.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "39b06d6b97f6d84869dd044e04c3f776"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/111.5ede5a13.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/111.5ede5a13.js"
+ source_hash = "39b06d6b97f6d84869dd044e04c3f776"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/111.5ede5a13.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "8ecacdc42626de1f5616f0d224cf16bb"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/111.5ede5a13.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/111.5ede5a13.js.map"
+ source_hash = "8ecacdc42626de1f5616f0d224cf16bb"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/207.72726673.js"] will be destroyed
# (because key ["js/207.72726673.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "5525973a304a7ff59cca7e7e1f864c92" -> null
- force_destroy = false -> null
- id = "dist/js/207.72726673.js" -> null
- key = "dist/js/207.72726673.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/207.72726673.js" -> null
- source_hash = "5525973a304a7ff59cca7e7e1f864c92" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "WQUWy99KBpnQDlqgM9UwpSN95XNDyP9P" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/207.72726673.js.map"] will be destroyed
# (because key ["js/207.72726673.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "a7681de6413d1de980457c6e6a034137" -> null
- force_destroy = false -> null
- id = "dist/js/207.72726673.js.map" -> null
- key = "dist/js/207.72726673.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/207.72726673.js.map" -> null
- source_hash = "a7681de6413d1de980457c6e6a034137" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "w4XkXfLxhlQccUIt_1_0axSA8fP2XBL9" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/207.e518d42b.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "fce752f2b7545073ff52287d9d549582"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/207.e518d42b.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/207.e518d42b.js"
+ source_hash = "fce752f2b7545073ff52287d9d549582"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/207.e518d42b.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "e83e84fc61f6c76379141b9c3ba67ce1"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/207.e518d42b.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/207.e518d42b.js.map"
+ source_hash = "e83e84fc61f6c76379141b9c3ba67ce1"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/217.e5cbb2dc.js"] will be destroyed
# (because key ["js/217.e5cbb2dc.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "652b94d836ac9039eda952c0e7721656" -> null
- force_destroy = false -> null
- id = "dist/js/217.e5cbb2dc.js" -> null
- key = "dist/js/217.e5cbb2dc.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/217.e5cbb2dc.js" -> null
- source_hash = "652b94d836ac9039eda952c0e7721656" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "5SqyDRyUEzes0yYNN33fg97CMAdobTfU" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/217.e5cbb2dc.js.map"] will be destroyed
# (because key ["js/217.e5cbb2dc.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "9a8b194dd51e67c48c367922d360d58c" -> null
- force_destroy = false -> null
- id = "dist/js/217.e5cbb2dc.js.map" -> null
- key = "dist/js/217.e5cbb2dc.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/217.e5cbb2dc.js.map" -> null
- source_hash = "9a8b194dd51e67c48c367922d360d58c" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "PfdKVdDp6VspNDt993seenBra.evYyiZ" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/217.ff9b6b3e.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "6c3670849ed47ebc346b7233b95dfd26"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/217.ff9b6b3e.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/217.ff9b6b3e.js"
+ source_hash = "6c3670849ed47ebc346b7233b95dfd26"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/217.ff9b6b3e.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "d1f1272daaf994c38eac3b5ae3def5cc"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/217.ff9b6b3e.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/217.ff9b6b3e.js.map"
+ source_hash = "d1f1272daaf994c38eac3b5ae3def5cc"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/319.01d8c946.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "b4d50cb9e461607a34c8093ed990815b"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/319.01d8c946.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/319.01d8c946.js"
+ source_hash = "b4d50cb9e461607a34c8093ed990815b"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/319.01d8c946.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "fc9cc5d4d465431cd3519cd2fb42d18d"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/319.01d8c946.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/319.01d8c946.js.map"
+ source_hash = "fc9cc5d4d465431cd3519cd2fb42d18d"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/319.b1313d96.js"] will be destroyed
# (because key ["js/319.b1313d96.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "4a7f1ac52f78a27caf50d353aa44d0c4" -> null
- force_destroy = false -> null
- id = "dist/js/319.b1313d96.js" -> null
- key = "dist/js/319.b1313d96.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/319.b1313d96.js" -> null
- source_hash = "4a7f1ac52f78a27caf50d353aa44d0c4" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "k9L2cgk3nQlh9pBX_PlbYnyO7hkcIUwJ" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/319.b1313d96.js.map"] will be destroyed
# (because key ["js/319.b1313d96.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "08efe0a10e9de7fbf1b38d58db209ebc" -> null
- force_destroy = false -> null
- id = "dist/js/319.b1313d96.js.map" -> null
- key = "dist/js/319.b1313d96.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/319.b1313d96.js.map" -> null
- source_hash = "08efe0a10e9de7fbf1b38d58db209ebc" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "89Ngma.EpqmmCtQiRz.fREychY8kPdL9" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/332.78842ec1.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "fb92d7cee7f3969020d63fff5e49abbe"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/332.78842ec1.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/332.78842ec1.js"
+ source_hash = "fb92d7cee7f3969020d63fff5e49abbe"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/332.78842ec1.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "f5bd06908c9b57fc44f54de432a59ed7"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/332.78842ec1.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/332.78842ec1.js.map"
+ source_hash = "f5bd06908c9b57fc44f54de432a59ed7"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/332.7e1d0fc9.js"] will be destroyed
# (because key ["js/332.7e1d0fc9.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "7aea6afa0393f62bdb838f650543fbef" -> null
- force_destroy = false -> null
- id = "dist/js/332.7e1d0fc9.js" -> null
- key = "dist/js/332.7e1d0fc9.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/332.7e1d0fc9.js" -> null
- source_hash = "7aea6afa0393f62bdb838f650543fbef" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "neZ69pLsYRZ07OTEIjZSX0aeQ9GioUBM" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/332.7e1d0fc9.js.map"] will be destroyed
# (because key ["js/332.7e1d0fc9.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "39de4f7af98fb37d970ac4cc60065ae3" -> null
- force_destroy = false -> null
- id = "dist/js/332.7e1d0fc9.js.map" -> null
- key = "dist/js/332.7e1d0fc9.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/332.7e1d0fc9.js.map" -> null
- source_hash = "39de4f7af98fb37d970ac4cc60065ae3" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "IH9gcgf6H0mhx7jn114W8LfrCm0lzSxM" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/362.16cb8272.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "667c79476f9eb153ba7c38abce61325d"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/362.16cb8272.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/362.16cb8272.js"
+ source_hash = "667c79476f9eb153ba7c38abce61325d"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/362.16cb8272.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "56227089d0505176dd9773137667d9b9"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/362.16cb8272.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/362.16cb8272.js.map"
+ source_hash = "56227089d0505176dd9773137667d9b9"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/362.7be5561e.js"] will be destroyed
# (because key ["js/362.7be5561e.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "6cc06578438e2b5c8413bede456de61d" -> null
- force_destroy = false -> null
- id = "dist/js/362.7be5561e.js" -> null
- key = "dist/js/362.7be5561e.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/362.7be5561e.js" -> null
- source_hash = "6cc06578438e2b5c8413bede456de61d" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "TstGtmcO5KuQvV5zMW1KPimhSK4ka7.4" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/362.7be5561e.js.map"] will be destroyed
# (because key ["js/362.7be5561e.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "afe01a157cef2242ea325a1cdee72c84" -> null
- force_destroy = false -> null
- id = "dist/js/362.7be5561e.js.map" -> null
- key = "dist/js/362.7be5561e.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/362.7be5561e.js.map" -> null
- source_hash = "afe01a157cef2242ea325a1cdee72c84" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "Gcculrrhx18XC_veh_DC5NE9bcSGFNTL" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/409.4cd49965.js"] will be destroyed
# (because key ["js/409.4cd49965.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "b7503f4e113a8cf5dd0d5624438fb728" -> null
- force_destroy = false -> null
- id = "dist/js/409.4cd49965.js" -> null
- key = "dist/js/409.4cd49965.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/409.4cd49965.js" -> null
- source_hash = "b7503f4e113a8cf5dd0d5624438fb728" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "Qg_tm2tLmsT3BHUIB4ct77acdG_rvmo1" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/409.4cd49965.js.map"] will be destroyed
# (because key ["js/409.4cd49965.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "e5952dd15816155e4559ec16cea43381" -> null
- force_destroy = false -> null
- id = "dist/js/409.4cd49965.js.map" -> null
- key = "dist/js/409.4cd49965.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/409.4cd49965.js.map" -> null
- source_hash = "e5952dd15816155e4559ec16cea43381" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "uaaUZUyWWeiXHCse1OIsxMCXQKC8gPBZ" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/409.edf71f85.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "31abe823831f6a8cf08ddc3ff2de8984"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/409.edf71f85.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/409.edf71f85.js"
+ source_hash = "31abe823831f6a8cf08ddc3ff2de8984"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/409.edf71f85.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "a5101ccc162fc74f878bcff1c2cc4ae1"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/409.edf71f85.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/409.edf71f85.js.map"
+ source_hash = "a5101ccc162fc74f878bcff1c2cc4ae1"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/553.57500e98.js"] will be destroyed
# (because key ["js/553.57500e98.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "f23ae52e35d2ce034e15e2570c99ecbe" -> null
- force_destroy = false -> null
- id = "dist/js/553.57500e98.js" -> null
- key = "dist/js/553.57500e98.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/553.57500e98.js" -> null
- source_hash = "f23ae52e35d2ce034e15e2570c99ecbe" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "fSfkBaGjLCcm3x6DnNCwEs146nfNHLmz" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/553.57500e98.js.map"] will be destroyed
# (because key ["js/553.57500e98.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "4bdb6a2f9851df0b4bb7ec79fcfbe8ab" -> null
- force_destroy = false -> null
- id = "dist/js/553.57500e98.js.map" -> null
- key = "dist/js/553.57500e98.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/553.57500e98.js.map" -> null
- source_hash = "4bdb6a2f9851df0b4bb7ec79fcfbe8ab" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "qO0oHnZLUjPrk5KD1F71TlPGCh6gFQGA" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/553.8c6b6bce.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "text/javascript"
+ etag = "6a1a1dfafb4705cff64c1a6aa9ea7d59"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/553.8c6b6bce.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/553.8c6b6bce.js"
+ source_hash = "6a1a1dfafb4705cff64c1a6aa9ea7d59"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/553.8c6b6bce.js.map"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = "private"
+ bucket = "gost-staging-origin-357150818708-us-west-2-website"
+ bucket_key_enabled = (known after apply)
+ content_type = "application/json"
+ etag = "3134ace8c0962132b9c0d9424cc7186c"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/js/553.8c6b6bce.js.map"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/553.8c6b6bce.js.map"
+ source_hash = "3134ace8c0962132b9c0d9424cc7186c"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "usdr-gost"
+ "service" = "gost"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# module.website.aws_s3_object.origin_dist_artifact["js/61.ad02d82d.js"] will be destroyed
# (because key ["js/61.ad02d82d.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "187bf7aeee29f8c51bc6db420ee6c6b7" -> null
- force_destroy = false -> null
- id = "dist/js/61.ad02d82d.js" -> null
- key = "dist/js/61.ad02d82d.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/61.ad02d82d.js" -> null
- source_hash = "187bf7aeee29f8c51bc6db420ee6c6b7" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- "service" = "gost"
- "usage" = "workload"
} -> null
- version_id = "jA7.ufnaN58xNS8Sfjg6fFNs_31ny3Y_" -> null
}
# module.website.aws_s3_object.origin_dist_artifact["js/61.ad02d82d.js.map"] will be destroyed
# (because key ["js/61.ad02d82d.js.map"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- acl = "private" -> null
- bucket = "gost-staging-origin-357150818708-us-west-2-website" -> null
- bucket_key_enabled = false -> null
- content_type = "application/json" -> null
- etag = "f24c1265bd0c19a2497c9bf93e0aaed7" -> null
- force_destroy = false -> null
- id = "dist/js/61.ad02d82d.js.map" -> null
- key = "dist/js/61.ad02d82d.js.map" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/usdr-gost/usdr-gost/packages/client/dist/js/61.ad02d82d.js.map" -> null
- source_hash = "f24c1265bd0c19a2497c9bf93e0aaed7" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "usdr-gost"
- ...*[Comment body truncated]* |
packages/server/src/routes/grants.js
Outdated
@@ -348,7 +348,12 @@ router.put('/:grantId/assign/agencies', requireUser, async (req, res) => { | |||
} | |||
|
|||
await db.assignGrantsToAgencies({ grantId, agencyIds, userId: user.id }); | |||
email.sendGrantAssignedEmail({ grantId, agencyIds, userId: user.id }); | |||
try { | |||
email.sendGrantAssignedEmail({ grantId, agencyIds, userId: user.id }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be await email.sendGrantAssignedEmail
to ensure that it waits for the function to complete to catch the error?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, good catch! And that probably also explains why the second test I was trying to write wasn't working... let me see if I can get a test for the 500 response as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ugh, I think the test is unfortunately not worth the effort (unless you have a quick read on how to get it working). I was trying to add something like this to the PUT /api/grants/:grantId/assign/agencies
tests in __tests__/api/grants.test.js
:
it('gracefully returns 500 response for unexpected email errors', async () => {
const emailSpy = sandbox.spy(email, 'sendGrantAssignedNotficationForAgency');
sandbox.stub(email, 'buildGrantDetail').throws();
const response = await fetchApi(`/grants/${assignEndpoint}`, agencies.own, {
...fetchOptions.admin,
method: 'put',
body: JSON.stringify({ agencyIds: [agencies.own] }),
});
expect(response.statusText).to.equal('Internal Server Error');
expect(emailSpy.notCalled).to.equal(true);
});
I believe the issue is that our existing tools for stubbing and throwing don't have access to stub out the method that's getting called, since it's really more of an integration test than a unit test here. (Otherwise, we could use rewire
or sinon
to mock out the function the code is calling.) Anyway, I'm going to move on, but if you have the answer here, I'd love to hear it!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Chiming in to say I think this is okay to merge without testing the 500 scenario explicitly 🙂
Side note...
Just my 2¢, but I'm not entirely convinced the user/client needs to be made aware of the error in this case. If we had a paradigm where this type of thing rolled back the DB change (which would be nice, but definitely out-of-scope), it might be justified in giving the user a prompt to retry the failed operation, but given that the assignment has already occurred, I'm not sure what recourse the user really has when presented with "500 internal server error".
If there's a way to avoid swallowing the error without making it the user's problem, that feels better to me in the context of this particular situation. Better yet, it would be great if there was a more generic way to configure Express so that a request/response loop's unhandled error didn't bubble up to the point of crashing the process.
To be clear, I think this PR is okay to ship as-is; just take this as food-for-thought.
@TylerHendrickson Yeah totally! In general I like to push email sending into a task queue outside of the main API's request-response flow. Emails can be flaky or slow to send, so this gives us retries and keeps the send time from affecting API response latency. In general, if retries don't solve the issue, then there's probably nothing the user can do anyway, so it's not that helpful to surface the error. I could see a broader refactoring of the email machinery to make it easier to catch errors at the right places, attempt retries, and handle it all on a message queue. But obviously that's beyond the scope for this little PR. :) |
@TylerHendrickson had to fix a merge conflict. Please re-approve when you get a chance! |
Ticket #2716
Description
When sending the grant assignment email, issues sending the email can bubble up and cause the node server to crash. Instead, we want to gracefully catch these errors and return a 500 response. Also fixes the proximate cause of the error here, which was a missing description for the grant. Specifically, this PR:
Screenshots / Demo Video
Testing
Automated and Unit Tests
Manual tests for Reviewer
Checklist