

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

# 搭配碎片使用 Auto Scaling
<a name="AutoScaling-Using-Shards"></a>

透過 ElastiCache 的 AutoScaling，您可以將追蹤和排程政策與 Valkey 或 Redis OSS 引擎搭配使用。

以下提供目標追蹤和排程政策的詳細資訊，以及如何使用 AWS 管理主控台 AWS CLI 和 APIs 套用這些政策。

**Topics**
+ [目標追蹤擴展政策](AutoScaling-Scaling-Policies-Target.md)
+ [新增擴展原則](AutoScaling-Scaling-Adding-Policy-Shards.md)
+ [註冊可擴展的目標](AutoScaling-Scaling-Registering-Policy-CLI.md)
+ [定義擴展政策](AutoScaling-Scaling-Defining-Policy-API.md)
+ [停用規模縮減活動](AutoScaling-Scaling-Disabling-Scale-in.md)
+ [套用擴展原則](AutoScaling-Scaling-Applying-a-Scaling-Policy.md)
+ [編輯擴展原則](AutoScaling-Scaling-Editing-a-Scaling-Policy.md)
+ [刪除擴展原則](AutoScaling-Scaling-Deleting-a-Scaling-Policy.md)
+ [CloudFormation 使用 Auto Scaling 政策](AutoScaling-with-Cloudformation-Shards.md)
+ [排程擴展](AutoScaling-with-Scheduled-Scaling-Shards.md)

# 目標追蹤擴展政策
<a name="AutoScaling-Scaling-Policies-Target"></a>

使用目標追蹤擴展政策，您可以選取指標及設定目標值。ElastiCache for Valkey 和 Redis OSS Auto Scaling 會建立和管理 CloudWatch 警示，以觸發擴展政策，並根據指標和目標值計算擴展調整。規模調整政策會視需要新增或移除複本，讓指標保持在等於或接近指定目標值。除了讓指標保持在接近目標值之外，目標追蹤規模調整政策也會配合指標中，因為負載模式波動所造成的波動調整，並將機群容量中的快速波動降到最低。

例如，想想看當規模調整政策使用預先定義的平均 `ElastiCachePrimaryEngineCPUUtilization` 指標搭配所設定目標值時的情況。此政策可以讓 CPU 使用率維持在等於或接近指定的目標值。

## 預先定義的指標
<a name="AutoScaling-Scaling-Criteria-predfined-metrics"></a>

預先定義的指標是參照指定 CloudWatch 指標之特定名稱、維度和統計資料 (`average`) 的結構。Auto Scaling 政策會為您的叢集定義下列其中一項預先定義的指標：


****  

| 預先定義的指標名稱 | CloudWatch 指標名稱 | CloudWatch 指標維度 | 不合格執行個體類型  | 
| --- | --- | --- | --- | 
| ElastiCachePrimaryEngineCPUUtilization |  `EngineCPUUtilization`  |  ReplicationGroupId, Role = Primary  | 無 | 
| ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage |  `DatabaseCapacityUsageCountedForEvictPercentage`  |  Valkey 或 Redis OSS 複寫群組指標  | 無 | 
| ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage |  `DatabaseMemoryUsageCountedForEvictPercentage`  |  Valkey 或 Redis OSS 複寫群組指標  | R6gd | 

無法使用資料層級執行個體類型 `ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage`，因為這些執行個體類型會將資料儲存在記憶體和 SSD 中。資料層級執行個體的預期使用案例是擁有 100% 的記憶體使用量，並視需要填滿 SSD。

## 碎片的 Auto Scaling 條件
<a name="AutoScaling-Scaling-Criteria"></a>

當服務偵測到預先定義指標等於或大於目標設定，便會自動增加碎片容量。ElastiCache for Valkey 和 Redis OSS 會將叢集碎片擴展為等於兩個數字中較大者的計數：與目標的百分比變化和目前碎片的 20%。對於縮減，除非整體指標值低於已定義目標的 75%，否則 ElastiCache 不會自動縮減。

以下提供水平擴展的範例，如果你有 50 個碎片，
+ 如果您的目標違規 30%，ElastiCache 會向外擴展 30%，導致每個叢集產生 65 個碎片。
+ 如果您的目標違規 10%，ElastiCache 預設會向外擴展 最低 20%，因此每個叢集會產生 60 個碎片。

