in source/customer_managed_backup.py [0:0]
def lambda_handler(event, context):
# Get inputs from the lambda JSON inputs
try:
backup_plan_id= event['change_type_id']
ams_app_id= event['app_account_id']
local_exec_params = event['exec_params']
app_acct_role = event['app_acct_role']
if backup_plan_id =="Base_AWS_BackUp":
# Location of the input files, these directories are set in temp.yaml
local_s3_session = boto3.session.Session()
s3handler = local_s3_session.client('s3')
bucket = S3bucket
key = templateS3Key + local_exec_params
BackupPlanData = s3handler.get_object(Bucket=bucket, Key=key)
BackUpExecParams = json.loads(BackupPlanData['Body'].read().decode('utf-8'))
ResourceTagKey = BackUpExecParams['Parameters']['ResourceTagKey']
ResourceTagValue = BackUpExecParams['Parameters']['ResourceTagValue']
BackupPlanName = BackUpExecParams['Parameters']['BackupPlanName']
except Exception as cust_backup_plan_input_failure:
return (str(cust_backup_plan_input_failure))
try:
member_account_session = get_session(str(ams_app_id), str(app_acct_role), "customer_managed_backup",ExternalId)
VaultBackUpClient = member_account_session.client('backup')
VaultBackUpClient.create_backup_vault(
BackupVaultName=BackUpExecParams['Parameters']['BackupRule1Vault'],
)
except Exception as VaultException:
return (str(VaultException))
try:
member_account_session = get_session(str(ams_app_id), str(app_acct_role), "customer_managed_backup",ExternalId)
BackUpClient = member_account_session.client('backup')
response = BackUpClient.create_backup_plan(
BackupPlan={
'BackupPlanName': BackUpExecParams['Parameters']['BackupPlanName'],
'Rules': [
{
'RuleName': BackUpExecParams['Parameters']['BackupRule1Name'],
'TargetBackupVaultName': BackUpExecParams['Parameters']['BackupRule1Vault'],
'ScheduleExpression': BackUpExecParams['Parameters']['BackupRule1ScheduleExpression'],
'StartWindowMinutes': BackUpExecParams['Parameters']['BackupRule1StartWindowMinutes'],
'CompletionWindowMinutes': BackUpExecParams['Parameters']['BackupRule1CompletionWindowMinutes'],
'Lifecycle': {
'MoveToColdStorageAfterDays': BackUpExecParams['Parameters']['BackupRule1MoveToColdStorageAfterDays'],
'DeleteAfterDays': BackUpExecParams['Parameters']['BackupRule1DeleteAfterDays']
},
},
]
},
BackupPlanTags={
BackUpExecParams['Parameters']['ResourceTagKey']:BackUpExecParams['Parameters']['ResourceTagValue']
},
)
NewPlanId = response['BackupPlanId']
BackUpClient.create_backup_selection(
BackupPlanId=NewPlanId,
BackupSelection={
'SelectionName': BackupPlanName + '-tag-selection',
'IamRoleArn': 'arn:aws:iam::' + ams_app_id + ':role/service-role/AWSBackupDefaultServiceRole',
'ListOfTags': [
{
'ConditionType': 'STRINGEQUALS',
'ConditionKey': ResourceTagKey,
'ConditionValue': ResourceTagValue
},
]
}
)
return {'planId': NewPlanId}
except Exception as backup_plan_create_failure:
return (str(backup_plan_create_failure))