in awscli/customizations/gamelift/uploadbuild.py [0:0]
def _run_main(self, args, parsed_globals):
gamelift_client = self._session.create_client(
'gamelift', region_name=parsed_globals.region,
endpoint_url=parsed_globals.endpoint_url,
verify=parsed_globals.verify_ssl
)
# Validate a build directory
if not validate_directory(args.build_root):
sys.stderr.write(
'Fail to upload %s. '
'The build root directory is empty or does not exist.\n'
% (args.build_root)
)
return 255
# Create a build based on the operating system given.
create_build_kwargs = {
'Name': args.name,
'Version': args.build_version
}
if args.operating_system:
create_build_kwargs['OperatingSystem'] = args.operating_system
if args.server_sdk_version:
create_build_kwargs['ServerSdkVersion'] = args.server_sdk_version
response = gamelift_client.create_build(**create_build_kwargs)
build_id = response['Build']['BuildId']
# Retrieve a set of credentials and the s3 bucket and key.
response = gamelift_client.request_upload_credentials(
BuildId=build_id)
upload_credentials = response['UploadCredentials']
bucket = response['StorageLocation']['Bucket']
key = response['StorageLocation']['Key']
# Create the S3 Client for uploading the build based on the
# credentials returned from creating the build.
access_key = upload_credentials['AccessKeyId']
secret_key = upload_credentials['SecretAccessKey']
session_token = upload_credentials['SessionToken']
s3_client = self._session.create_client(
's3', aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
aws_session_token=session_token,
region_name=parsed_globals.region,
verify=parsed_globals.verify_ssl
)
s3_transfer_mgr = S3Transfer(s3_client)
try:
fd, temporary_zipfile = tempfile.mkstemp('%s.zip' % build_id)
zip_directory(temporary_zipfile, args.build_root)
s3_transfer_mgr.upload_file(
temporary_zipfile, bucket, key,
callback=ProgressPercentage(
temporary_zipfile,
label='Uploading ' + args.build_root + ':'
)
)
finally:
os.close(fd)
os.remove(temporary_zipfile)
sys.stdout.write(
'Successfully uploaded %s to AWS GameLift\n'
'Build ID: %s\n' % (args.build_root, build_id))
return 0