對於縮減範例，如果您已選取目標值 60%，ElastiCache 不會自動縮減，直到指標小於或等於 45% （低於目標 60% 的 25%)。

## Auto Scaling 考量事項
<a name="AutoScaling-Scaling-Considerations"></a>

請謹記以下幾點考量：
+ 目標追蹤擴展政策假設在指定的指標超過目標值時，應執行向外擴展。您無法使用目標追蹤擴展政策在指定的指標低於目標值時執行向外擴展。ElastiCache for Valkey 和 Redis OSS 會將碎片擴展為叢集中現有碎片目標的至少 20% 偏差。
+ 所指定指標的資料不足時，目標追蹤擴展政策不會執行擴展。政策不會執行縮減，因為縮減不會將資料不足解釋為低使用率。
+ 您可能會看到目標值與實際指標資料點之間有些差距。這是因為當 ElastiCache Auto Scaling 決定要新增或移除多少容量時，一律會四捨五入或捨棄，以保守的方式運作。這樣可防止新增不足的容量，或移除過多的容量。
+ 為了確保應用程式可用性，服務可以根據指標依比例快速水平擴展，但需以更保守的方式縮減規模。
+ 您可以為 ElastiCache for Valkey 和 Redis OSS 叢集設定多個目標追蹤擴展政策，前提是每個叢集都使用不同的指標。ElastiCache Auto Scaling 的目的是一律優先考慮可用性，因此其行為會根據目標追蹤政策是否已準備好向外擴展或向內擴展而有所不同。如果任何目標追蹤政策已準備好向外擴展，它就會將服務向外擴展，但只有在所有目標追蹤政策 (已啟用向內擴展部分) 都已準備好要向內擴展時才會向內擴展。
+ 請勿編輯或刪除 ElastiCache Auto Scaling 針對目標追蹤擴展政策管理的 CloudWatch 警示。當您刪除擴展政策時，ElastiCache Auto Scaling 會自動刪除警示。
+ ElastiCache Auto Scaling 不會阻止您手動修改叢集碎片。這些手動調整不會影響附加至調整規模政策的任何現有 CloudWatch 警示，但會影響可能觸發這些 CloudWatch 警示的指標。
+ 這些由 Auto Scaling 管理的 CloudWatch 警示，是根據叢集中所有碎片的 AVG 指標所定義的。因此，使用熱碎片可能會導致以下任一情況：
  + 由於幾個熱碎片上的負載觸發了 CloudWatch 警示，因此在沒有需要時進行擴展
  + 由於跨影響警示的所有碎片之彙總 AVG 沒有超出限制，因此在需要時不進行擴展。
+ 每個叢集節點的 ElastiCache 預設限制仍然適用。因此，當選擇使用 Auto Scaling 且您希望節點數上限超過預設配額時，請至 [AWS 服務配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)請求增加配額，並選擇配額類型 **Nodes per cluster per instance type (每執行個體類型每叢集的節點數)**。
+ 確保 VPC 中有足夠的 ENI (彈性網路介面) 可用，進行水平擴展時會需要用到。如需詳細資訊，請參閱[彈性網路介面](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)。
+ 如果 EC2 沒有足夠的可用容量，ElastiCache Auto Scaling 將無法擴展，而且會在容量可用時延遲。
+ 在縮減期間，ElastiCache for Redis OSS Auto Scaling 不會移除項目大小大於序列化後 256 MB 的槽碎片。
+ 進行規模縮減期間，如果產生的碎片組態上的可用記憶體不足，就不會移除碎片。

# 新增擴展原則
<a name="AutoScaling-Scaling-Adding-Policy-Shards"></a>

您可以使用 新增擴展政策 AWS 管理主控台。

**將 Auto Scaling 政策新增至 ElastiCache for Valkey 和 Redis OSS 叢集**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在導覽窗格中，選擇 **Valkey** 或 **Redis OSS**。

1. 選擇要新增政策至其中的叢集 (請選擇叢集名稱而非其左側的按鈕)。

1. 選擇 **Auto Scaling policies (Auto Scaling 政策)** 索引標籤。

1. 選擇 **Dynamic scaling** (動態擴展)。

1. 在 **Policy Name (政策名稱)** 輸入政策名稱。

1. 在 **Scalable Dimension (可擴展的維度)** 選擇 **shards (碎片)**。

