我正在运行this Octopus community script来创建或更新lambda函数。
当我们对参数的值进行硬编码时,脚本的工作方式与宣传的一样。但是,当我们定义要在参数中使用的变量时,它总是会注入Octopus变量的名称而不是值。
这样一个名为AWS_Dash_OrderOnline_Lambda_Function_Name
的变量被读作值的#{AWS_Dash_OrderOnline_Lambda_Function_Name}
而不是实际的变量值。
发生了什么,我需要改变什么?
相关脚本代码如下:
# Get the parameters.
$functionName = $OctopusParameters['FunctionName']
...
Write-Output $functionName
输出:
#{AWS_Dash_OrderOnline_Lambda_Function_Name}
如果无法确定值,您将把变量作为这样的值返回。这可能是因为名称中存在拼写错误,或者可能是与当前部署范围匹配的变量没有值。
例如,您可能具有为Prod定义的名为Foo
的变量的值,而不是Dev的值。当您在Dev中运行部署时,您将获得#{Foo}
,但在Prod中您将获得实际值。
我使用的一种技术是提供像“UnscopedFoo”这样的非范围值,然后如果你看到这个值,你知道你已经正确输入了名称,这是一个范围问题。如果不这样,则输入的名称不正确。
如果您没有正确定义变量的范围,您将获得问题中指示的结果。
正确定义范围,环境,角色,渠道等,您的变量值将正确导入。