AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

AWS::ApplicationAutoScaling::ScalingPolicy

AWS::ApplicationAutoScaling::ScalingPolicy リソースは、アプリケーションリソースを調整するためにアプリケーションの Auto Scaling が使用するスケーリングポリシーを定義します。

詳細については、Application Auto Scaling API リファレンスの「PutScalingPolicy」を参照してください。スケーリングポリシーの詳細については、「Application Auto Scaling ユーザーガイド」を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

{ "Type" : "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties" : { "PolicyName" : String, "PolicyType" : String, "ResourceId" : String, "ScalableDimension" : String, "ScalingTargetId" : String, "ServiceNamespace" : String, "StepScalingPolicyConfiguration" : StepScalingPolicyConfiguration, "TargetTrackingScalingPolicyConfiguration" : TargetTrackingScalingPolicyConfiguration } }

プロパティ

PolicyName

スケーリングポリシーの名前。

必須: はい

タイプ: 文字列

最小: 1

最大: 256

パターン: \p{Print}+

Update requires: Replacement

PolicyType

アプリケーションの Auto Scaling ポリシータイプ。有効な値は、StepScaling および TargetTrackingScaling です。

DynamoDB では TargetTrackingScaling のみがサポートされます。Amazon ECS、スポットフリート、および Amazon RDS については、 StepScalingTargetTrackingScaling の両方がサポートされています。他のサービスの場合、StepScaling のみがサポートされます。

必須: はい

タイプ: 文字列

Update requires: No interruption

ResourceId

このスケーリングポリシーが適用されるスケーラブルなターゲットの一意のターゲットリソース識別子。有効な値については、Application Auto Scaling API リファレンスの「PutScalingPolicyResourceId パラメータ」を参照してください。

ResourceIdScalableDimension、やServiceNamespace、または ScalingTargetId プロパティのいずれかを指定する必要があります。両方を指定することはできません。

必須: 条件付き

タイプ: 文字列

Update requires: Replacement

ScalableDimension

このスケーリングポリシーを適用するためのスケーラブルなターゲットのスケーラブルなディメンションです。スケーラブルなディメンションは、Amazon ECS サービスの希望するタスクカウントの ecs:service:DesiredCount などのサービス名前空間、リソースタイプ、スケーリングなプロパティを含みます。有効な値については、Application Auto Scaling API リファレンスの「PutScalingPolicy の ScalableDimension パラメータ」を参照してください。

ResourceIdScalableDimension、やServiceNamespace、または ScalingTargetId プロパティのいずれかを指定する必要があります。両方を指定することはできません。

必須: 条件付き

タイプ: 文字列

Update requires: Replacement

ScalingTargetId

Application アプリケーションの Auto Scaling のスケーラブルターゲットの AWS CloudFormation により生成された ID。IDの詳細については、AWS::ApplicationAutoScaling::ScalableTarget リソースの戻り値セクションを参照してください。

ScalingTargetId プロパティ、または ResourceIdScalableDimension、そして ServiceNamespace プロパティのいずれかを指定する必要があります。両方を指定することはできません。

必須: 条件付き

タイプ: 文字列

Update requires: Replacement

ServiceNamespace

リソースまたは独自のアプリケーションまたはサービスによって提供されるリソースの custom-resource を提供する AWS サービスの名前空間。有効な値については、Application Auto Scaling API リファレンスの「PutScalingPolicyServiceNamespace パラメータ」を参照してください。

ResourceIdScalableDimension、やServiceNamespace、または ScalingTargetId プロパティのいずれかを指定する必要があります。両方を指定することはできません。

必須: 条件付き

タイプ: 文字列

Update requires: Replacement

StepScalingPolicyConfiguration

ステップスケーリングポリシー。

必須: いいえ

タイプ: StepScalingPolicyConfiguration

Update requires: No interruption

TargetTrackingScalingPolicyConfiguration

ターゲット追跡スケーリングポリシー。

必須: いいえ

タイプ: TargetTrackingScalingPolicyConfiguration

Update requires: No interruption

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりアプリケーションの Auto Scaling スケーリングポリシー Amazon リソースネーム (ARN) が返されます。例: arn:aws:autoscaling:us-east-2:123456789012:scalingPolicy:12ab3c4d-56789-0ef1-2345-6ghi7jk8lm90:resource/ecs/service/ecsStack-MyECSCluster-AB12CDE3F4GH/ecsStack-MyECSService-AB12CDE3F4GH:policyName/MyStepPolicy

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

次の例では、Application Auto Scaling に登録されているスケーラブルターゲットのスケーリングポリシーを作成します。詳細については、Application Auto Scaling API リファレンスの「PutScalingPolicy」を参照してください。

Amazon DynamoDB テーブルを使用したターゲット追跡スケーリングポリシー

この例では、AWS::DynamoDB::Table をスケーラブルターゲットとして登録し、テーブルの WriteCapacityUnits スループットをスケーリングする TargetTrackingScaling スケーリングポリシーを定義しています。

