Политики хранителя облака в AWS
Я хочу остановить экземпляры EC2, у которых нет тега ABC
и чей tag(ABC)
значение не относится к типу @gmail.com
Я пытаюсь использовать политику хранителя облака в AWS, я написал вот так
filters:
- or:
- "tag:ABC": absent
- type: value
key: "tag:ABC"
op: ne
value: '/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@gmail.com/'
actions:
- stop
Однако этот код не дает желаемого эффекта. Есть идеи, почему?
1 ответ
Решение
Создал эту политику на примере специальных фильтров.
ec2-without-gmail-in-tag.yml
policies:
- name: ec2-without-gmail-in-tag
description: |
Stop EC2 instances that do not have a tag or if the tag exists but doesnt have a specific value
resource: ec2
filters:
- or:
# check if tag is absent
- "tag:ABC": absent
# or check if tag does not contain @gmail.com using a negative lookahead
- type: value
key: "tag:ABC"
op: regex
value: '^((?!@gmail.com).)*$'
Вы можете протестировать этот фильтр, используя python re
модуль.
$ python
>>> import re
>>> regex = '^((?!@gmail.com).)*$'
>>> re.match(regex, 'Test if @gmail.com matches').group(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> re.match(regex, 'Test if @gmail matches').group(0)
'Test if @gmail matches'