Add EFS infrastructure for Forgejo (new CloudFormation stack)
- Introduce forgejo-efs.yaml defining EFS FileSystem with encryption, lifecycle policies, and backup enabled - Add dedicated AccessPoints for /forgejo/data and /forgejo/config with POSIX ownership and tags - Include FileSystemPolicy enforcing mount-target-only access - Export EFS resource IDs for cross-stack referencing
This commit is contained in:
parent
46ec47aa2d
commit
4987197113
1 changed files with 103 additions and 0 deletions
103
infra/cfn/forgejo-efs.yaml
Executable file
103
infra/cfn/forgejo-efs.yaml
Executable file
|
|
@ -0,0 +1,103 @@
|
||||||
|
Parameters:
|
||||||
|
KmsKeyId:
|
||||||
|
Type: String
|
||||||
|
Description: "KMS key for EFS encryption"
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
EFSAccessPointData:
|
||||||
|
Type: "AWS::EFS::AccessPoint"
|
||||||
|
DeletionPolicy: Retain
|
||||||
|
Properties:
|
||||||
|
FileSystemId: !Ref EFSFileSystem
|
||||||
|
RootDirectory:
|
||||||
|
Path: "/forgejo/data"
|
||||||
|
CreationInfo:
|
||||||
|
OwnerGid: "1000"
|
||||||
|
Permissions: "750"
|
||||||
|
OwnerUid: "1000"
|
||||||
|
AccessPointTags:
|
||||||
|
- Value: "forgejo-data-ap"
|
||||||
|
Key: "Name"
|
||||||
|
- Value: "Git-server"
|
||||||
|
Key: "Project"
|
||||||
|
PosixUser:
|
||||||
|
Uid: "1000"
|
||||||
|
SecondaryGids: []
|
||||||
|
Gid: "1000"
|
||||||
|
|
||||||
|
EFSAccessPointConfig:
|
||||||
|
Type: "AWS::EFS::AccessPoint"
|
||||||
|
DeletionPolicy: Retain
|
||||||
|
Properties:
|
||||||
|
FileSystemId: !Ref EFSFileSystem
|
||||||
|
RootDirectory:
|
||||||
|
Path: "/forgejo/config"
|
||||||
|
CreationInfo:
|
||||||
|
OwnerGid: "1000"
|
||||||
|
Permissions: "750"
|
||||||
|
OwnerUid: "1000"
|
||||||
|
AccessPointTags:
|
||||||
|
- Value: "forgejo-config-ap"
|
||||||
|
Key: "Name"
|
||||||
|
- Value: "Git-server"
|
||||||
|
Key: "Project"
|
||||||
|
PosixUser:
|
||||||
|
Uid: "1000"
|
||||||
|
SecondaryGids: []
|
||||||
|
Gid: "1000"
|
||||||
|
|
||||||
|
EFSFileSystem:
|
||||||
|
Type: "AWS::EFS::FileSystem"
|
||||||
|
DeletionPolicy: Retain
|
||||||
|
Properties:
|
||||||
|
KmsKeyId: !Ref KmsKeyId
|
||||||
|
PerformanceMode: "generalPurpose"
|
||||||
|
Encrypted: true
|
||||||
|
FileSystemTags:
|
||||||
|
- Value: "forgejo-file-system"
|
||||||
|
Key: "Name"
|
||||||
|
- Value: "Git-server"
|
||||||
|
Key: "Project"
|
||||||
|
FileSystemPolicy:
|
||||||
|
Version: "2012-10-17"
|
||||||
|
Statement:
|
||||||
|
- Condition:
|
||||||
|
Bool:
|
||||||
|
elasticfilesystem:AccessedViaMountTarget: "true"
|
||||||
|
Resource: !Sub "arn:aws:elasticfilesystem:${AWS::Region}:${AWS::AccountId}:file-system/fs-011efd71b198bacc7"
|
||||||
|
Action:
|
||||||
|
- "elasticfilesystem:ClientWrite"
|
||||||
|
- "elasticfilesystem:ClientMount"
|
||||||
|
Effect: "Allow"
|
||||||
|
Principal:
|
||||||
|
AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
|
||||||
|
Sid: "efs-statement-b87417f1-f7fd-4978-b642-9b3084238008"
|
||||||
|
Id: "efs-policy-wizard-c4d5acbb-f970-40a3-8938-87ca58cb6f1b"
|
||||||
|
FileSystemProtection:
|
||||||
|
ReplicationOverwriteProtection: "ENABLED"
|
||||||
|
LifecyclePolicies:
|
||||||
|
- TransitionToIA: "AFTER_30_DAYS"
|
||||||
|
- TransitionToArchive: "AFTER_90_DAYS"
|
||||||
|
ThroughputMode: "elastic"
|
||||||
|
BackupPolicy:
|
||||||
|
Status: "ENABLED"
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
EFSFileSystemId:
|
||||||
|
Description: "ID of the EFS File System"
|
||||||
|
Value: !Ref EFSFileSystem
|
||||||
|
Export:
|
||||||
|
Name: !Sub "${AWS::StackName}-EFSFileSystemId"
|
||||||
|
|
||||||
|
AccessPointData:
|
||||||
|
Description: "Access Point for /forgejo/data"
|
||||||
|
Value: !Ref EFSAccessPointData
|
||||||
|
Export:
|
||||||
|
Name: !Sub "${AWS::StackName}-EFSAccessPointData"
|
||||||
|
|
||||||
|
AccessPointConfig:
|
||||||
|
Description: "Access Point for /forgejo/config"
|
||||||
|
Value: !Ref EFSAccessPointConfig
|
||||||
|
Export:
|
||||||
|
Name: !Sub "${AWS::StackName}-EFSAccessPointConfig"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue