建立 Spot 機群 - Amazon Elastic Compute Cloud

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

建立 Spot 機群

使用 AWS Management Console,透過僅選擇AMI和您想要的目標總容量來快速建立 Spot 叢集請求。Amazon EC2 將設定最符合您需求的叢集,並遵循 Spot 最佳實務。如需詳細資訊,請參閱快速建立 Spot Fleet 請求 (主控台)。否則,您可以修改任何預設設定。如需詳細資訊,請參閱 使用已定義的參數建立 Spot Fleet 請求 (主控台)使用建立競價型叢集 AWS CLI

如果您想要在叢集中包含隨需執行個體,則需要在請求中指定啟動範本,並指定所需的隨需容量。

叢集會在容量可用時啟動隨需執行個體,並在您的最高價超過 Spot 價格和可用容量時啟動 Spot 執行個體。

如果您的叢集包含 Spot 執行個體且屬於類型maintain,Amazon EC2 會在 Spot 執行個體中斷時嘗試維持叢集目標容量。

Spot Fleet 許可

如果使用者將會建立或管理 Spot 機群,您必須授予這些使用者所需的許可。

如果您使用 Amazon EC2 主控台建立 Spot 叢集,它會建立兩個名為AWSServiceRoleForEC2SpotFleet和的服務連結角色AWSServiceRoleForEC2Spot,以及一個名為aws-ec2-spot-fleet-tagging-role的角色,授與 Spot 叢集代表您請求、啟動、終止和標記資源的許可。如果您使用 AWS CLI 或API,則必須確定這些角色存在。

請使用下列指示,授與必要的許可並建立角色。

將 Spot 機群的許可授予使用者

如果使用者將會建立或管理 Spot 機群,請務必授予這些使用者所需的許可。

