Amazon ECS Express Mode 服務建立的資源 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS Express Mode 服務建立的資源

快速模式服務透過提供合理的預設值和自動化支援服務的組態,降低部署容器化應用程式的複雜性 AWS 。快速模式服務不需要跨多個服務管理數百個組態參數,只需容器映像、任務執行角色和基礎設施角色即可開始使用。

快速模式服務已簡化佈建和設定 Amazon ECS 服務的程序,將偏好的基礎設施綁定在一起,以讓生產 Web 應用程式執行。快速模式服務會自動整合操作和組態最佳實務。系統會建立下列資源:

  • 具有 Fargate 容量提供者的 ECS 預設叢集 (如果尚未存在)

  • 具有容器、記錄和聯網組態的任務定義

  • 具有 Canary 部署和自動擴展的服務

  • Application Load Balancer 搭配 HTTPS 接聽程式、接聽程式規則和目標群組

  • 具有最少必要輸入的安全群組

  • 用於自動擴展和負載平衡的服務連結角色

  • Application Auto Scaling 可擴展的目標和目標追蹤擴展政策。

    擴展政策會視需要新增或移除服務任務,讓指標保持在或接近指定的目標值。除了將指標保持在接近目標值之外,目標追蹤擴展政策也會根據由於負載模式波動而導致的指標波動進行調整,並將服務中執行的任務數量快速波動降至最低。

  • 服務特定的日誌群組

  • 偵測故障部署的指標警示

  • ACM 憑證

使用預設值開始使用快速模式服務,或使用一組最少的參數來設定您的應用程式。

叢集預設值

下列預設值可從叢集的快速模式內設定:

  • clusterName:使用default叢集。

    您可以使用 主控台中的其他組態選項,或指定 來自訂此選項create-express-gateway-service --cluster

下列預設值是由快速模式設定,但可以直接在叢集中更新。

  • capacityProviders:【「FARGATE」】 - 使用 Fargate

任務定義預設值

下列預設值可從任務定義的快速模式內設定:

  • cpu:1024 - 配置給任務的 1 個 vCPU 單位

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --cpu

  • 記憶體:2048 - 配置給任務的 2 GB 記憶體

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --memory

下列預設值是由快速模式設定,但可以直接在任務定義中更新。

  • networkMode:"awsvpc" - 使用awsvpc網路模式

  • operatingSystemFamily: "LINUX" - 在 Linux 作業系統上執行

  • cpuArchitecture:"X86_64" - 使用 x86_64 處理器架構

  • requiresCompatibilities:【「FARGATE」】 - 相容於 Fargate 啟動類型

  • platformVersion: "LATEST" - 使用最新的 Fargate 平台版本

容器定義預設值

下列預設值可從容器的快速模式內設定:

  • 連接埠:80 - 容器流量的預設連接埠

下列預設值是由快速模式設定,但可以直接在任務定義 - 容器定義中更新:

  • 基本:true - 容器標記為對任務運作狀態至關重要

  • 通訊協定:"tcp" - 負載平衡器通訊的預設通訊協定

  • 名稱:「主要」 - 主要容器的預設名稱

    變更預設容器的名稱可能會影響快速模式對服務進行後續更新的能力。如果您想要繼續使用快速模式主控台或 APIs,則不建議這麼做

  • versionConsistency:已啟用 - 解析映像標籤以摘要 IDs 以進行一致部署

  • initProcessEnabled: true - 啟用 Docker init 程序支援。

  • stopTimeout:30 秒 - SIGTERM 和 SIGKILL 訊號之間的時間。

記錄預設值

下列預設值可從 CloudWatch Logs 的快速模式內設定:

  • awslogs-group: "/aws/ecs/<cluster>/<name>-####" - 從叢集和服務名稱衍生的日誌群組名稱

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --primary-container “awsLogsConfiguration”=[{“logGroup”=“/my/logGroup/”}]

  • awslogs-stream-prefix: "ecs" - 日誌串流名稱的字首

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --primary-container “awsLogsConfiguration”=[{“logStreamPrefix”=“myprefix”}]

