Как работать с ACL-списками S3 Bucket с использованием тегов Bucket в функции Lambda - PullRequest
0 голосов
/ 21 мая 2019

Я пишу Lambda-скрипт для автоматического возврата общедоступного ACL-списка корзины s3 обратно в приватный, если этот контейнер не помечен "public-allowed" = "True". Мой сценарий успешно восстанавливает ACL, но у меня возникают проблемы с его распознаванием указанного набора тегов.

В других местах я нашел предложения о том, чтобы изменить tag.id на tag['id'] (так, tag['name']), однако, когда я это делаю, вместо того, чтобы сказать 'dict' object has no attribute 'name', он просто говорит name в журналах как если бы у меня было print(name) там. Это также не влияет на результат.

#Public Tag
def public_bucket(bucketname):

    try:
        bucket_tagging = s3.get_bucket_tagging(Bucket=bucketname)
        tag_set = bucket_tagging['TagSet']
        for tag in tag_set:
            if (tag.name == "public-allowed"):
                if (tag.value == "True"):
                    return True
                    break
    except Exception, e:
        print(e.message)

Я ожидал, что это проверит теги, которые существуют в корзине, и прервет цикл, когда он найдет конкретный ключ / значение "public-allowed" = "True", что позволит ACL корзины оставаться общедоступными, и если нет тегов затем распечатайте сообщение об ошибке. Вместо этого он по-прежнему возвращает ACL в приватный режим, несмотря на то, что нет никаких реальных ошибок.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 21 мая 2019

Мне удалось получить дополнительную информацию от коллеги, и оказалось, что мне нужно было определить теги с помощью ['Key'] и ['Value']:

def public_bucket(bucketname):

    try:
        bucket_tagging = s3.get_bucket_tagging(Bucket=bucketname)
        tag_set = bucket_tagging['TagSet']
        for tag in tag_set:
            if (tag['Key'] == "public-allowed"):
                if (tag['Value'] == "True"):
                    return True
                    break
    except Exception, e:
        print(e.message)

Извините, если я спрашиваюэтот вопрос (и затем отвечающий сам) - плохой этикет переполнения стека.Надеюсь, что это будет полезно для других, если ничего больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...