aws数据管道日期时间变量

时间:2014-08-13 17:00:05

标签: variables datetime amazon-web-services amazon-data-pipeline

我正在使用AWS Data Pipeline将文本文件从RDS保存到我的S3存储桶。我希望文件名在文件名中包含日期和小时,如:

myfile-YYYYMMDD-HH.txt
myfile-20140813-12.txt

我已将S3DataNode FilePath 指定为:

s3://mybucketname/out/myfile-#{format(myDateTime,'YYYY-MM-dd-HH')}.txt

当我尝试保存我的管道时,我收到以下错误:

ERROR: Unable to resolve myDateTime for object:DataNodeId_xOQxz

根据AWS Data Pipeline documentation for date and time functions,这是使用格式函数的正确语法。

当我使用"硬编码"保存管道时我没有收到此错误的日期和时间,我的文件在预期的S3存储桶和文件夹中。

我的想法是我需要定义" myDateTime"在某处或使用NOW()

有人可以告诉我如何设置" myDateTime"到当前时间(例如NOW)或给出解决方法以便我可以格式化我的 FilePath 中使用的当前时间?

2 个答案:

答案 0 :(得分:4)

我不知道数据管道中NOW()的确切等价物。我尝试使用没有参数的makeDate(只是为了好玩),看看是否有效..它没有。

最接近的是运行时变量scheduledStartTime,actualStartTime,reportProgressTime。

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-s3datanode.html

以下为例如。应该管用。 S3:// mybucketname /缩小/ myfile-#{格式(@ scheduledStartTime, 'YYYY-MM-DD-HH')}的.txt

答案 1 :(得分:1)

只是为了好玩,这里有一些关于Parameters的更多信息。

在您的Pipeline Json的最后(点击List Pipelines,选择一个,点击Edit Pipeline,然后点击Export),您需要添加Parameters和/或Values对象。

我使用myStartDate进行回填过程,一旦传入进行临时运行,您就可以对其进行操作。您可以为此设置静态默认值,但不能将其设置为动态值,因此它对于常规计划任务是有限的。对于实时/预定日期,您需要按照建议使用@scheduledStartTime等。以下是设置一些Parameters和/或Values的示例。两者都显示在UI中的Parameters中。这些值可以通过#{myVariableToUse}符号在您的管道活动(shell,配置单元等)中使用。

"parameters": [
{
  "helpText": "Put help text here",
  "watermark": "This shows if no default or value set",
  "description": "Label/Desc",
  "id": "myVariableToUse",
  "type": "string"
}
]

对于价值观:

"values": {
  "myS3OutLocation": "s3://some-bucket/path",
  "myThreshold": "30000",
}

您无法直接在用户界面中添加这些内容,但一旦在那里,您就可以更改并保存这些值。