有没有办法使用 SSM 参数为 CodePipeline 中的 S3 部署提供路径

Is there a way to use an SSM Parameter to provide the path for an S3 deployment in CodePipeline

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

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

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

有没有一种方法可以将 SSM 参数用作我没有看到的这个阶段的一部分?

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

您可以自己动手,将 S3 Deploy 操作替换为 CodeBuild 操作,然后自行将文件同步到 S3 存储桶。您可以在构建规范 [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

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

env:
  parameter-store:
    key: value

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

aws s3 sync your-s3-files/ "s3://${key}"