

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

# Amazon OpenSearch Service 中的服務軟體更新
<a name="service-software"></a>

**注意**  
如需每個*主要* （非修補程式） 服務軟體更新中所做的變更和新增的說明，請參閱[版本備註](release-notes.md)。

Amazon OpenSearch Service 會定期發行服務軟體更新以新增功能或強化您的網域。主控台中的 **Notifications** (通知) 面板是查看更新是否可用或檢查更新狀態的最簡單方法。每個通知都包含有關服務軟體更新的詳細資訊。所有服務軟體更新都使用藍/綠部署，將停機時間降至最低。

服務軟體更新與 OpenSearch Service *版本*升級不同。如需有關升級至較新版本的 OpenSearch Service 的資訊，請參閱 [升級 Amazon OpenSearch Service 網域](version-migration.md)。

 OpenSearch Service 會要求您在所需的服務軟體更新可供使用的 30 天內套用。這些更新對於維護安全合規至關重要。

 如果您未在 30 天內套用必要的更新，您將在 30 天內每 15 天收到提醒通知。在這段期間不合規的情況下，您的網域將會隔離，並產生下列效果：
+ 已移除對您網域的所有網路存取
+ 網域狀態變更為**隔離**
+ 在您套用必要的更新之前，網域仍然無法使用

 在隔離期間，您將繼續每 15 天收到提醒通知，為期 60 天。如果您在此期間未套用必要的更新，您的 OpenSearch Service 網域和所有相關資料都會永久刪除。如需詳細資訊，請參閱[疑難排解驗證錯誤](managedomains-configuration-changes.md#validation)。

## 選用與必要的更新
<a name="service-software-optional-required"></a>

OpenSearch Service 有兩種廣泛的服務軟體更新類別：

### 選用更新
<a name="service-software-optional"></a>

選用的服務軟體更新通常包括增強功能和對新功能或功能的支援。您的網域不會強制執行選用更新，也沒有安裝它們的硬性截止日期。更新可用性會透過電子郵件和主控台通知進行通訊。您可以選擇立即套用更新，或將其重新排程為更適當的日期和時間。您也可以在網域的[離峰時段](off-peak.md)進行排程。大多數軟體更新都是選用的。

無論您是否排程更新，如果您在網域上進行造成[藍/綠部署](managedomains-configuration-changes.md)的變更，OpenSearch Service 都會為您自動更新服務軟體。

您可以將網域設定為在[離峰時間](off-peak.md)自動套用選用更新。開啟此選項時，OpenSearch Service 會在選用更新可用後等待至少 13 天，然後在七天後排程更新。排定更新時，您會收到主控台通知，您可以選擇在稍後日期重新排定更新。

若要開啟自動軟體更新，請選取建立或更新網域時**啟用自動軟體更新**。若要使用 設定相同的設定 AWS CLI，請在建立或更新網域`true`時將 `--software-update-options`設定為 。

### 必要的更新
<a name="service-software-required"></a>

必要的服務軟體更新通常包括重要的安全性修正或其他強制性更新，以確保網域的持續完整性和功能。所需更新的範例包括 Log4j 常見漏洞與暴露 (CVEs) 和執行個體中繼資料服務第 2 版 (IMDSv2) 的強制執行。一年中的強制性更新數量通常少於三個。

OpenSearch Service 會自動排程這些更新，並在排定的更新七天前透過電子郵件和主控台通知通知您。您可以選擇立即套用更新，或在*允許的時間範圍內重新排程更適當的日期和時間。*您也可以在網域的下一個[離峰時段](off-peak.md)進行排程。如果您未對必要的更新採取任何動作，且未進行任何導致藍/綠部署的網域變更，OpenSearch Service 可以在網域的離峰時段內超過指定截止日期 （通常為自可用性起 14 天） 的任何時間啟動更新。

無論何時排定更新，如果您變更網域而導致[藍/綠部署](managedomains-configuration-changes.md)，OpenSearch Service 會自動為您更新網域。

## 修補程式更新
<a name="service-software-patches"></a>

以 "-P" 和數字結尾的服務軟體版本，例如 R20211203-{{P4}}，是修補程式版本。修補程式可能包括效能改進、小錯誤修復、安全修復或狀態改善。修補程式版本不包含新功能或重大變更，而且通常不會對使用者造成直接或明顯的影響。服務軟體通知會告訴您修補程式版本是選用還是強制性。

## 考量事項
<a name="service-software-considerations"></a>

在決定是否要更新網域時，請考慮下列各項：
+ 手動更新網域可讓您更快速地利用新功能。當您選擇 **Update** (更新) 時，OpenSearch Service 會將請求置於佇列中，並在有時間時開始更新。
+ 初始化服務軟體更新時，OpenSearch Service 會在更新開始和完成時傳送通知。
+ 軟體更新使用藍/綠部署盡量減少停機時間。更新可能會暫時損耗叢集的專用主節點，因此請務必維持足夠的容量來處理相關的額外負荷。
+ 更新通常在幾分鐘內完成，但如果您的系統負載過重，也可能需要數小時甚至數天的時間。請考慮在設定的[離峰時段](off-peak.md)期間更新您的網域，以避免長時間更新。

## 啟動服務軟體更新
<a name="service-software-requesting"></a>

您可以透過 OpenSearch Service 主控台、 AWS CLI或其中一個 SDKs 請求服務軟體更新。

### 主控台
<a name="service-software-request-console"></a>

**請求服務軟體更新**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) 的 Amazon OpenSearch Service 主控台。

