华为云用户手册
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表3 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和错误类型的JSON文件。格式如下: { "errorMessage": "", "errorType": "" } errorMessage:Runtime返回的错误信息 errorType:错误类型 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
函数Handler定义 ASSEMBLY::NAMESPACE.CLASSNAME::METHODNAME .ASSEMBLY为应用程序的.NET程序集文件的名称,假设文件夹名称为HelloCsharp。 NAMESPACE、CLASSNAME即入口执行函数所在的namespace和class名称。 METHODNAME即入口执行函数名称。例如: 创建函数时Handler:HelloCsharp::Example.Hello::Handler。
-
SDK接口 Context接口 Context类中提供了许多属性供用户使用,如表1所示。 表1 Context对象说明 属性名 属性说明 String RequestId 请求ID。 String ProjectId Project Id。 String PackageName 函数所在分组名称。 String FunctionName 函数名称。 String FunctionVersion 函数版本。 Int MemoryLimitInMb 分配的内存。 Int CpuNumber 获取函数占用的CPU资源。 String Accesskey 获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。 当前 函数工作流 已停止维护Runtime SDK 中String AccessKey接口,您将无法使用String AccessKey获取临时AK。 String Secretkey 获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。 当前函数工作流已停止维护Runtime SDK 中String SecretKey接口,您将无法使用String SecretKey获取临时SK。 String SecurityAccessKey 获取用户委托的SecurityAccessKey(有效期24小时),使用该方法需要给函数配置委托。 String SecuritySecretKey 获取用户委托的SecuritySecretKey(有效期24小时),使用该方法需要给函数配置委托。 String SecurityToken 获取用户委托的SecurityToken(有效期24小时),使用该方法需要给函数配置委托。 String Token 获取用户委托的Token(有效期24小时),使用该方法需要给函数配置委托。 Int RemainingTimeInMilliSeconds 函数剩余运行时间。 String GetUserData(string key,string defvalue=" ") 通过key获取用户通过环境变量传入的值。 日志接口 FunctionGraph中C# SDK中接口日志说明如所示。 表2 日志接口说明 方法名 方法说明 Log(string message) 利用context创建logger对象: var logger = context.Logger; logger.Log("hello CS harp runtime test(v1.0.2)"); Logf(string format, args ...interface{}) 利用context创建logger对象: var logger = context.Logger; var version = "v1.0.2" logger.Logf("hello CSharp runtime test({0})", version);
-
C#函数接口定义 FunctionGraph运行时目前支持C#(.NET Core 2.1)、C#(.NET Core 3.1)、C#(.NET Core 6.0)、.NET Core 8.0(仅支持“中东-利雅得”、“土耳其-伊斯坦布尔”区域)版本。 C#函数接口定义:作用域 返回参数 函数名(函数参数,Context参数) 作用域:提供给FunctionGraph调用的用户函数必须定义为public。 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。 函数名:用户自定义函数名称,需要和函数执行入口处用户自定义的入口函数名称一致。 执行事件体:函数执行界面由用户输入的执行事件参数。 上下文环境(context):Runtime提供的函数执行上下文,相关属性定义在对象说明中。 HC.Serverless.Function.Common –部署在FunctionGraph服务中的项目工程需要引入该库,其中包含IFunctionContext对象,详情见context类说明。 创建csharp函数时,需要定义某个类中的方法作为函数执行入口,该方法可以通过定义IFunctionContext类型的参数来访问当前执行函数的信息。例如: 1 2 3 4 public Stream handlerName(Stream input,IFunctionContext context) { // TODO } C#函数的函数执行入口参数格式为:[程序集名]::[命名空间].[类名]::[执行函数名],例如CsharpDemo::CsharpDemo.Program::MyFunc,请参考函数执行入口通过FunctionGraph控制台进行配置或修改。 建议使用.NET Core 3.1版本。
-
入口插件 实现Entry插件。 devspore-horizon提供了抽象类Processor,用户需要继承这个抽象类,实现抽象方法doProcess(DataEvent event),把认证和鉴权的处理逻辑写到此方法体内。此方法返回值为boolean型。如果认证或者鉴权的逻辑失败,则返回false,责任链后续节点不再执行,整个请求返回不再执行;如果认证或者鉴权成功,则返回为true,继续执行后续节点。Processor代码如下: public abstract class Processor { protected MetaDocument metaDoc; private String name; private Processor next; public Processor getNext() { return next; } public void setNext(Processor next) { this.next = next; } public boolean process(DataEvent dataEvent) throws PluginException { if (!doProcess(dataEvent)) { return false; } if (null != next) { return next.process(dataEvent); } return true; } public abstract boolean doProcess(DataEvent dataEvent) throws PluginException; public String getName() { return name; } } 填写配置信息。 完成接口实现之后,还需要填写配置信息。有关horizon的入口拦截配置信息如下: devspore.horizon.approvers 实现的Entry插件,插件必须注入到spring IOC容器,并提供bean id,赋值给devspore.horizon.processors配置项。devspore.horizon.processors配置项是个数组。horizon会读取数组中每个bean id,执行已实现的鉴权、认证等逻辑。 多个插件以","分隔,多个插件按配置顺序执行。 devspore: horizon: processors: bean1,bean2
-
出口插件 实现Exit插件。 devspore-horizon提供了接口Observer,用户需要实现这个接口的observe(DataEvent dataEvent)方法,把变更通知、更新缓存、统一审计、统一工作流的处理逻辑写到此方法体内即可。 Observer代码如下: public interface Observer { // receive the BO changes void observe(DataEvent dataEvent) throws PluginException; } 填写配置信息。 完成接口实现之后,还需要填写配置信息。有关horizon的出口拦截配置信息如下: devspore.horizon.observers devspore.horizon.observers配置项也是个数组。horizon会读取数组中每个bean id,执行已实现的消息发送、审计等逻辑。 多个插件以","分隔,多个插件按配置顺序执行。 devspore: horizon: observers: bean1,bean2
-
内置插件 开启horizon后,会自动生成两个内置插件,用户在插件中实现统一的操作前认证、鉴权,操作后消息发送、缓存更新、审计等逻辑即可: Entry插件 /** * default request plugin */ @Component @javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, xxx-RELEASE") public class DefaultRequestPlugin extends Processor { @Override public boolean doProcess(DataEvent dataEvent) throws PluginException { // do your code return true; } } Exit插件 /** * default response plugin */ @Component @javax.annotation.Generated(value = "com.huaweicloud.devspore.codegen, xxx-RELEASE") public class DefaultResponsePlugin implements Observer { @Override public void observe(DataEvent dataEvent) throws PluginException { // do your code } } 配置文件 devspore: horizon: processors: defaultRequestPlugin observers: defaultResponsePlugin
-
devspore-probe常用的配置参数如下所示 devspore: probe: metrics: tags: component: devspore-application # 应用名称,使监控指标带上应用标签 api-description-tags: false # 是否开启http_server_request指标添加description标签功能 aom: enable: false # 是否开启监控数据上报 AOM 平台功能 authentication:AccessCode # 监控数据上报AOM的鉴权方式,可选值:AccessCode,AccessKey ak: ${aom_ak} # 用户AK sk: ${aom_sk} # 用户SK url: ${aom_url} # 监控数据上报AOM平台接口URL access-code:${aom_accessCode} # 选择AccessCode配置 push-interval-seconds: 60 # 监控数据上报AOM平台的采集间隔,单位:秒 pattern: # 符合该正则表达式的监控项将被上报到AOM,默认上报所有的监控项 external-env-info: false # 是否在监控数据中加入serviceStage环境变量 batch-size:60 # 每批次上传AOM平台的Body包包含的监控项数量,默认值60
-
参数说明 表1 参数说明 参数名称 默认值 类型 被监控组件或应用名称 devspore.probe.metrics.tags.component - String 被监控组件或应用名称。 devspore.probe.metrics.api-description-tags false boolean 是否开启http_server_request指标添加description标签功能,如开启,会自动添加@ApiOperation注解的value字段或@Operation注解的summary字段作为description值。 devspore.probe.aom.enable false boolean 是否开启监控数据上报AOM平台功能。 devspore.probe.aom.authentication - String 监控数据上报AOM的鉴权方式,可选值:AccessCode,AccessKey。 当选择AccessCode时,url、access-code必须配置。 当选择AccessKey时,url、ak、sk必须配置。 devspore.probe.aom.ak - String 用户AK。 devspore.probe.aom.sk - String 用户SK。 devspore.probe.aom.access-code - String 用户AccessCode。 devspore.probe.aom.apig-app-code - String 被授权服务的appCode、非必须使用,非内部用户使用AccessCode鉴权方式的时候需要配置此配置。 devspore.probe.aom.url - String 监控数据上报AOM平台接口URL。 devspore.probe.aom.push-interval-seconds 60 int 监控数据上报AOM平台的采集间隔,单位:秒。 devspore.probe.aom.pattern /w* String 符合该正则表达式的监控项将被上报到AOM,默认上报所有的监控项。 devspore.probe.aom.external-env-info false boolean 是否在监控数据中加入serviceStage环境变量。 devspore.probe.aom.batch-size false int 每批次上传AOM平台的Body包包含的监控项数量,默认值60。
-
request日志字段说明 表1 request日志字段说明 字段名 字段含义 可选/必选 logType 日志类型 必选,值固定为request url 请求URL 必选 path 请求路径 必选 method 请求HTTP方法 必选 status 返回状态码 必选 startTime 请求开始时间 必选 duration 请求时长 必选 clientIp 请求方IP 必选 clientType 客户端类型 必选 userId 请求所属用户ID 必选 reqBodySize 请求体body大小 必选 resBodySize 返回体body大小 必选 nenvId 调用方服务 APM 环境ID 必选(依赖APM) senvId 被调用服务APM环境ID 必选(依赖APM) tracId 调用链跟踪ID 必选(依赖APM)
-
实现原理 devspore-http-log打印请求日志是通过实现常见HTTP请求客户端的拦截器来完成的。拦截器可以在请求发送之前和响应返回之后对数据进行处理,从而实现日志记录。 例如,在Spring Boot中,可以通过实现ClientHttpRequestInterceptor接口并重写intercept方法来创建自定义拦截器。在拦截器中,可以添加日志记录逻辑,以打印请求和响应的详细信息。此外,还可以通过RestTemplateCustomizer将自定义拦截器注册到RestTemplate中,从而实现对HTTP请求和响应的全局日志记录。 这种实现方式的优点是通用性强、代码侵入性小,并且具有可定制性。通过拦截器,可以在不修改业务逻辑代码的情况下,轻松地添加日志记录功能。 目前支持的客户端有:httpclient、okhttp、RestTemplate和Feign。
-
使用方式 HttpClient 前提:需要使用httpclient进行对第三方的调用。 需要用户在创建CloseableHttpClient时添加com.huaweicloud.devspore.http.log.httpclient.HttpClientRequestInterceptor和com.huaweicloud.devspore.http.log.httpclient.HttpClientReponseInterceptor。 示例: CloseableHttpClient httpClient = HttpClients.custom() .addInterceptorFirst(new HttpClientRequestInterceptor()) .addInterceptorFirst(new HttpClientResponseInterceptor()) .build(); OkHttp 前提:需要使用okhttp进行对第三方的调用。 需要用户在创建OKhttpclient时添加com.huaweicloud.devspore.http.log.okhttp.OkhttpInterceptor。 示例: OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new OkhttpInterceptor()).build(); RestTemplate 注意:若存在使用restTemplate传输大文件或者大对象的场景,请不要使用此拦截器记录requestLog,否则极有可能引入OOM问题。 前提:需要使用restTemplate进行对第三方的调用。 以bean形式注入的restTemplate。 需要在spring配置文件中添加配置项:devspore.http-log.request.rest-template.enable=true。 当devspore.http-log.request.enable(默认值true)和devspore.http-log.request.rest-template.enable(默认值false)两个配置项同时为true时,才会自动添加RestTemplateInterceptor。 原理:当配置条件允许使用RestTemplateInterceptor时,httplog组件会扫描服务中所有的RestTemplate类型的bean,并为其添加RestTemplateInterceptor拦截器。 相关源码见:com.huaweicloud.devspore.http.log.config.DevsporeHttpLogAutoConfiguration.setApplicationContext() 非bean形式注入的restTemplate。 需要用户在创建restTemplate时添加com.huaweicloud.devspore.http.log.resttemplate.RestTemplateInterceptor。 RestTemplate restTemplate = new RestTemplate(); restTemplate.getInterceptors().add(0, new RestTemplateInterceptor()); Feign 前提:需要使用Feign Client进行对第三方的调用。 当使用Feign的时候,无需做其他改动,devspore-http-log会自动打印request日志,如不想打印request日志,可以在spring配置文件中添加配置:devspore.http-log.request.enable=false来关闭request日志的打印。
-
request日志示例 "nenvId": "null", "userId": "null", "url": "http://localhost:8081/servicecall/consumer/001", "path": "/servicecall/consumer/001", "method": "GET", "senvId": null, "status": 200, "tracId": null, "startTime": "2023-12-28 16:59:41.218", "duration": 33, "clientType": "httpClient.HttpResponseProxy", "clientIp": "169.254.174.247", "reqBodySize": 0, "resBodySize": 93, "logType": "request" }
-
数据准备 此处需要提前准备示例使用的数据库表,并初始化一些软删除功能示例使用的测试数据,具体的建表语句如下: CREATE TABLE `t_order` ( `id` varchar(40) NOT NULL COMMENT 'id', `name` varchar(200) NOT NULL, `soft_delete_flag` bigint(0) NOT NULL DEFAULT '0' COMMENT '软删除标记字段,为时间戳表示此数据执行了软删除操作,时间戳记录了软删除的时间,为0表示没有执行软删除操作;searchable', PRIMARY KEY (`id`) ) COMMENT = 'primaryKeyType("UUID")'; INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('1', 'test1', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('2', 'test2', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('3', 'test3', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('4', 'test4', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('5', 'test5', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('6', 'test6', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('7', 'test7', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('8', 'test8', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('9', 'test9', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('10', 'test10', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('11', 'test11', 0); INSERT INTO `softdelete`.`t_order`(`id`, `name`, `soft_delete_flag`) VALUES ('12', 'test12', 0);
-
原理 AstroPro实现多租隔离的方式是通过在需要做资源隔离的对象上额外生成一个tenant_id的字段来存储租户信息,在用户访问接口时,将调用者的租户信息存放在线程变量中(存放方式在用户自定义租户id获取接口中详细说明),通过对比线程中的租户信息和对象中的租户信息是否一致来实现租户隔离的。 用户需要在业务代码中添加租户相关的校验逻辑,具体逻辑如下: 新增时:需要在业务代码中将tenant_id设置到新增对象中。 查询时:先查出数据,再判断查出对象的tenant_id值是否和当前线程tenant_id匹配,只有匹配时才返回,不匹配时证明操作的不是当前租户的资源,此次请求不合法,抛出异常。 修改、删除时:先查出数据,再判断查出对象的tenant_id值是否和当前线程tenant_id匹配,只有匹配后才进行后续的修改或删除操作。 在生成用户自定义租户id获取接口代码时,以上相关的逻辑都会生成出来,用户在做后续的业务代码编写中应注意不要删除相关的代码。此外在自定义API中如涉及以上场景,用户需要手动添加相关校验逻辑。
-
access日志示例 "logType": "access", "traceId": null, "nenvId": null, "method": "GET", "resBodySize": 93, "params": null, "userId": null, "url": "http://localhost:8081/servicecall/consumer/001", "duration": 90, "path": "/consumer/{consumer_id}", "senvId": null, "service": "servicecall", "clientIp": "127.0.0.1", "appId": null, "startTime": "2023-12-25 09:33:30.589", "reqBodySize": -1, "status": 200 }
-
access日志字段说明 表1 access日志字段说明 字段名 字段含义 可选/必选 对应配置参数 logType 日志类型 必选,值固定为 access 无 service 微服务名称 必选,通过配置文件配置 devspore.http-log.service-name serviceAppId 微服务的AppID 必选,通过配置文件配置 devspore.http-log.service-app-id nenvId 调用方服务APM环境ID 必选 无 senvId Server端APM环境ID 必选 无 url 请求URL 必选 无 path 请求路径(去参数可聚合统计) 必选 无 method 请求HTTP方法 必选 无 params 请求参数 可选,默认值为null devspore.http-log.params reqBodySize 请求体body大小 必选 无 resBodySize 返回体body大小 必选 无 appId HIS网关appId 必选 devspore.http-log.app-id-key status 返回状态码 必选 无 traceId 调用链跟踪ID 必选 无 startTime 请求开始时间 必选 无 duration 请求时长 必选 无 clientIp 请求方IP 必选 无 userId 请求所属用户ID 必选 无 olcDryRun 是否开启olc干跑 可选 devspore.http-log.olc olcBlockMsg olc限流信息 可选 devspore.http-log.olc subToken 截断token 可选 devspore.http-log.sub-token cpuCost 当前请求所占用的cpu时间-单位(纳秒) 可选 devspore.http-log.access.resource-cost memCost 当前请求使用的内存-单位byte 可选 devspore.http-log.access.resource-cost sqlReadRows 当前请求共查询了多少行数据库记录 可选 devspore.http-log.access.sql-rows sqlAffectedRows 当前请求共影响了多少行数据库记录 可选 devspore.http-log.access.sql-rows
-
依赖情况 以下为本组件的具体依赖情况: com.huaweicloud.devspore:swagger-extension 表1 swagger-extension组件依赖 依赖组件 版本 scope org.projectlombok:lombok 1.18.32 compile com.huaweicloud.devspore:swagger-extension-springfox 表2 swagger-extension-springfox组件依赖 依赖组件 版本 scope org.springframework:spring-context 5.3.39 provided com.huaweicloud.devspore:swagger-extension ${devspore-swagger-extension.version} compile org.springframework.boot:spring-boot-autoconfigure 2.7.18 provided org.springframework.boot:spring-boot-configuration-processor 2.7.18 optional org.springframework:spring-webmvc 5.3.39 provided io.springfox:springfox-core 3.0.0 provided io.springfox:springfox-swagger2 3.0.0 provided io.springfox:springfox-spi 3.0.0 provided io.springfox:springfox-schema 3.0.0 provided org.mapstruct:mapstruct 1.5.5.Final provided 父主题: devspore-swagger-extension使用指南
-
使用说明 在编辑服务时,业务设计界面选中需要进行软删除的对象,勾选软删除策略和恢复软删除后生成代码,如下所示: 图1 设置软删除策略 当勾选了“软删除策略”后,生成的代码会有如下变化: 在勾选软删除策略的对象上会额外生成一个字段 (`soft_delete_flag` bigint(20) NOT NULL DEFAULT '0')。 删除和批量删除的API上会额外生成一个Boolean类型的参数hardDeletion,在调用删除相关API时,如果hardDeletion传入true则进行物理删除,否则进行逻辑删除。 查询API上会额外生成一个Boolean类型的参数softDeleted,当不传入softDeleted或softDeleted传入false的时候,只查询未被删除数据(soft_delete_flag = 0 的数据)。当softDeleted参数为true时,查询将仅基于主键进行,忽略soft_delete_flag的值。 批量查询API中soft_delete_flag字段会作为一个非必填的参数添加到请求参数中。 当勾选了“恢复软删除”后,生成的代码会有如下变化: 额外生成两个API,一个是单条数据的恢复软删除(将被删除的数据的soft_delete_flag重新设置为0),一个是批量数据的恢复软删除。
-
method日志字段说明 表1 method日志字段说明 字段名 字段含义 可选/必选 logType 日志类型。 必选,值固定为methodLog serviceName 服务名称:取配置文件中:devspore.http-log.service-name的值。 必选 className 方法所在类的全路径限定名。 必选 methodName 方法名称。 必选 exceptionClass 方法异常后异常类全路径限定名(包名使用首字母缩写),方法无异常时此字段为null。 必选 startTime 方法开始调用时间。 必选 duration 方法耗时(单位:ms)。 必选 traceId 调用链跟踪ID。 必选(依赖APM)
-
method日志示例 "duration": 199, "logType": "methodLog", "methodName": "getConsumerByRestTemplate", "startTime": "2023-12-28 15:23:44.646", "className": "com.huaweicloud.service.impl.HttpLogServiceImpl", "exceptionClass": "", "serviceName": "httplogtest", "user": "my-custom-field" }
-
使用方式 在spring的配置文件中添加以下配置,无需改动代码: devspore: http-log: method-level: #为true时打印methodLog,为false时不打印 enable: true #此参数控制在哪些方法上打印methodLog,使用aop切面表达式的语法 execution: '(@within(org.springframework.stereotype.Service)' #需要在methodLog中添加自定义字段时需添加如下配置 custom-fields: # user:为methodLog中添加的自定义字段名称,x-user为请求头中的key值,devspore-http-log会去请求头中获取该值打印在methodLog中 user: x-user
-
推理服务相关操作 在“推理服务”列表,可对任务进行以下操作。 表1 推理服务相关操作 任务 操作步骤 编辑服务 单击操作栏中的“编辑”,打开编辑推理服务弹出框,修改推理服务配置后,单击“确认”。不支持修改服务的名称和模型仓库,当修改了模型版本、资源规格、实例数和环境变量后,根据编辑前的状态,推理服务会重新构建或重新排队,期间服务将不可用。 启动服务 单击操作栏中的“启动”,可以启动服务,在启动服务时,支持重新设置“是否自动停止”配置和自动停止时间。 状态为部署失败或已停止的推理服务才能进行启动操作。 停止服务 单击操作栏中的“停止”,可以停止服务,推理服务停止后再启动将重新构建或排队,请谨慎操作。 状态为构建失败、部署失败、已停止或停止中的推理服务不能进行停止操作。 删除服务 单击操作栏中的“删除”,可以删除服务,推理服务删除后无法恢复,请谨慎操作。 查询服务 在搜索输入框中输入搜索条件,按回车键即可查询。 查看服务详情 单击服务名称,可在服务详情页查看推理服务详情、监控、事件、日志等信息。 推理服务详情:展示ID、状态、模型及版本、镜像、环境变量、资源池、资源规格、实例数、公网地址等信息。其中,公网地址将在服务部署成功后展示。属于私密信息,请勿轻易泄露。 监控:展示AI应用调用次数统计和实时资源统计信息。 事件:展示当前服务使用过程中的关键操作,比如服务构建进度、部署进度、部署异常的原因、服务被启动、停止、更新的时间点等。 日志:展示当前服务的日志信息。支持查询日志,包含最近5分钟、最近30分钟、最近1小时和自定义时间段(自定义时间段您可以选择开始时间和结束时间)。支持输入关键字搜索服务日志。 推理服务各状态允许的操作如下: 表2 推理服务各状态允许的操作 状态 编辑 启动 停止 删除 导入中 - - √ √ 构建中 - - √ √ 构建失败 √ - - √ 排队中 √ - √ √ 部署中 - - √ √ 运行中 √ - √ √ 部署失败 √ √ - √ 告警 √ - √ √ 停止中 - - - √ 已停止 √ √ - √
-
接口访问和调用 获取用户Token。 调用推理服务接口时首先需要获取 IAM 子用户Token作为凭据,具体参见获取IAM用户Token(使用密码)。请求示例如下: 请求URI: POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true 请求体: { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "user_name", "password": "user_password", "domain": { "name": "domain_name" } } } }, "scope": { "project": { "id": "project_id" } } } } 其中,user_name、domain_name、project_id字段可以从“我的凭证”中获取。 图1 获取参数值 请求成功(状态码201)后,从响应的Header中拿到x-subject-token的值即为Token的值。 获取的Token的有效期为24小时。建议进行缓存,避免频繁调用。 获取访问地址。 访问地址为 {公网地址} /{自定义镜像中的API地址},例如:https://xxx/v1/infers/xxx/2d-scenario-identification。 公网地址可以从推理服务列表或者服务详情中获取。 图2 列表获取公网地址 图3 详情获取公网地址 调用推理服务。 请携带Token调用推理服务。
-
批次任务相关操作 单击项目名称,在“批次任务列表”,还可以进行以下操作。 表2 批次任务相关操作 任务 操作步骤 查询批次任务 在批次任务列表搜索框中,可通过任务名称、规范,任务状态和任务类型查询任务。 导出批次任务列表 单击页面的“导出”,可按需选择导出项,可将当前页面的所有标注任务导出至本地,以Excel形式查看。 导出任务 单击操作栏中的“导出数据集”,可创建导出任务。 导出单个批次任务 单击操作栏中的“导出任务列表”项目名称,可按需选择导出项,导出单个批次任务中拆分的任务。 拆分批次任务 单击操作栏中的“拆分”,即可对任务做拆分处理。具体步骤参考批次任务列表。 查看批次任务日志 单击操作栏中的“日志”,即可查看批次任务日志。 删除批次任务 选择批次任务单击“删除批次任务”,即可删除批次任务。 说明: 如果批次任务被拆分成子任务,则需要删除子任务后,才可删除批次任务。
-
构建镜像 Octopus平台依赖算子镜像内的/bin/bash、stdbuf、tee软件,请确保基础镜像内包含上述软件且能通过PATH找到。 Dockerfile示例。 FROM ros:noetic COPY ros_to_dataset.py /home/main/ # 算法启动示例: # python3 /home/main/ros_to_dataset.py --topic pandar --type pcd RUN apt install ros-noetic-cv-bridge python3-pcl libpcl-dev USER root 构建镜像。 运行命令: docker build -f Dockerfile -t ros-to-dataset:0.1 本地调试。 准备一个待处理的rosbag,如~/data/20220620.bag,运行如下命令(基于上述示例镜像): docker run -v ${HOME}/data/20220620.bag:/tmp/data/20220620.bag -v ${HOME}/tmp/output:/tmp/output --env output_dir=/tmp/output --env rosbag_path=/tmp/data/20220620.bag --env tmp_dir=/tmp/workspace ros-to-dataset:0.1 /bin/sh -c “python3 /home/main/ros_to_dataset.py --topic pandar --type pcd” 完成后在${HOME}/tmp/output目录查看运行结果文件: 图6 运行结果
-
作业输入输出规范 Input 平台会以环境变量的形式提供以下参数: rosbag_path: 数据包路径,如果输入数据源是多个,以','分隔。示例:/tmp/DPK0000001/packageName1,/tmp/DPK0000002/packageName2。 output_dir:最终输出数据集路径。 tmp_dir:供用户存储临时文件的目录。 task_content_json:人工打标需要的标签信息,详细参考“人工打标支持”。(如果没有人工打标,不需要此参数)。 Output 对于output_dir的格式限定如下: 必须有output_dir/dataset目录,存储数据集文件。数据集文件有格式要求(Octopus、PascalVOC...)。 必须有_SUC CES S或 _FAILURE文件,标志用户镜像任务完成(或失败)。 可选有output_dir/auxiliary目录,用于存储附加文件。对格式没有限制。 图1 output_dir的格式 人工打标支持 Input 程序必须能接受task_content_json,该参数以环境变量的形式引入镜像。task_content_json格式为List of Tags。 如果没有tag,为空list。如果只有一个标签,list内只有一个Tag。 如果start与end一致,代表单帧打标。 图2 每个Tag格式示例 图3 task_content_json示例
-
上传数据包 获取传输配置。 在订单的“操作”列单击“获取传输配置”,获取传输配置,包括目标桶、导入目录、访问密钥 (AK)和私有访问密钥 (SK)。 准备待脱敏的数据包。 图商采集的数据在上传至八爪鱼平台前,需要对数据包中的文件夹梳理,便于脱敏识别,目录层级需为“根目录/数据存放文件夹”,根目录需为3创建的订单号。 上传至八爪鱼平台后数据路径:data/import-expresses/根目录/数据存放文件夹 例如:data/import-expresses/24/packge-1 24:根目录,即3创建的订单号。 packge-1:需要脱敏的数据存放文件夹。订单号和实际需要脱敏的文件夹之间不需要再加层级。 脱敏任务完成后平台存储的原始数据和脱敏后数据路径如下: 原始数据:data/import-expresses/24/packge-1-bak 脱敏后数据:data/import-expresses/24/packge-1 上传待脱敏的数据包。 在DES数据快递服务创建递送订单,并完成递送订单。DES订单上传源数据需要包含必要的有效文件,具体可参考上传数据格式。 数据上传完成后,单击“确认递送完成”,单击“确定”。
-
延时评测 仿真器输出的仿真过程数据会按照OSI的GroundTruth格式存储为pb文件,根据创建任务配置时是否选择使用datahub,该仿真pb有两种格式: 使用datahub时,该仿真pb的每帧数据是GroundTruth结构,然后按照OSI标准推荐的存储格式,先按小端顺序存储4个字节,该4个字节表示下一帧GroundTruth总的字节数,然后继续4个字节,更下一帧GroundTruth的字节数,以此类推。 未使用datahub时,该仿真pb按照sim_osi.proto定义的格式进行存储,所有仿真数据帧GroundTruth存储到一个列表字段“frames”中。 仿真平台定义了sim_osi.proto和eva.proto,用于支持用户自定义评测的功能,具体的proto字段说明见请联系接口人获取仿真服务的proto协议。
-
扩容资源费用 扩展资源费用是指使用Octopus时需额外购买的仿真扩展包、增强计算资源和存储扩容资源等产生的费用。除服务中自带的资源外,用户可增量购买扩容资源,提高计算性能和扩容存储空间。 表2 扩容资源计费项说明 计费项 计费子项 计费模式 计费说明 计费公式 存储扩容包 自动驾驶数据管理缓存扩容包 包年/包月 使用弹性文件服务(SFS)缓存文件,产生的费用。 规格单价 * 购买时长 * 套 自动驾驶数据管理存储扩容包 使用 对象存储服务 (OBS)存储数据和模型,产生的费用。 通用处理节点 octopus计算型CPU(16u32g)专属实例 增强计算性能,产生的费用。 octopus计算型CPU(64u128g)专属实例 AI处理节点 octopus计算型GPU(ant0324g24u96g)专属实例 octopus.hp.s2 octopus.bm.npu.arm.8snt9b3 octopus.bm.npu.arm.8snt9b1 仿真服务扩容包 规控仿真引擎-在线 购买在线仿真器,产生的费用。 感知规控仿真引擎-在线 仿真场景编辑器 规控仿真引擎-并行 增加并行任务数,产生的费用。
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- ...
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333