如何将您的 aws 凭据文件集成到代码管道中,因为我无法将其保存在 Github 存储库中

How to integerate your aws credentials file in codepipeline as I cannot save it in Github repo

项目是使用 AWS lambda 和其他一些 AWS 服务构建的。为了进行构建并仅通过 node express 服务器提供构建静态文件,它需要 credentials.js 文件,其中包含我的项目的所有 AWS 凭证。 现在我正在创建一个 aws 代码管道,它从 GitHub 中提取代码并使用弹性 beanstalk 将其部署在 ec2 上。 问题是我没有将我的凭据文件推送到 Github,因为这样做不安全。如果没有凭据文件,则无法部署代码。请建议我解决这个问题。

我已经尝试通过登录手动将文件放置在 ec2 实例中,但是当我提交到我的 repo 时,代码管道执行并替换了我在 ec2 中的应用程序的整个目录,因此文件得到已删除。

您可以将您的凭据配置文件安全地存储在私有 S3 存储桶中,并将 commands 添加到您的 buildspec.yml 文件(由管道的 CodeBuild 阶段使用)以获取该文件并将其放入在适合您的项目的地方。

您需要为 CodeBuild 服务角色授予访问私有 S3 存储桶的正确权限。

下面举例说明我的意思。请注意,我可能会在 S3 中存储多个环境的配置文件,因此我使用环境变量来指定文件的确切命名,例如my-creds.dev.jsonmy-creds.prod.json。然后将文件名转换为 my-creds.json,因此您可以在程序中使用相同的名称。

CodeBuild 将查找 buildspec.yml,它在项目的根目录中定义了您的构建并执行这些命令

version: 0.2  

phases:
  pre_build:
    commands:
      # Get the creds config file for the correct environment
      # and put it in the my projects config directory (or wherever you need it)
      - aws s3 cp s3://my-s3-bucket/my-creds.${ENVIRONMENT}.json ./config/my-creds.json
      - npm install
  build:
    commands:
      - npm run build:${ENVIRONMENT}

artifacts:
  files:
    - dist/**/*

临界线是aws s3 cp s3://my-s3-bucket/my-creds.${ENVIRONMENT}.json ./config/my-creds.json

  • 这些命令位于项目目录的根目录中 运行,其中 buildspec.yml 文件所在。
  • 上面的命令在 pre_build 阶段,所以它将 运行 在 build 阶段的命令(npm build)之前 运行.
  • 该命令将您的凭据文件从您的 s3 存储桶复制到命令最后一部分定义的路径(在本例中为 ./config/my-creds.json)。再次记住这是相对于你的项目目录的根目录,所以如果你的项目在根目录中包含一个 src 文件夹,那么你的路径可能是 ./src/my-creds.json,或 ./src/creds/my-creds.json.

您不应添加凭据文件,因为不推荐这样做。您可以通过向您的代码管道分配一个具有访问所需资源权限的角色来进行部署。