#python #amazon-s3
Вопрос:
Поэтому я пытаюсь написать скрипт на python, который проверяет, установлены ли все значения в блоке public_access_block в корзинах s3 в значение TRUE, и если одно из них не соответствует, то распечатайте, какое это ведро.
s3 = boto3.client('s3')
buckets = s3.get_public_access_block(Bucket = 'my-test-bucket) #this is for one bucket
print(buckets)
Мой вопрос заключается в следующем: как написать логику If, которая повторяется через несколько сегментов для проверки
Ответ №1:
Убедитесь, что это сработает в вашем случае,
Примечание: Если конфигурация блока общего доступа не найдена, то функция вызывает исключение, и это движение мы также получили из функции генератора. Настройте его в соответствии с вашими требованиями.
import boto3
import botocore
s3_resource = boto3.resource('s3')
s3_client = boto3.client('s3')
def buckets_with_public_access_block_restrictions() -> Generator:
"""
Checks for PublicAccessBlockConfiguration values and yield Bucket if any values is False,
otherwise it will keep continue to check public_access_block.
It may raise an exception when PublicAccessBlockConfiguration not configured.
At that movement it will yield bucket as well.
:return: Bucket
:rtype: Generator
"""
for bkt in s3_resource.buckets.all():
try:
# Checks bucket which have PublicAccessBlockConfiguration configured
# else it will raise error `NoSuchPublicAccessBlockConfiguration`
bucket_conf = s3_client.get_public_access_block(Bucket=bkt.name)
if not all(bucket_conf.get('PublicAccessBlockConfiguration').values()):
yield bkt
except botocore.exceptions.ClientError:
# Executes when the public access block configuration was not found
yield bkt # TODO: It depends on the requirement
def enlist_buckets() -> None:
for bucket in buckets_with_public_access_block_restrictions():
print(bucket.name) # TODO: Perform some operation
enlist_buckets()
Комментарии:
1. Я работал над этим, и это сработало великолепно! Спасибо!