Azure YAML流水线中无法将模板变量用作AWS服务连接
解决Azure DevOps流水线中AWS服务连接变量未展开的问题
问题根源
Azure DevOps任务的awsCredentials这类服务连接字段是在模板编译阶段解析的,而你通过变量模板导入的普通变量属于运行阶段展开的变量,编译时任务看到的还是$(AwsCredentials)字符串,而非实际的服务连接名称,因此会提示无效。
解决办法
改用参数模板替代变量模板,因为参数是编译阶段求值,能被服务连接字段正确识别:
1. 创建参数模板文件
比如env-us-params.yml:
parameters: EnvName: US AwsCredentials: 'AzureDevOps(us-2)'
2. 在流水线中引用参数模板并使用参数表达式
- stage: Push parameters: - template: env-us-params.yml jobs: - job: Push steps: - task: AWSShellScript@1 displayName: 'Login' inputs: awsCredentials: ${{ parameters.AwsCredentials }} regionName: eu-west-1 scriptType: 'inline' inlineScript: | # do stuff
这里用${{ parameters.AwsCredentials }}表达式,它会在编译阶段就把参数值替换成实际的服务连接名称,任务就能正确识别对应的AWS服务连接了。
内容的提问来源于stack exchange,提问作者Matt Whyard
相关产品推荐
相关产品推荐

