DeletionPolicy
和 UpdateReplacePolicy
属性中的内置函数引用
使用内置函数,您可以根据 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
有关更多信息,请参阅 伪参数参考。