# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You # may not use this file except in compliance with the License. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. import sys from functools import partial from awscli.compat import urlopen from awscli.customizations.commands import BasicCommand class GetGameSessionLogCommand(BasicCommand): NAME = 'get-game-session-log' DESCRIPTION = 'Download a compressed log file for a game session.' ARG_TABLE = [ {'name': 'game-session-id', 'required': True, 'help_text': 'The game session ID'}, {'name': 'save-as', 'required': True, 'help_text': 'The filename to which the file should be saved (.zip)'} ] def _run_main(self, args, parsed_globals): client = self._session.create_client( 'gamelift', region_name=parsed_globals.region, endpoint_url=parsed_globals.endpoint_url, verify=parsed_globals.verify_ssl ) # Retrieve a signed url. response = client.get_game_session_log_url( GameSessionId=args.game_session_id) url = response['PreSignedUrl'] # Retrieve the content from the presigned url and save it locally. contents = urlopen(url) sys.stdout.write( 'Downloading log archive for game session %s...\r' % args.game_session_id ) with open(args.save_as, 'wb') as f: for chunk in iter(partial(contents.read, 1024), b''): f.write(chunk) sys.stdout.write( 'Successfully downloaded log archive for game ' 'session %s to %s\n' % (args.game_session_id, args.save_as)) return 0