@exabugs/dynamodb-client 1.5.1 → 1.5.3

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/server/handler.cjs +10866 -6882
  3. package/dist/server/handler.cjs.map +4 -4
  4. package/dist/server/media/magicBytes.d.ts +25 -0
  5. package/dist/server/media/magicBytes.d.ts.map +1 -0
  6. package/dist/server/media/magicBytes.js +50 -0
  7. package/dist/server/media/magicBytes.js.map +1 -0
  8. package/dist/server/media/media-handler.d.ts +13 -0
  9. package/dist/server/media/media-handler.d.ts.map +1 -0
  10. package/dist/server/media/media-handler.js +143 -0
  11. package/dist/server/media/media-handler.js.map +1 -0
  12. package/dist/server/media/presign.d.ts +9 -0
  13. package/dist/server/media/presign.d.ts.map +1 -0
  14. package/dist/server/media/presign.js +73 -0
  15. package/dist/server/media/presign.js.map +1 -0
  16. package/dist/server/media/process-handler-dlq.d.ts +16 -0
  17. package/dist/server/media/process-handler-dlq.d.ts.map +1 -0
  18. package/dist/server/media/process-handler-dlq.js +52 -0
  19. package/dist/server/media/process-handler-dlq.js.map +1 -0
  20. package/dist/server/media/process-handler.d.ts +12 -0
  21. package/dist/server/media/process-handler.d.ts.map +1 -0
  22. package/dist/server/media/process-handler.js +138 -0
  23. package/dist/server/media/process-handler.js.map +1 -0
  24. package/dist/server/media/sign.d.ts +11 -0
  25. package/dist/server/media/sign.d.ts.map +1 -0
  26. package/dist/server/media/sign.js +49 -0
  27. package/dist/server/media/sign.js.map +1 -0
  28. package/dist/server/media/ssmParams.d.ts +29 -0
  29. package/dist/server/media/ssmParams.d.ts.map +1 -0
  30. package/dist/server/media/ssmParams.js +74 -0
  31. package/dist/server/media/ssmParams.js.map +1 -0
  32. package/dist/server/media/types.d.ts +109 -0
  33. package/dist/server/media/types.d.ts.map +1 -0
  34. package/dist/server/media/types.js +2 -0
  35. package/dist/server/media/types.js.map +1 -0
  36. package/dist/server/media-handler.cjs +57450 -0
  37. package/dist/server/media-handler.cjs.map +7 -0
  38. package/dist/server/media-process-handler-dlq.cjs +36195 -0
  39. package/dist/server/media-process-handler-dlq.cjs.map +7 -0
  40. package/dist/server/media-process-handler.cjs +60568 -0
  41. package/dist/server/media-process-handler.cjs.map +7 -0
  42. package/dist/server/utils/authHandler.d.ts +40 -1
  43. package/dist/server/utils/authHandler.d.ts.map +1 -1
  44. package/dist/server/utils/authHandler.js +14 -33
  45. package/dist/server/utils/authHandler.js.map +1 -1
  46. package/dist/sharp-layer.zip +0 -0
  47. package/package.json +34 -3
  48. package/terraform/main.tf +36 -2
  49. package/terraform/media/README.md +64 -0
  50. package/terraform/media/main.tf +718 -0
  51. package/terraform/media/outputs.tf +66 -0
  52. package/terraform/media/variables.tf +84 -0
  53. package/terraform/modules/parameter-store/main.tf +26 -1
  54. package/terraform/modules/parameter-store/variables.tf +7 -1
  55. package/terraform/outputs.tf +10 -0
  56. package/terraform/variables.tf +6 -0
