@@ -2,8 +2,9 @@ use aws_lambda_events::event::s3::{S3Entity, S3Event};
22use aws_sdk_s3:: Client as S3Client ;
33use handlebars:: Handlebars ;
44use lambda_runtime:: { run, service_fn, Error , LambdaEvent } ;
5+ use log:: * ;
56use routefinder:: Router ;
6- use tracing:: * ;
7+ // use tracing::*;
78
89use std:: collections:: HashMap ;
910
@@ -22,7 +23,7 @@ async fn function_handler(event: LambdaEvent<S3Event>, client: &S3Client) -> Res
2223
2324 for entity in entities_from ( event. payload ) ? {
2425 debug ! ( "Processing {entity:?}" ) ;
25- if let Some ( source_key) = entity. object . url_decoded_key {
26+ if let Some ( source_key) = entity. object . key {
2627 let parameters = add_builtin_parameters ( captured_parameters ( & router, & source_key) ?) ;
2728 let output_key = hb. render ( "output" , & parameters) ?;
2829 info ! ( "Copying {source_key:?} to {output_key:?}" ) ;
@@ -70,25 +71,12 @@ async fn main() -> Result<(), Error> {
7071 */
7172
7273fn entities_from ( event : S3Event ) -> Result < Vec < S3Entity > , anyhow:: Error > {
73- let expected_event = Some ( "ObjectCreated:Put" . into ( ) ) ;
7474 Ok ( event
7575 . records
7676 . into_iter ( )
77- // only bother with the record if the eventName is `objectCreated:Put`
7877 // only bother with the record if the key is present
79- . filter ( |record| record. event_name == expected_event && record. s3 . object . key . is_some ( ) )
80- . map ( |record| {
81- let mut entity = record. s3 ;
82- info ! ( "Mapping the entity: {entity:?}" ) ;
83- /*
84- * For whatever reasson aws_lambda_events doesn't properly make this url_decoded_key
85- * actually available
86- */
87- if let Ok ( decoded) = urlencoding:: decode ( & entity. object . key . as_ref ( ) . unwrap ( ) ) {
88- entity. object . url_decoded_key = Some ( decoded. into_owned ( ) ) ;
89- }
90- entity
91- } )
78+ . filter ( |r| r. s3 . object . key . is_some ( ) )
79+ . map ( |r| r. s3 )
9280 . collect ( ) )
9381}
9482
@@ -159,24 +147,7 @@ mod tests {
159147 let event = load_test_event ( ) ?;
160148 let objects = entities_from ( event) ?;
161149 assert_eq ! ( objects. len( ) , 1 ) ;
162- assert ! ( objects[ 0 ] . object. url_decoded_key. is_some( ) ) ;
163-
164- if let Some ( key) = & objects[ 0 ] . object . url_decoded_key {
165- assert_eq ! ( key, "test/key" ) ;
166- } else {
167- assert ! ( false , "Failed to decode the key properly" ) ;
168- }
169-
170- Ok ( ( ) )
171- }
172-
173- #[ test]
174- fn entities_from_with_nonput ( ) -> Result < ( ) , anyhow:: Error > {
175- let mut event = load_test_event ( ) ?;
176- event. records [ 0 ] . event_name = Some ( "s3:ObjectRemoved:Delete" . into ( ) ) ;
177-
178- let objects = entities_from ( event) ?;
179- assert_eq ! ( objects. len( ) , 0 ) ;
150+ assert ! ( objects[ 0 ] . object. key. is_some( ) ) ;
180151
181152 Ok ( ( ) )
182153 }
0 commit comments