1. 目標指標請選擇下列其中一個：
   + **Primary CPU Utilization (主要 CPU 使用率)**，用於根據平均 CPU 使用率建立政策。
   + **Memory (記憶體)**，用於根據平均資料庫記憶體建立政策。
   + 根據平均資料庫容量使用情況建立政策的**容量**。容量指標包括資料層級執行個體的記憶體和 SSD 使用率，以及所有其他執行個體類型的記憶體使用率。

1. 針對目標值，選擇大於或等於 35 且小於或等於 70 的值。Auto Scaling 將在整個 ElastiCache 碎片中為所選目標指標保留此值：
   + **主要 CPU 使用率**：維護主節點上 `EngineCPUUtilization` 指標結果的目標值。
   + **記憶體**：維護 `DatabaseMemoryUsageCountedForEvictPercentage` 指標結果的目標值 
   + 維護 `DatabaseCapacityUsageCountedForEvictPercentage` 指標結果目標值的**容量**，

   系統會新增或移除叢集碎片，讓指標接近指定的值。

1. (選用) 主控台不支援規模縮減或水平擴展冷卻時間。使用 AWS CLI 修改冷卻時間值。

1. 針對**最小容量**，輸入 ElastiCache Auto Scaling 政策需要維護的碎片數量下限。

1. 針對**容量上限**，輸入 ElastiCache Auto Scaling 政策需要維護的碎片數量上限。此值必須等於或大於 250。

1. 選擇**建立**。

# 註冊可擴展的目標
<a name="AutoScaling-Scaling-Registering-Policy-CLI"></a>

您必須先向 ElastiCache Auto Scaling註冊叢集，才能搭配 ElastiCache for Valkey 和 Redis OSS 叢集使用 Auto Scaling。這是為了定義要套用到叢集的擴展維度和限制。ElastiCache 自動擴展會沿著`elasticache:replication-group:NodeGroups`可擴展維度動態擴展叢集，這代表叢集碎片的數量。

 **使用 AWS CLI** 

