首页 > 解决方案 > 将 aws 凭据传递给厨房 ec2 命令行

问题描述

我正在尝试通过 Jenkinsfile 管道进行厨师食谱开发。我的 jenkins 服务器作为容器运行(使用 jenkinsci/blueocean 映像)。作为阶段之一,我正在尝试执行 aws configure 然后运行厨房测试。由于以下代码的某种原因,我收到未经授权的操作错误。出于某种原因,我的 AWS 凭据未正确发送到 .kitchen.yml(无需检查 IAM 凭据,因为它们具有管理员访问权限)

stage('\u27A1 Verify Kitchen') {
        steps { 
            sh '''mkdir -p ~/.aws/
echo 'AWS_ACCESS_KEY_ID=...' >> ~/.aws/credentials
echo 'AWS_SECRET_ACCESS_KEY=...' >> ~/.aws/credentials
cat ~/.aws/credentials
KITCHEN_LOCAL_YAML=.kitchen.yml /opt/chefdk/embedded/bin/kitchen list
KITCHEN_LOCAL_YAML=.kitchen.yml /opt/chefdk/embedded/bin/kitchen test'''
        }
    }

无论如何,我可以在这里通过 AWS 信用。此外 .kitchen.yml 不再支持在文件中传递 AWS 凭据。有什么方法可以让我通过命令,即 .kitchen.yml access_key=... secret_access_key=... /opt/chefdk/embedded/bin/kitchen test 非常感谢您的帮助。

标签: amazon-web-servicesdockerjenkinschef-infra

解决方案


  1. 您不需要设置KITCHEN_LOCAL_YAML=.kitchen.yml,这已经是主要的配置文件。

  2. 您可能希望使用 Jenkins 凭证文件,而不是将内容硬编码到工作中。但这就是说,这不起作用的原因是因为 AWScredentials文件不是 shell 脚本,这是您在那里使用的语法。config它是一个 INI/TOML 文件,并与一个具有相似结构的相似文件配对。

  3. 您可能应该只是通过withEnv管道辅助方法或类似方法在 kitchen-ec2 中使用环境变量支持来与 Jenkins 托管凭据集成。


推荐阅读