下列預設值是由快速模式設定,但可以直接在任務定義 - 日誌組態中更新:

  • logDriver:"awslogs" - 使用 CloudWatch Logs

  • awslogs-region:目前區域 - 使用與快速模式服務相同的區域

  • 模式:「非封鎖」- 記錄模式設定為非封鎖

  • max-buffer-size: "25m" - 日誌寫入的緩衝區大小上限

服務預設值

下列預設值可從 Amazon ECS Service 的快速模式內設定:

  • serviceName:快速模式服務 → 名稱 - 服務的名稱 (客戶提供或衍生自映像名稱)

    名稱只能在建立時設定,無法在更新時設定。

  • 叢集:快速模式服務 → 叢集 - 此服務的 ECS 叢集 (客戶提供或預設)

    叢集只能在建立時設定,無法在更新時設定。

  • desiredCount:快速模式服務 → MinTasks - 服務所需的計數 (預設為 1)

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項 create-express-gateway-service --scaling-target ‘{“minTaskCount”=3}',

  • 標籤:用於 AWS 標記的快速模式服務標籤 (客戶提供)

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --tags。標籤只能在建立新資源時新增。

下列預設值是由快速模式設定,但可以直接在 Amazon ECS Service 中更新:

  • availabilityZoneRebalancing: true - 啟用自動 AZ 重新平衡

  • CapacityProviderStrategy:{"base": 1, "capacityProvider": "FARGATE", "weight": 1} - 將 Fargate 用於運算容量

  • deploymentConfiguration:Canary 預設 - Express Mode 服務使用 Canary 部署

    請注意,無法在快速模式服務上更新部署策略。

  • enableECSManagedTags: true - 啟用 ECS 受管資源標記

  • healthCheckGracePeriodSeconds:300 - 排程器查看 ELB 或 Lattice 運作狀態檢查之前的寬限期 (符合 ELB 運作狀態檢查寬限期預設值)

  • launchType:<Not set> - 使用容量提供者

  • loadBalancers:ECS 處理的負載平衡器組態

    請注意,無法在快速模式服務上更新負載平衡器組態。

  • placementStrategy:未設定 - 啟動時使用 Fargate (應一律為 AZ 分散)

  • platformVersion:LATEST - Fargate 平台版本 (硬式編碼為 LATEST)

  • propagateTags: "SERVICE" - 將標籤從服務傳播到任務

  • schedulingStrategy:"REPLICA" - 快速模式服務是 REPLICA 服務

  • taskDefinition:已建立快速模式服務 - 要使用的任務定義 (由快速模式服務提供)

網路組態預設值

下列預設值可從 Amazon ECS Service - 網路組態的快速模式內設定:

  • networkConfiguration.Subnets:如果未提供,則快速模式將使用預設 VPC 中的預設公有子網路。

    預設 VPC 必須具有至少兩個公有子網路,在至少兩個可用區域中,每個子網路每個指派的 CIDR 區塊至少有 8 個可用的 IPs。

    如果您提供自訂公有子網路,快速模式會為您的任務佈建面向網際網路的 ALB,並開啟 assignPublicIP。如果您提供私有子網路 (路由表中沒有網際網路閘道的子網路),快速模式會佈建內部 ALB。

    如果您指定子網路,VPC 的第一個快速模式服務會定義與該 VPC 面向網際網路或內部負載平衡器相關聯的子網路。在相同 VPC 中啟動的後續快速模式服務必須具有符合負載平衡器所支援可用區域的子網路。因此,我們建議您使用來自所有可用區域的子網路建立快速模式服務。

  • networkConfiguration.SecurityGroups:如果未提供,則快速模式會建立服務安全群組和Load Balancer安全群組

    服務安全群組允許對公有網際網路的傳出流量,但視您網路的其他層面而定,例如子網路組態,這可能會受到限制。

    Load Balancer 安全群組 Load Balancer 安全群組允許 HTTPS 解析的傳入流量,以及在您指定的容器連接埠上傳出流量到 Service Security Group (預設值 80)。且 會自動更新,以符合快速模式建立或更新呼叫中提供的容器連接埠。

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --network-configuration '{"securityGroup": ["sg-xxxxxxx"]}'。當您提供安全群組時,您會為服務提供額外的輸入路徑。