若要註冊 ElastiCache for Valkey 和 Redis OSS 叢集，請使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令搭配下列參數：
+ `--service-namespace` – 將此值設定為 `elasticache`
+ `--resource-id` – 叢集的資源識別符。對於此參數，資源類型為 `ReplicationGroup` ，唯一識別符為叢集的名稱，例如 `replication-group/myscalablecluster`。
+ `--scalable-dimension` – 將此值設定為 `elasticache:replication-group:NodeGroups`。
+ `--max-capacity ` – 由 ElastiCache 自動擴展管理的碎片數目上限。如需了解有關 `--min-capacity`、`--max-capacity` 以及叢集中碎片數目之間的關係資訊，請參閱「[容量下限和上限](AutoScaling-Policies.md#AutoScaling-MinMax)」。
+ `--min-capacity ` – 由 ElastiCache 自動擴展管理的碎片數量下限。如需了解有關 `--min-capacity`、`--max-capacity` 以及叢集中碎片數目之間的關係資訊，請參閱「[容量下限和上限](AutoScaling-Policies.md#AutoScaling-MinMax)」。

**Example**  
 在下列範例中，您會註冊名為 的 ElastiCache 叢集`myscalablecluster`。註冊中表明應該動態擴展叢集，使其具有 1 到 10 個碎片。  
若為 Linux、macOS 或 Unix：  

```
aws application-autoscaling register-scalable-target \
    --service-namespace elasticache \
    --resource-id replication-group/myscalablecluster \
    --scalable-dimension elasticache:replication-group:NodeGroups \
    --min-capacity 1 \
    --max-capacity 10 \
```
針對 Windows：  

```
aws application-autoscaling register-scalable-target ^
    --service-namespace elasticache ^
    --resource-id replication-group/myscalablecluster ^
    --scalable-dimension elasticache:replication-group:NodeGroups ^
    --min-capacity 1 ^
    --max-capacity 10 ^
```

**使用 API**

若要註冊 ElastiCache 叢集，請使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令搭配下列參數：
+ ServiceNamespace - 將此值設為 elasticache。
+ ResourceID - ElastiCache 叢集的資源識別碼。對於此參數，資源類型為 ReplicationGroup，唯一識別符為叢集的名稱，例如 `replication-group/myscalablecluster`。
+ ScalableDimension - 將此值設為 `elasticache:replication-group:NodeGroups`。
+ MinCapacity：由 ElastiCache 自動擴展管理的碎片數量下限。如需了解 --min-capacity、--max-capacity 以及叢集中複本數之間的關係，請參閱「[容量下限和上限](AutoScaling-Policies.md#AutoScaling-MinMax)」。
+ MaxCapacity：由 ElastiCache 自動擴展管理的碎片數量上限。如需了解 --min-capacity、--max-capacity 以及叢集中複本數之間的關係，請參閱「[容量下限和上限](AutoScaling-Policies.md#AutoScaling-MinMax)」。

**Example**  
在下列範例中，您會`myscalablecluster`使用 Application Auto Scaling API 註冊名為 的 ElastiCache 叢集。此註冊中表明應該動態擴展叢集，使其具有 1 到 5 個複本。  

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:NodeGroups",
    "MinCapacity": 1,
    "MaxCapacity": 5
}
```

# 定義擴展政策
<a name="AutoScaling-Scaling-Defining-Policy-API"></a>

目標追踪規模調整政策組態由 JSON 區塊表示，其中定義了指標和目標值。您可以將規模調整政策的組態設定，儲存為文字檔案中的 JSON 區塊。叫用 AWS CLI 或 Application Auto Scaling API 時，您可以使用該文字檔案。如需政策組態語法的詳細資訊，請參閱「Application Auto Scaling API 參考」中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

您可使用下列選項來定義目標追蹤擴展政策的組態：

**Topics**
+ [使用預先定義的指標](#AutoScaling-Scaling-Predefined-Metric)
+ [使用自訂的指標](#AutoScaling-Scaling-Custom-Metric)
+ [使用冷卻時間](#AutoScaling-Scaling-Cooldown-periods)

## 使用預先定義的指標
<a name="AutoScaling-Scaling-Predefined-Metric"></a>

透過使用預先定義的指標，您可以快速定義 ElastiCache for Valkey 和 Redis OSS 叢集的目標追蹤擴展政策，該叢集可與 ElastiCache Auto Scaling 中的目標追蹤搭配使用。

目前，ElastiCache 在 NodeGroup Auto Scaling 中支援下列預先定義的指標：
+ **ElastiCachePrimaryEngineCPUUtilization** – 叢集中所有主節點 CloudWatch 中`EngineCPUUtilization`指標的平均值。
+ **ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage** – 叢集中所有主節點 CloudWatch 中`DatabaseMemoryUsageCountedForEvictPercentage`指標的平均值。
+ **ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage** – CloudWatch 中叢集中所有主節點的`ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage`指標平均值。

如需 `EngineCPUUtilization`、`DatabaseMemoryUsageCountedForEvictPercentage` 和 `DatabaseCapacityUsageCountedForEvictPercentage` 指標的詳細資訊，請參閱 [使用 CloudWatch 指標監控用量](CacheMetrics.md)。若要在您的規模調整政策中使用預先定義的指標，請為規模調整政策建立目標追蹤組態設定。此組態設定必須加入用於預先定義指標的 `PredefinedMetricSpecification`，以及用於該指標目標值的 TargetValue。

**Example**  
下列範例說明 ElastiCache for Valkey 和 Redis OSS 叢集目標追蹤擴展的典型政策組態。在此組態中，`ElastiCachePrimaryEngineCPUUtilization`預先定義的指標會根據叢集中所有主節點的平均 CPU 使用率 40% 來調整叢集。  

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    }
}
```

## 使用自訂的指標
<a name="AutoScaling-Scaling-Custom-Metric"></a>

 使用自訂的指標，您可以定義目標追蹤規模調整政策來滿足您的自訂需求。您可以根據隨擴展比例變更的任何 ElastiCache 指標來定義自訂指標。並非所有 ElastiCache 指標都適用於目標追蹤。指標必須是有效的使用率指標，而且能夠表示執行個體的忙碌程度。指標的值必須根據叢集中碎片的數量依比例增加或減少。若要使用指標資料來依比例水平擴展或縮減碎片的數量，這樣子成比例的增加或減少是必要的。

**Example**  
下列的範例描述規模調整政策的目標追蹤組態設定。在此組態中，自訂指標會根據名為 之叢集中所有碎片的平均 CPU 使用率 50% 來調整 ElastiCache for Redis OSS 叢集`my-db-cluster`。

```
{
    "TargetValue": 50,
    "CustomizedMetricSpecification":
    {
        "MetricName": "EngineCPUUtilization",
        "Namespace": "AWS/ElastiCache",
        "Dimensions": [
            {
                "Name": "ReplicationGroup","Value": "my-db-cluster"
            },
            {
                "Name": "Role","Value": "PRIMARY"
            }
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

## 使用冷卻時間
<a name="AutoScaling-Scaling-Cooldown-periods"></a>

您可以指定一個值 (單位為秒)，讓 `ScaleOutCooldown` 新增冷卻時間以便水平擴展您的叢集。同樣的，您可以指定一個值 (單位為秒)，讓 `ScaleInCooldown` 新增冷卻時間以便為您的叢集縮減規模。如需政策組態語法的詳細資訊，請參閱「Application Auto Scaling API 參考」中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

 下列的範例描述規模調整政策的目標追蹤組態設定。在此組態中，`ElastiCachePrimaryEngineCPUUtilization`預先定義的 指標用於根據該叢集中所有主節點的平均 CPU 使用率 40% 來調整 ElastiCache for Redis OSS 叢集。這個組態設定分別提供了 10 分鐘的規模縮減冷卻時間，和 5 分鐘的橫向擴展冷卻時間。

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```

# 停用規模縮減活動
<a name="AutoScaling-Scaling-Disabling-Scale-in"></a>

您可以停用縮減活動，防止叢集中的目標追蹤擴展政策組態擴展。停用規模縮減的動作，可防止規模調整政策刪除碎片，同時讓規模調整政策仍然能視需要建立碎片。

您可以為 `DisableScaleIn` 指定布林值，以啟用或停用 叢集的規模縮減活動。如需政策組態語法的詳細資訊，請參閱「Application Auto Scaling API 參考」中的 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)。

下列的範例描述規模調整政策的目標追蹤組態設定。在此組態中，`ElastiCachePrimaryEngineCPUUtilization`預先定義的指標會根據該叢集中所有主節點的平均 CPU 使用率 40%，來調整 ElastiCache for Valkey 和 Redis OSS 叢集。此組態設定停用了規模調整政策的規模縮減動作。

```
{
    "TargetValue": 40.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
    },
    "DisableScaleIn": true
}
```

# 套用擴展原則
<a name="AutoScaling-Scaling-Applying-a-Scaling-Policy"></a>

向 ElastiCache for Valkey 和 Redis OSS 自動擴展註冊叢集並定義擴展政策之後，您可以將擴展政策套用至已註冊的叢集。若要將擴展政策套用至 ElastiCache for Redis OSS 叢集，您可以使用 AWS CLI 或 Application Auto Scaling API。

## 使用 套用擴展政策 AWS CLI
<a name="AutoScaling-Scaling-Applying-a-Scaling-Policy-CLI"></a>

若要將擴展政策套用至 ElastiCache for Valkey 和 Redis OSS 叢集，請使用 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令搭配下列參數：
+ **--policy-name** - 規模調整政策的名稱。
+ **--policy-type** - 將此值設為 `TargetTrackingScaling`。
+ **--resource-id** – 資源識別符。對於此參數，資源類型為 `ReplicationGroup` ，唯一識別符為叢集的名稱，例如 `replication-group/myscalablecluster`。
+ **--service-namespace** - 將此值設為 `elasticache`。
+ **--scalable-dimension** - 將此值設為 `elasticache:replication-group:NodeGroups`。
+ **--target-tracking-scaling-policy-configuration** – 要用於叢集的目標追蹤擴展政策組態。

在下列範例中，您將名為 的目標追蹤擴展政策套用至名為 `myscalablepolicy`的 ElastiCache for Valkey 和 Redis OSS 叢集，該叢集`myscalablecluster`使用 ElastiCache 自動擴展。做法是使用儲存於 `config.json` 檔案中的政策組態設定。

針對 Linux、macOS 或 Unix：

```
aws application-autoscaling put-scaling-policy \
    --policy-name myscalablepolicy \
    --policy-type TargetTrackingScaling \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:NodeGroups \
    --target-tracking-scaling-policy-configuration file://config.json
```

針對 Windows：

```
aws application-autoscaling put-scaling-policy ^
    --policy-name myscalablepolicy ^
    --policy-type TargetTrackingScaling ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:NodeGroups ^
    --target-tracking-scaling-policy-configuration file://config.json
```

## 使用 API 套用規模調整政策
<a name="AutoScaling-Scaling-Applying-a-Scaling-Policy-API"></a>

若要將擴展政策套用至 ElastiCache for Valkey 和 Redis OSS 叢集，請使用 [PutScalingPolicy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) AWS CLI 命令搭配下列參數：
+ **--policy-name** - 規模調整政策的名稱。
+ **--resource-id** – 資源識別符。對於此參數，資源類型為 `ReplicationGroup` ，唯一識別符為叢集的名稱，例如 `replication-group/myscalablecluster`。
+ **--service-namespace** - 將此值設為 `elasticache`。
+ **--scalable-dimension** - 將此值設為 `elasticache:replication-group:NodeGroups`。
+ **--target-tracking-scaling-policy-configuration** – 要用於叢集的目標追蹤擴展政策組態。

在下列範例中，您將名為 的目標追蹤擴展政策套用至名為 `myscalablepolicy`且`myscalablecluster`具有 ElastiCache 自動擴展的 ElastiCache 叢集。您使用的政策組態設定，是以 `ElastiCachePrimaryEngineCPUUtilization` 這個預先定義的指標為根據。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:NodeGroups",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 40.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization"
        }
    }
}
```

# 編輯擴展原則
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy"></a>

您可以使用 AWS 管理主控台、 AWS CLI或 Application Auto Scaling API 編輯擴展政策。

## 使用 編輯擴展政策 AWS 管理主控台
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy-CON"></a>

**編輯 ElastiCache for Valkey 和 Redis OSS 叢集的 Auto Scaling 政策**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在導覽窗格中，選擇適當的引擎。

1. 選擇要新增政策至其中的叢集 (請選擇叢集名稱而非其左側的按鈕)。

1. 選擇 **Auto Scaling policies (Auto Scaling 政策)** 索引標籤。

1. 根據 **Scaling policies** (擴展政策)，找到您要變更的自動擴展政策，並選擇 **Modify** (修改)。

1. 對政策進行必要的變更。

1. 選擇 **Modify** (修改)。

## 使用 AWS CLI 和 API 編輯擴展政策
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy-CLI"></a>

您可以使用 AWS CLI 或 Application Auto Scaling API，以套用擴展政策的相同方式編輯擴展政策：
+ 使用 時 AWS CLI，請在 `--policy-name` 參數中指定您要編輯的政策名稱。針對您想要變更的參數指定新的參數值。
+ 使用 Application Auto Scaling API 時，請在 `PolicyName` 參數中指定您所要編輯之政策的名稱。針對您想要變更的參數指定新的參數值。

如需詳細資訊，請參閱[套用擴展原則](AutoScaling-Scaling-Applying-a-Scaling-Policy.md)。

# 刪除擴展原則
<a name="AutoScaling-Scaling-Deleting-a-Scaling-Policy"></a>

您可以使用 AWS 管理主控台、 AWS CLI或 Application Auto Scaling API 刪除擴展政策。

## 使用 刪除擴展政策 AWS 管理主控台
<a name="AutoScaling-Scaling-Editing-a-Scaling-Policy-CON"></a>

**刪除 ElastiCache for Redis OSS 叢集的 Auto Scaling 政策**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在導覽窗格中，選擇 **Valkey** 或 **Redis OSS**。

1. 選擇要您想編輯其擴展政策的叢集 (請選擇叢集名稱而非其左側的按鈕。

1. 選擇 **Auto Scaling policies (Auto Scaling 政策)** 索引標籤。

1. 在 **Scaling Policies** (擴展政策) 區段中，選擇自動擴展政策，然後選擇 **Delete** (刪除)。

## 使用 刪除擴展政策 AWS CLI
<a name="AutoScaling-Scaling-Deleting-a-Scaling-Policy-CLI"></a>

若要刪除 ElastiCache for Valkey 和 Redis OSS 叢集的擴展政策，請使用 [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-scaling-policy.html) AWS CLI 命令搭配下列參數：
+ **--policy-name** - 規模調整政策的名稱。
+ **--resource-id** – 資源識別符。對於此參數，資源類型為 `ReplicationGroup` ，唯一識別符為叢集的名稱，例如 `replication-group/myscalablecluster`。
+ **--service-namespace** - 將此值設為 `elasticache`。
+ **--scalable-dimension** - 將此值設為 `elasticache:replication-group:NodeGroups`。

在下列範例中，您會`myscalablepolicy`從名為 的叢集中刪除名為 的目標追蹤擴展政策`myscalablecluster`。

若為 Linux、macOS 或 Unix：

```
aws application-autoscaling delete-scaling-policy \
    --policy-name myscalablepolicy \
    --resource-id replication-group/myscalablecluster \
    --service-namespace elasticache \
    --scalable-dimension elasticache:replication-group:NodeGroups
