1

我想通过 CloudFormation 使用 Snyk Scan 操作在 AWS 上启动 CodePipeline。关于如何做到这一点的官方文档对细节有一点了解,似乎缺少关键信息,所以我希望有人能对这个问题有所了解。根据Snyk 动作参考,只有几个变量需要配置,所以我按照以下配置设置了我的 CodePipeline CF 模板,

- Name: Scan
  Actions:
    - Name: Scan
      InputArtifacts:
         - Name: "source"
      ActionTypeId:
         Category: Invoke
         Owner: ThirdParty
         Version: 1
         Provider: Snyk
      OutputArtifacts:
         - Name: "source-scan"

但是,尚不清楚 CodePipeline 如何仅使用此配置向 Snyk 进行身份验证。果然,当我尝试启动此模板时,我通过 CloudFormation 控制台收到以下错误,

Action configuration for action 'Scan' is missing required configuration 'ClientId'

在这种情况下,我不确定ClientId是什么,但我认为它是Snyk ORG id。因此,我在模板的配置部分下添加了ClientId 。当我启动新模板时,出现以下错误,

Action configuration for action 'Scan' is missing required configuration 'ClientToken'

同样,AWS 方面没有关于这个ClientToken是什么的文档(我可以找到),但我认为它是一个Snyk API token,所以我继续添加它。我的最终模板看起来像,

- Name: Scan
  Actions:
    - Name: Scan
      InputArtifacts:
         - Name: "source"
      ActionTypeId:
         Category: Invoke
         Owner: ThirdParty
         Version: 1
         Provider: Snyk
      OutputArtifacts:
         - Name: "source-scan"
      Configuration:
         ClientId: <id>
         ClientToken: <token>

CloudFormation 现在可以正常运行并且没有错误,但是 CodePipeline 本身在Scan阶段停止,停顿了十分钟左右,然后输出一个错误,它不会给你太多信息,

There was an error in the scan execution.

我假设我没有正确使用 Snyk 进行身份验证。我可以通过控制台很好地设置扫描,但这包括一个 OAuth 页面,我在其中输入我的用户名/密码,然后 Snyk 才能授权 AWS。无论如何,我需要能够通过 CloudFormation 设置扫描,因为我正在处理的项目没有控制台。

我正在寻找涵盖此用例的解决方案和/或一些文档。如果有人能指出我正确的方向,我将不胜感激。

4

0 回答 0