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();
}