Skip to content

Commit 479f817

Browse files
authored
Update magenx.tf
1 parent a9a7108 commit 479f817

File tree

1 file changed

+72
-51
lines changed

1 file changed

+72
-51
lines changed

magenx.tf

Lines changed: 72 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -643,59 +643,78 @@ resource "aws_s3_bucket" "this" {
643643
}
644644
}
645645
# # ---------------------------------------------------------------------------------------------------------------------#
646-
# Create policy for CloudFront and EC2 to limit S3 media bucket access
646+
# Create IAM user for S3 bucket
647+
# # ---------------------------------------------------------------------------------------------------------------------#
648+
resource "aws_iam_user" "s3" {
649+
name = "${var.app["brand"]}-s3-media-production"
650+
tags = {
651+
Name = "${var.app["brand"]}-s3-media-production"
652+
}
653+
}
654+
655+
resource "aws_iam_access_key" "s3" {
656+
user = aws_iam_user.s3.name
657+
}
658+
# # ---------------------------------------------------------------------------------------------------------------------#
659+
# Create policy for CloudFront and S3 user to limit S3 media bucket access
647660
# # ---------------------------------------------------------------------------------------------------------------------#
648661
resource "aws_s3_bucket_policy" "media" {
649-
bucket = aws_s3_bucket.this["media"].id
650-
policy = jsonencode(
651-
{
652-
Id = "PolicyForMediaStorageAccess"
653-
Statement = [
654-
{
655-
Action = "s3:GetObject"
656-
Effect = "Allow"
657-
Principal = {
658-
AWS = aws_cloudfront_origin_access_identity.this.iam_arn
659-
}
660-
Resource = [
661-
"${aws_s3_bucket.this["media"].arn}/*.jpg",
662-
"${aws_s3_bucket.this["media"].arn}/*.jpeg",
663-
"${aws_s3_bucket.this["media"].arn}/*.png",
664-
"${aws_s3_bucket.this["media"].arn}/*.gif",
665-
"${aws_s3_bucket.this["media"].arn}/*.webp"
666-
]
667-
},
668-
{
669-
Action = [
670-
"s3:PutObject",
671-
"s3:GetObject",
672-
"s3:DeleteObject",
673-
"s3:GetObjectAcl"
674-
],
675-
Effect = "Allow"
676-
Principal = {
677-
AWS = [ aws_iam_role.ec2["admin"].arn ]
678-
}
679-
Resource = [
680-
"${aws_s3_bucket.this["media"].arn}",
681-
"${aws_s3_bucket.this["media"].arn}/*"
682-
]
683-
},
684-
{
685-
Action = [
686-
"s3:GetBucketLocation",
687-
"s3:ListBucket"
688-
],
689-
Effect = "Allow"
690-
Principal = {
691-
AWS = [ aws_iam_role.ec2["admin"].arn ]
692-
}
693-
Resource = "${aws_s3_bucket.this["media"].arn}"
694-
},
695-
]
696-
Version = "2012-10-17"
697-
}
698-
)
662+
bucket = aws_s3_bucket.this["media"].id
663+
policy = jsonencode({
664+
Id = "PolicyForMediaStorageAccess"
665+
Statement = [
666+
{
667+
Action = "s3:GetObject"
668+
Effect = "Allow"
669+
Principal = {
670+
AWS = aws_cloudfront_origin_access_identity.this.iam_arn
671+
}
672+
Resource = [
673+
"${aws_s3_bucket.this["media "].arn}/*.jpg",
674+
"${aws_s3_bucket.this["media "].arn}/*.jpeg",
675+
"${aws_s3_bucket.this["media "].arn}/*.png",
676+
"${aws_s3_bucket.this["media "].arn}/*.gif",
677+
"${aws_s3_bucket.this["media "].arn}/*.webp"
678+
]
679+
},
680+
{
681+
Action = ["s3:PutObject"],
682+
Effect = "Allow"
683+
Principal = {
684+
AWS = [ aws_iam_user.s3.arn ]
685+
}
686+
Resource = [
687+
"${aws_s3_bucket.this["media "].arn}",
688+
"${aws_s3_bucket.this["media "].arn}/*"
689+
],
690+
Condition = {
691+
test = "StringEquals"
692+
variable = "aws:SourceVpc"
693+
values = [ aws_vpc.this.id ]
694+
}
695+
},
696+
{
697+
Action = ["s3:GetObject", "s3:GetObjectAcl"],
698+
Effect = "Allow"
699+
Principal = {
700+
AWS = [ aws_iam_user.s3.arn ]
701+
}
702+
Resource = [
703+
"${aws_s3_bucket.this["media "].arn}",
704+
"${aws_s3_bucket.this["media "].arn}/*"
705+
]
706+
},
707+
{
708+
Action = ["s3:GetBucketLocation", "s3:ListBucket"],
709+
Effect = "Allow"
710+
Principal = {
711+
AWS = [ aws_iam_user.s3.arn ]
712+
}
713+
Resource = "${aws_s3_bucket.this["media "].arn}"
714+
},
715+
]
716+
Version = "2012-10-17"
717+
})
699718
}
700719
# # ---------------------------------------------------------------------------------------------------------------------#
701720
# Create S3 bucket policy for ALB to write access logs
@@ -1829,6 +1848,8 @@ mainSteps:
18291848
su ${var.app["brand"]} -s /bin/bash -c "bin/magento setup:config:set --remote-storage-driver=aws-s3 \
18301849
--remote-storage-bucket=${aws_s3_bucket.this["media"].bucket} \
18311850
--remote-storage-region=${data.aws_region.current.name} \
1851+
--remote-storage-key=${aws_iam_access_key.s3.id} \
1852+
--remote-storage-secret="${aws_iam_access_key.s3.secret}" \
18321853
-n"
18331854
## sync to s3 remote storage
18341855
su ${var.app["brand"]} -s /bin/bash -c "bin/magento remote-storage:sync"

0 commit comments

Comments
 (0)