Я написал макрос (названный BucketChecker
), который принимает имя корзины s3 и проверяет, существует ли оно уже. Фрагмент вернет true или false соответственно.
Я хотел бы использовать этот макрос в разделе Conditions
, как описано в этой статье: https://cloudnineapps.com/blogs/cloud-computing/how-to-create-dynamic-condition-expressions-in-aws-cloudformation-using-macros/.
Идея состоит в том, чтобы использовать это как условие в моем шаблоне, например:
Conditions:
CreateBucket:
Fn::Equals: ['false', 'Fn::Transform': {
Name: BucketChecker,
Parameters: {
Operation: 'bucketExists',
BucketName: 'my-bucket'
}}]
Resources:
MyBucket:
Type: "AWS::S3::Bucket"
Condition: CreateBucket # -> only create it if doesn't yet exist
Properties:
BucketName: 'my-bucket'
Но cfn-linter выдает мне ошибку: E8003 Fn::Equals element must be a supported function (Ref, Fn::FindInMap, Fn::Sub, Fn::Join, Fn::Select, Fn::Split)
Мой главный вопрос: даже можно ли добиться этого с помощью CloudFormation? Если да, что не так с моим шаблоном? Связанная статья, кажется, делает то же самое, но моя не работает.