public AwsTeamCityTemplateEfs()

in src/main/java/jetbrains/teamcity/aws/template/services/efs/AwsTeamCityTemplateEfs.java [37:117]


    public AwsTeamCityTemplateEfs(@NotNull final Construct scope, @NotNull final Vpc vpc) {

        myFileSystem = FileSystem.Builder.create(scope, "MyEfsFileSystem")
                .vpc(vpc)
                .lifecyclePolicy(LifecyclePolicy.AFTER_14_DAYS) // files are not transitioned to infrequent access (IA) storage by default
                .performanceMode(PerformanceMode.GENERAL_PURPOSE) // default
                .throughputMode(ThroughputMode.BURSTING)
                .outOfInfrequentAccessPolicy(OutOfInfrequentAccessPolicy.AFTER_1_ACCESS)
                .removalPolicy(RemovalPolicy.DESTROY) // otherwise stateful resources will not be deleted when Clfn stack is deleted
                .build();

        AccessPoint dataDirAccessPoint = AccessPoint.Builder.create(scope, "TeamCity data")
                .posixUser(
                        PosixUser.builder()
                                .gid("1000")
                                .uid("1000")
                                .build()
                )
                .createAcl(Acl.builder()
                        .ownerGid("1000")
                        .ownerUid("1000")
                        .permissions("0755")
                        .build())
                .path("/teamcity/data")
                .fileSystem(myFileSystem)
                .build();
        dataDirAccessPoint.getNode().addDependency(myFileSystem);

        AccessPoint logsDirAccessPoint = AccessPoint.Builder.create(scope, "TeamCity logs")
                .posixUser(
                        PosixUser.builder()
                                .gid("1000")
                                .uid("1000")
                                .build()
                )
                .createAcl(Acl.builder()
                        .ownerGid("1000")
                        .ownerUid("1000")
                        .permissions("0755")
                        .build())
                .path("/teamcity/logs")
                .fileSystem(myFileSystem)
                .build();
        logsDirAccessPoint.getNode().addDependency(myFileSystem);


        myDataDirVolume = Volume.builder()
                .name("Data")
                .efsVolumeConfiguration(EfsVolumeConfiguration.builder()
                        .fileSystemId(myFileSystem.getFileSystemId())
                        .transitEncryption("ENABLED")
                        .authorizationConfig(AuthorizationConfig.builder()
                                .accessPointId(dataDirAccessPoint.getAccessPointId())
                                .iam("ENABLED")
                                .build())
                        .build())
                .build();
        myLogsDirVolume = Volume.builder()
                .name("Logs")
                .efsVolumeConfiguration(EfsVolumeConfiguration.builder()
                        .fileSystemId(myFileSystem.getFileSystemId())
                        .transitEncryption("ENABLED")
                        .authorizationConfig(AuthorizationConfig.builder()
                                .accessPointId(logsDirAccessPoint.getAccessPointId())
                                .iam("ENABLED")
                                .build())
                        .build())
                .build();


        myDataDirMountPoint = MountPoint.builder()
                .containerPath("/data/teamcity_server/datadir")
                .readOnly(false)
                .sourceVolume(myDataDirVolume.getName())
                .build();
        myLogsDirMountPoint = MountPoint.builder()
                .containerPath("/opt/teamcity/logs")
                .readOnly(false)
                .sourceVolume(myLogsDirVolume.getName())
                .build();
    }