

# Amazon Aurora DB クラスターへの自動スケーリングポリシーの追加
<a name="Aurora.Integrating.AutoScaling.Add"></a>

AWS マネジメントコンソール、AWS CLI、または アプリケーションの Auto Scaling API を使用してスケーリングポリシーを追加できます。

**注記**  
CloudFormation を使用してスケーリングポリシーを追加する例については、*AWS CloudFormation ユーザーガイド*の「[Aurora DB クラスターのスケーリングポリシーの宣言](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-autoscaling.html#w2ab1c19c22c15c21c11)」を参照してください。

## コンソール
<a name="Aurora.Integrating.AutoScaling.AddConsole"></a>

AWS マネジメントコンソール を使用して、Aurora DB クラスターにスケーリングポリシーを追加できます。

**Aurora DB クラスターに Auto Scaling ポリシーを追加するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. ポリシーを追加する Aurora DB クラスターを選択します。

1. [**ログとイベント**] タブを選択します。

1. [**Auto Scaling policies (Auto Scaling ポリシー)**] セクションで、[**Add (追加)**] を選択します。

   [**Add Auto Scaling policy**] ダイアログボックスが表示されます。

1. [**ポリシー名**] に、ポリシー名を入力します。

1. ターゲットメトリクスには、以下のいずれかを選択します。
   + 平均 CPU 使用率に基づいてポリシーを作成するための [**Aurora レプリカの平均 CPU 使用率**]。
   + Aurora レプリカへの平均接続数に基づいてポリシーを作成するための [**Aurora レプリカの平均接続数**]。

1. ターゲット値には、以下のいずれかを入力します。
   + 前のステップで [**Aurora レプリカの平均 CPU 使用率**] を選択した場合、Aurora レプリカに維持する CPU 使用率を入力します。
   + 前のステップで [**Aurora レプリカの平均接続数**] を選択した場合は、維持する接続数を入力します。

   Aurora レプリカが追加または削除され、メトリクスが指定された値に近い値に維持されます。

1. (省略可能) **[Additional Configuration]** (追加設定) を展開し、スケールインまたはスケールアウトのクールダウン期間を作成します。

1. [**Minimum capacity (最小キャパシティー)**] には、Aurora Auto Scaling ポリシーが維持する必要がある Aurora レプリカの最小数を入力します。

1. [**Maximum capacity (最大キャパシティー)**] には、Aurora Auto Scaling ポリシーが維持する必要がある Aurora レプリカの最大数を入力します。

1. [**Add policy**] を選択します。

次のダイアログボックスでは、Auto Scaling ポリシーを 40 パーセントの平均 CPU 使用率に基づいて作成します。このポリシーでは、最小 5 個の Aurora レプリカと最大 15 個の Aurora レプリカを指定します。

![\[平均 CPU 使用率に基づいた Auto Scaling ポリシーの作成\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/aurora-autoscaling-cpu.png)


次のダイアログボックスでは、平均接続数 100 に基づいて、Auto Scaling ポリシーを作成します。このポリシーでは、最小 2 個の Aurora レプリカと最大 8 個の Aurora レプリカを指定します。

![\[平均接続数に基づく Auto Scaling ポリシーの作成\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/aurora-autoscaling-connections.png)


## AWS CLI または Application Auto Scaling API
<a name="Aurora.Integrating.AutoScaling.AddCode"></a>

事前定義されたメトリクスまたはカスタムメトリクスに基づいて、スケーリングポリシーを適用できます。そのためには、AWS CLI または アプリケーションの Auto Scaling API を使用します。最初のステップでは、アプリケーションの Auto Scaling で Aurora DB クラスターを登録します。

### Aurora DB クラスターの登録
<a name="Aurora.Integrating.AutoScaling.AddCode.Register"></a>

Aurora Auto Scaling を Aurora DB クラスターで使用可能にするには、アプリケーションの Auto Scaling で Aurora DB クラスターを登録します。これは、そのクラスターに適用するスケーリングのディメンションと制限を定義するためです。アプリケーションの Auto Scaling では、Aurora レプリカの数に対応したスケーラブルディメンション `rds:cluster:ReadReplicaCount` で、Aurora DB クラスターを動的にスケーリングします。

Aurora DB クラスターを登録するには、AWS CLI または アプリケーションの Auto Scaling API を使用します。

#### AWS CLI
<a name="Aurora.Integrating.AutoScaling.AddCode.Register.CLI"></a>

Aurora DB クラスターを登録するには、以下のパラメータを指定しながら、AWS CLI コマンドの [https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) を使用します。
+ `--service-namespace` この値は に設定します。`rds`
+ `--resource-id` – Aurora DB クラスターのリソース識別子です。このパラメータでは、リソースタイプは `cluster` で、一意の識別子は Aurora DB クラスターの名前、例えば `cluster:myscalablecluster` です。
+ `--scalable-dimension` この値は に設定します。`rds:cluster:ReadReplicaCount`
+ `--min-capacity` – アプリケーションの Auto Scaling で管理するリーダー DB インスタンスの最小数。`--min-capacity`、`--max-capacity`、およびクラスター内の DB インスタンスの数の関係については、「[最小容量と最大容量](Aurora.Integrating.AutoScaling.md#Aurora.Integrating.AutoScaling.Concepts.Capacity)」を参照してください。
+ `--max-capacity` – アプリケーションの Auto Scaling で管理するリーダー DB インスタンスの最大数。`--min-capacity`、`--max-capacity`、およびクラスター内の DB インスタンスの数の関係については、「[最小容量と最大容量](Aurora.Integrating.AutoScaling.md#Aurora.Integrating.AutoScaling.Concepts.Capacity)」を参照してください。

**Example**  
以下の例では、`myscalablecluster` という名前の Aurora DB クラスターを登録します。この登録は、DB クラスターが 1 から 8 個の Aurora レプリカを持つよう動的にスケールされることを示します。  
Linux、macOS、Unix の場合:  

```
aws application-autoscaling register-scalable-target \
    --service-namespace rds \
    --resource-id cluster:myscalablecluster \
    --scalable-dimension rds:cluster:ReadReplicaCount \
    --min-capacity 1 \
    --max-capacity 8 \
```
Windows の場合:  

```
aws application-autoscaling register-scalable-target ^
    --service-namespace rds ^
    --resource-id cluster:myscalablecluster ^
    --scalable-dimension rds:cluster:ReadReplicaCount ^
    --min-capacity 1 ^
    --max-capacity 8 ^
```

#### Application Auto Scaling API
<a name="Aurora.Integrating.AutoScaling.AddCode.Register.API"></a>

Aurora DB クラスターを アプリケーションの Auto Scaling に登録するには、以下のパラメータを指定して [https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html) アプリケーションの Auto Scaling API オペレーションを使用します。
+ `ServiceNamespace` この値は に設定します。`rds`
+ `ResourceID` – Aurora DB クラスターのリソース識別子です。このパラメータでは、リソースタイプは `cluster` で、一意の識別子は Aurora DB クラスターの名前、例えば `cluster:myscalablecluster` です。
+ `ScalableDimension` この値は に設定します。`rds:cluster:ReadReplicaCount`
+ `MinCapacity` – アプリケーションの Auto Scaling で管理するリーダー DB インスタンスの最小数。`MinCapacity`、`MaxCapacity`、およびクラスター内の DB インスタンスの数の関係については、「[最小容量と最大容量](Aurora.Integrating.AutoScaling.md#Aurora.Integrating.AutoScaling.Concepts.Capacity)」を参照してください。
+ `MaxCapacity` – アプリケーションの Auto Scaling で管理するリーダー DB インスタンスの最大数。`MinCapacity`、`MaxCapacity`、およびクラスター内の DB インスタンスの数の関係については、「[最小容量と最大容量](Aurora.Integrating.AutoScaling.md#Aurora.Integrating.AutoScaling.Concepts.Capacity)」を参照してください。

**Example**  
以下の例では、`myscalablecluster` という名前の Aurora DB クラスターを アプリケーションの Auto Scaling API に登録します。この登録は、DB クラスターが 1～8 個の Aurora レプリカを持つよう動的にスケールされることを示します。  

```
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": "rds",
    "ResourceId": "cluster:myscalablecluster",
    "ScalableDimension": "rds:cluster:ReadReplicaCount",
    "MinCapacity": 1,
    "MaxCapacity": 8
}
```

### Aurora DB クラスターのスケーリングポリシーの定義
<a name="Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy"></a>

ターゲット追跡スケーリングポリシー設定は、メトリクスとターゲット値が定義されている JSON ブロックで表されます。JSON ブロックとしてスケーリングポリシー設定をテキストファイルに保存できます。このテキストファイルは、AWS CLI または アプリケーションの Auto Scaling API を呼び出す際に使用します。ポリシー設定構文の詳細については、*Application Auto Scaling API リファレンス*の「[https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)」を参照してください。

 ターゲット追跡スケーリングポリシー設定を定義するには、次のオプションを使用できます。

**Topics**
+ [事前定義メトリクスの使用](#Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.Predefined)
+ [カスタムメトリクスの使用](#Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.Custom)
+ [クールダウン期間の使用](#Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.Cooldown)
+ [スケールインアクティビティの無効化](#Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.ScaleIn)

#### 事前定義メトリクスの使用
<a name="Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.Predefined"></a>

定義済みのメトリクスを使用することにより、Aurora Auto Scaling のターゲット追跡と動的スケーリングの両方でうまく動作する Aurora DB クラスターのターゲット追跡スケーリングポリシーを迅速に定義できます。

現在、Aurora は、Aurora Auto Scaling で次の定義済みメトリクスをサポートしています。
+ **RDSReaderAverageCPUUtilization** – Aurora DB クラスター内のすべての Aurora レプリカでの CloudWatch の `CPUUtilization` メトリクスの平均値です。
+ **RDSReaderAverageDatabaseConnections** – Aurora DB クラスター内のすべての Aurora レプリカでの CloudWatch の `DatabaseConnections` メトリクスの平均値です。

`CPUUtilization` と `DatabaseConnections` メトリクスの詳細については、「[Amazon Aurora の Amazon CloudWatch メトリクス](Aurora.AuroraMonitoring.Metrics.md)」を参照してください。

スケーリングポリシーで事前定義メトリクスを使用するには、スケーリングポリシーのターゲット追跡構成を作成します。この設定は、事前定義メトリクスの `PredefinedMetricSpecification` と、そのメトリクスのターゲット値の `TargetValue` が含まれている必要があります。

**Example**  
次の例では、Aurora DB クラスターのターゲット追跡スケーリングの一般的なポリシー設定について説明します。この設定では、`RDSReaderAverageCPUUtilization` 事前定義メトリクスを使用して、すべての Aurora レプリカでの平均 CPU 使用率 40% に基づいて Aurora DB クラスターが調整されます。  

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

#### カスタムメトリクスの使用
<a name="Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.Custom"></a>

カスタムメトリクスを使用することで、カスタム要件を満たすターゲット追跡スケーリングポリシーを定義できます。スケーリングに比例して変化する Aurora メトリクスに基づいて、カスタムメトリクスを定義することができます。

Aurora のすべてのメトリクスがターゲット追跡に使用できるわけではありません。メトリクスは、有効な使用率メトリクスで、インスタンスの使用頻度を示す必要があります。Aurora DB クラスター内の Aurora レプリカの数に比例してメトリクスの値を増減する必要があります。この比例的な増加または減少は、比例的にスケールアウトするため、または Aurora レプリカの数にメトリクスデータを使用するために必要です。

**Example**  
次の例では、スケーリングポリシーのターゲット追跡設定について説明します。この設定では、カスタムメトリクスにより、`my-db-cluster` という名前の Aurora DB クラスター内のすべての Aurora レプリカでの平均 CPU 使用率 50% に基づいて、Aurora DB クラスターが調整されます。  

```
{
    "TargetValue": 50,
    "CustomizedMetricSpecification":
    {
        "MetricName": "CPUUtilization",
        "Namespace": "AWS/RDS",
        "Dimensions": [
            {"Name": "DBClusterIdentifier","Value": "my-db-cluster"},
            {"Name": "Role","Value": "READER"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

#### クールダウン期間の使用
<a name="Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.Cooldown"></a>

`ScaleOutCooldown` 値を秒単位で指定して、Aurora DB クラスターをスケールアウトするためのクールダウン期間を追加することができます。`ScaleInCooldown` 値を秒単位で追加して、Aurora DB クラスターをスケールするためのクールダウン期間を追加することができます。`ScaleInCooldown` と `ScaleOutCooldown` の詳細については、*Application Auto Scaling API リファレンス*の「[https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)」を参照してください。

**Example**  
次の例では、スケーリングポリシーのターゲット追跡設定について説明します。この設定では、`RDSReaderAverageCPUUtilization` 事前定義メトリクスを使用して、Aurora DB クラスターのすべての Aurora レプリカでの平均 CPU 使用率 40% に基づいて Aurora DB クラスターが調整されます。この設定では、10 分間のスケールインのクールダウン期間と 5 分間のスケールアウトのクールダウン期間が提供されます。  

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

#### スケールインアクティビティの無効化
<a name="Aurora.Integrating.AutoScaling.AddCode.DefineScalingPolicy.ScaleIn"></a>

スケールインアクティビティを無効にすることにより、Aurora DB クラスターでターゲット追跡スケーリングポリシー設定がスケーリングされないようにできます。スケールインアクティビティを無効にすると、スケーリングポリシーによって Aurora レプリカが削除されることなく、スケーリングポリシーによって必要に応じて作成されます。

`DisableScaleIn` ブール値を指定して、Aurora DB クラスターのアクティビティのスケールを有効または無効にすることができます。`DisableScaleIn` の詳細については、*Application Auto Scaling API リファレンス*の 「[https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)」を参照してください。

**Example**  
次の例では、スケーリングポリシーのターゲット追跡設定について説明します。この設定では、`RDSReaderAverageCPUUtilization` 事前定義メトリクスは、Aurora DB クラスターのすべての Aurora レプリカでの平均 CPU 使用率 40% に基づいて Aurora DB クラスターを調整します。この設定では、スケーリングポリシーのスケールインアクティビティが無効になります。  

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

### Aurora DB クラスターへのスケーリングポリシーの適用
<a name="Aurora.Integrating.AutoScaling.AddCode.ApplyScalingPolicy"></a>

Aurora DB クラスターを アプリケーションの Auto Scaling に登録し、スケーリングポリシーを定義した後、登録された Aurora DB クラスターにスケーリングポリシーを適用します。Aurora DB クラスターにスケーリングポリシーを適用する際には、AWS CLI または アプリケーションの Auto Scaling API を使用できます。

#### AWS CLI
<a name="Aurora.Integrating.AutoScaling.AddCode.ApplyScalingPolicy.CLI"></a>

スケーリングポリシーを Aurora DB クラスターに適用するには、以下のパラメータが指定された [コマンドを`put-scaling-policy`](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)AWS CLI使用します。
+ `--policy-name` – スケーリングポリシーの名前。
+ `--policy-type` この値は に設定します。`TargetTrackingScaling`
+ `--resource-id` – Aurora DB クラスターのリソース識別子です。このパラメータでは、リソースタイプは `cluster` で、一意の識別子は Aurora DB クラスターの名前、例えば `cluster:myscalablecluster` です。
+ `--service-namespace` この値は に設定します。`rds`
+ `--scalable-dimension` この値は に設定します。`rds:cluster:ReadReplicaCount`
+ `--target-tracking-scaling-policy-configuration` – Aurora DB クラスターに使用するターゲット追跡スケーリングポリシー設定。

**Example**  
次の例では、`myscalablepolicy` というターゲット追跡スケーリングポリシーを `myscalablecluster` という名前の Aurora DB クラスターに アプリケーションの Auto Scaling; を使用して適用します。そのためには、`config.json` という名前のファイルに保存されているポリシー設定を使用します。  
Linux、macOS、Unix の場合:  

```
aws application-autoscaling put-scaling-policy \
    --policy-name myscalablepolicy \
    --policy-type TargetTrackingScaling \
    --resource-id cluster:myscalablecluster \
    --service-namespace rds \
    --scalable-dimension rds:cluster:ReadReplicaCount \
    --target-tracking-scaling-policy-configuration file://config.json
```
Windows の場合:  

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

#### Application Auto Scaling API
<a name="Aurora.Integrating.AutoScaling.AddCode.ApplyScalingPolicy.API"></a>

アプリケーションの Auto Scaling API を使用してスケーリングポリシーを Aurora DB クラスターに適用するには、以下のパラメータを指定して [https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_PutScalingPolicy.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_PutScalingPolicy.html) アプリケーションの Auto Scaling API オペレーションを使用します。
+ `PolicyName` – スケーリングポリシーの名前。
+ `ServiceNamespace` この値は に設定します。`rds`
+ `ResourceID` – Aurora DB クラスターのリソース識別子です。このパラメータでは、リソースタイプは `cluster` で、一意の識別子は Aurora DB クラスターの名前、例えば `cluster:myscalablecluster` です。
+ `ScalableDimension` この値は に設定します。`rds:cluster:ReadReplicaCount`
+ `PolicyType` この値は に設定します。`TargetTrackingScaling`
+ `TargetTrackingScalingPolicyConfiguration` – Aurora DB クラスターに使用するターゲット追跡スケーリングポリシー設定。

**Example**  
次の例では、`myscalablepolicy` というターゲット追跡スケーリングポリシーを `myscalablecluster` という名前の Aurora DB クラスターに アプリケーションの Auto Scaling; を使用して適用します。`RDSReaderAverageCPUUtilization` 事前定義メトリクスに基づいてポリシー設定を使用します。  

```
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": "rds",
    "ResourceId": "cluster:myscalablecluster",
    "ScalableDimension": "rds:cluster:ReadReplicaCount",
    "PolicyType": "TargetTrackingScaling",
    "TargetTrackingScalingPolicyConfiguration": {
        "TargetValue": 40.0,
        "PredefinedMetricSpecification":
        {
            "PredefinedMetricType": "RDSReaderAverageCPUUtilization"
        }
    }
}
```