# variable names source_bucket=hongyusuoriginal target_bucket=${source_bucket}resized function=CreateThumbnail # role name lambda_execution_role_name=lambda-$function-execution lambda_execution_access_policy_name=lambda-$function-execution-access lambda_invocation_role_name=lambda-$function-invocation lambda_invocation_access_policy_name=lambda-$function-invocation-access log_group_name=/aws/lambda/$function # bucket aws s3 mb s3://$source_bucket aws s3 mb s3://$target_bucket aws s3 cp HappyFace.jpg s3://$source_bucket/ # js curl -O https://raw.githubusercontent.com/hongyusu/AmazonCodes/master/AWSExample/CreateThumbnail.js # package npm install async gm zip -r $function.zip $function.js node_modules # iam lambda_execution_role_arn=$(aws iam create-role \ --role-name "$lambda_execution_role_name" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' \ --output text \ --query 'Role.Arn' ) echo lambda_execution_role_arn=$lambda_execution_role_arn # policy aws iam put-role-policy \ --role-name "$lambda_execution_role_name" \ --policy-name "$lambda_execution_access_policy_name" \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::'$source_bucket'/*" }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::'$target_bucket'/*" } ] }' # upload aws lambda create-function \ --region us-west-2 \ --function-name "$function" \ --zip "fileb://$function.zip" \ --role "$lambda_execution_role_arn" \ --handler "$function.handler" \ --timeout 30 \ --runtime nodejs \ --timeout 10 \ --memory-size 1024 # fake s3 event cat > $function-data.json <