global clt clt = client.AcsClient(region_id=regionId, credential=sts_token_credential) name = evt.get("name").lower()
if name in ['Instance:SystemFailure.Reboot:Executed'.lower(), "Instance:InstanceFailure.Reboot:Executed".lower()]: request = DescribeDisksRequest() request.add_query_param("RegionId", regionId) request.set_InstanceId(ecsInstanceId) response = _send_request(request) disks = response.get('Disks').get('Disk', []) for disk in disks: diskId = disk["DiskId"] create_ecs_snap_by_id(diskId) LOGGER.info("Create ecs snap success, ecs id = %s , disk id = %s ", ecsInstanceId, diskId)
def create_ecs_snap_by_id(disk_id): LOGGER.info("Create ecs snap, disk id is %s ", disk_id) request = CreateSnapshotRequest() request.set_DiskId(disk_id) request.set_SnapshotName("reboot_" + ''.join(random.choice(string.ascii_lowercase) for _ in range(6))) response = _send_request(request) return response.get("SnapshotId")
# send open api request def _send_request(request): request.set_accept_format('json') try: response_str = clt.do_action_with_exception(request) LOGGER.info(response_str) response_detail = json.loads(response_str) return response_detail except Exception as e: LOGGER.error(e)
Serverless architecture grew out of cloud computing. It inherits all the advantages of cloud computing while being extremely flexible, cost effective, and maintenance free.