使用 競價型執行個體 - Amazon Elastic Compute Cloud

使用 競價型執行個體

若要使用 Spot 執行個體,您可以建立 Spot 執行個體請求,其中包含所需的執行個體數量、執行個體類型,以及 Availability Zone (可用區域)。如果容量可用,Amazon EC2 會即刻履行您的請求。否則,Amazon EC2 會等到您的請求可以完成,或是您取消請求。

下圖顯示了 Spot 執行個體請求的運作方式。請注意,請求類型 (一次性或持久性) 會決定在 Amazon EC2 中斷 Spot 執行個體時或者如果您停止 Spot 執行個體,是否會再次開啟請求。如果是持久性請求,則會在 Spot 執行個體中斷之後再次開啟。如果是持久性請求,而且您停止 Spot 執行個體,只會在您啟動 Spot 執行個體後開啟請求。


				Spot 執行個體請求的運作方式

Spot 執行個體請求狀態

Spot 執行個體請求可以是下列任一種狀態:

  • open – 請求正等待完成。

  • active – 請求已完成,並具有關聯的 Spot 執行個體。

  • failed – 請求具有一個或多個無效的參數。

  • closed – Spot 執行個體已中斷或終止。

  • disabled – 您已停止 Spot 執行個體。

  • cancelled – 您已取消請求,或請求已過期。

下圖顯示了請求狀態之間的轉換。請注意,轉換取決於請求的類型 (一次性或持久性)。


					Spot 執行個體請求狀態

在 Amazon EC2 啟動 Spot 執行個體、請求過期、或者您取消請求之前,一次性 Spot 執行個體請求會維持有效運作。如果沒有容量可用,則 Spot 執行個體會終止,而且 Spot 執行個體請求也會結束。

即使請求已完成,持久性的 Spot 執行個體請求在過期或是您取消它之前,都會繼續維持有效運作。如果沒有容量可用,則 Spot 執行個體會中斷。在執行個體中斷後,當容量可再次提供使用時,會啟動停止或恢復休眠的 Spot 執行個體。如果有容量可用,您可以停止 Spot 執行個體並將其重新啟動。如果 Spot 執行個體已終止 (不論 Spot 執行個體處於已停止或執行中狀態),則 Spot 執行個體請求都會再次開啟,而 Amazon EC2 會啟動新的 Spot 執行個體。如需詳細資訊,請參閱 停止 Spot 執行個體啟動 Spot 執行個體終止 Spot 執行個體

您可以透過狀態,追蹤 Spot 執行個體請求的狀態和已啟動的 Spot 執行個體的狀態。如需詳細資訊,請參閱 Spot 請求狀態

為 競價型執行個體 定義持續期間

從 2021 年 7 月 1 日起,具有定義期間的 Spot 執行個體 (也稱為 Spot 區塊) 不再提供給新客戶。對於先前使用過此功能的客戶,在 2022 年 12 月 31 日之前,我們將繼續支援具有指定期間的 Spot 執行個體。

為 競價型執行個體 指定租用

您可以在單一租戶的硬體上執行 Spot 執行個體。專用的 Spot 執行個體會在實體上與隸屬於其他 AWS 帳戶的執行個體隔離。如需詳細資訊,請參閱 Dedicated InstancesAmazon EC2 專用執行個體的產品頁面。

若要執行專用 Spot 執行個體,請進行下列其中一項動作:

  • 在建立 Spot 執行個體請求時指定 dedicated 的租用。如需詳細資訊,請參閱 建立 Spot 執行個體請求

  • 使用 dedicated 的執行個體租用,在 VPC 中請求 Spot 執行個體。如需詳細資訊,請參閱 建立具有專用預留執行個體租用的 VPC。如果使用 default 的執行個體租用,在 VPC 中請求 Spot 執行個體,就不能使用 dedicated 的租用來請求它。

除了 T 執行個體之外,所有執行個體群都支援專用 競價型執行個體。對於每個支援的執行個體系列而言,只有最大型的執行個體大小或硬體大小可支援專用 競價型執行個體。

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

Amazon EC2 使用許可的服務連結角色,它需要代表您呼叫其他 AWS 服務。服務連結角色是一種獨特的 IAM 角色類型,可直接連結到 AWS 服務。服務連結角色提供安全的方式對 AWS 服務委派許可,因為只有連結的服務能夠擔任服務連結角色。如需詳細資訊,請參閱IAM 使用者指南中的使用服務連結角色

Amazon EC2 使用名為 AWSServiceRoleForEC2Spot 的服務連結角色來代您管理 競價型執行個體。

AWSServiceRoleForEC2Spot 授予的許可

Amazon EC2 會使用 AWSServiceRoleForEC2Spot 來完成下列動作:

  • ec2:DescribeInstances - 描述 Spot 執行個體

  • ec2:StopInstances - 停止 Spot 執行個體

  • ec2:StartInstances - 啟動 Spot 執行個體