下列預設值是由快速模式設定,但可以直接在 Amazon ECS 服務 - 網路組態中更新:

  • assignPublicIp:根據子網路類型 - 針對公有子網路啟用,以確保預設 VPC 的使用者能夠存取公有網際網路,我們預設會為每個任務啟用公有 IPs。如果您提供私有子網路,且負責在任務需要網際網路存取時設定 NAT 閘道,則會停用此功能。

IAM 角色預設值

下列 IAM 角色可針對 Express Mode Service 進行設定,並適時自動建立服務連結角色。

  • executionRoleArn:任務執行角色 (必要參數)

    雖然所需的許可位於 受管政策中,但可以連接其他政策和許可。《 AWS 受管政策參考指南》中的 AmazonECSTaskExecutionRolePolicy 的其他詳細資訊

  • infrastructureRoleArn:Express Gateway Services 的基礎設施角色 (必要參數)

    雖然所需的許可位於 受管政策中,但可以連接其他政策和許可。《 受管政策參考指南》中的 AmazonECSInfrastructureRoleforExpressGatewayServices AWS 受管政策的其他詳細資訊

  • taskRoleArn:來自容器應用程式程式碼之呼叫的任務角色 (選用)

    您可以使用 主控台中的其他組態選項,或執行 來自訂此選項create-express-gateway-service --task-role-arn

    您必須先建立新的 IAM 角色,才能建立或更新快速模式服務。

下列 IAM 角色是由快速模式自動設定。

  • ecsServiceRoleForECS:允許 Amazon ECS 管理您的叢集

  • AWSServiceRoleForElasticLoadBalancing:代表您呼叫其他 AWS 服務 - 由 Elastic Load Balancing 自動建立

  • AWSServiceRoleForApplicationAutoScaling_ECSService:代表您呼叫其他 AWS 服務 - 由 Application Auto Scaling 自動建立

Application Auto Scaling 預設值

您可以在快速模式中設定下列 Application Auto Scaling 設定:

  • autoScalingTargetValue:60 - 擴展的目標 CPU 使用率百分比

  • autoScalingMetric:「CPUUtilization」 - 用於自動擴展決策的指標

  • desiredMinTaskCount:1 - 要維護的最低任務數量

  • desiredMaxTaskCount:20 - 要擴展到的任務數量上限 (可以增加或減少)

下列設定可以直接在 Application Auto Scaling 中混淆:

  • policyType:「TargetTrackingScaling」 - 使用目標追蹤擴展政策

  • disableScaleIn:false - 允許在需求減少時縮減規模

應用程式擴展目標預設值

Application Auto Scaling 目標定義自動擴展操作的可擴展資源和容量限制。您可以在快速模式中修改下列項目:

  • MaxCapacity:快速模式服務 → MaxTasks - 服務擴展到的任務上限 (CreateLoadBalancedService 或客戶提供的預設值)

  • MinCapacity:快速模式服務 → MinTasks - 服務將縮減至的最低任務 (CreateLoadBalancedService 或客戶提供的預設值)

  • ScalableDimension:ecs:service:DesiredCount - 要擴展的屬性

  • 標籤:衍生自 CreateLoadBalancedService 中傳遞的標籤 - 此資源的資源標籤

您可以在 Application Auto Scaling 可擴展目標中修改下列預設值:

  • DynamicScalingInSuspended:false - 指出是否暫停向內擴展

  • DynamicScalingOutSuspended:false - 指出是否暫停向外擴展

  • ScheduledScalingSuspended:false - 指出排程擴展是否暫停

應用程式擴展政策預設值

擴展政策實作目標追蹤演算法,可監控 CPU 使用率並調整任務計數,以維持最佳效能。您可以從快速模式修改下列項目:

  • TargetValue:60% - 追蹤政策的目標值 (快速模式服務 → scaling-target-value)

  • PredefinedMetricType:ECSServiceAverageCPUUtilization - 要追蹤的指標名稱類型 (快速模式服務 → 擴展指標)

    快速模式提供平均 CPUUtilization、平均記憶體使用率和每個目標請求計數的擴展指標。每個目標的請求計數來自 Application Load Balancer,每秒每個目標最多可設定 65536 個請求,即 Application Load Balancer 目標群組中的 Amazon ECS Service。

