Вы не указываете, является ли mongodb, который вы запускаете и подключаете из локального экземпляра докера, также локальным или это тот же экземпляр MongoDB в AWS (который, вероятно, вы будете использовать для подключения через VPN или туннелирование ssh).
Итак, почему экземпляр Docker работает локально, а не в AWS, будет довольно сложно объяснить.Я бы предположил, что это связано с сетевым подключением.
Мы запускаем ECS Fargate для экземпляра EC2, который запускает mongodb.Ключом к этому является также установление отношений группы безопасности.
Это может выглядеть, например, как показано ниже в примере Cloudformation.У вас есть группа безопасности Fargate rAppFargateSecurityGroup (предоставляющая приложение через 8080), подключенная к вашей службе Fargate.И у вас есть группа безопасности mongodb rMongoDbEc2SecurityGroup, подключенная к экземпляру mongodb EC2 (предоставляющая mongodb через порт 27017).
Вы заметите, что клей здесь - «SourceSecurityGroupId:! Ref rAppFargateSecurityGroup», который позволяет подключаться к fargatemongodb.
rAppFargateSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub '${pAppName}-${pEnvironment} ECS Security Group'
VpcId: !Ref pVpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
SourceSecurityGroupId: !Ref rAppAlbSecurityGroup
rMongoDbEc2SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub '${pAppName}-${pEnvironment} MongoDb Security Group'
VpcId: !Ref pVpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 27017
ToPort: 27017
SourceSecurityGroupId: !Ref rAppFargateSecurityGroup
Служба Fargate будет настроена следующим образом:
rFargateService:
Type: AWS::ECS::Service
Properties:
...
NetworkConfiguration:
AwsvpcConfiguration:
SecurityGroups:
- !Ref pAppFargateSecurityGroup
Subnets:
- !Ref pPrivateSubnetA
- !Ref pPrivateSubnetB
- !Ref pPrivateSubnetC
Подсети службы Fargate будут (должны) настраиваться в том же VPC, что и ваш mongodbhost, если вы не используете, например, пиринг VPC или Private Link.
Я должен также добавить, что другие вещи, которые могут сбить вас с толку, это NACL .И, конечно, локальные межсетевые экраны хоста (например, iptables).