CloudFormation: блокировать удаление ресурсов - PullRequest
0 голосов
/ 14 мая 2018

Дополнительный от этот вопрос .Попытка сделать шаблон облачной информации безопасным во время изменений.

Есть ли способ фактически заблокировать удаление роли и таблицы?Будет ли добавление политики помочь?

Учитывая следующую выдержку из шаблона:

{
  ...

  "Parameters" : {
    "ShouldCreateTable" : {
      ...
      "Description" : "If true then the underlying DynamoDB table will be created with the CloudFormation stack."
    },  
    ...
  },

  "Conditions" : {
    "CreateDynamoTable" : {"Fn::Equals" : [{"Ref" : "ShouldCreateTable"}, "true"]},
    ...
  },

  "Resources" : {

    "Get" : {
      "Type" : "AWS::Serverless::Function",
      "Properties": {
        ...
        "Role": {"Fn::If" : ["CreateRole", {"Fn::GetAtt":["LambdaRole", "Arn"]}, {"Ref":"RoleARN"}]},
        "Environment" : {
          "Variables" : {
            "AppDynamoTable" : { "Fn::If" : ["CreateDynamoTable", {"Ref":"DynamoTable"}, { "Ref" : "TableName" } ] }
          }
        },
        ...
      }
    },

    "LambdaRole":{
        "Type":"AWS::IAM::Role",
         ...
    },

    "DynamoTable" : {
        "Type" : "AWS::DynamoDB::Table",
        ...
    }
  },

}

1 Ответ

0 голосов
/ 14 мая 2018

Решением может быть использование DeletionPolicy Attribute.Вы можете легко добавить "DeletionPolicy" : "Retain" к своим ресурсам, где вы хотите «заблокировать» удаление.

AWS CloudFormation сохраняет ресурс, не удаляя ресурс или его содержимое при удалении его стека.Вы можете добавить эту политику удаления к любому типу ресурса.

Это будет выглядеть в данном примере так:

"LambdaRole":{
  "Type":"AWS::IAM::Role",
  "DeletionPolicy" : "Retain",
  ...
},
"DynamoTable" : {
  "Type" : "AWS::DynamoDB::Table",
  "DeletionPolicy" : "Retain",
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...