Я пишу 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 в приватный режим, несмотря на то, что нет никаких реальных ошибок.
Что я здесь не так делаю?