建立服務連結角色

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

如果您在 2017 年 10 月之前擁有使用中的Spot 執行個體請求,則當 Amazon EC2 開始支援此服務連結角色時,Amazon EC2 會在您的 AWS 帳戶中建立 AWSServiceRoleForEC2Spot 角色。如需詳細資訊,請參閱IAM 使用者指南中的 在我的帳戶中出現新的角色

如果使用 AWS CLI 或 API 請求 Spot 執行個體,您必須確認此角色存在。

使用主控台建立 AWSServiceRoleForEC2Spot

  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

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

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

  4. Select type of trusted entity (選取信任實體類型) 頁面上,選擇 EC2、選取 EC2 - Spot Instances (EC2 - Spot 執行個體),然後選擇 Next: Permissions (下一步:許可)

  5. 在下一頁選擇 Next:Review (下一步:檢閱)

  6. 檢閱頁面上選擇建立角色

使用 AWS CLI 建立 AWSServiceRoleForEC2Spot

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

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

如果您不再需要使用 競價型執行個體,建議您刪除 AWSServiceRoleForEC2Spot 角色。從您的帳戶中刪除此角色後,如果您請求 競價型執行個體,Amazon EC2 會再次建立此角色。

授予客戶受管金鑰存取權,以便與加密的 AMI 和 EBS 快照搭配使用

如果您為 Spot 執行個體指定加密的 AMI加密的 Amazon EBS 快照,而且使用客戶受管金鑰進行加密,您必須授予 AWSServiceRoleForEC2Spot 角色許可才能使用客戶受管金鑰,使得 Amazon EC2 可以代表您啟動 Spot 執行個體。若要執行此動作,您必須將授予新增至客戶受管金鑰,如下列程序所示。

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

若要授予 AWSServiceRoleForEC2Spot 角色許可以使用客戶受管金鑰

  • 使用 create-grant 命令將授予新增至客戶受管金鑰,並指定獲授予許可能夠執行授予所允許作業的委託人 (AWSServiceRoleForEC2Spot 服務連結角色)。客戶受管金鑰由 key-id 參數和客戶受管金鑰的 ARN 指定。委託人是透過 grantee-principal 參數和 AWSServiceRoleForEC2Spot 服務連結角色的 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/AWSServiceRoleForEC2Spot \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

建立 Spot 執行個體請求

您可以使用 Amazon EC2 主控台中的啟動執行個體精靈run-instances AWS CLI 命令以您可以啟動隨需執行個體的相同方式請求 Spot 執行個體。僅出於下列原因,建議使用此方法:

  • 您已經在使用啟動執行個體精靈run-instances 命令來啟動隨需執行個體,而且您只想透過變更單一參數來變更為啟動 Spot 執行個體。

  • 您不需要具有不同執行個體類型的多個執行個體。

通常不建議在啟動 Spot 執行個體時使用此方法,因為您無法指定多個執行個體類型,並且無法在同一請求中同時啟動 Spot 執行個體和隨需執行個體。如需有關啟動 Spot 執行個體的慣用方法,其中包括啟動含有使用多個執行個體類型的 Spot 執行個體和隨需執行個體的機群,請參閱使用哪種 Spot 請求方法最好?

如果您一次請求多個 Spot 執行個體,Amazon EC2 會建立不同的 Spot 執行個體請求,如此您就可以單獨追蹤每個請求的狀態。如需追蹤 Spot 執行個體請求的詳細資訊,請參閱 Spot 請求狀態

New console

使用啟動執行個體精靈建立 Spot 執行個體請求

