1

因此,我有一个简单的 CodePipeline 设置,它使用 CodeBuild 将一些工件放在一起,然后配置 CloudFormation 堆栈。

创建的资源之一是用于存储静态文件的 S3 存储桶。它还使用存储桶的名称创建一个 SSM 参数。

目前,要部署到存储桶,我正在使用 S3 阶段解压缩初始文件集。不幸的是,我只能弄清楚如何手动设置存储桶。如果堆栈已经配置好,但如果堆栈是从新创建的(分配了新的存储桶名称)则失败。

有没有办法可以使用 SSM 参数作为我没有看到的这个阶段的一部分?

4

2 回答 2

2

我同意@shariqmaws。您可以将环境变量保存在 SSM 参数存储中,并且可以按如下方式使用该变量:

env:
  parameter-store:
    key: value

完成后,您可以按如下方式使用该变量:

aws s3 sync your-s3-files/ "s3://${key}"
于 2019-11-25T23:41:55.067 回答
1

如果我理解正确,您希望在 CodePipeline 中动态更改 S3 部署操作的存储桶名称。目前这是不可能的,因为这是管道配置的一部分 [1]。

您可以做的是将事情掌握在自己手中,将 S3 部署操作替换为 CodeBuild 操作,然后自己将文件同步到 S3 存储桶。您可以在 buildspec [2] 中使用以下语法读取参数存储值:

env:
  parameter-store:
    key: "value"

... 或按需使用 'aws ssm' cli 'get-parameter' 命令 [3]。

[1] https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#w498aac41c11c11c31b3

[2] https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax-link3

[3] https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html

于 2019-11-25T08:41:35.153 回答