#python-3.x #amazon-web-services #aws-lambda #amazon-cloudwatch #amazon-cloudtrail
Вопрос:
Я хочу написать лямбда-функцию с Python, чтобы включить шифрование по умолчанию в корзине S3, если вновь созданная корзина не включена для шифрования
Необходимо выполнить следующие действия
- Запускайте лямбда-функцию при создании новой корзины S3
- Если шифрование по умолчанию не включено, оно будет включено автоматически
- Тема SNS будет активирована и отправлена по электронной почте администратору и создателю/владельцу корзины
Следующая лямбда-функция, которую я создал, будет периодически шифровать любую существующую корзину. Я хочу расширить его, чтобы он срабатывал при создании нового ведра
import json
import boto3
def lambda_handler(event, context):
s3 = boto3.client("s3")
response = s3.list_buckets()
buckets = [bucket['Name'] for bucket in response['Buckets']]
status = 401
unencrypted_buckets = []
for bucket in buckets:
try:
s3.get_bucket_encryption(Bucket=bucket)
print(f"Bucket {bucket} has already Encryption enabled")
except s3.exceptions.ClientError:
unencrypted_buckets.append(bucket)
encryption_enabled_buckets = []
for unencrypted_bucket in unencrypted_buckets:
try:
print(f"Bucket {unencrypted_bucket} has no Encryption enabled")
s3.put_bucket_encryption(
Bucket=unencrypted_bucket,
ServerSideEncryptionConfiguration={
'Rules': [
{
'ApplyServerSideEncryptionByDefault':
{
'SSEAlgorithm': 'AES256'
}
}
]
}
)
encryption_enabled_buckets.append(unencrypted_bucket)
status = 200
except s3.exceptions.ClientError:
status = 500
break
return {
'statusCode': status,
'details': 'Default encryption enabled',
'encryption enabling success': encryption_enabled_buckets,
'encryption enabling failed': list(set(unencrypted_buckets) - set(encryption_enabled_buckets)) list(
set(encryption_enabled_buckets) - set(unencrypted_buckets))
}
Комментарии:
1. Что вы пробовали? Вы что — нибудь пробовали? Переполнение стека не является архитектором или инженером решений по требованию.
2. Я создал функцию Lambda, чтобы включить шифрование по умолчанию для существующих сегментов. Я попытался добавить триггер к этой лямбда-функции при создании нового блока.
Ответ №1:
Возможно, вам вообще не придется это кодировать. Рассмотрите возможность использования правил конфигурации AWS для этого и других требований соответствия.
См. раздел Управляемые правила AWS Config:
AWS Config может отправлять уведомления через SNS, и вот пример того, как я могу получать уведомления, когда ресурс AWS не соответствует требованиям, используя AWS Config?