pup*_*eno 2 aws-secrets-manager aws-cdk
我正在将 CodePipeline 连接到 Github,所以我添加了以下行:
CodePipelineSource.gitHub("username/repo", "main", {
authentication: cdk.SecretValue.secretsManager("github-token")
})
Run Code Online (Sandbox Code Playgroud)
当我运行时cdk deploy,它会按预期失败:
Pipeline/Pipeline (Pipeline9850B417) Secrets Manager can't find the specified secret. (Service: AWSSecretsManager; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: eaa59d67-bb64-472c-abc4-9d4896c09d7e; Proxy: null)
Run Code Online (Sandbox Code Playgroud)
CDK 是否可以使用空白或占位符值创建密钥,这样它仍然会因某种访问被拒绝而失败,但随后我可以转到 AWS 控制台并只需填写该值。
澄清:我不期望 CDK 创建 OAuth 令牌。我想要实现的是 run cdk deploy,让它失败,转到 Secrets Manager 并找到带有占位符值的秘密,输入该值,cdk deploy再次运行,然后这次成功。
这有点棘手。长话短说,我们必须在管道堆栈之外创建秘密。
我们可以使用 CDK创建一个生成的SecretsecretValue: SecretValue (并获取其)。但是,正如您所发现的,挑战在于使用实际的 github 令牌值安全地更新密钥。设置mySecret.secretValue合成器操作并推迟实际令牌值更新将不起作用。CDK 生成的秘密值将导致管道堆栈部署失败并出现错误Invalid credentials。
那么我们如何创建秘密、设置其值并将其提供给合成操作呢?有几种选择。每个都涉及在管道堆栈1之外构造秘密:
cdk.SecretValue.secretsManager('github-token')静态方法来获取对机密的引用。2(1) 高级单堆栈选项:将带有令牌值的部署时参数传递给调用PutSecretValue API 的自定义资源。复杂,有过度设计的味道。
(2) 秘密的固定成本为 0.50 美元/月,因此在多个应用程序之间共享 github-token 秘密可能是值得的。
| 归档时间: |
|
| 查看次数: |
12338 次 |
| 最近记录: |