步驟 1–9 與您用於啟動隨需執行個體的步驟相同。在步驟 10 中,您可以設定 Spot 執行個體請求。

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在螢幕上方的導覽列上,選取「區域」。

  3. 從 Amazon EC2 主控台儀表板選擇 Launch Instance (啟動執行個體)

  4. (選用) 在 Name and tags (名稱和標籤) 下,您可以命名執行個體,並標記 Spot 執行個體請求、執行個體、磁碟區和彈性圖形。如需標籤的相關資訊,請參閱標記您的 Amazon EC2 資源

    1. 對於 Name (名稱),輸入執行個體的描述性名稱。

      執行個體名稱是一個標籤,其中鍵是 Name (名稱),而值是您指定的名稱。如果您未指定名稱,則可以透過其 ID 來標識執行個體,該 ID 將在您啟動執行個體時自動產生。

    2. 若要標記 Spot 執行個體請求、執行個體、磁碟區和彈性圖形,請選擇 Add additional tags (新增其他標籤)。選擇 Add tag (新增標籤),然後輸入鍵和值,然後選取要標記的資源類型。為每個要新增的其他標籤重新選擇 Add tag (新增標籤)。

  5. Application and OS Images (Amazon Machine Image) (應用程式和作業系統映像 (Amazon Machine Image)) 下,選擇執行個體的作業系統,然後選取 AMI。如需詳細資訊,請參閱 應用程式和作業系統映像 (Amazon Machine Image)

  6. Instance type (執行個體類型) 下,選取符合您執行個體硬體組態和大小要求的執行個體類型。如需詳細資訊,請參閱 執行個體類型

  7. Key pair (login) (金鑰對 (登入)),選擇現有的金鑰對,或選擇 Create new key pair (建立新的金鑰對) 以建立新的金鑰對。如需詳細資訊,請參閱 Amazon EC2 金鑰對和 Windows 執行個體

    重要

    如果您選擇 Proceed without key pair (Not recommended) (繼續而不使用金鑰對 (不建議)) 選項,您將無法連線到執行個體,除非您選擇已設定為允許使用者透過其他方式登入的 AMI。

  8. Network settings (網路設定) 下,使用預設設定,或視需要選擇 Edit (編輯) 以便設定網路設定。

    安全群組構成網路設定的一部分,並定義執行個體的防火牆規則。這些規則會指定應交付至您執行個體的傳入網路流量。

    如需詳細資訊,請參閱 Network settings (網路設定)

  9. 您選取的 AMI 包含一或多個儲存體磁碟區,包含根設備磁碟區。在 Configure storage (設定儲存) 下,您可以透過選擇 Add new volume (新增新磁碟區),指定要連接到執行個體的額外磁碟區。如需詳細資訊,請參閱 設定儲存

  10. Advanced details (進階詳細資訊),請設定 Spot 執行個體請求,如下所示:

    1. Purchasing option (購買選項),請選取 Request Spot Instances (請求 Spot 執行個體) 核取方塊。

    2. 您可以保留 Spot 執行個體請求的預設組態,也可以選擇右側的 Customize (自訂) 為您的 Spot 執行個體請求指定自訂設定。

      當您選擇 Customize (自訂) 時,會出現下列欄位。

      1. Maximum price (最高價格):您可以採用 Spot 價格 (以隨需價格為上限) 請求 Spot 執行個體,也可以指定您願意支付的最高金額。

        警告

        如果您指定最高價格,您的執行個體將會比選擇無最高價時更頻繁地遭到中斷。

        • No maximum price (無最高價格):您的 Spot 執行個體將以目前的 Spot 價格啟動。價格絕不會超過隨需價格。(建議)

        • Set your maximum price (per instance/hour) (設定您的最高價格 (每個執行個體/小時)):您可以指定您願意支付的最高金額。

          • 如果您指定的最高價小於目前的 Spot 價格,則不會啟動 Spot 執行個體。

          • 如果您指定的最高價格大於目前的 Spot 價格,Spot 執行個體將會啟動並按目前的 Spot 價格收費。Spot 執行個體執行後,如果 Spot 價格超過您的最高價格,Amazon EC2 將中斷您的 Spot 執行個體。

          • 無論您指定的最高價格如何,都將始終按當前 Spot 價格向您收取費用。

          若要回顧 Spot 價格的趨勢,請參閱 Spot 執行個體定價歷史記錄

      2. Request type (請求類型):您選擇的 Spot 執行個體請求類型會決定 Spot 執行個體中斷時會發生什麼狀況。

        • One-time (一次性):Amazon EC2 會為您的 Spot 執行個體發出一次性請求。如果您的 Spot 執行個體中斷,即不會重新提交請求。

        • Persistent request (持久性請求):Amazon EC2 會為您的 Spot 執行個體發出持久性請求。如果您的 Spot 執行個體中斷,系統會重新提交請求以補充中斷的 Spot 執行個體。

        若未指定數值,則預設值為一次性請求。

      3. Valid to (有效至):持久性 Spot 執行個體請求的到期日期。

        一次性請求不支援此欄位。一次性請求在請求中的所有執行個體均啟動,或是您取消請求之前,都會繼續維持有效運作。

        • No request expiry date (無請求過期日期):請求會維持在有效狀態,直到您將其取消為止。

        • Set your request expiry date (設定您的請求過期日期):持久性請求在您指定的日期之前會維持在有效狀態,或者直到您將其取消為止。

      4. Interruption behavior (中斷行為):您選擇的行為會決定 Spot 執行個體中斷時會發生什麼狀況。

        • 針對持久性請求,有效值為 Stop (停止) 和 Hibernate (休眠)。當執行個體停止時,將收取 EBS 磁碟區儲存費用。

        • 針對一次性請求,有效值僅有 Terminate (終止)。

        若未指定值,則預設值為 Terminate (終止),這對於持久性 Spot 執行個體請求無效。如果您保留預設值,並嘗試啟動持久性 Spot 執行個體請求,則會出現錯誤。

        如需詳細資訊,請參閱 中斷行為

      5. Block duration (minutes) (區塊持續時間 (分鐘))

        注意

        從 2021 年 7 月 1 日起,具有定義期間的 Spot 執行個體 (也稱為 Spot 區塊) 不再提供給新客戶。對於先前使用過此功能的客戶,在 2022 年 12 月 31 日之前,我們將繼續支援具有指定期間的 Spot 執行個體。

  11. Summary (摘要) 面板上,針對 Number of instances (執行個體的數量),輸入要啟動的執行個體數量。

    注意

    Amazon EC2 為每個 Spot 執行個體建立一個單獨的請求。

  12. Summary (摘要) 面板上,檢閱執行個體的詳細資訊,並進行任何必要的變更。提交 Spot 執行個體請求後,您就無法變更請求的參數。您可以直接導覽至啟動執行個體精靈中的某個區段,方法是在 Summary (摘要) 面板中選擇其連結。如需詳細資訊,請參閱 總結

  13. 當您準備好啟動執行個體時,請選擇 Launch instance (啟動執行個體)。

    如果執行個體無法啟動或狀態立即進入 terminated 而非 running,請參閱針對執行個體啟動問題進行故障診斷