1. 選取網域名稱以開啟其組態。

1. 選擇**動作**、**更新**並選取下列其中一個選項：
   + **立即套用更新** - *如果有可用的容量*，立即排定在目前小時內執行的動作。如果無法使用容量，我們會提供其他可用的時段供您選擇。
   + **在離峰時段排程** – 只有在網域啟用離峰時段時才可用。排程在網域設定的離峰時段期間進行更新。無法保證會在下一個立即時段進行更新。視容量而定，它可能會在後續幾天內發生。如需詳細資訊，請參閱[在離峰時段期間排程軟體更新](#service-software-offpeak)。
   + **排定特定日期和時間** – 排定在特定日期和時間進行更新。如果您指定的時間因容量原因而無法使用，您可以選取不同的時段。

   如果您將更新排程在稍後的日期 （在網域的離峰時段內或之外），您可以隨時重新排程更新。如需說明，請參閱[重新排程動作](off-peak.md#off-peak-reschedule)。

1. 選擇**確認**。

### AWS CLI
<a name="service-software-request-cli"></a>

傳送 [start-service-software-update](https://docs.aws.amazon.com/cli/latest/reference/opensearch/start-service-software-update.html) AWS CLI 請求以啟動服務軟體更新。此範例會立即將更新新增至佇列：

```
aws opensearch start-service-software-update \
  --domain-name {{my-domain}} \
  --schedule-at "NOW"
```

**回應：**

```
{
    "ServiceSoftwareOptions": {
        "CurrentVersion": "R20220928-P1",
        "NewVersion": "R20220928-P2",
        "UpdateAvailable": true,
        "Cancellable": true,
        "UpdateStatus": "PENDING_UPDATE",
        "Description": "",
        "AutomatedUpdateDate": "1969-12-31T16:00:00-08:00",
        "OptionalDeployment": true
    }
}
```

**提示**  
請求更新後，您有很短的時間可以取消更新。此`PENDING_UPDATE`狀態的持續時間可能很大，取決於您的 AWS 區域 和 OpenSearch Service 正在執行的並行更新數量。若要取消更新，請使用 主控台或 `cancel-service-software-update` AWS CLI 命令。

如果請求因 而失敗`BaseException`，表示您指定的時間因容量原因而無法使用，您必須指定不同的時間。OpenSearch Service 在回應中提供替代的可用插槽建議。

### AWS SDKs
<a name="service-software-request-sdk"></a>

此範例 Python 指令碼使用來自 的 [describe\_domain](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearch.html#OpenSearchService.Client.describe_domain) 和 [start\_service\_software\_update](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/opensearch.html#OpenSearchService.Client.start_service_software_update) 方法 適用於 Python (Boto3) 的 AWS SDK ，來檢查網域是否符合服務軟體更新的資格，如果符合，則啟動更新。您必須提供 `domain_name` 的值。

```
import boto3
from botocore.config import Config
import time

# Build the client using the default credential configuration.
# You can use the CLI and run 'aws configure' to set access key, secret
# key, and default region.

my_config = Config(
    # Optionally lets you specify a Region other than your default.
    region_name='us-east-1'
)

domain_name = ''  # The name of the domain to check and update

client = boto3.client('opensearch', config=my_config)


def getUpdateStatus(client):
    """Determines whether the domain is eligible for an update"""
    response = client.describe_domain(
        DomainName=domain_name
    )
    sso = response['DomainStatus']['ServiceSoftwareOptions']
    if sso['UpdateStatus'] == 'ELIGIBLE':
        print('Domain [' + domain_name + '] is eligible for a service software update from version ' +
              sso['CurrentVersion'] + ' to version ' + sso['NewVersion'])
        updateDomain(client)
    else:
        print('Domain is not eligible for an update at this time.')


def updateDomain(client):
    """Starts a service software update for the eligible domain"""
    response = client.start_service_software_update(
        DomainName=domain_name
    )
    print('Updating domain [' + domain_name + '] to version ' +
          response['ServiceSoftwareOptions']['NewVersion'] + '...')
    waitForUpdate(client)


def waitForUpdate(client):
    """Waits for the domain to finish updating"""
    response = client.describe_domain(
        DomainName=domain_name
    )
    status = response['DomainStatus']['ServiceSoftwareOptions']['UpdateStatus']
    if status == 'PENDING_UPDATE' or status == 'IN_PROGRESS':
        time.sleep(30)
        waitForUpdate(client)
    elif status == 'COMPLETED':
        print('Domain [' + domain_name +
              '] successfully updated to the latest software version')
    else:
        print('Domain is not currently being updated.')

def main():
    getUpdateStatus(client)
```

## 在離峰時段期間排程軟體更新
<a name="service-software-offpeak"></a>

在 2023 年 2 月 16 日之後建立的每個 OpenSearch Service 網域，其每日 10 小時時段介於當地時間下午 10：00 到上午 8：00 之間，我們認為是[離峰時段](off-peak.md)。OpenSearch Service 使用此時段來排程網域的服務軟體更新。離峰更新有助於在較高的流量期間，將叢集專用主節點上的壓力降至最低。未經您的同意，OpenSearch Service 無法在此 10 小時時段之外啟動更新。
+ 對於*選用*更新，OpenSearch Service 會通知您更新的可用性，並提示您在即將到來的離峰時段排程更新。
+ 對於*必要的*更新，OpenSearch Service 會在即將到來的離峰時段自動排程更新，並提前三天通知您。您可以重新排程更新 （適用於離峰時段內外），但僅限於完成更新所需的時間範圍內。

對於每個網域，您可以選擇以自訂時間覆寫預設的下午 10：00 開始時間。如需說明，請參閱[設定自訂離峰時段](off-peak.md#off-peak-custom)。

### 主控台
<a name="service-software-offpeak-console"></a>

**在即將來臨的離峰時段中排程更新**

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home ) 的 Amazon OpenSearch Service 主控台。

1. 選取網域名稱以開啟其組態。

1. 選擇**動作**、**更新**。

1. 選取**在離峰時段排程**。

1. 選擇**確認**。

您可以在**離峰時段**索引標籤上檢視排程動作，並隨時重新排程。請參閱 [檢視排程動作](off-peak.md#off-peak-view)。

### CLI
<a name="service-software-offpeak-cli"></a>

若要在即將來臨的離峰時段使用 排程更新 AWS CLI，請傳送 [StartServiceSoftwareUpdate](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_StartServiceSoftwareUpdate.html) 請求`OFF_PEAK_WINDOW`，並為 `--schedule-at` 參數指定 ：

```
aws opensearch start-service-software-update \
  --domain-name {{my-domain}} \
  --schedule-at "OFF_PEAK_WINDOW"
```

## 監控服務軟體更新
<a name="service-software-monitor"></a>

OpenSearch Service 會在服務軟體更新可用、必要、已啟動、已完成或失敗時傳送[通知](managedomains-notifications.md)。您可以在 OpenSearch Service 主控台的**通知**面板中檢視通知。如果更新為可選，則通知嚴重性為 `Informational`；如果必須更新，則為 `High`。

OpenSearch Service 也會將服務軟體事件傳送至 Amazon EventBridge。您可以使用 EventBridge 設定傳送電子郵件的規則，或在接收事件時執行特定動作。如需逐步解說範例，請參閱 [教學課程：可用軟體更新的 Amazon SNS 提醒](sns-events.md)。

若要查看傳送至 Amazon EventBridge 的每個服務軟體事件的格式，請參閱 [服務軟體更新事件](monitoring-events.md#monitoring-events-sso)。

## 網域不符合更新條件時，
<a name="service-software-ineligible"></a>

如果您的網域處於以下任何一種狀態，則不符合服務軟體更新的資格：


| State | Description | 
| --- | --- | 
| 處理中的網域 | 組態變更中的網域 請於操作完成後檢查更新資格。 | 
| 紅色叢集狀態 | 叢集中一或多個索引是紅色的。如需疑難排解步驟，請參閱[紅色叢集狀態](handling-errors.md#handling-errors-red-cluster-status)。 | 
| 高錯誤率 | ​OpenSearch 叢集在嘗試處理請求時，傳回大量的 5*xx* 錯誤。此問題通常是因為太多同時讀寫請求造成。請考慮降低叢集流量或擴展網域。 | 
| 分割大腦 | *分割大腦*表示 ​OpenSearch 叢集有不只一個主節點，且已分為兩個叢集，這兩個叢集將不會自行重新連結。您也可以使用建議數量的[專用主節點](managedomains-dedicatedmasternodes.md)來避免大腦分割。如需從大腦分割中恢復的協助，請聯絡 [支援](https://console.aws.amazon.com/support/home)。 | 
| Amazon Cognito 整合問題 | 您的網域使用 [OpenSearch Dashboards 身分驗證](cognito-auth.md)，而 OpenSearch Service 找不到一個或多個 Amazon Cognito 資源。如果缺少 Amazon Cognito 使用者集區，通常就會發生此問題。若要修正問題，請重新建立缺失的資源並設定由 OpenSearch Service 網域使用該項資源。 | 
| 其他 ​ 服務問題 | OpenSearch Service ​本身的問題可能會使您的網域顯示為不符合更新資格。如果上述情況都不適用於您的網域且問題持續超過一天，請聯絡 [支援](https://console.aws.amazon.com/support/home)。 | 

## 復原服務軟體更新
<a name="service-software-rollback"></a>

Amazon OpenSearch Service 支援轉返服務軟體更新。您可以使用 OpenSearch Service 主控台、 AWS CLI或其中一個 AWS SDKs 來啟動轉返。軟體更新會使用藍/綠部署轉返。

**注意**  
只有 2026 年 4 月 24 日當天或之後套用的服務軟體更新才支援轉返。引擎版本升級無法復原。

### 轉返資格和考量事項
<a name="service-software-rollback-eligibility"></a>

您的網域必須符合下列所有條件，才能使用轉返：
+ **網域作用中** – 網域必須處於 `Active` 狀態。當組態變更、軟體更新或其他藍/綠部署正在進行時，無法使用轉返。
+ **在復原時段內** – 軟體更新必須在允許的復原期間內套用。請參閱 [回復時段](#service-software-rollback-windows)。
+ **更新後沒有組態變更** – 如果您在套用軟體更新後對網域進行組態變更，則會封鎖轉返。組態變更可能會影響與先前軟體版本不相容的網域設定。例如，變更執行個體類型、啟用複本，或在更新後調整儲存體設定會封鎖復原。
+ **服務不會自動套用更新** – 如果您在 30 天的可用性時段內未對強制性更新採取動作，且 OpenSearch Service 自動套用更新，則無法復原該更新。
+ **更新不是引擎版本升級** – 引擎版本變更 （例如，從 OpenSearch 1.3 升級到 OpenSearch 2.11) 是不可復原的。僅支援服務軟體版本轉返。
+ **存在先前的軟體版本** – 回復僅適用於此功能正式推出 (GA) 之後套用的軟體更新。由於 GA 沒有要復原的先前版本，因此尚未進行軟體更新的網域。
+ **每次更新只允許一個轉返** – 轉返完成後，網域會被視為處於轉返狀態。在成功套用新的軟體更新之前，您無法再次轉返。
+ **軟體更新已明確啟動** – 只有當軟體更新由您明確啟動或由 OpenSearch Service 自動排程為強制性或選擇性更新的一部分時，才能使用轉返。下列情況時，無法使用轉返：
  + 軟體更新是在由組態變更觸發的藍/綠部署期間套用。這包括啟用 `UseLatestServiceSoftwareForBlueGreen`設定的情況，這會將最新的軟體更新與組態變更綁定在一起。您可以選擇停用此設定。
  + 在網域的服務啟動維護操作期間套用更新，例如基礎設施復原、自動修復或 OpenSearch Service 執行的其他內部操作，以維護網域的運作狀態和可用性。

### 回復時段
<a name="service-software-rollback-windows"></a>

復原視窗取決於套用的軟體更新類型。


| 更新類型 | 轉返視窗 | 備註 | 
| --- | --- | --- | 
| 選用 | 從套用更新之日起 15 天 | 無論您手動套用更新、排程更新，還是在離峰時間自動套用更新，都適用。 | 
| 強制性 | 從套用更新之日起 15 天 | 只有在您在 30 天的可用性時段內自行套用更新時，才能使用。如果服務在截止日期後自動套用更新，則無法回復。 | 

回復時段過期後，自助式回復不再可用。[支援](https://console.aws.amazon.com/support/home) 如果您在視窗關閉後遇到重大問題，請聯絡 。

### 如何請求轉返
<a name="service-software-rollback-requesting"></a>

您可以使用 `RollbackServiceSoftwareUpdate` API 請求轉返。

#### 請求
<a name="service-software-rollback-request"></a>

```
POST /2021-01-01/opensearch/serviceSoftwareUpdate/rollback
```

請求內文：

```
{
    "DomainName": "{{your-domain-name}}"
}
```

#### 回應
<a name="service-software-rollback-response"></a>

API 會在所有非錯誤情況下傳回 HTTP 200 回應。回應內文中的 `RollbackAvailable` 欄位指出是否啟動轉返。

```
{
    "RollbackServiceSoftwareOptions": {
        "CurrentVersion": "string",
        "NewVersion": "string",
        "RollbackAvailable": boolean,
        "Description": "string"
    }
}
```

回應欄位：


| 欄位 | Type | Description | 
| --- | --- | --- | 
| CurrentVersion | String | 目前在網域上執行的軟體版本。 | 
| NewVersion | String | 將復原網域的軟體版本。如果無法使用轉返，則傳回 null。 | 
| RollbackAvailable | Boolean | `true` 如果已成功啟動轉返。`false`如果網域不符合轉返資格。 | 
| Description | String | 描述結果或原因復原的人類可讀取訊息無法使用。 | 

#### 錯誤回應
<a name="service-software-rollback-errors"></a>


| 錯誤 | Description | 
| --- | --- | 
| ResourceNotFoundException | 指定的網域不存在。 | 
| ValidationException | 網域未處於作用中狀態。等待任何進行中的變更完成，然後再重試。 | 
| InternalException |  服務發生內部錯誤。重試 請求。 | 
| DisabledOperationException | 此網域不支援復原操作。 | 

#### 回應訊息
<a name="service-software-rollback-messages"></a>

下表說明 `RollbackServiceSoftwareUpdate` API 傳回的可能回應訊息。


| 案例 | Description | 
| --- | --- | 
| 成功 | 已成功啟動轉返。網域將從{{目前版本}}復原至{{先前版本}}。 | 
| 功能未啟用 | 不提供轉返。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 
| 舊版軟體無法使用 | 沒有可用於轉返的先前軟體版本。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 
| 先前的軟體與目前的軟體相同 | 不提供轉返。沒有可用於轉返的先前軟體版本。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 
| 網域已復原 | 網域已處於復原狀態。 | 
| 叢集位於固定軟體版本 | 軟體覆寫目前會套用至網域。 | 
| 在時間範圍之外 | 不提供轉返。15 天復原時段已過期。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 
| 自動套用的強制性服務更新 | 不提供轉返。目前版本已透過強制性服務更新套用。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 
| 引擎版本升級 | 不提供轉返。引擎版本升級無法復原。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 
| 組態在更新後變更 | 不提供轉返。自上次軟體更新後，叢集組態已變更。如需協助[支援](https://console.aws.amazon.com/support/home)，請聯絡 。 | 

**回應範例：**

```
{
    "RollbackServiceSoftwareOptions": {
        "CurrentVersion": "OpenSearch_2_11_R20240115",
        "NewVersion": "OpenSearch_2_11_R20231023",
        "RollbackAvailable": true,
        "Description": "Rollback initiated successfully. The domain will be rolled back from OpenSearch_2_11_R20240115 to OpenSearch_2_11_R20231023."
    }
}
```

當無法使用轉返時， 會`RollbackAvailable`傳回 ，`false`而 `Description` 欄位包含上表中的原因。