如何解决使用CloudWatch Event:如何将JSON对象作为环境变量传递给CodeBuild
摘要:为了将对象内容作为环境变量传递给CodeBuild项目,我无法使用CloudWatch目标Input Transformer指定JSON对象。
背景: 当S3存储桶收到任何新对象时,我会触发一个AWS CodeBuild作业。我已经为S3操作启用了CloudTrail,以便可以使用将我的S3存储桶作为事件源,将CodeBuild项目作为目标的CloudWatch规则。
如果使用Input Transformer设置目标的“配置输入”部分,则可以使用以下格式从事件中获取单个“原始”值:
输入路径文本框:
{"zip_file":"$.detail.requestParameters.key"}
输入模板文本框:
{"environmentVariablesOverride": [ {"name":"ZIP_FILE","value":<zip_file>}]}
如果我使用“简单”单个字符串,这会很好。
但是,例如,如果我希望获得整个“ resources”键(它是一个JSON对象),则需要了解其中的每个键以及对象结构,并手动为每个键重新创建结构键/值对。
例如,事件中的resources元素是:
"resources": [
{
"type": "AWS::S3::Object","ARN": "arn:aws:s3:::mybucket/myfile.zip"
},{
"accountId": "1122334455667799","type": "AWS::S3::Bucket","ARN": "arn:aws:s3:::mybucket"
}
],
我希望CodeBuild中buildspec中的代码能够完成繁重的工作并解析JSON数据。
如果我在输入路径文本框中指定:
{"zip_file":"$.detail.resources"}
然后CodeBuild项目永远不会被触发。
是否有一种方法可以将由特定键标识的整个JSON对象作为环境变量获取?
解决方法
检查此内容... CodeBuild目标支持StartBuild API允许的所有参数。您需要在JSON字符串中使用environmentVariablesOverride。
{"environmentVariablesOverride": [ {"name":"ZIPFILE","value":<zip_file>}]}
请避免在环境名称中使用'_'。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。