AWS EFS装载到ECS Fargate任务突然失败



我正在使用Boto3运行使用Fargate的任务定义,并在其中装载一个空的EFS系统。

SDK代码:

def run_fargate_task(self):
response = self.ecs.run_task(
cluster='XXXXXXXX',
count=1,
enableECSManagedTags=True,
launchType='FARGATE',
networkConfiguration={
'awsvpcConfiguration': {
'securityGroups': [
'sg-XXXXXXXXXXXXXXXXX',
],
'subnets': [
'subnet-XXXXXXXXXXXXXXXXX',
'subnet-XXXXXXXXXXXXXXXXX',
],
'assignPublicIp': 'ENABLED'
}
},
taskDefinition='XXXXX:1'
)

当我运行run_fargate_task()函数时,它大部分时间都会成功使用以下响应元数据:

"ResponseMetadata": {
"RequestId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"x-amzn-requestid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"content-type": "application/x-amz-json-1.1",
"content-length": "1297",
"date": "Fri, 11 Jun 2021 14:34:46 GMT",
},
"RetryAttempts": 0,
},

但有时我会遇到这样的错误:

ResourceInitializationError:未能调用EFS utils命令来设置EFS卷:stderr:未能解析"fs-XXXXXXXX.efs.us-east-2.amazonaws.com"-请检查您的文件系统ID是否正确。

我确信EFS系统ID是正确的,因为它有时会在不对代码进行任何更改的情况下成功。此外,我确信我的安全组的入站规则是为端口为2049的EFS设置的。

此外,我确保我没有使用相同的EFS系统ID运行多个任务。

即使在停止任务(当它成功运行时(并等待几分钟(希望EFS系统不被旧任务占用(后,问题仍然存在。

此错误的另一个原因可能是VPC中的DNS主机名被禁用。您必须确保VPC DNS主机名已启用

您已经为fargate指定了2个子网。您的EFS文件系统是否包含两个AZ/子网的装载点?

正如@jordanm在上面评论的那样,这确实是我的问题。

最新更新