@@ -0,0 +1,66 @@
1
+ # メディア機能モジュール出力
2
+
3
+ output "bucket_name" {
4
+ description = "メディア用S3バケット名"
5
+ value = aws_s3_bucket.media.bucket
6
+ }
7
+
8
+ output "bucket_arn" {
9
+ description = "メディア用S3バケットARN"
10
+ value = aws_s3_bucket.media.arn
11
+ }
12
+
13
+ output "cloudfront_distribution_id" {
14
+ description = "メディア配信用CloudFront Distribution ID"
15
+ value = aws_cloudfront_distribution.media.id
16
+ }
17
+
18
+ output "cloudfront_domain_name" {
19
+ description = "メディア配信用CloudFrontドメイン名(カスタムドメイン未設定時はこちらを使う)"
20
+ value = aws_cloudfront_distribution.media.domain_name
21
+ }
22
+
23
+ output "base_url" {
24
+ description = "署名付きURL発行時に使う配信ベースURL(カスタムドメイン優先)"
25
+ value = "https://${coalesce(var.domain_name, aws_cloudfront_distribution.media.domain_name)}"
26
+ }
27
+
28
+ output "key_pair_id" {
29
+ description = "CloudFront署名用のKey Pair ID。sign.tsのkeyPairId引数に渡す"
30
+ value = aws_cloudfront_public_key.media.id
31
+ }
32
+
33
+ output "key_group_id" {
34
+ description = "CloudFront Key Group ID"
35
+ value = aws_cloudfront_key_group.media.id
36
+ }
37
+
38
+ output "process_handler_function_name" {
39
+ description = "process-handler Lambda関数名"
40
+ value = aws_lambda_function.process_handler.function_name
41
+ }
42
+
43
+ output "process_handler_function_arn" {
44
+ description = "process-handler Lambda関数ARN"
45
+ value = aws_lambda_function.process_handler.arn
46
+ }
47
+
48
+ output "process_handler_dlq_url" {
49
+ description = "process-handlerの失敗レコードを受け取るSQS DLQのURL"
50
+ value = aws_sqs_queue.process_handler_dlq.url
51
+ }
52
+
53
+ output "media_handler_function_name" {
54
+ description = "media-handler Lambda関数名"
55
+ value = aws_lambda_function.media_handler.function_name
56
+ }
57
+
58
+ output "media_handler_function_arn" {
59
+ description = "media-handler Lambda関数ARN"
60
+ value = aws_lambda_function.media_handler.arn
61
+ }
62
+
63
+ output "sharp_layer_arn" {
64
+ description = "sharp Lambda LayerのARN"
65
+ value = aws_lambda_layer_version.sharp.arn
66
+ }
@@ -0,0 +1,84 @@
1
+ # メディア機能モジュール変数定義
2
+
3
+ variable "project_name" {
4
+ description = "プロジェクト名"
5
+ type = string
6
+ }
7
+
8
+ variable "environment" {
9
+ description = "環境識別子(dev, stg, prd)"
10
+ type = string
11
+ }
12
+
13
+ variable "region" {
14
+ description = "AWSリージョン"
15
+ type = string
16
+ }
17
+
18
+ variable "table_name" {
19
+ description = "呼び出し側の既存DynamoDBテーブル名(mediaリソースを相乗りさせる)"
20
+ type = string
21
+ }
22
+
23
+ variable "table_arn" {
24
+ description = "呼び出し側の既存DynamoDBテーブルARN"
25
+ type = string
26
+ }
27
+
28
+ variable "image_cache_ttl_days" {
29
+ description = "cache/{fileId}/{width}(オンデマンドリサイズ結果)のS3 Lifecycleによる自動削除までの日数"
30
+ type = number
31
+ default = 30
32
+ }
33
+
34
+ variable "signing_public_key_param" {
35
+ description = "CloudFront署名用の公開鍵(PEM形式)を保持するSSM Parameter名。値そのものは呼び出し側が別途登録する"
36
+ type = string
37
+ }
38
+
39
+ variable "image_policy_param" {
40
+ description = "image policy(masterMaxDimension・allowedContentTypes・maxUploadSize)のJSONを保持するSSM Parameter名。値そのものは呼び出し側が別途登録する"
41
+ type = string
42
+ }
43
+
44
+ variable "log_retention_days" {
45
+ description = "CloudWatch Logsの保持期間(日数)"
46
+ type = number
47
+ default = 7
48
+ }
49
+
50
+ variable "process_handler_timeout" {
51
+ description = "process-handler Lambdaのタイムアウト(秒)"
52
+ type = number
53
+ default = 60
54
+ }
55
+
56
+ variable "process_handler_memory_size" {
57
+ description = "process-handler Lambdaのメモリサイズ(MB)"
58
+ type = number
59
+ default = 1024
60
+ }
61
+
62
+ variable "media_handler_memory_size" {
63
+ description = "media-handler Lambdaのメモリサイズ(MB)"
64
+ type = number
65
+ default = 1024
66
+ }
67
+
68
+ variable "domain_name" {
69
+ description = "配信用CloudFrontのカスタムドメイン名(省略時はCloudFrontのデフォルトドメインを使う)"
70
+ type = string
71
+ default = null
72
+ }
73
+
74
+ variable "acm_certificate_arn" {
75
+ description = "domain_name指定時に使うACM証明書ARN(us-east-1リージョンのものである必要がある)"
76
+ type = string
77
+ default = null
78
+ }
79
+
80
+ variable "route53_zone_id" {
81
+ description = "domain_name指定時にAliasレコードを作成するRoute53 Hosted Zone ID(省略時はDNSレコードを作成しない)"
82
+ type = string
83
+ default = null
84
+ }
@@ -9,6 +9,11 @@ locals {
9
9
  }
