kebblar / petstore-back

Pet Store app Backend
MIT License
0 stars 1 forks source link

Proceso en AWS para la marca de agua #247

Open javier-ch opened 3 years ago

javier-ch commented 3 years ago

Para configurar la marca de agua en AWS

1.- Crear una política para definir los permisos que puede tener el usuario que se defina para el manejo de los recursos en la creación de la marca de agua. En el menú de la parte izquierda dar clic en Administración del acceso > Políticas

Nombre de la política: DiplomadoUltrasistVideos

Seleccionamos los siguientes servicios

2.- Crear un Role Nombre de Rol: RolDiplomadoUltrasistVideos

En la creación del rol seleccionamos "Servicio de AWS" y elegimos "Lambda" Añadimos los permisos al Rol seleccionando la política "DiplomadoUltrasistVideos"

3.- Crear los repositorios (bucket) en el servicio de S3, se crean dos repositorios uno seria la entrada y el otro la salida.

Entrada: ultrasist-video-input Salida: ultrasist-video-output

4.- Crear el recurso para el manejo del video en el siguiente servicio de amazon "Elastic Transcoder Pipeline"

En la configuración de este recursos podemos los siguientes datos. Sección: "Create New Pipeline" Pipeline name: watermark-petstore Input bucket: ultrasist-video-input

Sección: "Configuration for Amazon S3 Bucket for Transcoded Files and Playlist" Bucket: ultrasist-video-output Storage Class: Stardand

Una vez creado el recurso, crearemos un "Presets" seleccionamos "System preset: Generic 1080p" y damos el botón "Copy" para crear la nueva configuración.

En la creación del nuevo New Transcoding Preset agregamos la siguiente información

Name: Generic 1080p - watermark Description: Plantilla que contiene la configuración para la marca de agua Container: mp4

Sección: Available Settings Seleccionamos: Video, Audio, Thumbnails Nota: Si que quite el audio desmarcamos "Audio"

Sección: Watermarks Para este ejemplo la marca de agua será colocada en la parte derecha parte inferior. Nota: Quitamos todas las "Watermark" y después agregamos una en la opción "Add Watermark", ingresamos la siguiente configuración.

ID: BottomRight Max Width: 20% MaxHeight: 20% Sizing Policy: Fit Horizontal Align: Right Horizontal Offset: 15% Vertical Align: Bottom Vertical Offset: 10% Opacity: 55 Target: Content

Sección: Thumbnails Format: png Interval: 60 Max Width: 192 Max Height: 144 Sizing Policy: ShrinkToFit Padding Policy: NoPad

5.- Crear una expresión lambda para identificar en momento se deposita un archivo en el S3 de entrada. Buscamos el servicio "Lambda"

Seleccionamos la opción "Crear desde cero" Nombre de la función: Watermark-Petstore Runtime: Python 3.7 Permisos: Use an existing role (RolDiplomadoUltrasistVideos)

Una vez creada la función de damos clic al botón "Add trigger", agregamos la siguiente configuración.

Seleccionamos el servicio "S3" Bucket: ultrasist-video-input Suffix: .mp4 Enable trigger: seleccionado

Nota: suffix es para indicar que solo se ejecute la acción si se sube video con extensión .mp4

Seleccionamos el lambda image

Agregamos el siguiente código.

import os

from urllib import parse as urlparse
import boto3

def lambda_handler(event, context):
    transcoder = boto3.client('elastictranscoder', region_name='us-east-1')

    pipeline_id = os.environ['PIPELINE_ID']
    preset_id = os.environ['PRESET_ID']
    watermark_id = os.environ['WATERMARK_ID']
    watermark_key = os.environ['WATERMARK_KEY']

    key = urlparse.unquote_plus(
            event['Records'][0]['s3']['object']['key'],
            encoding='utf-8'
    )

    input_options = {
        'Key': key
    }
    output_options = {
        'Key': key,
        'PresetId': preset_id,
        'Watermarks': [{
            'PresetWatermarkId': watermark_id,
            'InputKey': watermark_key
        }]
    }

    job_response = transcoder.create_job(
        PipelineId=pipeline_id,
        Input=input_options,
        Output=output_options
    )

Guardamos el código en el siguiente menú en la parte de configuración. image

En el menú de la parte izquierda seleccionamos "Variable de entorno"

Ejemplo : Los valores de ARN son los identificadores que pone AWS de cada recurso por lo que estos valores varían al momento de replicar el ejemplo

image

PIPELINE_ID ES EL ARN del recurso image

PRESET_ID es el ARN del recurso image

WATERMARK_ID es el ID de Watermarks image

WATERMARK_KEY es el nombre de la imagen que vamos a poner como marca de agua.

Nota: Es importante que la imagen que usaremos como marca de agua se encuentre en el S3 de entrada que definimos para que sea tomado por el proceso cuando se suba un archivo. Si todo se ejecuta de manera correcta el archivo se queda en el S3 de salida ya con la marca de agua.

LOGO: logo