Политика Cloud Custodian в AWS - PullRequest
       24

Политика Cloud Custodian в AWS

0 голосов
/ 07 февраля 2020

Я хочу остановить экземпляры 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 Ответ

0 голосов
/ 11 марта 2020

Создал эту политику, используя специальные фильтры * пример 1002 *.

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'
...