@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.
- package/CHANGELOG.md +32 -0
- package/dist/server/handler.cjs +10866 -6882
- package/dist/server/handler.cjs.map +4 -4
- package/dist/server/media/magicBytes.d.ts +25 -0
- package/dist/server/media/magicBytes.d.ts.map +1 -0
- package/dist/server/media/magicBytes.js +50 -0
- package/dist/server/media/magicBytes.js.map +1 -0
- package/dist/server/media/media-handler.d.ts +13 -0
- package/dist/server/media/media-handler.d.ts.map +1 -0
- package/dist/server/media/media-handler.js +143 -0
- package/dist/server/media/media-handler.js.map +1 -0
- package/dist/server/media/presign.d.ts +9 -0
- package/dist/server/media/presign.d.ts.map +1 -0
- package/dist/server/media/presign.js +73 -0
- package/dist/server/media/presign.js.map +1 -0
- package/dist/server/media/process-handler-dlq.d.ts +16 -0
- package/dist/server/media/process-handler-dlq.d.ts.map +1 -0
- package/dist/server/media/process-handler-dlq.js +52 -0
- package/dist/server/media/process-handler-dlq.js.map +1 -0
- package/dist/server/media/process-handler.d.ts +12 -0
- package/dist/server/media/process-handler.d.ts.map +1 -0
- package/dist/server/media/process-handler.js +138 -0
- package/dist/server/media/process-handler.js.map +1 -0
- package/dist/server/media/sign.d.ts +11 -0
- package/dist/server/media/sign.d.ts.map +1 -0
- package/dist/server/media/sign.js +49 -0
- package/dist/server/media/sign.js.map +1 -0
- package/dist/server/media/ssmParams.d.ts +29 -0
- package/dist/server/media/ssmParams.d.ts.map +1 -0
- package/dist/server/media/ssmParams.js +74 -0
- package/dist/server/media/ssmParams.js.map +1 -0
- package/dist/server/media/types.d.ts +109 -0
- package/dist/server/media/types.d.ts.map +1 -0
- package/dist/server/media/types.js +2 -0
- package/dist/server/media/types.js.map +1 -0
- package/dist/server/media-handler.cjs +57450 -0
- package/dist/server/media-handler.cjs.map +7 -0
- package/dist/server/media-process-handler-dlq.cjs +36195 -0
- package/dist/server/media-process-handler-dlq.cjs.map +7 -0
- package/dist/server/media-process-handler.cjs +60568 -0
- package/dist/server/media-process-handler.cjs.map +7 -0
- package/dist/server/utils/authHandler.d.ts +40 -1
- package/dist/server/utils/authHandler.d.ts.map +1 -1
- package/dist/server/utils/authHandler.js +14 -33
- package/dist/server/utils/authHandler.js.map +1 -1
- package/dist/sharp-layer.zip +0 -0
- package/package.json +34 -3
- package/terraform/main.tf +36 -2
- package/terraform/media/README.md +64 -0
- package/terraform/media/main.tf +718 -0
- package/terraform/media/outputs.tf +66 -0
- package/terraform/media/variables.tf +84 -0
- package/terraform/modules/parameter-store/main.tf +26 -1
- package/terraform/modules/parameter-store/variables.tf +7 -1
- package/terraform/outputs.tf +10 -0
- 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
|
|
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
|
package/terraform/outputs.tf
CHANGED
|
@@ -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
|
+
}
|
package/terraform/variables.tf
CHANGED
|
@@ -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" {
|