Cuando intento montar un sistema de archivos EFS junto con ECS, aparece el siguiente error:
ResourceInitializationError: no se pudieron invocar los comandos EFS utils para configurar los volúmenes EFS: stderr: mount.nfs4: conexión restablecida por el par: ejecución fallida del comando EFS utils; código: 32
Mi pila:
--- AWSTemplateFormatVersion: "2010-09-09" Description: "Template Test" Outputs: FileSystemID: Description: "File system ID" Value: Ref: FileSystem Parameters: VolumeName: Default: myEFSvolume Description: "The name to be used for the EFS volume" MinLength: "1" Type: String Resources: ECSCluster: Properties: ClusterName: jenkins-cluster Type: "AWS::ECS::Cluster" EFSMountTarget1: Properties: FileSystemId: Ref: FileSystem SecurityGroups: - "sg-0082cea75ba714505" SubnetId: "subnet-0f0b0d3aaada62b6c" Type: "AWS::EFS::MountTarget" FileSystem: Properties: Encrypted: true FileSystemTags: - Key: Name Value: Ref: VolumeName PerformanceMode: generalPurpose Type: "AWS::EFS::FileSystem" JenkinsService: Type: "AWS::ECS::Service" Properties: Cluster: Ref: ECSCluster DesiredCount: 2 LaunchType: FARGATE NetworkConfiguration: AwsvpcConfiguration: AssignPublicIp: ENABLED SecurityGroups: - "sg-0082cea75ba714505" Subnets: - "subnet-0f0b0d3aaada62b6c" PlatformVersion: "1.4.0" ServiceName: JenkinsService TaskDefinition: Ref: JenkinsTaskDef JenkinsTaskDef: Type: "AWS::ECS::TaskDefinition" Properties: Cpu: 2048 Memory: 4096 Family: efs-example-task-fargate NetworkMode: awsvpc TaskRoleArn: "arn:xxxxx/ecs" ExecutionRoleArn: "arn:xxxxxx:role/ecs" RequiresCompatibilities: - FARGATE ContainerDefinitions: - Cpu: 1024 Memory: 2048 PortMappings: - HostPort: 8080 ContainerPort: 8080 - HostPort: 50000 ContainerPort: 50000 image: "xxxxxxx.dkr.ecr.us-east-1.amazonaws.com/sample:latest" mountPoints: - containerPath: /var/jenkins_home readOnly: false sourceVolume: myEfsVolume name: jenkins volumes: - name: myEfsVolume efsVolumeConfiguration: fileSystemId: Ref: FileSystem rootDirectory: /var/jenkins_home transitEncryption: ENABLEDEstoy actuando de acuerdo con la documentación:
https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html
Debe abrir el puerto 2049 de entrada en el grupo de seguridad en la interfaz de red y la definición de tareas. No se configuró automáticamente aunque lo configuró para crear el grupo de seguridad por usted.
Ha pasado un tiempo, pero he tenido el mismo problema y fue un poco confuso entender cómo proceder. Cuando crea su volumen EFS, elige una VPC y un grupo de seguridad para cada subred.
Debe ir a editar este grupo de seguridad para agregar una regla de entrada de type NFS para permitir el acceso (puerto tcp 2049) al identificador de grupo de seguridad de su servicio de clúster de ECS al que desea permitir el acceso. Para ello, simplemente seleccione Personalizado en el campo de source y escriba el identificador del grupo de seguridad del servicio en el cuadro de texto.
Para más información este artículo describe muy bien todo el proceso.
Estas son las cosas que debe hacer para montar un EFS en AWS FARGATE: