rev*_*evy 4 amazon-web-services amazon-ecs aws-cloudformation amazon-vpc docker
我有以下定义ECS 服务的cloudformation 堆栈:
ApiService:
Type: AWS::ECS::Service
DependsOn:
- LoadBalancerListener80
- LoadBalancerListener443
Properties:
Cluster: !Ref EcsClusterArn
DeploymentConfiguration:
MaximumPercent: 200
MinimumHealthyPercent: 100
DeploymentController:
Type: ECS
DesiredCount: 1
HealthCheckGracePeriodSeconds: 10
LaunchType: FARGATE
LoadBalancers:
- ContainerName: !Join ['-', ['container', !Ref AWS::StackName]]
ContainerPort: !Ref Port
TargetGroupArn: !Ref LoadBalancerTargetGroup
NetworkConfiguration:
AwsvpcConfiguration:
AssignPublicIp: ENABLED # <-- if disabled, pulling from ecr registry fails
SecurityGroups:
- !Ref ApiServiceContainerSecurityGroup
Subnets: !Ref Subnets
SchedulingStrategy: REPLICA
ServiceName: !Ref AWS::StackName
TaskDefinition: !Ref ApiServiceTaskDefinition
Run Code Online (Sandbox Code Playgroud)
我注意到,如果不启用公共 IP 自动分配,服务任务将无法从 ECR 注册表中提取 docker 映像。我不明白为什么我需要容器具有公共 IP 才能从注册表中提取图像...服务安全组允许所有出站流量,子网可以通过互联网网关访问互联网,并且 IAM 角色允许从ECR...那么为什么需要公共IP?我不希望我的容器有公共 IP,它们应该只能在 VPC 内部访问。或者我误解了,这只是会接收公共 IP 的任务(无论出于何种原因),而容器在 VPC 内仍然是私有的?
“IAM 角色允许从 ECR 中提取”
IAM 角色仅授予其权限,不提供网络连接。
“子网可以通过互联网网关访问互联网”
我想您会发现 Internet 网关仅提供对分配有公共 IP 的资源的 Internet 访问。
ECR 是一项存在于您的 VPC 外部的服务,因此您需要以下之一才能建立与 ECR 的网络连接:
公共IP。
NAT 网关,具有到子网中 NAT 网关的路由。
ECR 接口 VPC 终端节点,具有到子网中终端节点的路由。
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |