def __init__(self): # system logger FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s" logging.basicConfig(format=FORMAT) logging.info("Initialize logger") self.logger = logging.getLogger() self.logger.setLevel(logging.INFO) self.aws_request_id = 0 self.lambda_wait_iteration = 0 self.lambda_payload = None self.lambda_context = None self.account_id = AwsHelper.local_account_id() self.region = AwsHelper.local_region() self.snspublisher = ShelveryNotification( RuntimeConfig.get_sns_topic(self))
def cross_account_copy(self, new_backup_id): backup = copy.deepcopy(self) # backup name and retention type are copied backup.backup_id = new_backup_id backup.region = AwsHelper.local_region() backup.account_id = AwsHelper.local_account_id() tag_prefix = self.tags['shelvery:tag_name'] backup.tags[f"{tag_prefix}:region"] = backup.region backup.tags[f"{tag_prefix}:date_copied"] = datetime.utcnow().strftime(self.TIMESTAMP_FORMAT) backup.tags[f"{tag_prefix}:dst_account"] = backup.account_id backup.tags[f"{tag_prefix}:src_region"] = self.region backup.tags[f"{tag_prefix}:region"] = backup.region backup.tags[f"{tag_prefix}:dr_copy"] = 'false' backup.tags[f"{tag_prefix}:cross_account_copy"] = 'true' backup.tags[f"{tag_prefix}:dr_regions"] = '' backup.tags[f"{tag_prefix}:dr_copies"] = '' return backup
def get_remote_bucket_name(cls, account_id, remote_region=None): if remote_region is None: remote_region = AwsHelper.local_region() bucket_name = f"shelvery.data.{account_id}-{remote_region}.base2tools" return bucket_name