```

針對 Windows：

```
aws application-autoscaling delete-scaling-policy ^
    --policy-name myscalablepolicy ^
    --resource-id replication-group/myscalablecluster ^
    --service-namespace elasticache ^
    --scalable-dimension elasticache:replication-group:NodeGroups
```

## 使用 API 刪除規模調整政策
<a name="AutoScaling-Scaling-Deleting-a-Scaling-Policy-API"></a>

若要刪除 ElastiCache for Valkey 和 Redis OSS 叢集的擴展政策，請使用 [DeleteScalingPolicy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-scaling-policy.html) AWS CLI 命令搭配下列參數：
+ **--policy-name** - 規模調整政策的名稱。
+ **--resource-id** – 資源識別符。對於此參數，資源類型為 `ReplicationGroup` ，唯一識別符為叢集的名稱，例如 `replication-group/myscalablecluster`。
+ **--service-namespace** - 將此值設為 `elasticache`。
+ **--scalable-dimension** - 將此值設為 `elasticache:replication-group:NodeGroups`。

在下列範例中，您會`myscalablepolicy`從名為 的叢集中刪除名為 的目標追蹤擴展政策`myscalablecluster`。

```
POST / HTTP/1.1
Host: autoscaling.us-east-2.amazonaws.com
Accept-Encoding: identity
Content-Length: 219
X-Amz-Target: AnyScaleFrontendService.DeleteScalingPolicy
X-Amz-Date: 20160506T182145Z
User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8
Content-Type: application/x-amz-json-1.1
Authorization: AUTHPARAMS
{
    "PolicyName": "myscalablepolicy",
    "ServiceNamespace": "elasticache",
    "ResourceId": "replication-group/myscalablecluster",
    "ScalableDimension": "elasticache:replication-group:NodeGroups"
}
```

# CloudFormation 使用 Auto Scaling 政策
<a name="AutoScaling-with-Cloudformation-Shards"></a>

此程式碼片段示範如何建立目標追蹤政策，並使用 [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) 資源將其套用至 [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) 資源。其使用 [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) 和 [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) 內部函數來建構 `ResourceId` 屬性，該屬性具有相同範本中指定的 `AWS::ElastiCache::ReplicationGroup` 資源的邏輯名稱。

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 3
     MinCapacity: 1
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:NodeGroups'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"

  ScalingPolicy:
    Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
    Properties:
      ScalingTargetId: !Ref ScalingTarget
      ServiceNamespace: elasticache
      PolicyName: testpolicy
      PolicyType: TargetTrackingScaling
      ScalableDimension: 'elasticache:replication-group:NodeGroups'
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: ElastiCachePrimaryEngineCPUUtilization
        TargetValue: 40
```

