File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -185,6 +185,14 @@ resource "aws_ecs_task_definition" "node_api_task" {
185185 name = " DAM_RST_IMAGE_COLLECTION_ID"
186186 value = var.dam_config.dam_rst_image_collection_id
187187 },
188+ {
189+ name = " ESTABLISHMENT_ORDER_DOCS_BUCKET"
190+ value = aws_s3_bucket.establishment_order_docs.id
191+ },
192+ {
193+ name = " AWS_REGION"
194+ value = var.aws_region
195+ }
188196 ]
189197 portMappings = [
190198 {
Original file line number Diff line number Diff line change @@ -93,6 +93,31 @@ resource "aws_iam_role_policy" "cloudwatch_metrics" {
9393 })
9494}
9595
96+ # IAM policy for S3 access to Establishment Order documents
97+ resource "aws_iam_role_policy" "s3_establishment_order_docs" {
98+ name = " ${ var . app_name } _s3_establishment_order_docs"
99+ role = aws_iam_role. app_container_role . id
100+
101+ policy = jsonencode ({
102+ Version = " 2012-10-17"
103+ Statement = [
104+ {
105+ Effect = " Allow"
106+ Action = [
107+ " s3:GetObject" ,
108+ " s3:PutObject" ,
109+ " s3:DeleteObject" ,
110+ " s3:ListBucket"
111+ ]
112+ Resource = [
113+ " arn:aws:s3:::rst-lza-establishment-order-docs-${ var . target_env } " ,
114+ " arn:aws:s3:::rst-lza-establishment-order-docs-${ var . target_env } /*"
115+ ]
116+ }
117+ ]
118+ })
119+ }
120+
96121resource "aws_iam_role_policy" "app_container_cwlogs" {
97122 name = " ${ var . app_name } _container_cwlogs"
98123 role = aws_iam_role. app_container_role . id
Original file line number Diff line number Diff line change 1+ # S3 bucket for Establishment Order documents
2+ resource "aws_s3_bucket" "establishment_order_docs" {
3+ bucket = " rst-lza-establishment-order-docs-${ var . target_env } "
4+ }
5+
6+ # Enable versioning for the bucket
7+ resource "aws_s3_bucket_versioning" "establishment_order_docs" {
8+ bucket = aws_s3_bucket. establishment_order_docs . id
9+
10+ versioning_configuration {
11+ status = " Enabled"
12+ }
13+ }
14+
15+ # Enable encryption for the bucket
16+ resource "aws_s3_bucket_server_side_encryption_configuration" "establishment_order_docs" {
17+ bucket = aws_s3_bucket. establishment_order_docs . id
18+
19+ rule {
20+ apply_server_side_encryption_by_default {
21+ sse_algorithm = " AES256"
22+ }
23+ }
24+ }
25+
26+ # Block public access
27+ resource "aws_s3_bucket_public_access_block" "establishment_order_docs" {
28+ bucket = aws_s3_bucket. establishment_order_docs . id
29+
30+ block_public_acls = true
31+ block_public_policy = true
32+ ignore_public_acls = true
33+ restrict_public_buckets = true
34+ }
35+
36+ # Lifecycle policy - delete old versions after 30 days
37+ resource "aws_s3_bucket_lifecycle_configuration" "establishment_order_docs" {
38+ bucket = aws_s3_bucket. establishment_order_docs . id
39+
40+ rule {
41+ id = " expire-old-versions"
42+ status = " Enabled"
43+
44+ filter {
45+ prefix = " "
46+ }
47+
48+ noncurrent_version_expiration {
49+ noncurrent_days = 30
50+ }
51+ }
52+ }
Original file line number Diff line number Diff line change 1+ create table if not exists rst .recreation_establishment_order_docs
2+ (
3+ s3_key varchar primary key ,
4+ rec_resource_id varchar (10 ) references rst .recreation_resource ,
5+ title varchar ,
6+ file_size bigint ,
7+ extension varchar
8+ );
9+
10+ select upsert_timestamp_columns(' rst' , ' recreation_establishment_order_docs' );
11+
12+ select setup_temporal_table(' rst' , ' recreation_establishment_order_docs' );
13+
14+ comment on column rst.recreation_establishment_order_docs.s3_key is ' S3 object key (path) for the establishment order document' ;
15+ comment on column rst.recreation_establishment_order_docs.rec_resource_id is ' Recreation Resource ID' ;
16+ comment on column rst.recreation_establishment_order_docs.title is ' Title of the establishment order document' ;
17+ comment on column rst.recreation_establishment_order_docs.file_size is ' File size in bytes' ;
18+ comment on column rst.recreation_establishment_order_docs.extension is ' File extension (e.g., pdf)' ;
19+
20+ create index if not exists idx_recreation_establishment_order_docs_rec_resource_id
21+ on rst .recreation_establishment_order_docs (rec_resource_id);
You can’t perform that action at this time.
0 commit comments