Old console

使用啟動執行個體精靈建立 Spot 執行個體請求

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在螢幕上方的導覽列上,選取「區域」。

  3. 從 Amazon EC2 主控台儀表板選擇 Launch Instance (啟動執行個體)

  4. 選擇 Amazon Machine Image (AMI) 頁面上,選擇 AMI,如下所示:如需詳細資訊,請參閱 步驟 1:選擇 Amazon Machine Image (AMI)

  5. Choose an Instance Type (選擇執行個體類型) 頁面上,選取要啟動的執行個體硬體組態和大小,然後選擇下一步:設定執行個體詳細資訊。如需詳細資訊,請參閱 步驟 2:選擇執行個體類型

  6. 設定執行個體詳細資訊頁面上,設定 Spot 執行個體請求,如下所示:

    • Number of instances (執行個體數目):輸入要啟動的執行個體數目。

      注意

      Amazon EC2 為每個 Spot 執行個體建立一個單獨的請求。

    • (選用) 若要協助確認您維持足以處理您應用程式的正確執行個體數目,您可以選擇 Launch into Auto Scaling Group (啟動到 Auto Scaling 群組) 以建立啟動組態及 Auto Scaling 群組。Auto Scaling 會根據您的規格擴展群組中的執行個體數目。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 使用者指南

    • Purchasing option (購買選項):選擇 Request Spot instances (請求 Spot 執行個體) 啟動 Spot 執行個體。當您選擇此選項時,會出現下列欄位。

    • 目前價格:針對您選取的執行個體類型,顯示每個可用區域中的目前 Spot 價格。

    • (選擇性) 最高價格:您可以將欄位留空,也可以指定您願意支付的最高金額。

      警告

      如果您指定最高價格,執行個體將會比將欄位保留空白時更頻繁地遭到中斷。

      • 如果您指定的最高價小於 Spot 價格,則不會啟動 Spot 執行個體。

      • 如果您指定的最高價格大於目前的 Spot 價格,Spot 執行個體將會啟動並按目前的 Spot 價格收費。Spot 執行個體執行後,如果 Spot 價格超過您的最高價格,Amazon EC2 將中斷您的 Spot 執行個體。

      • 無論您指定的最高價格如何,都將始終按當前 Spot 價格向您收取費用。

      • 如果您將欄位保留空白,則需按目前的 Spot 價格支付費用。

    • 持久性請求:如果 Spot 執行個體中斷,請選擇 Persistent request (持久性請求) 以重新提交 Spot 執行個體請求。

    • 中斷行為:根據預設,Spot 服務會在中斷時終止 Spot 執行個體。如果您選擇 Persistent request (持久性請求),則可以指定 Spot 服務在中斷 Spot 執行個體時停止或休眠它。如需詳細資訊,請參閱 中斷行為

    • (選用) 請求有效期:選擇 Edit (編輯) 以指定 Spot 執行個體請求到期的時間。

    如需有關設定 Spot 執行個體的詳細資訊,請參閱步驟 3:設定執行個體詳細資訊

  7. 您選取的 AMI 包含一或多個儲存體磁碟區,包含根設備磁碟區。在 Add Storage (新增儲存體) 頁面上,您可以透過選擇 Add New Volume (新增新磁碟區),指定要連接到執行個體的額外磁碟區。如需詳細資訊,請參閱 步驟 4:新增儲存體

  8. Add Tags (新增標籤) 頁面上,透過提供鍵和值的組合,指定 標籤。如需詳細資訊,請參閱 步驟 5:新增標籤

  9. Configure Security Group (設定安全群組) 頁面上,使用安全群組定義您執行個體的防火牆規則。這些規則會指定應交付至您執行個體的傳入網路流量。所有其他流量都會遭到忽略。(如需安全群組的詳細資訊,請參閱Windows 執行個體的 Amazon EC2 安全群組。) 選取或建立安全群組,如下所示,然後選擇檢閱和啟動。如需詳細資訊,請參閱 步驟 6:設定安全群組

  10. Review Instance Launch (檢閱執行個體啟動) 頁面上,檢查您執行個體的詳細資訊,並透過選擇適當的 Edit (編輯) 連結進行任何必要的變更。當您就緒後,選擇 Launch (啟動)。如需詳細資訊,請參閱 步驟 7:檢閱執行個體啟動並選取金鑰對

  11. 選取現有金鑰對或建立新的金鑰對對話方塊中,您可以選擇現有的金鑰對或建立新的金鑰對。例如,選擇選擇現有的金鑰對,,然後選取您在設定時建立的金鑰對。如需詳細資訊,請參閱 Amazon EC2 金鑰對和 Windows 執行個體

    重要

    若您選擇繼續而不使用金鑰對選項,您將無法連線到執行個體,除非您選擇已設定為允許使用者透過其他方式登入的 AMI。

  12. 若要啟動執行個體,請選取確認核取方塊,然後選擇啟動執行個體

    如果執行個體無法啟動或狀態立即進入 terminated 而非 running,請參閱針對執行個體啟動問題進行故障診斷

