組み込み関数を使用し、CloudFormation テンプレート内のパラメータ、条件、その他のロジックに動的に基づいた DeletionPolicy
および UpdateReplacePolicy
属性を定義できます。この機能により、より柔軟で環境対応のリソース管理戦略が可能になります。
DeletionPolicy
および UpdateReplacePolicy
属性に関する詳細については、「DeletionPolicy 属性」および「UpdateReplacePolicy 属性」を参照してください。
注記
使用する組み込み関数は、有効な DeletionPolicy オプション または UpdateReplacePolicy オプション に解消される必要があります。
宣言
JSON
{ "DeletionPolicy": IntrinsicFunction
}
{ "UpdateReplacePolicy": IntrinsicFunction
}
YAML
DeletionPolicy: IntrinsicFunction
UpdateReplacePolicy: IntrinsicFunction
パラメータ
IntrinsicFunction
-
有効な
DeletionPolicy
またはUpdateReplacePolicy
オプションに解決される組み込み関数。
例
Ref
を使用してパラメータに基づいたポリシーを設定する
次の例では、Ref 組み込み関数よって解決された値に基づいて、DeletionPolicy 属性 属性と UpdateReplacePolicy 属性 属性を設定します。DeletionPolicyParam
と UpdateReplacePolicyParam
のパラメータが両方とも Retain
に設定されている場合、DeletionPolicy
とUpdateReplacePolicy
の属性も Retain
に設定されます。
JSON
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"DeletionPolicyParam": {
"Type": "String",
"AllowedValues": [
"Delete",
"Retain",
"Snapshot"
],
"Default": "Delete"
},
"UpdateReplacePolicyParam": {
"Type": "String",
"AllowedValues": [
"Delete",
"Retain",
"Snapshot"
],
"Default": "Delete"
}
},
"Resources": {
"Table": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
"KeySchema": [
{
"AttributeName": "primaryKey",
"KeyType": "HASH"
}],
"AttributeDefinitions": [{
"AttributeName": "primaryKey",
"AttributeType": "S"
}]
},
"DeletionPolicy": {
"Ref": "DeletionPolicyParam"
},
"UpdateReplacePolicy": {
"Ref": "UpdateReplacePolicyParam"
}
}
}
}
YAML
AWSTemplateFormatVersion: 2010-09-09
Parameters:
DeletionPolicyParam:
Type: String
AllowedValues:
- Delete
- Retain
- Snapshot
Default: Delete
UpdateReplacePolicyParam:
Type: String
AllowedValues:
- Delete
- Retain
- Snapshot
Default: Delete
Resources:
Table:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
- AttributeName: primaryKey
KeyType: HASH
AttributeDefinitions:
- AttributeName: primaryKey
AttributeType: S
DeletionPolicy: !Ref DeletionPolicyParam
UpdateReplacePolicy: !Ref UpdateReplacePolicyParam
Fn::If
を使用して条件に基づいたポリシーを設定する
次の例では、Fn::If 組み込み関数で定義された条件に基づき、DeletionPolicy
および UpdateReplacePolicy
属性を設定します。Stage
パラメータが Prod
の場合、DeletionPolicy
と UpdateReplacePolicy
の属性は Retain
に設定されます。
JSON
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"Stage": {
"Type": "String",
"AllowedValues": [
"Prod",
"Staging",
"Dev"
]
}
},
"Conditions": {
"IsProd": {
"Fn::Equals": [
{
"Ref": "Stage"
},
"Prod"
]
}
},
"Resources": {
"Table": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
"KeySchema": [{
"AttributeName": "primaryKey",
"KeyType": "HASH"
}],
"AttributeDefinitions": [{
"AttributeName": "primaryKey",
"AttributeType": "S"
}]
},
"DeletionPolicy": {
"Fn::If": [
"IsProd",
"Retain",
"Delete"
]
},
"UpdateReplacePolicy": {
"Fn::If": [
"IsProd",
"Retain",
"Delete"
]
}
}
}
}
YAML
AWSTemplateFormatVersion: 2010-09-09
Parameters:
Stage:
Type: String
AllowedValues:
- Prod
- Staging
- Dev
Conditions:
IsProd: !Equals
- !Ref Stage
- Prod
Resources:
Table:
Type: AWS::DynamoDB::Table
Properties:
KeySchema:
- AttributeName: primaryKey
KeyType: HASH
AttributeDefinitions:
- AttributeName: primaryKey
AttributeType: S
DeletionPolicy: !If
- IsProd
- Retain
- Delete
UpdateReplacePolicy: !If
- IsProd
- Retain
- Delete
サポートされている関数
DeletionPolicy
または UpdateReplacePolicy
属性の中では、次の関数を使用できます。
次の擬似パラメータも使用することもできます。
-
AWS::AccountId
-
AWS::Partition
-
AWS::Region
詳細については、「擬似パラメータ参照」を参照してください。