【问题标题】:AWS Services: Use cloudwatch s3 put event to trigger batch job with the file url as an environemnt variableAWS 服务:使用 cloudwatch s3 put 事件触发批处理作业,文件 url 作为环境变量
【发布时间】:2019-12-15 01:24:39
【问题描述】:

目标: 每当对象存储在存储桶中时,触发批处理作业(aws batch)并将上传的文件url作为环境变量传递

情况: 我目前已经设置好了一切。我有带有 cloudwatch 触发批处理作业的 s3 存储桶,但我无法获取完整的文件 url 或设置环境变量。

我遵循了以下教程:https://docs.aws.amazon.com/batch/latest/userguide/batch-cwe-target.html“创建使用输入转换器的 AWS Batch 目标”。

作业在 AWS 批处理中创建和处理,在作业详细信息下,我可以看到收到的参数是:

S3bucket: mybucket
S3key: view-0001/custom/2019-08-07T09:40:04.989384.json

但环境变量没有改变,文件 URL 不包含所有其他参数,例如访问和过期令牌。

我也没有找到关于输入变压器中可以使用哪些其他变量的任何信息。如果有人有手册链接,欢迎提供。

另外,在 WAS CLI 文档中,可以在提交作业时设置环境变量,所以我想这里也应该可以? https://docs.aws.amazon.com/cli/latest/reference/batch/submit-job.html

那么问题来了,如何以文件url作为环境变量提交作业呢?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudwatch aws-batch


    【解决方案1】:

    您可以通过触发存储桶中的 Lambda 函数并在 Lambda 函数中生成预签名 URL 并从 Lambda 函数启动批处理作业来完成此操作。

    但是,更好的方法是使用存储桶和密钥在批处理函数中简单地访问文件。您可以使用适用于您的语言的 AWS 开发工具包或简单地使用 awscli。例如,您可以下载文件:

    aws s3 cp s3://$BUCKET/$KEY /tmp/file.json
    

    另一方面,如果您需要 Batch 函数之外的预签名 URL,您可以使用 AWS 开发工具包或 awscli 生成一个:

    aws s3 presign s3://$BUCKET/$KEY
    

    使用这两种方法中的任何一种来访问批处理作业中的文件,您都需要配置批处理计算环境的实例角色,让 IAM 访问您的 S3 存储桶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 2017-11-03
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多