К сожалению, вы не можете делать то, что вы хотели в облачной информации.
Fn::If
в основном может использоваться как троичное выражение. Э.Г.
key: Fn::If: [condition_name, value_if_true, value_if_false]
Его нельзя использовать в качестве логического потока, как в языке программирования. Есть способы обойти это. На самом деле, вы, кажется, уже обнаружили AWS::NoValue
, так что это просто вопрос перемещения задания NotificationConfiguration
за пределы if
.
Resources:
ArtifactBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Ref BucketName
NotificationConfiguration:
Fn::If:
- AddNotificationConfiguration
- LambdaConfigurations:
-
Function: "arn:aws:lambda:eu-west-1:341294322147:function:lambda-itops-trigger-pipeline-setup"
Event: "s3:ObjectCreated:*"
Filter:
S3Key:
Rules:
-
Name: prefix
Value: "appstackcodes/"
-
Name: suffix
Value: "txt"
- !Ref AWS::NoValue
Фактически вы всегда присваиваете что-то NotificationConfiguration
, но иногда это магия AWS::NoValue
. Это работает в большинстве случаев, хотя бывают случаи, когда этого просто недостаточно, и требуется больше творчества!