AWS CLI

若要使用 run-instances 建立 Spot 執行個體請求

使用 run-instances 命令,並在 --instance-market-options 參數中指定 Spot 執行個體選項。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --count 5 \ --subnet-id subnet-08fc749671b2d077c \ --key-name MyKeyPair \ --security-group-ids sg-0b0384b66d7d692f9 \ --instance-market-options file://spot-options.json

以下是在 JSON 檔案中指定 --instance-market-options 的資料結構。您也可以指 ValidUntilInstanceInterruptionBehavior。如果您沒有在資料結構中指定欄位,則會使用預設值。

以下範例會建立 persistent 請求。

{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent" } }

 

若要使用 request-spot-instances 建立 Spot 執行個體請求

注意

我們強烈反對使用 request-spot-instances 命令來請求 Spot 執行個體,因為這是一個沒有計劃投資的舊式 API。如需詳細資訊,請參閱使用哪種 Spot 請求方法最好?

使用 request-spot-instances 命令來建立一次性請求。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json

使用 request-spot-instances 命令來建立一個永久的請求。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "persistent" \ --launch-specification file://specification.json

例如,啟動規格檔案以搭配這些命令使用,請參閱Spot 執行個體請求啟動規格範例。如果您從 Spot 請求主控台下載啟動規格檔案,則必須改用 request-spot-fleet 命令 (Spot 請求主控台使用 Spot 機群指定 Spot 執行個體請求)。

尋找執行中的 競價型執行個體

當有容量可用時,Amazon EC2 會啟動 Spot 執行個體。Spot 執行個體會執行,直到它中斷或您自己終止它。

尋找執行中的 競價型執行個體 (主控台)

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在瀏覽窗格中,選擇 Spot 請求。您可以看到 Spot 執行個體請求和 Spot Fleet 請求。如果已完成 Spot 執行個體請求,容量就是 Spot 執行個體的 ID。對於 Spot Fleet ,容量表示已完成所請求容量的程度。若要檢視 Spot Fleet 中的執行個體 ID,請選擇展開箭頭,或選取該機群並選擇 Instances (執行個體)。

    注意

    對於 Spot Fleet 建立的 Spot 執行個體請求,不會立即用表示其所屬 Spot Fleet 的系統標籤來標記請求,並且在一段時間內可能會與 Spot Fleet 請求分開。

    或者,在導覽窗格中選擇執行個體。在右上角選擇設定圖示 ( ),然後在 Attribute (屬性) 欄下選取 Instance lifecycle (執行個體生命週期)。對於每個執行個體,Instance lifecycle (執行個體生命週期)normalspotscheduled

若要尋找執行中的 Spot 執行個體 (AWS CLI)

若要列舉 競價型執行個體,請使用 describe-spot-instance-requests 命令搭配 --query 選項,如下所示:

aws ec2 describe-spot-instance-requests \ --query "SpotInstanceRequests[*].{ID:InstanceId}"

下列為範例輸出:

[ { "ID": "i-1234567890abcdef0" }, { "ID": "i-0598c7d356eba48d7" } ]

或者,您可以使用 describe-instances 命令搭配 --filters 選項來列舉 競價型執行個體,如下所示:

aws ec2 describe-instances \ --filters "Name=instance-lifecycle,Values=spot"

若要描述單一的 Spot 執行個體,使用 describe-spot-instance-requests 命令與 --spot-instance-request-ids 選項。

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-08b93456

標記 Spot 執行個體請求

為了協助分類和管理您的 Spot 執行個體請求,您可以使用自訂中繼資料來標記它們。您可以在建立 Spot 執行個體請求時或之後將標記指派給請求。您可以使用 Amazon EC2 主控台或命令列工具來指派標籤。

當您標記 Spot 執行個體請求時,系統不會自動標記 Spot 執行個體請求所啟動的執行個體和磁碟區。您需要明確標記 Spot 執行個體請求啟動的執行個體和磁碟區。您可以在啟動期間或之後將標籤指派給 Spot 執行個體和磁碟區。

如需標籤運作方式的詳細資訊,請參閱標記您的 Amazon EC2 資源

先決條件

授與 IAM 使用者標記資源的許可。如需有關 IAM 政策和政策範例的詳細資訊,請參閱 範例:標籤資源

您建立的 IAM 政策取決於建立 Spot 執行個體請求時使用的方法。

若要授予 IAM 使用者許可,以便在使用啟動執行個體精靈或 run-instances 時標記資源。

建立包含下列項目的 IAM 政策:

  • ec2:RunInstances 動作。這會授與 IAM 使用者啟動執行個體的許可。

  • 對於 Resource,請指定 spot-instances-request。這可讓使用者建立 Spot 執行個體請求,它們會請求 Spot 執行個體。

  • ec2:CreateTags 動作。這會授與 IAM 使用者建立標籤的許可。

  • 對於 Resource,請指定 *。這可讓使用者標記執行個體啟動期間建立的所有資源。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLaunchInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagSpotInstanceRequests", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
注意

當您使用 RunInstances 動作來建立 Spot 執行個體請求並在建立時標記 Spot 執行個體請求,您必須知道 Amazon EC2 如何評估 RunInstances 陳述式中的 spot-instances-request 資源。

spot-instances-request 資源會在 IAM 政策中進行評估,如下所示:

  • 如果您沒有在建立時標記 Spot 執行個體請求,則 Amazon EC2 不會評估 RunInstances 陳述式中的 spot-instances-request 資源。

  • 如果您在建立時標記 Spot 執行個體請求,Amazon EC2 會評估 RunInstances 陳述式中的 spot-instances-request 資源。

因此,對於 spot-instances-request 資源,下列規則適用於 IAM 政策:

  • 如果您使用 RunInstances 來建立 Spot 執行個體請求,而且您不打算在建立時標記 Spot 執行個體請求,則不需要明確允許 spot-instances-request 資源;呼叫將會成功。

  • 如果您使用 RunInstances 來建立 Spot 執行個體請求,並打算在建立時標記 Spot 執行個體請求,則必須在 RunInstances 允許陳述式中包含 spot-instances-request 資源,否則呼叫將會失敗。

  • 如果您使用 RunInstances 建立 Spot 執行個體請求,並打算在建立時標記 Spot 執行個體請求,則必須在 CreateTags 允許陳述式中指定 spot-instances-request 資源或包含 * 萬用字元,否則呼叫將會失敗。

例如,IAM 政策 (包括 Spot 執行個體請求不支援的政策),請參閱 使用 競價型執行個體

授予 IAM 使用者許可,以便在使用 request-spot-instances 時標記資源

建立包含下列項目的 IAM 政策:

  • ec2:RequestSpotInstances 動作。這會授予 IAM 使用者建立 Spot 執行個體請求的許可。

  • ec2:CreateTags 動作。這會授與 IAM 使用者建立標籤的許可。

  • 對於 Resource,請指定 spot-instances-request。這允許使用者只標記 Spot 執行個體請求。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotInstanceRequest", "Effect": "Allow", "Action": [ "ec2:RequestSpotInstances", "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-instances-request/*" }

標記新的 Spot 執行個體請求

若要使用主控台標記新的 Spot 執行個體請求

  1. 遵循建立 Spot 執行個體請求程序。

  2. 若要新增標記,請在新增標記頁面上選擇新增標記,然後輸入標記的金鑰和值。為每個額外的標籤選擇新增其他標籤

    對於每個標籤,您可以用相同的標籤來標記 Spot 執行個體請求、Spot 執行個體以及磁碟區。若要標記所有這三個項目,請確保已選取執行個體磁碟區Spot 執行個體請求。若只要標記一個或兩個,請確定已選取要標記的資源,並清除其他資源。

  3. 完成建立 Spot 執行個體請求的必要欄位,然後選擇 Launch (啟動)。如需詳細資訊,請參閱 建立 Spot 執行個體請求

若要使用 AWS CLI 標記新的 Spot 執行個體請求

若要在建立 Spot 執行個體請求時進行標記,請依照下列方式設定 Spot 執行個體請求組態:

  • 使用 --tag-specification 參數指定 Spot 執行個體請求的標籤。

  • 對於 ResourceType,請指定 spot-instances-request。如果您指定另一個值,Spot 執行個體請求將失敗。

  • 對於 Tags,指定金鑰值對。您可以指定多個金鑰值對。

在下面的例子中,Spot 執行個體請求標記了兩個標籤:Key=Environment and Value=Production 和 Key=Cost-Center and Value=123。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json \ --tag-specification 'ResourceType=spot-instances-request,Tags=[{Key=Environment,Value=Production},{Key=Cost-Center,Value=123}]'

標記現有的 Spot 執行個體請求

若要使用主控台標記現有的 Spot 執行個體請求

建立 Spot 執行個體請求後,您可以使用主控台為 Spot 執行個體請求新增標籤。

https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  2. 選取您的 Spot 執行個體請求。

  3. 選擇標籤索引標籤,然後選擇建立標籤

若要使用主控台標記現有的 Spot 執行個體

在您的 Spot 執行個體請求啟動 Spot 執行個體之後,您可以使用主控台將標籤新增到執行個體。如需詳細資訊,請參閱 新增和刪除個別資源上的標籤

若要使用 AWS CLI 標記現有的 Spot 執行個體請求或 Spot 執行個體

使用建立標籤命令來標記現有資源。在下面的例子中,現有的 Spot 執行個體請求和 Spot 執行個體會使用 Key=purpose and Value=test 進行標記。

aws ec2 create-tags \ --resources sir-08b93456 i-1234567890abcdef0 \ --tags Key=purpose,Value=test

檢視 Spot 執行個體請求標籤

若要使用主控台檢視 Spot 執行個體請求

https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  2. 選取您的 Spot 執行個體請求並選擇 Tags (標籤) 標籤。

若要描述 Spot 執行個體請求標籤

使用 describe-tag 命令檢視指定資源的標籤。在下列範例中,您會描述指定請求的標記。

aws ec2 describe-tags \ --filters "Name=resource-id,Values=sir-11112222-3333-4444-5555-66666EXAMPLE"
{ "Tags": [ { "Key": "Environment", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Production" }, { "Key": "Another key", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Another value" } ] }

您也可以透過描述 Spot 執行個體請求來檢視 Spot 執行個體請求的標籤。

使用 describe-spot-instance-requests 命令來檢視指定 Spot 執行個體請求的組態,其中包括為請求指定的任何標籤。

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-11112222-3333-4444-5555-66666EXAMPLE
{ "SpotInstanceRequests": [ { "CreateTime": "2020-06-24T14:22:11+00:00", "InstanceId": "i-1234567890EXAMPLE", "LaunchSpecification": { "SecurityGroups": [ { "GroupName": "launch-wizard-6", "GroupId": "sg-1234567890EXAMPLE" } ], "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true, "VolumeSize": 8, "VolumeType": "gp2" } } ], "ImageId": "ami-1234567890EXAMPLE", "InstanceType": "t2.micro", "KeyName": "my-key-pair", "NetworkInterfaces": [ { "DeleteOnTermination": true, "DeviceIndex": 0, "SubnetId": "subnet-11122233" } ], "Placement": { "AvailabilityZone": "eu-west-1c", "Tenancy": "default" }, "Monitoring": { "Enabled": false } }, "LaunchedAvailabilityZone": "eu-west-1c", "ProductDescription": "Linux/UNIX", "SpotInstanceRequestId": "sir-1234567890EXAMPLE", "SpotPrice": "0.012600", "State": "active", "Status": { "Code": "fulfilled", "Message": "Your spot request is fulfilled.", "UpdateTime": "2020-06-25T18:30:21+00:00" }, "Tags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Another key", "Value": "Another value" } ], "Type": "one-time", "InstanceInterruptionBehavior": "terminate" } ] }

若要取消 Spot 執行個體請求

如果您不再需要 Spot 執行個體請求,可以取消它。您只能取消狀態為 openactivedisabled 的 Spot 執行個體請求。

  • 當請求尚未處理完成,而且尚未啟動任何執行個體時,Spot 執行個體請求的狀態為 open

  • 當請求已處理完成,而且因此啟動了 Spot 執行個體時,Spot 執行個體請求的狀態為 active

  • 當您停止 Spot 執行個體時,您的 Spot 執行個體請求的狀態為 disabled

如果您的 Spot 執行個體請求的狀態為 active,並且擁有相關聯的執行中 Spot 執行個體,則取消請求並不會終止執行個體。如需有關終止 Spot 執行個體的詳細資訊,請參閱終止 Spot 執行個體

若要取消 Spot 執行個體請求 (主控台)

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Spot Requests (Spot 請求),然後選取 Spot 執行個體請求。

  3. 選擇動作取消請求

  4. (選擇性) 如果您已完成與 競價型執行個體 的關聯,您可以終止它們。在取消 Spot 請求對話方塊中,選取終止執行個體,然後選擇確認

若要取消 Spot 執行個體請求 (AWS CLI)

  • 使用 cancel-spot-instance-requests 命令來取消指定的 Spot 執行個體請求。

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-08b93456

停止 Spot 執行個體

如果您現在不需要您的 競價型執行個體,但想稍後重新啟動它們,而不會遺失 Amazon EBS 磁碟區中保留的資料,您可以停止它們。停止 Spot 執行個體的步驟與停止隨需執行個體的步驟類似。

注意

停止 Spot 執行個體時,您可以修改其某些執行個體屬性,但無法修改執行個體類型。

我們不會對已停止的 Spot 執行個體計費,也不會收取數據傳輸費,但是會收取任何 Amazon EBS 磁碟區的儲存費用。

限制

  • 如果從 persistent Spot 執行個體請求中啟動 Spot 執行個體,則只能停止 Spot 執行個體。

  • 如果已取消關聯的 Spot 執行個體請求,則無法停止 Spot 執行個體。當 Spot 執行個體請求被取消時,您只能終止 Spot 執行個體。

  • 如果 Spot 執行個體屬於某個機群或啟動群組或可用區域群組,則無法停止它。

New console

若要停止 Spot 執行個體 (主控台)

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體),然後選取該 Spot 執行個體。

  3. 選擇 Instance state (執行個體狀態)Stop instance (停止執行個體)

  4. 出現確認提示時,請選擇 Stop (停止)

Old console

若要停止 Spot 執行個體 (主控台)

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體),然後選取該 Spot 執行個體。

  3. 選擇動作執行個體狀態停止

AWS CLI

若要停止 Spot 執行個體 (AWS CLI)

  • 使用 stop-instances 命令手動停止一或多個 競價型執行個體。

    aws ec2 stop-instances --instance-ids i-1234567890abcdef0

啟動 Spot 執行個體

您可以啟動之前已停止的 Spot 執行個體。啟動 Spot 執行個體的步驟與啟動隨需執行個體的步驟類似。

先決條件

只有在下列情況下,才能啟動 Spot 執行個體:

  • 您手動停止了 Spot 執行個體。

  • Spot 執行個體是 EBS 支援的執行個體。

  • Spot 執行個體容量可用。

  • Spot 價格低於您的最高價格。

限制

  • 如果 Spot 執行個體屬於某個機群或啟動群組或可用區域群組,則無法啟動它。

New console

若要啟動 Spot 執行個體 (主控台)

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體),然後選取該 Spot 執行個體。

  3. 選擇 Instance state (執行個體狀態)Start instance (啟動執行個體)

Old console

若要啟動 Spot 執行個體 (主控台)

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體),然後選取 Spot 執行個體。

  3. 依序選擇動作執行個體狀態啟動

AWS CLI

若要啟動 Spot 執行個體 (AWS CLI)

  • 使用 start-instances 命令手動啟動一或多個 競價型執行個體。

    aws ec2 start-instances --instance-ids i-1234567890abcdef0

終止 Spot 執行個體

如果終止持久性 Spot 執行個體請求啟動的執行中或已停止的 Spot 執行個體,Spot 執行個體請求會轉變為 open 狀態,以便啟動新的 Spot 執行個體。若要確保沒有啟動新的 Spot 執行個體,您必須先取消 Spot 執行個體請求。

如果您取消具有執行中 Spot 執行個體的 active Spot 執行個體請求,則執行中的 Spot 執行個體不會自動終止;您必須手動終止 Spot 執行個體。

如果您取消具有已停止的 Spot 執行個體的 disabled Spot 執行個體請求,則 Amazon EC2 Spot 服務會自動終止已停止的 Spot 執行個體。取消 Spot 執行個體請求和 Spot 服務終止 Spot 執行個體之間可能有短暫延遲。

如需關於取消 Spot 執行個體請求的詳細資訊,請參閱若要取消 Spot 執行個體請求

New console

若要使用主控台手動終止 Spot 執行個體

  1. 終止執行個體前,請檢查您的 Amazon EBS 磁碟區不會在終止時被刪除,並確認已將執行個體存放區磁碟區上的所需資料複製到持久性儲存 (例如 Amazon EBS 或 Amazon S3),藉此確認您不會遺失任何資料。

  2. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  3. 在導覽窗格中,選擇 Instances (執行個體)。

  4. 若要確認執行個體是 Spot 執行個體,請檢查 spot 是否出現在 Instance lifecycle (執行個體生命週期) 資料欄中。

  5. 選取執行個體,然後選擇 Actions (動作)Instance State (執行個體狀態)Terminate instance (終止執行個體)

  6. 出現確認提示時,請選擇 Terminate (終止)

Old console

若要使用主控台手動終止 Spot 執行個體

  1. 終止執行個體前,請檢查您的 Amazon EBS 磁碟區不會在終止時被刪除,並確認已將執行個體存放區磁碟區上的所需資料複製到持久性儲存 (例如 Amazon EBS 或 Amazon S3),藉此確認您不會遺失任何資料。

  2. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  3. 在導覽窗格中,選擇 Instances (執行個體)。

  4. 若要確認執行個體是 Spot 執行個體,請檢查 spot 是否出現在 Lifecycle (生命週期) 資料欄中。

  5. 選取執行個體,然後選擇 Actions (動作)Instance State (執行個體狀態)Terminate (終止)

  6. 出現確認提示時,請選擇 Yes, Terminate (是,終止)

AWS CLI

若要使用 AWS CLI 手動終止 Spot 執行個體

  • 使用 terminate-instances 命令手動終止 競價型執行個體:

    aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7