#ruby #amazon-web-services #amazon-s3 #aws-lambda #amazon-elastic-transcoder
#ruby #amazon-веб-сервисы #amazon-s3 #aws-lambda #amazon-elastic-transcoder
Вопрос:
Я тестирую добавление водяного знака к видео после загрузки. Я столкнулся с проблемой, когда lamdba хочет, чтобы я указал, какой файл изменять при загрузке. но я хочу, чтобы это срабатывало при загрузке любого (на самом деле, любого файла, который заканчивается на .mov, .mp4 и т.д.) файла.
Чтобы уточнить, все это выполняется вручную при создании конвейера и задания.
Вот мой код:
require 'json'
require 'aws-sdk-elastictranscoder'
def lambda_handler(event:, context:)
client = Aws::ElasticTranscoder::Client.new(region: 'us-east-1')
resp = client.create_job({
pipeline_id: "15521341241243938210-qevnz1", # required
input: {
key: File, #this is where my issue
},
output: {
key: "CBtTw1XLWA6VSGV8nb62gkzY",
# thumbnail_pattern: "ThumbnailPattern",
# thumbnail_encryption: {
# mode: "EncryptionMode",
# key: "Base64EncodedString",
# key_md_5: "Base64EncodedString",
# initialization_vector: "ZeroTo255String",
# },
# rotate: "Rotate",
preset_id: "1351620000001-000001",
# segment_duration: "FloatString",
watermarks: [
{
preset_watermark_id: "TopRight",
input_key: "uploads/2354n.jpg",
# encryption: {
# mode: "EncryptionMode",
# key: "zk89kg4qpFgypV2fr9rH61Ng",
# key_md_5: "Base64EncodedString",
# initialization_vector: "ZeroTo255String",
# },
},
],
}
})
end
Как мне указать только any
загружаемый файл или файлы определенного формата?для ввода: клавиша: ?
Теперь моя проблема в том, что я использую active storage, поэтому она не заканчивается на .jpg или .mov и т.д., Это просто случайно сгенерированная строка (у них есть причины для этого). Я пытаюсь найти причину для использования active storage, и это мой последний шаг к тому, чтобы заставить его работать так же, как другие альтернативы до него.
Ответ №1:
Поле расширения необязательно. Если вы ничего в нем не укажете, лямбда-код будет запущен независимо от того, какой файл загружен. Затем вы можете проверить, тот ли это тип файла, который вам нужен, и продолжить.
Комментарии:
1. Для этого требуется ввод, который мне нужен, чтобы указать файл (где находится клавиша ввода). Есть ли способ не указывать файл, а просто указать окончание файла? и как?
2. Когда lambda запускается событием загрузки файла, она отправляет сведения о файле в lambda в качестве параметров. Вы можете получить ключ оттуда
3. Но как? Я не вижу в документах никакого способа определить файл, который запускает лямбда-код
4. Я пытался использовать
lambda_handler
, но это не помогло5. Я использую python и не очень знаком с Ruby. Я нашел похожее решение, которое кто-то опубликовал. dev.to/maartenvanvliet /…