AWS Data Pipeline non è più disponibile per i nuovi clienti. Clienti esistenti di AWS Data Pipeline possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Espressioni
Le espressioni consentono di condividere un valore negli oggetti correlati. Le espressioni vengono elaborate dal servizio Web AWS Data Pipeline in fase di runtime, accertandosi che tutte le espressioni vengano sostituite con il valore dell'espressione.
Le espressioni sono delimitate da:"#{" e "}". È possibile utilizzare un'espressione in qualsiasi oggetto di definizione della pipeline in cui una stringa è legale. Se uno slot è un riferimento o uno di tipo ID, NAME, TYPE e SPHERE, il valore non viene valutato e viene utilizzato integralmente.
La seguente espressione chiama una delle funzioni AWS Data Pipeline. Per ulteriori informazioni, consultare Valutazione delle espressioni.
#{format(myDateTime,'YYYY-MM-dd hh:mm:ss')}
Riferimento a campi e oggetti
Le espressioni possono utilizzare i campi dell'oggetto corrente in cui l'espressione esistente o i campi di un altro oggetto collegato da un riferimento.
Un formato di slot è composto da un tempo di creazione seguito dal momento della creazione dell'oggetto, ad esempio @S3BackupLocation_2018-01-31T11:05:33
.
È anche possibile consultare l'esatto ID slot specificato nella definizione della pipeline, ad esempio l'ID slot della posizione di backup Amazon S3. Per fare riferimento all'ID dello slot, utilizzare #{parent.@id}
.
In questo esempio il campo filePath
si riferisce al campo id
nello stesso oggetto per creare un nome di file. Il valore di filePath
restituisce "s3://mybucket/ExampleDataNode.csv
".
{ "id" : "ExampleDataNode", "type" : "S3DataNode", "schedule" : {"ref" : "ExampleSchedule"}, "filePath" : "s3://mybucket/#{parent.@id}.csv", "precondition" : {"ref" : "ExampleCondition"}, "onFail" : {"ref" : "FailureNotify"} }
Per usare un campo esistente su un altro oggetto collegato da un riferimento, utilizzare la parola chiave node
. Questa parola chiave è disponibile solo con allarmi e oggetti di precondizione.
Per continuare con l'esempio precedente, un'espressione in un SnsAlarm
può fare riferimento alla data e all'intervallo di tempo in un Schedule
, poiché S3DataNode
si riferisce a entrambi.
Nello specifico, il campo message
di FailureNotify
può utilizzare i campi di runtime @scheduledStartTime
e @scheduledEndTime
di ExampleSchedule
, poiché il campo onFail
di ExampleDataNode
fa riferimento a FailureNotify
e il relativo campo schedule
fa riferimento a ExampleSchedule
.
{ "id" : "FailureNotify", "type" : "SnsAlarm", "subject" : "Failed to run pipeline component", "message": "Error for interval #{node.@scheduledStartTime}..#{node.@scheduledEndTime}.", "topicArn":"arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic" },
Nota
È possibile creare pipeline con dipendenze, ad esempio le attività nella pipeline che dipendono dal lavoro di altri sistemi o attività. Se la pipeline richiede alcune risorse, aggiungere tali dipendenze alla pipeline utilizzando le precondizioni associate ai nodi di dati e alle attività. In questo modo il debug della pipeline è più semplice e la pipeline stessa è più resiliente. Inoltre, mantenere le dipendenze all'interno di una singola pipeline quando è possibile, perché la risoluzione dei problemi in più pipeline è difficile.
Espressioni nidificate
AWS Data Pipeline ti consente di nidificare i valori per creare espressioni più complesse. Ad esempio, per eseguire un calcolo relativo al tempo (sottrarre 30 minuti da scheduledStartTime
) e utilizzare il risultato in una definizione di pipeline, è possibile usare la seguente espressione in un'attività:
#{format(minusMinutes(@scheduledStartTime,30),'YYYY-MM-dd hh:mm:ss')}
e utilizzare il prefisso node
se l'espressione è parte di un SnsAlarm o Precondizione:
#{format(minusMinutes(node.@scheduledStartTime,30),'YYYY-MM-dd hh:mm:ss')}
Elenchi
Le espressioni possono essere valutate su elenchi e su funzioni degli elenchi. Ad esempio, supponiamo che un elenco viene definito come il seguente: "myList":["one","two"]
. Se l'elenco viene utilizzato nell'espressione#{'this is ' + myList}
, valuterà["this is one", "this is two"]
. Se si dispone di due elenchi, Data Pipeline finirà per appiattirli nella valutazione. Ad esempio, se myList1
è definito come [1,2]
e myList2
è definito come [3,4]
, allora l'espressione [#{myList1},
#{myList2}]
restituirà [1,2,3,4]
.
Espressione del nodo
AWS Data Pipeline utilizza l'espressione #{node.*}
in SnsAlarm
o PreCondition
per un riferimento all'oggetto padre del componente della pipeline. Poiché SnsAlarm
e PreCondition
sono citati da un'attività o una risorsa senza alcun riferimento da parte loro, node
fornisce il modo per consultare il referrer. Ad esempio, la seguente definizione di pipeline dimostra come una notifica di errore può utilizzare node
per effettuare un riferimento al proprio padre, in questo caso ShellCommandActivity
, e includere i tempi di inizio e di fine programmati nel messaggio SnsAlarm
. Il riferimento scheduledStartTime su ShellCommandActivity non richiede il prefisso node
perché scheduledStartTime fa riferimento a se stesso.
Nota
I campi preceduti dal segno AT (@) sono campi di runtime.
{ "id" : "ShellOut", "type" : "ShellCommandActivity", "input" : {"ref" : "HourlyData"}, "command" : "/home/userName/xxx.sh #{@scheduledStartTime} #{@scheduledEndTime}", "schedule" : {"ref" : "HourlyPeriod"}, "stderr" : "/tmp/stderr:#{@scheduledStartTime}", "stdout" : "/tmp/stdout:#{@scheduledStartTime}", "onFail" : {"ref" : "FailureNotify"}, }, { "id" : "FailureNotify", "type" : "SnsAlarm", "subject" : "Failed to run pipeline component", "message": "Error for interval #{node.@scheduledStartTime}..#{node.@scheduledEndTime}.", "topicArn":"arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic" },
AWS Data Pipeline supporta riferimenti transitivi per i campi definiti dall'utente, ma non per i campi di runtime. Un riferimento transitivo è un riferimento tra due componenti di pipeline che dipende da un altro componente di pipeline come intermediario. L'esempio seguente mostra un riferimento a un campo transitivo definito dall'utente e un riferimento a un campo di runtime non transitivo, entrambi validi. Per ulteriori informazioni, consultare Campi definiti dall'utente.
{ "name": "DefaultActivity1", "type": "CopyActivity", "schedule": {"ref": "Once"}, "input": {"ref": "s3nodeOne"}, "onSuccess": {"ref": "action"}, "workerGroup": "test", "output": {"ref": "s3nodeTwo"} }, { "name": "action", "type": "SnsAlarm", "message": "S3 bucket '#{node.output.directoryPath}' succeeded at #{node.@actualEndTime}.", "subject": "Testing", "topicArn": "arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic", "role": "DataPipelineDefaultRole" }
Valutazione delle espressioni
AWS Data Pipeline fornisce un set di funzioni che è possibile utilizzare per calcolare il valore di un campo. L'esempio seguente utilizza la funzione makeDate
per impostare il campo startDateTime
di un oggetto Schedule
su GMT/UTC "2011-05-24T0:00:00"
.
"startDateTime" : "makeDate(2011,5,24)"