為 Spot 機群建立政策
  1. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,選擇政策建立政策

  3. 在 [建立原則] 頁面上 JSON,選擇並以下列項目取代文字。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateTags", "ec2:RequestSpotFleet", "ec2:ModifySpotFleetRequest", "ec2:CancelSpotFleetRequests", "ec2:DescribeSpotFleetRequests", "ec2:DescribeSpotFleetInstances", "ec2:DescribeSpotFleetRequestHistory" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:ListRoles", "iam:ListInstanceProfiles" ], "Resource": "*" } ] }

    上述範例政策會向使用者授予大多數 Spot Fleet 使用案例所需的許可。若要限制使用者執行特定API動作,請僅指定這些API動作。

    必要EC2和 IAM APIs

    政策中APIs必須包含以下內容:

    • ec2:RunInstances – 在 Spot Fleet 中啟動執行個體所需

    • ec2:CreateTags – 標記 Spot Fleet 請求、執行個體或磁碟區所需

    • iam:PassRole – 指定 Spot Fleet 角色所需

    • iam:CreateServiceLinkedRole – 建立服務連結角色所需

    • iam:ListRoles— 列舉現有IAM角色所需

    • iam:ListInstanceProfiles – 列舉現有執行個體描述檔所需

    重要

    如果您在啟動規格或啟動範本中指定IAM執行個體設定檔的角色,則必須授與使用者將角色傳遞給服務的權限。要做到這一點,在IAM策略包括作"arn:aws:iam::*:role/IamInstanceProfile-role"iam:PassRole動作的資源。如需詳細資訊,請參閱《使用指南》中的授與使用IAM者將角色傳遞給 AWS 服務的權限。

    現貨艦隊 APIs

    視需要將下列 Spot 叢集API動作新增至您的原則:

    • ec2:RequestSpotFleet

    • ec2:ModifySpotFleetRequest

    • ec2:CancelSpotFleetRequests

    • ec2:DescribeSpotFleetRequests

    • ec2:DescribeSpotFleetInstances

    • ec2:DescribeSpotFleetRequestHistory

    可選 IAM APIs

    (選擇性) 若要讓使用者能夠使用IAM主控台建立角色或執行個體設定檔,您必須將下列動作新增至原則:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  4. 選擇檢閱政策

  5. Review policy (檢閱政策) 頁面上,輸入政策名稱和說明,然後選擇 Create policy (建立政策)

  6. 若要提供存取權,請新增權限至您的使用者、群組或角色:

    • 使用者和群組位於 AWS IAM Identity Center:

      建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。

    • IAM透過身分識別提供者管理的使用者:

      建立聯合身分的角色。請遵循《使用指南》中的〈為第三方身分識別提供IAM者 (同盟) 建立角色〉中的指示進行。

    • IAM使用者:

      • 建立您的使用者可擔任的角色。請按照《用戶南》中的「為IAM用戶創建角色」中的IAM說明進行操作。

      • (不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。遵循《使用者指南》中的「向使用者 (主控台) 新增權限」IAM 中的示進行。

Spot Fleet 的服務連結角色

Amazon EC2 使用服務連結角色來取得代表您呼叫其他 AWS 服務所需的許可。服務連結角色是直接連結至 AWS 服務的唯一IAM角色類型。服務連結角色提供將權限委派給 AWS 服務的安全方式,因為只有連結的服務可以擔任服務連結角色。如需詳細資訊,請參閱IAM使用指南中的服務連結角色

Amazon EC2 使用名為AWSServiceRoleForEC2SpotFleet的服務連結角色代表您啟動和管理執行個體。

重要

如果您在 Spot 叢集中指定加密AMI或加密的 Amazon EBS 快照,則必須授與該AWSServiceRoleForEC2SpotFleet角色使用的權限,以CMK便 Amazon EC2 可以代表您啟動執行個體。如需詳細資訊,請參閱授予存取權,以CMKs便與加密AMIs和EBS快照搭配使用

授予的權限 AWSServiceRoleForEC2SpotFleet

AWSServiceRoleForEC2SpotFleet角色授與 Spot 叢集權限,以代表您要求、啟動、終止和標記執行個體。Amazon EC2 使用此服務連結角色來完成下列動作:

  • ec2:RequestSpotInstances - 請求 競價型執行個體

  • ec2:RunInstances - 啟動執行個體

  • ec2:TerminateInstances - 終止執行個體

  • ec2:DescribeImages-描述執行個體的 Amazon 機器映像檔 (AMIs)

  • ec2:DescribeInstanceStatus - 監控執行個體的狀態

  • ec2:DescribeSubnets - 描述執行個體的子網絡

  • ec2:CreateTags - 將標籤新增至 Spot Fleet 請求、執行個體和磁碟區

  • elasticloadbalancing:RegisterInstancesWithLoadBalancer - 將指定執行個體新增到指定的負載平衡器

  • elasticloadbalancing:RegisterTargets - 向指定的目標群組登錄指定的目標

建立服務連結角色

在大部分情況下,您不需要手動建立服務連結角色。Amazon EC2 會在您第一次使用主控台建立 Spot 叢集時建立AWSServiceRoleForEC2SpotFleet服務連結角色。

如果您在 2017 年 10 月之前有一個有效的 Spot 叢集請求,那麼當 Amazon EC2 開始支援此服務連結角色時,Amazon 就會在您的 AWS 帳戶中EC2建立該AWSServiceRoleForEC2SpotFleet角色。如需詳細資訊,請參閱IAM使用者指南中的新角色出現在我的 AWS 帳戶中。

如果您使用 AWS CLI 或建立競價型叢集,則必須先確定此角色存在。API

使用主控台建立 Spot 叢集的 AWSServiceRoleForEC2SpotFleet 角色
  1. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,選擇 Roles (角色)。

  3. 選擇 Create Role (建立角色)。

  4. Select trusted entity (選取信任的實體) 頁面上,執行以下作業:

    1. 針對信任的實體類型,請選擇 AWS 服務

    2. 在 [使用案例] 下,針對服務或使用案例,選擇EC2

    3. 對於使用案例,請選擇 EC2-現貨艦隊

      注意

      EC2-Spot Fleet 使用案例將自動建立具有所需IAM權限的策略,並將建議AWSEC2SpotFleetServiceRolePolicy作為角色名稱。

    4. 選擇 Next (下一步)

  5. Add permissions (新增許可) 頁面上,選擇 Next (下一步)。

  6. 命名、檢閱和建立頁面上,選擇建立角色

若要使用 AWSServiceRoleForEC2SpotFleet AWS CLI

使用 create-service-linked-role 命令,如下所示。

aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com

如果您不再需要使用 Spot 叢集,建議您刪除該AWSServiceRoleForEC2SpotFleet角色。從您的帳戶中刪除此角色後,如果您使用主控台請求 Spot 叢集,Amazon EC2 將再次建立該角色。如需詳細資訊,請參閱IAM使用指南中的刪除服務連結角色

授予存取權,以CMKs便與加密AMIs和EBS快照搭配使用

如果您在 Spot 叢集請求中指定加密AMI或加密的 Amazon EBS 快照,並使用客戶受管金鑰進行加密,則必須授與AWSServiceRoleForEC2SpotFleet角色使用權限,以CMK便 Amazon EC2 可以代表您啟動執行個體。若要執行此操作,您必須將授權新增至CMK,如下列程序所示。

提供許可時,授與為金鑰政策的替代方案。如需詳細資訊,請參閱 開發人員指南中的使用授予 AWS KMS和AWS Key Management Service 中使用金鑰政策

若要授與 AWSServiceRoleForEC2SpotFleet 角色使用的權限 CMK
  • 使用 create-grant 命令將授權新增至CMK和,以指定被授與執行授權之作業的主體 (AWSServiceRoleForEC2SpotFleet服務連結角色)。由key-id參數和ARN的指定CMK。CMK主體是由grantee-principal參數和AWSServiceRoleForEC2SpotFleet服務連結角色所指定。ARN

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2SpotFleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

Spot 執行個體的服務連結角色

Amazon EC2 使用名為AWSServiceRoleForEC2Spot的服務連結角色代表您啟動和管理 Spot 執行個體。如需詳細資訊,請參閱Spot 執行個體請求的服務連結角色

IAM標記 Spot 叢集的角色

aws-ec2-spot-fleet-tagging-roleIAM角色授與 Spot 叢集權限,以標記 Spot 叢集請求、執行個體和磁碟區。如需詳細資訊,請參閱標記新的或現有的 Spot 叢集請求及其啟動的執行個體和磁碟區

重要

如果您選擇標記機群中的執行個體,並也選擇維護目標容量 (Spot 機群請求為類型 maintain),為使用者與 IamFleetRole 所設定的許可差異可能會導致機群中執行個體標記行為的不一致。如果 IamFleetRole 不包含 CreateTags 許可,則可能無法標記由機群啟動的某些執行個體。雖然我們正在努力修正此不一致,但為了確保標記由機群啟動的所有執行個體,建議您針對 IamFleetRole 使用 aws-ec2-spot-fleet-tagging-role 角色。或者,若要使用現有角色,請將受AmazonEC2SpotFleetTaggingRole AWS 管理策略附加至現有角色。否則,您需要手動將 CreateTags 許可新增至現有政策。

建立標記競價型叢集的IAM角色
  1. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,選擇 Roles (角色)。

  3. 選擇 Create Role (建立角色)。

  4. Select trusted entity (選取受信任實體) 頁面,於 Trusted entity type (受信任實體的類型) 下,選擇 AWS service ( 服務)。

  5. 使用案例下,從其他 AWS 服務的使用案例中選擇 EC2,然後選擇 EC2-Spot 叢集標記

  6. 選擇 Next (下一步)

  7. Add permissions (新增許可) 頁面上,選擇 Next (下一步)。

  8. Name, review, and create (名稱,檢閱和建立) 頁面上,針對 Role name (角色名稱) 輸入角色的名稱 (例如 aws-ec2-spot-fleet-tagging-role)。

  9. 檢視頁面上的資訊,然後選擇 Create role (建立角色)。

預防跨服務混淆代理人

混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多權限的實體執行該動作。若要限制 Spot 機群為資源提供另一項服務的許可,我們建議在 aws-ec2-spot-fleet-tagging-role 信任政策中使用 aws:SourceArnaws:SourceAccount 全域條件內容金鑰。

將 aws: SourceArn 和 aws: SourceAccount 條件金鑰新增至aws-ec2-spot-fleet-tagging-role信任政策
  1. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,選擇角色

  3. 尋找您之前建立的 aws-ec2-spot-fleet-tagging-role 並選擇連結 (而非核取方塊)。

  4. Summary (摘要) 下,選擇 Trust relationships (信任關係) 索引標籤,然後選擇 Edit trust policy (編輯信任政策)。

  5. 在JSON語句中,添加一個包含您aws:SourceAccountaws:SourceArn全局條件上下文鍵的Condition元素,以防止混淆的副問題,如下所示:

    "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:account_id:spot-fleet-request/sfr-*" }, "StringEquals": { "aws:SourceAccount": "account_id" }
    注意

    如果 aws:SourceArn 值包含帳戶 ID,且同時使用這兩個全域條件內容金鑰,則在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。

    最終信任政策如下所示:

    { "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "spotfleet.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:account_id:spot-fleet-request/sfr-*" }, "StringEquals": { "aws:SourceAccount": "account_id" } } } }
  6. 選擇更新政策

下表提供了 aws:SourceArn 的潛在值,以不同程度地限制 aws-ec2-spot-fleet-tagging-role 的範圍。

API操作 呼叫的服務 範圍 aws:SourceArn
RequestSpotFleet AWS STS (AssumeRole) AssumeRole功能限制aws-ec2-spot-fleet-tagging-rolespot-fleet-requests 在指定帳戶中。 arn:aws:ec2:*:123456789012:spot-fleet-request/sfr-*
RequestSpotFleet AWS STS (AssumeRole) aws-ec2-spot-fleet-tagging-roleAssumeRole功能限制spot-fleet-requests 在指定帳戶和指定區域中。請注意,此角色在其他區域中無法使用。 arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-*
RequestSpotFleet AWS STS (AssumeRole) aws-ec2-spot-fleet-tagging-role 上的 AssumeRole 功能限制為僅限影響機群 sfr-11111111-1111-1111-1111-111111111111 的動作。請注意,此角色可能無法用於其他 Spot 機群。此外,此角色無法用於透過request-spot-fleet啟動任何新的 Spot 艦隊。 arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-11111111-1111-1111-1111-111111111111

快速建立 Spot Fleet 請求 (主控台)

依照這些步驟快速建立 Spot Fleet 請求。

若要使用建議的設定建立 Spot Fleet 請求 (主控台)
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

  2. 在瀏覽窗格中,選擇 Spot 請求

  3. 如果您是第一次使用 Spot,將會顯示歡迎頁面;請選擇開始使用。否則,請選擇請求競價型執行個體

  4. Launch parameters (啟動參數) 下,選擇 Manually configure launch parameters (手動設定啟動參數)。

  5. 對於 AMI,選擇一個AMI.

  6. Target capacity (目標容量) 下, 針對 Total target capacity (總目標容量),指定要請求的單位數目。對於單位類型,您可以選擇執行個體vCPUs、或記憶體 (GiB)

  7. 對於 Your fleet request at a glance (您的機群請求一覽),檢閱您的機群組態,然後選擇 Launch (啟動)。

使用已定義的參數建立 Spot Fleet 請求 (主控台)

您可以使用您定義的參數建立 Spot Fleet。

若要使用已定義的參數建立 Spot Fleet 請求 (主控台)
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

  2. 在瀏覽窗格中,選擇 Spot 請求

  3. 如果您是第一次使用 Spot,將會顯示歡迎頁面;請選擇開始使用。否則,請選擇請求競價型執行個體

  4. 對於 Launch 參數,您可以手動設定啟動參數,也可以使用啟動範本,如下所示:

    1. [手動設定] 若要在 Amazon EC2 主控台中定義啟動參數,請選擇「手動設定啟動參數」,然後執行下列操作:

      1. 對於 AMI,請選擇AMIs提供的其中一個基本內容 AWS,或選擇 [搜尋] 以使用AMIAMI來自我們的使用者社群 AWS Marketplace、或您自己的使用者社群。

        注意

        如果啟動參數中AMI指定的已取消註冊或停用,則無法從中啟動新實例。AMI對於設定為維持目標容量的車隊,將不會維持目標容量。

      2. (選用) 針對金鑰對名稱,選擇現有的金鑰對或建立新的金鑰對。

        [現有的金鑰對] 選擇金鑰對。

        [新 key pair] 選擇 [建立新 key pair] 以前往 [金鑰配對] 頁面。當您完成時,請返回 Spot Requests (Spot 請求) 頁面並重新整理清單。

      3. (選用) 展開 Additional launch parameters (其他啟動參數),並執行下列動作:

        1. (選用) 若要啟用 Amazon EBS最佳EBS化,對於最佳化,請選取啟動優化執EBS行個體

        2. (選用) 若要新增執行個體的暫時區塊層級儲存,請針對執行個體存放區,選擇連接啟動

        3. (選擇性) 若要新增儲存,請選擇 [新增磁碟區],然後根據執行個體類型指定其他執行個體存放EBS磁碟區或 Amazon 磁碟區。

        4. (選用) 執行個體預設為啟用基本監控。若要啟用詳細監視,對於監視,請選取啟用 CloudWatch 詳細監視

        5. (選用) 若要執行專用 Spot 執行個體,對於租用,請選擇 Dedicated - run a dedicated instance (專用 - 執行專用執行個體)。

        6. (選用) 針對安全群組,選擇一或多個安全群組或建立新的安全群組。

          [現有的安全群組] 選擇一或多個安全群組。

          [新的安全群組] 選擇 Create new security group (建立新安全群組) 以前往 Security Groups (安全群組) 頁面。當您完成時,請返回 Spot Requests (Spot 請求) 並重新整理清單。

        7. (選擇性) 若要讓您的執行個體可從網際網路存取,請針對「自動指派IPv4公用 IP」選擇「啟用」。

        8. (選擇性) 若要使用IAM角色啟動 Spot 執行個體,IAM例如設定檔,請選擇角色。

        9. (選用) 若要執行啟動指令碼,請將指令碼複製到使用者資料

        10. (選用) 若要新增標籤,請選擇 Create tag (建立標籤) 並輸入標籤的鍵和值,然後選擇 Create (建立)。針對每個標籤,重複執行上述動作。

          對於每個標籤,若要使用相同標籤標記執行個體和 Spot Fleet 請求,請確定同時選取 Instances (執行個體) 和 Fleet (機群)。若只要標記由機群啟動的執行個體,請清除 Fleet (機群)。若只要標記 Spot Fleet 請求,請清除 Instances (執行個體)。

    2. [啟動範本] 若要使用您在啟動範本中建立的組態,請選擇 [使用啟動範本],然後針對 Launch 範本選擇啟動範本。

      注意

      如果您想要 Spot 叢集中的隨需容量,則必須指定啟動範本。

  5. 針對其他請求詳細資訊,執行下列操作:

    1. 檢閱其他的請求詳細資訊。若要進行變更,請清除套用預設值

    2. (選擇性) 對於IAM叢集角色,您可以使用預設角色或選擇其他角色。若要在變更角色後使用預設角色,請選擇使用預設角色

    3. (選用) 若要建立僅在特定期間內有效的請求,請編輯請求有效性起始日期請求有效性結束日期

    4. (選用) 根據預設,Amazon 會在 Spot 叢集請求到期時EC2終止您的競價型執行個體。若要在請求過期後繼續執行這些執行個體,請清除在請求過期時終止執行個體

    5. (選用) 若要登錄 競價型執行個體與負載平衡器,請選擇從一個或多個負載平衡器接收流量,然後選擇一個或多個 Classic Load Balancer 或目標群組。

  6. 針對 Target capacity (目標容量),執行下列動作:

    1. 針對 Total target capacity (總目標容量),指定目標容量要請求的單位數目。對於單位類型,您可以選擇執行個體vCPUs、或記憶體 (MiB)。若要將目標容量指定為 0,以便稍後可以新增容量,您必須先選取維持目標容量

    2. (選用) 針對 Include On-Demand base capacity (包含隨需基礎容量),指定要請求的隨需單位數量。數量必須小於總目標容量。Amazon EC2 計算差異,並將差異分配給要請求的現貨單位。

      重要

      若要指定選用的隨需容量,您必須先選擇啟動範本。

    3. (選擇性) Amazon 預設EC2會在 Spot 執行個體中斷時終止。若要維持目標容量,請選取維持目標容量。然後,您可以指定 Amazon 在 Spot 執行個體中斷時EC2終止、停止或休眠。若要這麼做,請在中斷行為中選擇對應的選項。

      注意

      如果啟動參數中AMI指定的已取消註冊或停用,則無法從中啟動新實例。AMI在這種情況下,對於設定為維持目標容量的車隊,將不會維持目標容量。

    4. (選用) 若要允許 Spot Fleet 在機群中為現有的 Spot 執行個體發出執行個體重新平衡通知時啟動替代 Spot 執行個體,請選取 Capacity rebalance (容量重新平衡),然後選擇執行個體取代策略。如果您選擇在終止前啟動,請指定 Amazon EC2 終止舊執行個體之前的延遲時間 (以秒為單位)。如需詳細資訊,請參閱使用叢集和 S EC2 pot 叢集中的容量重新平衡來取代有風險的 Spot 執行個體

    5. (選用) 若要控制您為了在機群中所有的 Spot 執行個體所支付的每小時金額,請選取 Set maximum cost for Spot Instances (設定 Spot 執行個體的最大成本),然後輸入您願意支付的每小時金額上限。達到總額上限時,Spot Fleet 會停止啟動 Spot 執行個體,即使它未符合目標容量亦然。如需詳細資訊,請參閱為您的EC2車隊或 Spot 艦隊設定消費上限

  7. 針對 Network (網路),請執行下列動作:

    1. 在「網路」中,選擇現有的VPC或建立新的。

      [現有VPC] 選擇VPC.

      [新VPC] 選擇創建新的VPC去 Amazon VPC 控制台。完成後,請返回此畫面並重新整理清單。

    2. (選擇性) 對於可用區域,讓 Amazon 為您的競價型執行個體EC2選擇可用區域,或指定一或多個可用區域。

      如果您在可用區域中擁有一或多個子網,請從子網選擇適當的子網。若要新增子網路,請選擇「建立新子網路」以前往 Amazon 主VPC控台。完成後,返回此畫面並重新整理清單。

  8. 對於執行個體類型要求,您可以指定執行個體屬性,並讓 Amazon 使用這些屬性EC2識別最佳執行個體類型,或者指定執行個體清單。如需詳細資訊,請參閱指定EC2叢集或 Spot 叢集的執行個體類型選取屬性

    1. 如果選擇 Specify instance attributes that match your compute requirements (指定符合運算需求的執行個體屬性),請指定您的執行個體屬性,如下所示:

      1. 對於 vCPUs,輸入所需的最小和最大數目vCPUs。若要指定無限制,請選取「無最小值」或「無最大值」,或兩者皆選。

      2. 對於 Memory (GiB) (記憶體 (GiB)),輸入所需記憶體數量的下限和上限。若要指定無限制,請選取「無最小值」或「無最大值」,或兩者皆選。

      3. (選擇性) 對於其他執行個體屬性,您可以選擇性地指定一或多個屬性,以更詳細地表示您的運算需求。每個額外屬性都會將進一步的限制新增至您的請求。您可以省略額外屬性;省略時,就會使用預設值。如需每個屬性及其預設值的說明,請參閱 Amazon 命EC2令列參考get-spot-placement-scores中的。

      4. (選用) 若要檢視具有所指定屬性的執行個體類型,請展開 Preview matching instance types (預覽相符的執行個體類型)。若要排除執行個體類型,使其不在請求中使用,請選取執行個體,然後選擇 Exclude selected instance types (排除選取的執行個體類型)。

    2. 如果選擇 Manually select instance types (手動選取執行個體類型),Spot Fleet 會提供預設的執行個體類型清單。若要選取更多執行個體類型,請選擇 Add instance types (新增執行個體類型)、選取要在請求中使用的執行個體類型,然後選擇 Select (選取)。若要刪除執行個體類型,請選取執行個體類型並選擇 Delete (刪除)。

  9. 對於配置策略,請選擇符合您需求的 Spot 配置策略和隨需配置策略。如需詳細資訊,請參閱使用配置策略來確定EC2叢集或 Spot 叢集如何滿足 Spot 和隨需容量

  10. 針對 Your fleet request at a glance (您的機群請求一覽),檢閱您的機群配置,並視需要進行任何調整。

  11. (選擇性) 若要下載啟動組態的複本以搭配使用 AWS CLI,請選擇 JSONconfig

  12. 當您準備好啟動 Spot 艦隊時,請選擇啟動

    Spot 機群請求類型為 fleet。請求處理完成時,會新增類型為 instance 的請求,其狀態為 activefulfilled

使用建立競價型叢集 AWS CLI

若要使用 AWS CLI

使用命request-spot-fleet令建立 Spot 叢集請求。

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

如需組態檔案範例,請參閱 範例CLI組態競價型叢集

下列為範例輸出:

{ "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

建立可取代狀態不良的 Spot 執行個體的 Spot 叢集

Spot Fleet 會每兩分鐘定期檢查機群中 Spot 執行個體的運作狀態。執行個體的運作狀態會是 healthyunhealthy

Spot 叢集使用 Amazon 提供的狀態檢查來判斷執行個體的運作狀態EC2。如果執行個體狀態檢查或系統狀態檢查等運作狀態檢查,出現連續三次為 unhealthy,則該執行個體即為 impaired。如需詳細資訊,請參閱 Amazon EC2 執行個體的狀態檢查

您可以設定機群以取代運作狀態不佳的 競價型執行個體。啟用運作狀態檢查取代後,Spot 執行個體會在被報告為 unhealthy 時被取代。當取代一個狀態不佳的 Spot 執行個體時,機群可能會低於其目標容量長達幾分鐘。

要求
  • 運作狀態檢查替代僅支援維持目標容量的 Spot Fleets (類型 maintain 的機群),不支援一次性的 Spot Fleets (類型 request 的機群)。

  • 運作狀態檢查取代僅支援 競價型執行個體。此功能不支援 隨需執行個體。

  • 您可以設定 Spot Fleet,只在建立執行個體時取代狀況不良的執行個體。

  • 使用者只有在擁有呼叫 ec2:DescribeInstanceStatus 動作的許可時,才能使用運作狀態檢查取代功能。

Console
若要使用主控台來設定 Spot Fleet 以取代運作狀態不佳的 Spot 執行個體
  1. 請遵循在中建立競價型叢集的步驟使用已定義的參數建立 Spot Fleet 請求 (主控台)

  2. 若要設定叢集以取代運作 Health 態不良的 Spot 執行個體,請展開其他啟動參數,然後在健全狀態檢查下選取取代運作狀態不良的執 若要啟用此選項,首先必須選擇維護目標容量

AWS CLI
若要使用 AWS CLI來設定 Spot Fleet 以取代運作狀態不佳的 Spot 執行個體
  1. 請遵循在中建立競價型叢集的步驟使用建立競價型叢集 AWS CLI

  2. 若要設定機群以取代運作狀態不佳的 競價型執行個體,請在 ReplaceUnhealthyInstances 中輸入 true