![](/img/trans.png)
[英]How can I place a CodeBuild envrionment variable inside a command parameter?
[英]Can CodeBuild can access object metadata inside codepipeline?
我正在尝试访问代码构建中的 S3 对象用户定义的元数据并将其设置为环境变量。
根据文档,它只有 output etag 和 VersionId。 所以我假设默认情况下,当 s3 是源操作时,用户定义的元数据不会导出到代码管道
我正在考虑使用 aws cli 命令,然后将其设置为代码构建的环境变量。 有没有更好的办法?
aws s3api head-object --bucket bucket-name --profile profile --key xxxx.zip
您是对的,获取 object 元数据的唯一方法是使用head-object
CLI 调用。 您可以在 CodeBuild 阶段使用以下构建规范来获取带有 s3 源操作的管道的 object 元数据。
version: 0.2
phases:
build:
commands:
- BUCKET_PATH=$(echo $CODEBUILD_SOURCE_VERSION | cut -d ':' -f 6)
- BUCKET=$(echo $BUCKET_PATH | cut -d '/' -f 1)
- KEY=$(echo $BUCKET_PATH | cut -d '/' -f 2,3,4)
- aws s3api head-object --bucket $BUCKET --key $KEY --query Metadata
请注意,更新 s3 源 object 上的元数据也会触发 pipeline with s3 source 操作。
CodeBuild 可以使用 AWS CodePipeline API 访问 CodePipeline 内部的 object 元数据。CodeBuild 可以使用此 API 检索有关管道当前 state 的信息,包括有关源的信息和每个阶段的工件 output 。 要在 CodePipeline 中访问 object 的元数据,您需要使用“GetPipelineExecution”API 操作并在请求中包含“元数据”参数。 这将返回管道执行中每个工件的元数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.