使用 AWS CDK,如何在代码管道中设置源代码的 oathToken,以从 GitHub 提取源代码,而不使用 Secret Manager 服务?

Nic*_*ckB 5 pipeline oauth github amazon-web-services aws-cdk

我正在使用 CDK 在 AWS 中设置代码管道。管道阶段需要从 github 下载源代码,因此使用 oauth 令牌来验证请求。在管道阶段设置值时,我希望能够从 AWS Parameter Store 访问令牌,而不是从 AWS Secret Manager 访问令牌。

有很多使用 Secret Manager 来执行此操作的示例。但是,CDK 项目中没有使用参数存储或以纯文本形式对令牌进行硬编码的示例。

我们使用 CDK 1.3.0 的 typescript。

我尝试将令牌存储在参数存储中。当存储为安全字符串时,您需要在检索值时另外指定版本。但是,我无法将其转换为在管道阶段SecretValue设置属性所需的值。oauthToken

从参数存储中获取值..

    // get the secureString 
    const secureString = ssm.StringParameter.fromSecureStringParameterAttributes(construct,'MySecretParameter', {
      parameterName: 'my-secure-parameter-name',
      version: 1,
     });
Run Code Online (Sandbox Code Playgroud)

我需要将 转换secretString为 aCDK.SecretValue然后用它来设置oauthToken. 我不知道该怎么做。

  const sourceAction = new codepipelineactions.GitHubSourceAction({
      actionName: 'Source',
      owner: owner,
      repo: repository,
      oauthToken: githubOAuthAccessToken,
      output: sourceOutput,
      branch: branch,
      trigger: codepipelineactions.GitHubTrigger.WEBHOOK,
    });
Run Code Online (Sandbox Code Playgroud)

CDK 文档表示建议将令牌存储在 Secret Manager 中。“建议使用Secret Manager SecretString来获取token

它并没有说不能从其他来源检索和使用代币。如果情况能够得到澄清,并且如果有人在 Secrets Manager 之外存储令牌并且仍然能够使用它们在管道的源阶段设置令牌,我将不胜感激。

jog*_*old 2

您可以使用cdk.SecretValue.ssmSecurecdk.SecretValue.plainText

oauthToken: cdk.SecretValue.ssmSecure('param-name', 'version');
// OR
oauthToken: cdk.SecretValue.plainText('oauth-token-here');
Run Code Online (Sandbox Code Playgroud)

来自文档plainText

不要将此方法用于您关心的任何秘密。使用此方法的唯一合理用例是在测试时。