10
10
 
11
11
  # DynamoDB Client API URL (外部参照用)
12
+ # NONE認証。ブラウザ・Admin UI(Cognito JWT)向け。
13
+ # サーバー間呼び出し・運用スクリプト(IAM署名)はこちらを使わないこと
14
+ # (IAM認証バイパス脆弱性の修正でNONE URLからIAM認証の分岐が削除された。
15
+ # ADR: dynamodb-client/docs/adr/0001-fix-iam-auth-bypass.md)。
16
+ # 下のinfra_dynamodb_client_api_iam_urlを使う。
12
17
  resource "aws_ssm_parameter" "infra_dynamodb_client_api_url" {
13
18
  name = "/${var.project_name}/${var.environment}/infra/dynamodb-client-api-url"
14
19
  type = local.parameter_type
@@ -16,7 +21,27 @@ resource "aws_ssm_parameter" "infra_dynamodb_client_api_url" {
16
21
  value = var.records_function_url
17
22
  overwrite = true
18
23
 
19
- description = "DynamoDB Client API URL (for Admin UI and internal Lambdas)"
24
+ description = "DynamoDB Client API URL, NONE auth (for Admin UI / Cognito JWT clients only)"
25
+
26
+ tags = {
27
+ Environment = var.environment
28
+ ManagedBy = "terraform"
29
+ Category = "infra-info"
30
+ }
31
+ }
32
+
33
+ # DynamoDB Client API URL, AWS_IAM認証版 (外部参照用)
34
+ # サーバー間呼び出し・運用スクリプト(IAM署名クライアント)向け
35
+ resource "aws_ssm_parameter" "infra_dynamodb_client_api_iam_url" {
36
+ count = var.records_iam_function_url != null ? 1 : 0
37
+
38
+ name = "/${var.project_name}/${var.environment}/infra/dynamodb-client-api-iam-url"
39
+ type = local.parameter_type
40
+ tier = local.parameter_tier
41
+ value = var.records_iam_function_url
42
+ overwrite = true
43
+
44
+ description = "DynamoDB Client API URL, AWS_IAM auth (for server-to-server callers and operational scripts)"
20
45
 
21
46
  tags = {
22
47
  Environment = var.environment
@@ -16,10 +16,16 @@ variable "region" {
16
16
  }
17
17
 
18
18
  variable "records_function_url" {
19
- description = "Records Lambda Function URL"
19
+ description = "Records Lambda Function URL(NONE認証。ブラウザ・Admin UI向け)"
20
20
  type = string
21
21
  }
22
22
 
23
+ variable "records_iam_function_url" {
24
+ description = "Records Lambda の AWS_IAM認証Function URL(サーバー間呼び出し・運用スクリプト向け)。省略時はパラメータを作成しない"
25
+ type = string
26
+ default = null
27
+ }
28
+
23
29
  variable "records_function_arn" {
24
30
  description = "Records Lambda Function ARN"
25
31
  type = string
@@ -49,3 +49,13 @@ output "function_url_id" {
49
49
  description = "Lambda Function URL ID"
50
50
  value = aws_lambda_function_url.records.url_id
51
51
  }
52
+
53
+ output "iam_function_url" {
54
+ description = "AWS_IAM認証のLambda Function URL(サーバー間呼び出し専用)"
55
+ value = aws_lambda_function_url.records_iam.function_url
56
+ }
57
+
58
+ output "iam_alias_arn" {
59
+ description = "AWS_IAM認証用エイリアスのARN。呼び出し元IAMロールのlambda:InvokeFunctionUrl権限のResourceに指定する"
60
+ value = aws_lambda_alias.iam.arn
61
+ }
@@ -30,6 +30,12 @@ variable "cognito_user_pool_id" {
30
30
  type = string
31
31
  }
32
32
 
33
+ variable "cognito_client_id" {
34
+ description = "Cognito App Client ID(JWTのaud検証に使用。未指定の場合はaud検証をスキップする)"
35
+ type = string
36
+ default = null
37
+ }
38
+
33
39
 
34
40
 
35
41
  variable "log_retention_days" {