@exabugs/dynamodb-client 1.8.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +1 -0
- package/dist/client/FindCursor.d.ts +11 -6
- package/dist/client/FindCursor.d.ts.map +1 -1
- package/dist/client/FindCursor.js +30 -11
- package/dist/client/FindCursor.js.map +1 -1
- package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.d.ts.map +1 -1
- package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.js +5 -4
- package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.js.map +1 -1
- package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.d.ts.map +1 -1
- package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.js +5 -4
- package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.js.map +1 -1
- package/dist/integrations/react-admin/components/ReferenceManyToMany/useGetListAll.d.ts +19 -0
- package/dist/integrations/react-admin/components/ReferenceManyToMany/useGetListAll.d.ts.map +1 -0
- package/dist/integrations/react-admin/components/ReferenceManyToMany/useGetListAll.js +36 -0
- package/dist/integrations/react-admin/components/ReferenceManyToMany/useGetListAll.js.map +1 -0
- package/dist/integrations/react-admin/dataProvider.d.ts +15 -1
- package/dist/integrations/react-admin/dataProvider.d.ts.map +1 -1
- package/dist/integrations/react-admin/dataProvider.js +61 -4
- package/dist/integrations/react-admin/dataProvider.js.map +1 -1
- package/dist/integrations/react-admin/index.d.ts +1 -0
- package/dist/integrations/react-admin/index.d.ts.map +1 -1
- package/dist/integrations/react-admin/index.js.map +1 -1
- package/dist/server/handler.cjs +683 -499
- package/dist/server/handler.cjs.map +4 -4
- package/dist/server/media-handler.cjs +2 -2
- package/dist/server/media-process-handler-dlq.cjs +544 -344
- package/dist/server/media-process-handler-dlq.cjs.map +4 -4
- package/dist/server/media-process-handler.cjs +543 -343
- package/dist/server/media-process-handler.cjs.map +4 -4
- package/dist/server/operations/deleteMany.d.ts.map +1 -1
- package/dist/server/operations/deleteMany.js +15 -30
- package/dist/server/operations/deleteMany.js.map +1 -1
- package/dist/server/operations/deleteOne.d.ts.map +1 -1
- package/dist/server/operations/deleteOne.js +7 -4
- package/dist/server/operations/deleteOne.js.map +1 -1
- package/dist/server/operations/find/idQuery.d.ts.map +1 -1
- package/dist/server/operations/find/idQuery.js +23 -9
- package/dist/server/operations/find/idQuery.js.map +1 -1
- package/dist/server/operations/find/nearQuery.d.ts.map +1 -1
- package/dist/server/operations/find/nearQuery.js +41 -40
- package/dist/server/operations/find/nearQuery.js.map +1 -1
- package/dist/server/operations/find/shadowQuery.d.ts +7 -0
- package/dist/server/operations/find/shadowQuery.d.ts.map +1 -1
- package/dist/server/operations/find/shadowQuery.js +34 -42
- package/dist/server/operations/find/shadowQuery.js.map +1 -1
- package/dist/server/operations/findAll.d.ts +8 -0
- package/dist/server/operations/findAll.d.ts.map +1 -0
- package/dist/server/operations/findAll.js +46 -0
- package/dist/server/operations/findAll.js.map +1 -0
- package/dist/server/operations/findMany.d.ts.map +1 -1
- package/dist/server/operations/findMany.js +9 -26
- package/dist/server/operations/findMany.js.map +1 -1
- package/dist/server/operations/findManyReference.d.ts.map +1 -1
- package/dist/server/operations/findManyReference.js +4 -14
- package/dist/server/operations/findManyReference.js.map +1 -1
- package/dist/server/operations/parameterConverter.d.ts.map +1 -1
- package/dist/server/operations/parameterConverter.js +16 -8
- package/dist/server/operations/parameterConverter.js.map +1 -1
- package/dist/server/operations/updateMany.d.ts.map +1 -1
- package/dist/server/operations/updateMany.js +15 -30
- package/dist/server/operations/updateMany.js.map +1 -1
- package/dist/server/operations/updateOne.d.ts.map +1 -1
- package/dist/server/operations/updateOne.js +8 -6
- package/dist/server/operations/updateOne.js.map +1 -1
- package/dist/server/utils/batchGet.d.ts +21 -0
- package/dist/server/utils/batchGet.d.ts.map +1 -0
- package/dist/server/utils/batchGet.js +73 -0
- package/dist/server/utils/batchGet.js.map +1 -0
- package/dist/server/utils/scanWarning.d.ts +30 -0
- package/dist/server/utils/scanWarning.d.ts.map +1 -0
- package/dist/server/utils/scanWarning.js +63 -0
- package/dist/server/utils/scanWarning.js.map +1 -0
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/shared/utils/index.d.ts.map +1 -1
- package/dist/shared/utils/index.js +1 -0
- package/dist/shared/utils/index.js.map +1 -1
- package/dist/shared/utils/scanSort.d.ts +16 -0
- package/dist/shared/utils/scanSort.d.ts.map +1 -0
- package/dist/shared/utils/scanSort.js +33 -0
- package/dist/shared/utils/scanSort.js.map +1 -0
- package/dist/sharp-layer.zip +0 -0
- package/docs/README.md +286 -0
- package/docs/SCAN_WARNING.md +81 -0
- package/package.json +2 -1
- package/terraform/README.md +8 -6
- package/terraform/main.tf +40 -1
- package/terraform/outputs.tf +13 -0
- package/terraform/variables.tf +17 -0
package/terraform/README.md
CHANGED
|
@@ -82,12 +82,14 @@ module "lambda_records" {
|
|
|
82
82
|
|
|
83
83
|
### オプション変数
|
|
84
84
|
|
|
85
|
-
| 変数名
|
|
86
|
-
|
|
|
87
|
-
| `log_retention_days`
|
|
88
|
-
| `log_level`
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
85
|
+
| 変数名 | 型 | デフォルト値 | 説明 |
|
|
86
|
+
| ---------------------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------ |
|
|
87
|
+
| `log_retention_days` | number | 7 | CloudWatch Logsの保持期間(日) |
|
|
88
|
+
| `log_level` | string | "info" | ログレベル(debug/info/warn/error) |
|
|
89
|
+
| `scan_warn_threshold` | number | 5000 | 疎な検索(SPARSE_SCAN)の警告を出す閾値(1リクエストで読む件数)。打ち切りはしない。docs/SCAN_WARNING.md |
|
|
90
|
+
| `scan_warning_alarm_actions` | list(string) | [] | SPARSE_SCAN アラームの通知先(SNS トピック ARN)。空だと誰にも通知されない |
|
|
91
|
+
| `lambda_timeout` | number | 900 | Lambda関数のタイムアウト(秒) |
|
|
92
|
+
| `lambda_memory` | number | 512 | Lambda関数のメモリサイズ(MB) |
|
|
91
93
|
|
|
92
94
|
## 出力
|
|
93
95
|
|
package/terraform/main.tf
CHANGED
|
@@ -80,6 +80,43 @@ resource "aws_cloudwatch_log_group" "lambda_records" {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
# 疎な検索(SPARSE_SCAN)の警告を検知する
|
|
84
|
+
# Lambda は、1リクエストで読んだ件数が SCAN_WARN_THRESHOLD を超えると event=SPARSE_SCAN の警告ログを出す。
|
|
85
|
+
# 結果を壊さないため検索は打ち切らない。警告に気づいて、インデックス・スキーマ・ロジックの
|
|
86
|
+
# 見直しに着手できるよう、メトリクスとアラームにする(対応手順: docs/SCAN_WARNING.md)
|
|
87
|
+
resource "aws_cloudwatch_log_metric_filter" "sparse_scan" {
|
|
88
|
+
name = "${var.project_name}-${var.environment}-records-sparse-scan"
|
|
89
|
+
log_group_name = aws_cloudwatch_log_group.lambda_records.name
|
|
90
|
+
pattern = "{ $.event = \"SPARSE_SCAN\" }"
|
|
91
|
+
|
|
92
|
+
metric_transformation {
|
|
93
|
+
name = "SparseScanCount"
|
|
94
|
+
namespace = "${var.project_name}/${var.environment}/Records"
|
|
95
|
+
value = "1"
|
|
96
|
+
default_value = "0"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
resource "aws_cloudwatch_metric_alarm" "sparse_scan" {
|
|
101
|
+
alarm_name = "${var.project_name}-${var.environment}-records-sparse-scan"
|
|
102
|
+
alarm_description = "疎な検索(SPARSE_SCAN)の警告が出ています。ログの actions に従って、インデックス・スキーマ・ロジックを見直してください(docs/SCAN_WARNING.md)"
|
|
103
|
+
namespace = aws_cloudwatch_log_metric_filter.sparse_scan.metric_transformation[0].namespace
|
|
104
|
+
metric_name = aws_cloudwatch_log_metric_filter.sparse_scan.metric_transformation[0].name
|
|
105
|
+
statistic = "Sum"
|
|
106
|
+
period = 300
|
|
107
|
+
evaluation_periods = 1
|
|
108
|
+
threshold = 1
|
|
109
|
+
comparison_operator = "GreaterThanOrEqualToThreshold"
|
|
110
|
+
treat_missing_data = "notBreaching"
|
|
111
|
+
|
|
112
|
+
alarm_actions = var.scan_warning_alarm_actions
|
|
113
|
+
ok_actions = var.scan_warning_alarm_actions
|
|
114
|
+
|
|
115
|
+
tags = {
|
|
116
|
+
Name = "${var.project_name}-${var.environment}-records-sparse-scan"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
83
120
|
# Lambda関数のZIPファイルを作成
|
|
84
121
|
data "archive_file" "lambda_records" {
|
|
85
122
|
type = "zip"
|
|
@@ -118,6 +155,8 @@ resource "aws_lambda_function" "records" {
|
|
|
118
155
|
COGNITO_USER_POOL_ID = var.cognito_user_pool_id
|
|
119
156
|
COGNITO_CLIENT_ID = var.cognito_client_id
|
|
120
157
|
LOG_LEVEL = var.log_level
|
|
158
|
+
# 疎な検索(SPARSE_SCAN)の警告閾値(1リクエストで読む件数)
|
|
159
|
+
SCAN_WARN_THRESHOLD = var.scan_warn_threshold
|
|
121
160
|
# シャドウ設定(環境変数ベース)
|
|
122
161
|
SHADOW_CREATED_AT_FIELD = var.shadow_created_at_field
|
|
123
162
|
SHADOW_UPDATED_AT_FIELD = var.shadow_updated_at_field
|
|
@@ -215,7 +254,7 @@ module "parameter_store" {
|
|
|
215
254
|
records_iam_function_url = aws_lambda_function_url.records_iam.function_url
|
|
216
255
|
# IAM URL は常に同じ apply で作るため true を明示する(未確定の値の有無で count を決めない)
|
|
217
256
|
create_records_iam_url_parameter = true
|
|
218
|
-
records_function_arn
|
|
257
|
+
records_function_arn = aws_lambda_function.records.arn
|
|
219
258
|
|
|
220
259
|
# Cognito設定
|
|
221
260
|
cognito_user_pool_id = var.cognito_user_pool_id
|
package/terraform/outputs.tf
CHANGED
|
@@ -59,3 +59,16 @@ output "iam_alias_arn" {
|
|
|
59
59
|
description = "AWS_IAM認証用エイリアスのARN。呼び出し元IAMロールのlambda:InvokeFunctionUrl権限のResourceに指定する"
|
|
60
60
|
value = aws_lambda_alias.iam.arn
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
output "sparse_scan_alarm_name" {
|
|
64
|
+
description = "疎な検索(SPARSE_SCAN)の CloudWatch アラーム名"
|
|
65
|
+
value = aws_cloudwatch_metric_alarm.sparse_scan.alarm_name
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
output "sparse_scan_metric" {
|
|
69
|
+
description = "疎な検索(SPARSE_SCAN)のメトリクス(namespace / name)"
|
|
70
|
+
value = {
|
|
71
|
+
namespace = aws_cloudwatch_log_metric_filter.sparse_scan.metric_transformation[0].namespace
|
|
72
|
+
name = aws_cloudwatch_log_metric_filter.sparse_scan.metric_transformation[0].name
|
|
73
|
+
}
|
|
74
|
+
}
|
package/terraform/variables.tf
CHANGED
|
@@ -55,6 +55,23 @@ variable "log_level" {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
variable "scan_warn_threshold" {
|
|
59
|
+
description = "疎な検索(SPARSE_SCAN)の警告を出す閾値(1リクエストで読むレコード件数)。超えても検索は打ち切らず、警告のみ記録する"
|
|
60
|
+
type = number
|
|
61
|
+
default = 5000
|
|
62
|
+
|
|
63
|
+
validation {
|
|
64
|
+
condition = var.scan_warn_threshold >= 1 && floor(var.scan_warn_threshold) == var.scan_warn_threshold
|
|
65
|
+
error_message = "scan_warn_threshold は 1 以上の整数である必要があります。"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
variable "scan_warning_alarm_actions" {
|
|
70
|
+
description = "SPARSE_SCAN アラームの通知先(SNS トピック ARN の配列)。空ならアラーム状態の記録のみ"
|
|
71
|
+
type = list(string)
|
|
72
|
+
default = []
|
|
73
|
+
}
|
|
74
|
+
|
|
58
75
|
# シャドウ設定(環境変数ベース)
|
|
59
76
|
variable "shadow_created_at_field" {
|
|
60
77
|
description = "作成日時フィールド名"
|