因此,我有一个简单的 CodePipeline 设置,它使用 CodeBuild 将一些工件放在一起,然后配置 CloudFormation 堆栈。
创建的资源之一是用于存储静态文件的 S3 存储桶。它还使用存储桶的名称创建一个 SSM 参数。
目前,要部署到存储桶,我正在使用 S3 阶段解压缩初始文件集。不幸的是,我只能弄清楚如何手动设置存储桶。如果堆栈已经配置好,但如果堆栈是从新创建的(分配了新的存储桶名称)则失败。
有没有办法可以使用 SSM 参数作为我没有看到的这个阶段的一部分?
因此,我有一个简单的 CodePipeline 设置,它使用 CodeBuild 将一些工件放在一起,然后配置 CloudFormation 堆栈。
创建的资源之一是用于存储静态文件的 S3 存储桶。它还使用存储桶的名称创建一个 SSM 参数。
目前,要部署到存储桶,我正在使用 S3 阶段解压缩初始文件集。不幸的是,我只能弄清楚如何手动设置存储桶。如果堆栈已经配置好,但如果堆栈是从新创建的(分配了新的存储桶名称)则失败。
有没有办法可以使用 SSM 参数作为我没有看到的这个阶段的一部分?
我同意@shariqmaws。您可以将环境变量保存在 SSM 参数存储中,并且可以按如下方式使用该变量:
env:
parameter-store:
key: value
完成后,您可以按如下方式使用该变量:
aws s3 sync your-s3-files/ "s3://${key}"
如果我理解正确,您希望在 CodePipeline 中动态更改 S3 部署操作的存储桶名称。目前这是不可能的,因为这是管道配置的一部分 [1]。
您可以做的是将事情掌握在自己手中,将 S3 部署操作替换为 CodeBuild 操作,然后自己将文件同步到 S3 存储桶。您可以在 buildspec [2] 中使用以下语法读取参数存储值:
env:
parameter-store:
key: "value"
... 或按需使用 'aws ssm' cli 'get-parameter' 命令 [3]。
[3] https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html