Ibm cloud 使用清单文件将IBM云函数部署到IAM命名空间中的API

Ibm cloud 使用清单文件将IBM云函数部署到IAM命名空间中的API,ibm-cloud,openwhisk,ibm-cloud-functions,Ibm Cloud,Openwhisk,Ibm Cloud Functions,使用CLI中的清单文件部署IBM Cloud函数时,如果API位于启用IAM的资源组中,则不会在目标命名空间中创建该API,但如果目标命名空间是基于Cloud Foundry的,则该API可以工作。如何使用清单文件将API部署到启用IAM的资源组内的命名空间 $ibmcloud资源组创建TodoBackendRG $ibmcloud fn命名空间创建TodoBackendNamespace 确定:已创建命名空间TodoBackendNamespace $ibmcloud目标-g TodoBack

使用CLI中的清单文件部署IBM Cloud函数时,如果API位于启用IAM的资源组中,则不会在目标命名空间中创建该API,但如果目标命名空间是基于Cloud Foundry的,则该API可以工作。如何使用清单文件将API部署到启用IAM的资源组内的命名空间

$ibmcloud资源组创建TodoBackendRG
$ibmcloud fn命名空间创建TodoBackendNamespace
确定:已创建命名空间TodoBackendNamespace
$ibmcloud目标-g TodoBackendRG
目标资源组TodoBackendRG
API端点:https://cloud.ibm.com
地区:美国南部
用户:matthew@example.com
账户:马修斯账户(废话)废话
资源组:TodoBackendRG
CF API端点:https://api.ng.bluemix.net (API版本:2.141.0)
组织:托多巴肯多格
空间:dev
$ibmcloud fn属性集--命名空间TodoBackendNamespace
确定:将名称空间设置为TodoBackendNamespace
$ibmcloud fn部署-m manifest.yml
成功:部署已成功完成。
$ibmcloud fn api列表
ok:API
动作动词API名称URL
上述部署没有失败,但它没有部署到IAM启用的资源组中的命名空间
TodoBackendNamespace
,而是部署到基于Cloud Foundry的命名空间
TodoBackendOrg\u dev

如果我尝试调用名称空间,部署就会失败

$ibmcloud fn deploy-n TodoBackendNamespace-m manifest.yml
错误:部署未成功完成。运行“wskdeploy undeploy”以删除部分部署的资产。
servicedeployer.go[1656]:[ERROR\u WHISK\u CLIENT\u ERROR]:错误代码:147:提供的身份验证无权访问“TodoBackendNamespace/TodoBackendFN”。(代码33F32F829A3D1B88E8BCD440F13EE91):HTTP响应状态:403禁止的HTTP响应正文:{“代码”:“33F32F829A3D1B88E8BCD440F13EE91”,“错误”:“提供的身份验证未被授权访问'TodoBackendNamespace/TodoBackendFN'。”

首先,确保已更新到cli的最新版本。目前为1.0.36。使用ibmcloud plugin install cloud functions将您的函数CLI更新为最新版本


其次,在发出
ibmcloud fn deploy
之前,请发出
ibmcloud fn property get
命令以获取您的属性。您的whisk命名空间值是多少?它是随机字符串还是TodoBackendOrg_dev?如果是TodoBackendOrg_dev,则意味着您仍然以CF名称空间为目标

总而言之,在部署之前,您需要拥有最新版本的cli并以IAM命名空间为目标。