本文汇总了使用OOS的常见问题及对应的解决方案。
RAM用户操作报错:User has no permission to do the action: (ListTemplates)
RAM用户操作报错:User has no permission to do the action: (PassRole)
临时带宽升级报错:code: OperationDenied.UnpaidOrder message: The specified instance has unpaid order
执行的脚本中的内容和OOS参数定义格式相同,需要原样输出"table {{.Name}}\t{{.MemUsage}}"的内容解决方案
RAM用户操作报错:User has no permission to do the action: (ListTemplates)
RAM用户操作报错:User has no permission to do the action: (PassRole)
执行模板报错:Assumes role failed. Code: EntityNotExist.Role, msg: The role not exists: acs:ram::111111:role/OOSServiceRole
可能原因:没有为OOS服务创建默认的RAM角色。
解决方案:阿里云账号或者管理员登录RAM控制台>的RAM访问控制,增加对应的RAM角色OOSServiceRole。具体操作,请参见为OOS服务设置RAM角色并授权。
执行模板报错:Assumes role failed. Code: NoPermission, msg: You are not authorized to do this action. You should be authorized by RAM
可能原因: 对应的RAM角色没有给OOS服务配置信任策略。
解决方案:阿里云账号或者管理员登录RAM控制台的RAM访问控制,增加对应的RAM角色OOSServiceRole,具体操作,请参见为OOS服务设置RAM角色并授权。
登录RAM控制台,在角色中输入
OOSServiceName
进行搜索。单击信任策略。
修改信任策略。
将信任策略修改为如下内容:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "oos.aliyuncs.com" ] } } ], "Version": "1" }
执行模板报错:Code: Forbidden.RAM, Message: User not authorized to operate on the specified resource, or this API doesn't support RAM
可能原因:RAM用户或RAM角色没有操作对应资源的权限。
临时带宽升级报错:code: InvalidAccountStatus.NotEnoughBalance message: Your account does not have enough balance
可能原因:账户余额不足,导致新订单无法完成交易。
解决方案:为账号充值后重试。
临时带宽升级报错:code: InvalidBandwidth.ValueNotSupported message: Instance upgrade bandwidth of temporary not allow less then existed
可能原因:临时宽带升级带宽不能低于已有带宽。
解决方案:
在OOS概览页使用ECS实例ID查看是否有其他重复的自动升级带宽任务。
如果有重复任务请手动取消。
如果未查询到重复执行,请在ECS实例操作记录中查看带宽升级的日志。
临时带宽升级报错:code: OperationDenied.UnpaidOrder message: The specified instance has unpaid order
可能原因:目标ECS实例有未支付的订单。
解决方案:支付ECS的订单。
执行命令常见错误:runCommand loop task fail because failures exceeded MaxErrors -> runCommand execution failed, checkInvocationResult Invocation.InvocationResults.InvocationResult[].ExitCode expect in [0] but is 1
可能原因:执行云助手命令的exitcode非0。
解决方案:通过查看任务执行详情中子执行的输出和日志来排查执行命令失败的原因。
感觉有执行操作资源但是找不到执行
可能原因:在其他地域存在任务。
解决方案:通过概览页能看到所有地域的执行。
执行命令常见错误
解决方案:更多信息,请参见查看执行结果及修复常见问题。
从Git代码仓库构建和部署应用时失败
可能原因:例如代码错误、依赖项安装失败等,您可以通过查看日志获取应用构建和部署失败的具体原因。
解决方案:
构建应用失败
说明从Git代码仓库构建应用失败时不会创建云服务器ECS,也不会产生其他费用。
查看日志获取构建失败的错误信息。
修改代码或增加配置文件。
根据您的代码仓库的编程语言,修改代码或增加配置文件,并提交到代码仓库。更多信息,请参见基于特定编程语言的应用配置。
删除构建失败的应用分组,重新创建新应用分组。
部署应用失败
查看日志获取部署失败的错误信息。
修复问题后继续部署应用。
部署应用成功但无法访问应用服务
排除应用启动延迟因素。
应用部署成功后请稍等片刻再次访问应用。如果非启动延迟原因导致访问失败,继续执行下一步。
登录云服务器后执行以下命令,查看应用服务是否正常启动。
sudo systemctl status aliyun-applicationmanager
正常启动:继续执行下一步。
未正常启动:根据系统服务日志,排查
docker run
命令失败的原因。
查看容器日志。
# 查找docker容器 sudo docker ps -a | grep applicationmanager # 查看容器日志 sudo docker logs applicationmanager
如果Docker容器未启动,根据代码仓库的编程语言,修改代码或增加配置文件,并提交至代码仓库。更多信息,请参见基于特定编程语言的应用配置。
在应用概览页签下的快捷操作区域,单击更新应用程序,使用更新后的代码重新部署应用。
其他场景
为了快速且成功地构建和部署应用,建议您在本地进行Buildpacks构建的调试。具体操作,请参见本地调试Buildpacks构建。
通过以上方法还是无法自行解决问题,请提交工单,或加入应用管理支持钉钉群(
10880003624
)反馈问题。
DescribeInstances接口报错SDK.UnknownServerError或InvaliParameter
报错原因:DescribeInstances接口传入实例数量大于100会报错InvaliParameter或SDK.UnknownServerError(414 Request-URI Too Large)。
解决方案:
- Name: getInstanceDescribe Action: ACS::ExecuteAPI Description: en: Query instance type zh-cn: 获取实例规格信息 Properties: Service: ECS API: DescribeInstances Parameters: InstanceIds: Fn::Jq: - All - .[].InstanceId - '{{ getInstance.instanceIds }}' Outputs: instanceIds: Type: List ValueSelector: Instances.Instance[].InstanceId
- Name: getInstanceDescribe Description: en: Views the ECS instances. zh-cn: 获取ECS实例详情 Action: ACS::SelectTargets Properties: ResourceType: ALIYUN::ECS::Instance Filters: - Type: ResourceIds ResourceIds: Fn::Jq: - All - .[].InstanceId - '{{ getInstance.instanceIds }}' Outputs: instanceIds: Type: List ValueSelector: Instances.Instance[].InstanceId
推荐使用selectTargets (将代码块1改为代码块2)
执行的脚本中的内容和OOS参数定义格式相同,需要原样输出"table {{.Name}}\t{{.MemUsage}}"的内容解决方案
如您想在命令中原样执行
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}" | sort -k2 -hr | head -n 6
其中"table {{.Name}}\t{{.MemUsage}}", {{}} 这种格式模板会认为是变量,然后作为变量解析导致问题
解决方案:可以将命令修改为
left="{{" right="}}" docker stats --no-stream --format "table ${left}.Name${right} ${left}.MemUsage${right}" | sort -k2 -hr | head -n 6
执行云助手命令报错414 Request-URI Too Large文本超长解决方案
造成原因:是因为命令太长了,云助手命令最长Base64编码后不能超过24KB
解决方案:可以把命令放到oss 里,然后ossutil下载下来再执行即可