开发者社区 > 云原生 > Serverless > 正文

函数计算,请教下,我使用s deploy 部署自定义容器的函数服务,现在报这个错误“Service

函数计算,请教下,我使用s deploy 部署自定义容器的函数服务,现在报这个错误“Service role should not be empty, service role should have ACR AliyunContainerRegistryReadOnlyAccess/AliyunContainerRegistryFullAccess access when runtime is custom-container”,应该在哪里加权限?

展开
收起
云原生那些事 2023-07-26 09:35:06 94 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    解决此错误的步骤为:

    创建一个自定义权限的RAM角色
    例如:

    角色名:AliyunFCReadOnlyRole

    权限授权:

    AliyunContainerRegistryReadOnlyAccess

    指定该RAM角色为函数服务的服务角色
    通过 -role AliyunFCReadOnlyRole 参数指定

    重新部署函数服务
    s deploy [-role AliyunFCReadOnlyRole]

    具体操作步骤为:

    登录RAM控制台

    选择"用户和权限" - "RAM角色"

    创建一个新的RAM角色,指定上述角色名和权限

    回到函数计算控制台,编辑函数服务配置

    在"高级配置"一栏下面,指定"服务角色"为您新创建的RAM角色

    保存配置,重新部署函数服务(使用s)

    s deploy 命令中使用-role参数指定服务角色

    2023-07-28 23:15:14
    赞同 展开评论 打赏
  • 在使用 s deploy 部署自定义容器的函数服务时,如果出现错误提示 "Service role should not be empty, service role should have ACR AliyunContainerRegistryReadOnlyAccess/AliyunContainerRegistryFullAccess access when runtime is custom-container",说明在你的函数服务配置中没有指定服务角色,并且自定义容器运行时需要具有访问 Aliyun Container Registry (ACR) 的权限。

    要解决这个问题,你需要在函数服务的配置文件中指定一个合适的服务角色,并为该服务角色授予访问 ACR 的权限。以下是一些步骤供你参考:

    1. 在你的函数服务配置文件(如 s.yamltemplate.yml)中找到服务角色字段。这个字段通常被称为 RoleServiceRole 或类似的名称。

    2. 如果这个字段为空或不存在,可以通过手动创建一个服务角色并将其指定给函数服务。你可以在阿里云 RAM(Resource Access Management)中创建一个服务角色。确保为这个服务角色添加至少 AliyunContainerRegistryReadOnlyAccessAliyunContainerRegistryFullAccess 的权限,以满足访问 ACR 的要求。

    3. 将服务角色的 ARN(Amazon Resource Name)填写到函数服务的配置文件中相应的字段中。

    4. 保存并重新运行 s deploy 命令,以确保函数服务配置生效。

    通过以上步骤,你应该能够为自定义容器的函数服务分配一个适当的服务角色,并为该角色添加访问 ACR 的权限,从而解决这个错误。

    2023-07-27 22:29:52
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载