# 排程擴展
<a name="AutoScaling-with-Scheduled-Scaling-Shards"></a>

按照排程進行擴展讓您能夠因應可預測的需求變化，據以擴展您的應用程式。若要使用排程擴展，您可以建立排程動作，指示 ElastiCache for Valkey 和 Redis OSS 在特定時間執行擴展活動。當您建立排程動作時，您可以指定現有的叢集、應進行擴展活動的時間、最小容量和最大容量。您可以建立僅擴展一次或依週期性排程擴展的排程動作。

 您只能為已存在的叢集建立排程動作。您無法在建立叢集的同時建立排程動作。

如需排程動作建立、管理和刪除作業相關術語的詳細資訊，請參閱[排程動作建立、管理和刪除作業常用的命令](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html#scheduled-scaling-commonly-used-commands) 

**若要建立週期性排程：**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在導覽窗格中，選擇 **Valkey** 或 **Redis OSS**。

1. 選擇您要新增政策的叢集。

1. 從 **Actions (動作)** 下拉式選單中選擇 **Manage Auto Scaling policies (管理 Auto Scaling 政策)**。

1. 選擇 **Auto Scaling policies (Auto Scaling 政策)** 索引標籤。

1. 在 **Auto scaling policies (Auto Scaling 政策)** 區段中，會出現 **Add Scaling policy (新增規模調整政策)** 對話方塊。選擇 **Scheduled scaling (排程規模調整)**。

1. 在 **Policy Name (政策名稱)** 輸入政策的名稱。

1. 在 **Scalable Dimension (可擴展的維度)** 選擇 **Shards (碎片)**。

1. 在 **Target Shards (目標碎片)** 選擇值。

1. 在 **Recurrence (重複)** 選擇 **Recurring (週期性)**。

1. 在 **Frequency (頻率)** 選擇各自的值。

1. 在 **Start Date (開始日期)** 和 **Start time (開始時間)** 選擇政策生效的時間。

1. 選擇 **Add Policy (新增政策)**。

**若要建立一次性排程動作：**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在導覽窗格中，選擇 **Valkey** 或 **Redis OSS**。

1. 選擇您要新增政策的叢集。

1. 從 **Actions (動作)** 下拉式選單中選擇 **Manage Auto Scaling policies (管理 Auto Scaling 政策)**。

1. 選擇 **Auto Scaling policies (Auto Scaling 政策)** 索引標籤。

1. 在 **Auto scaling policies (Auto Scaling 政策)** 區段中，會出現 **Add Scaling policy (新增規模調整政策)** 對話方塊。選擇 **Scheduled scaling (排程規模調整)**。

1. 在 **Policy Name (政策名稱)** 輸入政策的名稱。

1. 在 **Scalable Dimension (可擴展的維度)** 選擇 **Shards (碎片)**。

1. 在 **Target Shards (目標碎片)** 選擇值。

1. 在 **Recurrence (重複)**，選擇 **Once (一次)**。

1. 在 **Start Date (開始日期)** 和 **Start time (開始時間)** 選擇政策生效的時間。

1. 在 **End Date (結束日期)** 選擇政策效用結束的日期。

1. 選擇 **Add Policy (新增政策)**。

**刪除排程動作**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在導覽窗格中，選擇 **Valkey** 或 **Redis OSS**。

1. 選擇您要新增政策的叢集。

1. 從 **Actions (動作)** 下拉式選單中選擇 **Manage Auto Scaling policies (管理 Auto Scaling 政策)**。

1. 選擇 **Auto Scaling policies (Auto Scaling 政策)** 索引標籤。

1. 在 **Auto Scaling policies (Auto Scaling 政策)** 區段中，選擇 Auto Scaling 政策，然後從 **Actions (動作)** 對話中選擇 **Delete (刪除)**。

**使用 AWS CLI 管理排定的擴展**

使用下列 application-autoscaling API：
+ [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-action.html) 
+ [describe-scheduled-actions](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-scheduled-actions.html) 
+ [delete-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-scheduled-action.html) 

## 使用 CloudFormation 建立排程動作
<a name="AutoScaling-with-Cloudformation-Declare-Scheduled-Action"></a>

此程式碼片段示範如何建立目標追蹤政策，並使用 [AWS::ApplicationAutoScaling::ScalableTarget](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html) 資源將其套用至 [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html) 資源。其使用 [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html) 和 [Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html) 內部函數來建構 `ResourceId` 屬性，該屬性具有相同範本中指定的 `AWS::ElastiCache::ReplicationGroup` 資源的邏輯名稱。

```
ScalingTarget:
   Type: 'AWS::ApplicationAutoScaling::ScalableTarget'
   Properties:
     MaxCapacity: 3
     MinCapacity: 1
     ResourceId: !Sub replication-group/${logicalName}
     ScalableDimension: 'elasticache:replication-group:NodeGroups'
     ServiceNamespace: elasticache
     RoleARN: !Sub "arn:aws:iam::${AWS::AccountId}:role/aws-service-role/elasticache.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG"
     ScheduledActions:
       - EndTime: '2020-12-31T12:00:00.000Z'
         ScalableTargetAction:
           MaxCapacity: '5'
           MinCapacity: '2'
         ScheduledActionName: First
         Schedule: 'cron(0 18 * * ? *)'
```