5

我正在使用 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 文档,这是使用format函数的正确语法。

当我使用“硬编码”日期和时间保存管道时,我没有收到此错误,并且我的文件按预期位于我的 S3 存储桶和文件夹中。

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

有人可以告诉我如何将“myDateTime”设置为当前时间(例如现在)或提供解决方法,以便我可以格式化当前时间以在我的FilePath中使用?

4

2 回答 2

6

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

最接近的是运行时变量 scheduleStartTime、actualStartTime、reportProgressTime。

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

以下为例如。应该管用。s3://mybucketname/out/myfile-#{format(@scheduledStartTime,'YYYY-MM-dd-HH')}.txt

于 2014-08-14T15:52:53.580 回答
1

只是为了好玩,这里有更多关于Parameters.

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

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

"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",
}

您不能直接在 UI 中添加这些(目前),但是一旦它们存在,您就可以更改并保存这些值。

于 2017-05-16T21:44:14.400 回答