JSON

{ "Resources":{ "DDBTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "AttributeDefinitions":[ { "AttributeName":"ArtistId", "AttributeType":"S" }, { "AttributeName":"Concert", "AttributeType":"S" }, { "AttributeName":"TicketSales", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"ArtistId", "KeyType":"HASH" }, { "AttributeName":"Concert", "KeyType":"RANGE" } ], "GlobalSecondaryIndexes":[ { "IndexName":"GSI", "KeySchema":[ { "AttributeName":"TicketSales", "KeyType":"HASH" } ], "Projection":{ "ProjectionType":"KEYS_ONLY" }, "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":5 } } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":5 } } }, "WriteCapacityScalableTarget":{ "Type":"AWS::ApplicationAutoScaling::ScalableTarget", "Properties":{ "MaxCapacity":15, "MinCapacity":5, "ResourceId":{ "Fn::Join":[ "/", [ "table", { "Ref":"DDBTable" } ] ] }, "RoleARN":{ "Fn::GetAtt":[ "ScalingRole", "Arn" ] }, "ScalableDimension":"dynamodb:table:WriteCapacityUnits", "ServiceNamespace":"dynamodb" } }, "ScalingRole":{ "Type":"AWS::IAM::Role", "Properties":{ "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "application-autoscaling.amazonaws.com" ] }, "Action":[ "sts:AssumeRole" ] } ] }, "Path":"/", "Policies":[ { "PolicyName":"root", "PolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "dynamodb:DescribeTable", "dynamodb:UpdateTable", "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:SetAlarmState", "cloudwatch:DeleteAlarms" ], "Resource":"*" } ] } } ] } }, "WriteScalingPolicy":{ "Type":"AWS::ApplicationAutoScaling::ScalingPolicy", "Properties":{ "PolicyName":"WriteAutoScalingPolicy", "PolicyType":"TargetTrackingScaling", "ScalingTargetId":{ "Ref":"WriteCapacityScalableTarget" }, "TargetTrackingScalingPolicyConfiguration":{ "TargetValue":50.0, "ScaleInCooldown":60, "ScaleOutCooldown":60, "PredefinedMetricSpecification":{ "PredefinedMetricType":"DynamoDBWriteCapacityUtilization" } } } } } }

YAML

Resources: DDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: "ArtistId" AttributeType: "S" - AttributeName: "Concert" AttributeType: "S" - AttributeName: "TicketSales" AttributeType: "S" KeySchema: - AttributeName: "ArtistId" KeyType: "HASH" - AttributeName: "Concert" KeyType: "RANGE" GlobalSecondaryIndexes: - IndexName: "GSI" KeySchema: - AttributeName: "TicketSales" KeyType: "HASH" Projection: ProjectionType: "KEYS_ONLY" ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 WriteCapacityScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 15 MinCapacity: 5 ResourceId: !Join - / - - table - !Ref DDBTable RoleARN: !GetAtt ScalingRole.Arn ScalableDimension: dynamodb:table:WriteCapacityUnits ServiceNamespace: dynamodb ScalingRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - application-autoscaling.amazonaws.com Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "dynamodb:DescribeTable" - "dynamodb:UpdateTable" - "cloudwatch:PutMetricAlarm" - "cloudwatch:DescribeAlarms" - "cloudwatch:GetMetricStatistics" - "cloudwatch:SetAlarmState" - "cloudwatch:DeleteAlarms" Resource: "*" WriteScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: WriteAutoScalingPolicy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref WriteCapacityScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 50.0 ScaleInCooldown: 60 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: DynamoDBWriteCapacityUtilization

スケールアウトのステップスケーリングポリシー

次の例では、指定したスケーラブルなターゲットのステップスケーリングポリシーを作成します。関連アラームがトリガーされると、ポリシーは 60 秒のクールダウン期間で、スケーラブルな容量を 200% 増やします。

JSON

{ "scalingPolicy":{ "Type":"AWS::ApplicationAutoScaling::ScalingPolicy", "Properties":{ "PolicyName":"MyStepPolicy", "PolicyType":"StepScaling", "ScalingTargetId":{ "Ref":"scalableTarget" }, "StepScalingPolicyConfiguration":{ "AdjustmentType":"PercentChangeInCapacity", "Cooldown":60, "MetricAggregationType":"Average", "StepAdjustments":[ { "MetricIntervalLowerBound":0, "ScalingAdjustment":200 } ] } } } }

YAML

scalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: MyStepPolicy PolicyType: StepScaling ScalingTargetId: Ref: scalableTarget StepScalingPolicyConfiguration: AdjustmentType: PercentChangeInCapacity Cooldown: 60 MetricAggregationType: Average StepAdjustments: - MetricIntervalLowerBound: 0 ScalingAdjustment: 200

このページの内容: