更新许可证¶
如果您当前的 Driverless AI 许可证已过期,则需进行更新,以继续运行 Driverless AI、运行评分管道以及访问已在 AWS Lambda 上部署的管道等。
更新 Driverless AI 许可证¶
与首次添加许可证相似,您可以通过替换当前的 license.sig 文件或通过 Web UI 来更新用于运行 Driverless AI 的许可证。
更新 license.sig 文件¶
将现有许可证替换为新许可证,从而更新 /opt/h2oai/dai/home/.driverlessai/license.sig 文件中的许可证密钥。
在 Web UI 中更新许可证¶
如果您的许可证已过期,Web UI 将提示您输入新的许可证。输入步骤与通过 Driverless AI Web UI 首次添加许可证的步骤相同。
更新评分管道许可证¶
对于 Python 评分管道,在 Python 中设置环境变量时将包含更新后的许可证。请参阅 Python 评分管道 一节,了解如何添加许可证。
对于 MOJO 评分管道,可使用环境变量、JVM 的系统属性或通过应用程序 classpath 来指定更新后的许可证文件。此操作与首次添加许可证步骤相同。请参阅 MOJO 评分管道 一节,了解如何添加许可证。
在 AWS Lambda 上更新 Driverless AI 许可证¶
用户可以手动更新在 AWS Lambda 生产环境中部署的每个 Driverless AI 许可证。但是,对于在生产环境中有多个 MOJO 的用户,H2O 会提供一个脚本,用于为当前在 AWS Lambda 上部署的所有 MOJO 模型更新 Driverless AI 许可证。
自动更新¶
H2O 会提供一个脚本,用于为特定 AWS Lambda 区域中部署的所有 MOJO 更新 Driverless AI 许可证。此脚本可在任何计算机上运行。
要求¶
新的 Driverless AI 许可证
此脚本需要以下 Python 包:
boto3
argparse
os
更新步骤¶
按照以下步骤为 AWS Lambda 上的 MOJO 模型更新 Driverless AI 许可证。
复制以下代码并将其保存为 update_lambda.py 。
import boto3 import argparse import os def load_license(license_path): with open(license_path, 'r') as license_file: license_key = license_file.read() return license_key def update_function(client, license_key, function_names): for name in function_names: config = client.get_function_configuration(FunctionName=name) config['Environment']['Variables']['DRIVERLESS_AI_LICENSE_KEY'] = license_key response = client.update_function_configuration( FunctionName= name, Environment= config['Environment'] ) print("{} License Key updated successfully! ".format(name)) def list_functions(client): """Get the list of potential DAI lambda function names""" dai_functions = [] response = client.list_functions() while True: for f in response['Functions']: if 'h2oai' not in f['FunctionName']: continue dai_functions.append(f['FunctionName']) if 'NextMarker' in response: marker = response['NextMarker'] response = client.list_functions(Marker=marker) continue break return dai_functions def main(): parser = argparse.ArgumentParser() parser.add_argument("--list", action='store_true', required=False, help="List all DAI lambda functions on the selected region. ") parser.add_argument("--update_all", action='store_true', required=False, help="Update all DAI Lambda functions on the selected region. ") parser.add_argument("--region", type=str, required=True, help="Region where the lambda function is deployed.") parser.add_argument("--name", type=str, required=False, help="The name of the Lambda function. ") parser.add_argument("--license_path", type=str, required=False, help="Location of the license.sig file") parser.add_argument("--aws_access_key_id", type=str, required=False, help="AWS Credentials") parser.add_argument("--aws_secret_access_key", type=str, required=False, help="AWS Credentials") args = parser.parse_args() if None not in (args.aws_access_key_id, args.aws_secret_access_key): os.environ['aws_access_key_id'] = args.aws_access_key_id os.environ['aws_secret_access_key'] = args.aws_secret_access_key client = boto3.client('lambda', region_name=args.region) if args.update_all or args.list: dai_functions = list_functions(client) print("H2O Driverless AI Lambda Functions in {}: {}".format(args.region, dai_functions)) _functions = [] if args.update_all: _functions = dai_functions elif args.name is not None: _functions.append(args.name) else: print("Please set a name of a function to update") if args.license_path is not None: license_key = load_license(args.license_path) elif "DRIVERLESS_AI_LICENSE_FILE" in os.environ: license_key = load_license(os.environ['DRIVERLESS_AI_LICENSE_FILE']) elif "DRIVERLESS_AI_LICENSE_KEY" in os.environ: license_key = os.environ['DRIVERLESS_AI_LICENSE_KEY'] else: print("No License Found") return 0 update_function(client, license_key, _functions) if __name__ == '__main__': main()
若需运行此脚本,您将需要提供以下信息:
已部署 MOJO 的区域。请注意,必须为每个已部署 MOJO 的区域运行此脚本。
Lambda 函数名称
Driverless AI 许可证路径
AWS 秘密密钥 ID
AWS 秘密访问密钥
# run the upgrade script python update_lambda.py --update_all --region [deployed_region] --name [Lambda_function_name] --license_path [path_to_license_file] --aws_access_key_id [AWS_ACCESS_KEY_ID] --aws_secret_access_key [AWS_SECRET_ACCESS_KEY] # optionally view the help using either python or python3 python update_lambda.py --help