下列預設值是由快速模式設定,但可以在 Application Auto Scaling 政策中變更:

  • PolicyName:<ServiceName><"TargetMetric"> - 此擴展政策的名稱 (衍生自 ECS 服務名稱和目標指標)

  • PolicyType:TargetTrackingScaling - 正在完成的擴展類型 (預先定義的預設)

  • ScalableDimension: "ecs:service:DesiredCount" - 要擴展的屬性 (預先定義的預設值)

  • DisableScaleIn:false - 指出是否停用縮減

Application Load Balancer 預設

下列 Application Load Balancer 預設值可在快速模式中設定:

  • 機制:取決於子網路 - 在提供公有子網路時,使用公有 IP 地址建立面向網際網路的負載平衡器。在提供私有子網路時,使用私有 IP 地址建立內部負載平衡器。

  • ip-address-type:取決於子網路 - 當地址為 IPv4 時,建立僅限 IPv4 的 Application Load Balancer。有IPv6-enabled的子網路時,將會建立雙堆疊 Application Load Balancer。請注意,如果您有IPv6-enabled的子網路,VPC 中的第一個快速模式服務會定義該 VPC 的內部或面向網際網路的負載平衡器。因此,我們建議您先建立IPv6-only 的子網路,或在新的 VPC 中建立。

下列預設值設定為快速模式,並且可以在 Application Load Balancer 中設定:

  • desync-mitigation-mode:關閉 - HTTP 取消同步緩解已停用

  • access-logs.enabled:false - 停用存取記錄

  • listener-configurations.protocol:https - 使用 HTTPS 通訊協定進行安全通訊

  • listener-configurations.port:443 - 在標準 HTTPS 連接埠上接聽

  • listener-configurations.rule-type:host-header - 根據主機標頭規則路由流量

目標群組預設值

下列 Amazon EC2 目標群組預設值可在快速模式中設定:

  • health-check-path:(預設 "/") Express Mode 服務運作狀態檢查路徑 - 運作狀態檢查請求的 URL 路徑

  • 連接埠:(預設 80) - 目標接收流量的連接埠

  • health-check-port:(預設值 80) - 運作狀態檢查請求的連接埠

下列預設值是由快速模式設定,並且可以在 Amazon EC2 目標群組中設定:

  • 通訊協定:HTTP - 將流量路由至目標的通訊協定

  • protocol-version:HTTP1 - 用於通訊的 HTTP 通訊協定版本

  • vpc-id:預設是目標群組的預設 VPC - Virtual Private Cloud 識別符,但會從提供的子網路衍生

  • health-check-protocol:與通訊協定相同 - 運作狀態檢查請求的通訊協定

  • health-check-enabled:一律啟用 - 運作狀態檢查會自動啟用

  • health-check-interval-seconds:30 - 個別目標運作狀態檢查之間的時間

  • health-check-timeout-seconds:5 - 運作狀態檢查回應的逾時持續時間

  • healthy-threshold-count:5 - 持續成功地檢查運作狀態是否良好

  • unhealthy-threshold-count:2 - 連續檢查運作狀態不佳所需的運作狀態失敗

  • target-type:ip - 依 IP 地址註冊目標

  • ip-address-type:ipv4 - 使用 IPv4 地址進行目標註冊

資源共用和成本最佳化

快速模式服務會盡可能自動共用資源,以最佳化成本:

  • 負載平衡器共用 - 相同 VPC 中最多 25 個快速模式服務可以共用 Application Load Balancer。快速模式會根據您佈建的快速模式服務數量,視需要佈建額外的 Application Load Balancer。此外,當您減少 VPC 中的快速模式服務數量時,快速模式也會取消佈建未使用的 Application Load Balancer。當您部署更多快速模式服務時,此共用會降低每個應用程式的有效成本。

  • 叢集共用 - 快速模式服務可以在 Amazon ECS 叢集中分組在一起。快速模式服務也可以與非由快速模式管理的 Amazon ECS 服務共用 Amazon ECS 叢集。