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