从 AWS Parameter Store 设置 Jenkins 参数

Posted

技术标签:

【中文标题】从 AWS Parameter Store 设置 Jenkins 参数【英文标题】:Set Jenkins parameters from AWS Parameter Store 【发布时间】:2022-01-17 01:50:09 【问题描述】:

我正在尝试从 AWS Parameter Store 获取 Jenkins CI/CD 管道的环境变量。我已将 IAM 角色分配给此实例,因此不需要传递任何凭据。 这是我的参数


    "Parameters": [
        
            "Name": "Test",
            "Type": "String",
            "Value": "Hello World",
            "Version": 1,
            "LastModifiedDate": 1639400445.755,
            "ARN": "arn:aws:ssm:########:#########:parameter/Test",
            "DataType": "text"
        
    ],
    "InvalidParameters": []

我已经安装了 AWS Parameter Store Build Wrapper 插件并使用 withAWSParameterStore 方法来获取值。

这就是我的尝试

val = withAWSParameterStore(namePrefixes: "Test", regionName: '#######')
echo val

变量 var 返回 null。

如何在此处捕获值“Hello World”。

【问题讨论】:

参数将在withAWSParameterStore 块内可用。试试withAWSParameterStore(namePrefixes: "Test", regionName: '###') echo "My parameter value is $Test" @NoamHelmer 它没有识别参数测试。收到错误groovy.lang.MissingPropertyException: No such property: Test for class: groovy.lang.Binding 尝试env.Test,如果它不起作用,则说明withAWSParameterStore 关键字的参数存在问题。 问题出在凭据上,我必须明确传递凭据,而分配给 Jenkins 服务器的 IAM 角色在这里没有帮助。 @NoamHelmer @NoamHelmer 感谢您提供语法。一旦完成凭证部分,它就可以无缝地工作了。 【参考方案1】:

分配给运行 Jenkins 的 EC2 实例的 IAM 角色没有帮助。我们仍然需要在 Jenkins 中使用 IAM 访问权限和密钥创建凭证。 为了捕获数据,您可以按照以下方式进行操作:

withAWSParameterStore(credentialsId: 'myjenkins-id', 
namePrefixes: 'Test', 
regionName: '########')  
         echo "$env.Test" 
         echo "$env.TEST" 
         echo TEST ```

【讨论】:

以上是关于从 AWS Parameter Store 设置 Jenkins 参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 aws-sdk-v1 从 ruby​​ 脚本中的 AWS SSM Parameter Store 获取数据

PHP - 如何缓存从 AWS KMS Parameter Store 检索的数据库凭证

NestJs TypeORM 配置使用 AWS Parameter Store

为啥将 Spring Cloud 应用程序与 AWS Parameter Store 集成不会从参数存储中返回任何属性?

AWS Cloudformation - Parameter Store

使用 powershell 创建 AWS Parameter Store 键/值对