AWS CloudFormation создает EFS даже с условием

У меня есть скрипт CloudFormation, который имеет следующее:

"Parameters": {
   "optionalExistingEFSDrive": {
     "Description": "EFS drive to store client content. If left empty a new drive will be created automatically.",
     "Type": "String",
     "Default": ""
   }
},
"Conditions": {
   "CreateEFSDrive": { "Fn::Equals": [ { "Ref": "optionalExistingEFSDrive" }, "" ] },
},
"Resources": {
  "WebFileSystem": {
    "Type": "AWS::EFS::FileSystem",
    "Condition": "CreateEFSDrive",
    "DeletionPolicy": "Retain",
    "Properties": {
      "FileSystemTags": [
        {
          "Key": "Name",
          "Value": "WebFileSystem"
        }
      ],
      "PerformanceMode": "generalPurpose"
    }
  },
  "WebFileSystemMountTarget1": {
    "Type": "AWS::EFS::MountTarget",
    "Properties": {
      "SubnetId": {
        "Ref": "WebFileSystemSubnet1"
      },
      "SecurityGroups": [
        {
          "Ref": "WebFileSystemSecurityGroup"
        }
      ],
      "FileSystemId": {
        "Fn::If": [ "CreateEFSDrive", { "Ref": "WebFileSystem" }, { "Ref": "optionalExistingEFSDrive" } ]
      }
    }
  }
}

Передав значение для optionExistingEFSDrive, которое является идентификатором файловой системы существующей файловой системы, создается новая файловая система, но цель монтирования правильно монтируется в предоставленную файловую систему optionExistingEFSDrive.

Что мне не хватает? Я не хочу создавать новую EFS, я хочу повторно использовать существующую.

1 ответ

Я не могу воспроизвести поведение, которое вы описываете при использовании этого шаблона (уменьшенная версия вашего шаблона и преобразованная в YAML):

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  WebFileSystemSubnet1:
    Type: String
  WebFileSystemSecurityGroup:
    Type: String
  OptionalExistingEFSDrive:
    Type: String
Conditions:
  CreateEFSDrive: !Equals 
    - !Ref OptionalExistingEFSDrive
    - ''
Resources:
  WebFileSystem:
    Type: 'AWS::EFS::FileSystem'
    Condition: CreateEFSDrive
    DeletionPolicy: Retain
    Properties:
      FileSystemTags:
        - Key: Name
          Value: WebFileSystem
      PerformanceMode: generalPurpose
  WebFileSystemMountTarget1:
    Type: 'AWS::EFS::MountTarget'
    Properties:
      SubnetId: !Ref WebFileSystemSubnet1
      SecurityGroups:
        - !Ref WebFileSystemSecurityGroup
      FileSystemId: !If 
        - CreateEFSDrive
        - !Ref WebFileSystem
        - !Ref OptionalExistingEFSDrive

Поэтому, когда я использую этот шаблон и передаю идентификатор существующей файловой системы, создается только цель монтирования, как и ожидалось.

Другие вопросы по тегам