我正在尝试设置从S3 PutObject上的Cloudwatch事件触发到存储桶中的AWS Batch作业。添加新文件时,我正在运行作业,但是不确定如何将文件名传递给作业。在我的Cloudwatch事件规则中,我将批处理作业队列的Configure input
设置为Matched event
,但不确定如何访问作业正在运行的docker容器中的事件。
最佳答案
如此处所述:https://docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html,在标题为“使用CloudWatch Events Input Transformer将事件信息传递到AWS Batch目标”的部分的底部:
像这样设置您的工作定义:
{
"jobDefinitionName": "echo-parameters",
"containerProperties": {
"image": "busybox",
"vcpus": 2,
"memory": 2000,
"command": [
"echo",
"Ref::S3bucket",
"Ref::S3key"
]
}
}
假设您的docker映像包含命令
echo
,该命令带有2个参数-S3存储桶和S3键。在您的CloudWatch Event规则中,使用InputTransformer将事件详细信息转换为所需的内容:
"InputTransformer": {
"InputPathsMap" : {
"S3BucketValue": "$.detail.requestParameters.bucketName",
"S3KeyValue": "$.detail.requestParameters.key"
},
"InputTemplate" : "{\"S3bucket\": <S3BucketValue>, \"S3key\": <S3KeyValue>}"
}
关于amazon-cloudwatch - Cloudwatch Event中的AWS Batch输入参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49367817/