Flutter Cloud AWS articulo en español parte 1 de 3
Flutter Cloud AWS articulo en español parte 1 de 3
Este articulo es parte de una serie de post sobre servicios Cloud y Flutter en el cual empezare con AWS e intentare ir documentando lo más…
Flutter Cloud AWS articulo en español parte 1 de 3
Este articulo es parte de una serie de post sobre servicios Cloud y Flutter en el cual empezare con AWS e intentare ir documentando lo más posible como poder conectarnos a los servicios de la nube de AWS
La división de este articulo se centrara en conceptos y teoría. Como configuración del backend parte 1 y 2.
En la tercera parte revisaremos como conectarlos con el api rest de los servicios AWS dentro de flutter.
Este articulo empezó la semana del 16/07/2019 y pretendo terminar la tercera parte 31/07/2019 teniendo un articulo cada semana.
Cabe mencionar que soy muy nuevo en los servicios Cloud y mi intención es abordarlo del punto de vista del desarrollador y su implementación en casos medianamente reales.
La problemática
¿Qué pasa si nuestra organización no quiere usar Firebase? Hmmm
Este artículo se infiltra en el mundo de Amazon, típicamente AWS …
Para la programación de esta demo, hemos utilizado
- Amazon s3 Bucket
- Funciones de Amazon Lambda
- Obviamente Flutter.
Explicación de conceptos
¿Que es Amazon s3 Bucket?.
Conceptos básicos de Amazon S3
Para sacar el máximo partido posible a Amazon S3, necesita conocer algunos conceptos básicos. Amazon S3 almacena datos a modo de objetos dentro de buckets(cubo es lo mismo para el concepto). Un objeto se compone de un archivo y, de forma opcional, de cualquier metadato que describa dicho archivo.
Para almacenar un objeto en Amazon S3, debe cargar en un bucket el archivo que quiera almacenar. Al cargar un archivo, puede configurar permisos en el objeto y cualquier tipo de metadatos.
¿Que son los buckets?
Los buckets son contenedores de objetos. Puede tener uno o más buckets. Para cada bucket, podrá controlar el acceso (quién puede crear, eliminar y enumerar objetos del bucket), consultar los logs de acceso al bucket y sus objetos y elegir la región geográfica en la que Amazon S3 almacenará el bucket y su contenido.
¿Que son las funciones de Amazon Lambda?
AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrar servidores. AWS Lambda ejecuta el código solo cuando es necesario, y se escala de manera automática, pasando de pocas solicitudes al día a miles por segundo. Solo se paga el tiempo de computación que se consume; no hay ningún cargo mientras el código no se ejecuta. Con AWS Lambda, puede ejecutar código para prácticamente cualquier tipo de aplicación o servicio de backend, y sin que se requiera ningún tipo de administración. AWS Lambda ejecuta el código en una infraestructura informática de alta disponibilidad y ejecuta la administración integral de los recursos informáticos, incluido el mantenimiento del servidor y del sistema operativo, el aprovisionamiento de capacidad y el escalado automático, así como la monitorización y los registros. Lo único que tiene que hacer es suministrar el código en uno de los lenguajes que admite AWS Lambda.
Paso 1:
Crear cuenta en Amazon Developer Console …
Paso 2:
Recomiendo crear una cuenta gratuita
Buscar s3 en la consola de administración …
Crea un cubo según tu elección …
Por defecto, el cubo no es público, así que tenemos que hacerlo …
Para realizar esta acción debes desmarcar la casilla de verificación que se muestra en la imagen a continuación
A continuación, vaya a la política de Bucket … y pegar a continuación
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “Stmt1405592139000”,
“Effect”: “Allow”,
“Principal”: ”*”,
“Action”: “s3:*”,
“Resource”: [
“arn:aws:s3:::nombredesucubo/*”,
“arn:aws:s3:::nombredesucubo”
]
}
]
}
NOTA: Reemplace ‘NOMBRE DE SU CUBO’ por su nombre de cubo …
Esto nos permite realizar operaciones de cualquier tipo en nuestro cubo …
Advertencia este es solo un caso de demostración donde si quieres realizar una implementación en producción deberás revisar tus políticas de seguridad.
Paso 3 :
Necesitamos hacer apis para realizar operaciones en el cubo.
Para hacer apis, AWS ofrece Lambda similar a Cloud Functions …
Vaya a la consola de AWS y busque Lambda ..
Cómo escribir y desplegar Lambdas …
- Instalar serverless : este es un paquete nodeJS que nos ayuda a escribir Lambdas e implementarlas en AWS-
npm install -g serverless
nota si no estas seguro de tener instalado node en tu maquina local verificarlo a través del siguiente comando node — version.
Si la consola dice que no reconoce el comando es dado que no lo tienes instalado y debes proceder a instalar node.
Nota importante intenta siempre instalar la versión estable LTS recomendada para la mayoría, debido a que esta tiene características probadas.
una vez instalado debiera aparecer la versión correspondiente con node — version
npm install -g serverless
2. Configure sus credenciales de AWS
Lo primero deben irse a gestión de identidad y acceso “IAM”
¿Que es IAM?
AWS Identity and Access Management (IAM) es un servicio web que le ayuda a controlar de forma segura el acceso a los recursos de AWS. Utilice IAM para controlar quién está autenticado (ha iniciado sesión) y autorizado (tiene permisos) para utilizar recursos.
Una vez dentro dirigirte al menú de usuario
En donde crearemos un nuevo usuario.
Como vemos en la imagen otorgaremos un nombre de usuario y en tipo de acceso, solo marcaremos “Acceso mediante programación” el cual nos otorgara una clave de acceso secreta.
En el wizard nos fijaremos en lo siguiente otorgar permisos de Administrador para efectos de prueba de recurso y en establecer un limite de permisos
“Crear “user” sin un limite de permisos.
Al crear el usuario podrás ver la clave de acceso secreta de 2 formas, descargando el archivo .csv y teniéndolo localmente en tu PC. (recuerda mantenerlos a mano ya que lo ocuparemos dentro de poco).
3. Configure sus credenciales de AWS en su pc local con npm serverless
una vez en tu equipo local debes ejecutar el siguiente comando en la terminal
serverless config credentials —provider aws —key ‘AWS Key publica’ —secret ‘AWS Key privada’
3. Crea un proyecto (sin servidor)
Recordemos los requisitos antes de continuar
Pre-requisitos
- Node.js
v6.5.0 o posterior
. - CLI serverless
v1.9.0
o posterior. Puede ejecutarnpm install -g serverless
para instalarlo. - Una cuenta de AWS. Si aún no tiene uno, puede inscribirse para una prueba gratuita que incluye 1 millón de solicitudes Lambda gratuitas por mes.
- Configure sus credenciales de proveedor -> Vea el video sobre la configuración de credenciales
Crear un nuevo servicio
Cree un nuevo servicio utilizando la plantilla Node.js, especificando un nombre único y una ruta opcional para su servicio.
# Cree un nuevo servicio / proyecto
serverless create —template aws-nodejs
handler.js ->
Donde escribes tu lógica...
serverless.yml ->
Donde describe tu deploy...
functions:
getAllFiles:
handler: handler.getAllFiles
events:
- http:
path: /getAllFiles
method: get
uploadFile:
handler: handler.uploadFile
events:
- http:
path: /uploadFile
method: post
Por ejemplo, obtener y publicar los puntos finales de url …
En el archivo handler.js …
Lógica para obtener todos los archivos, desde el almacenamiento de AWS .
module.exports.getAllFiles = async (event, context) => {
let files = [];
let params = {
Bucket: process.env.BUCKET, / * required * /
Prefix: ‘upload’
};
let result = await s3.listObjectsV2 (params) .promise ();
dejar datos = resultado. contenido;
Object.keys (data) .forEach ((key, index) => {
let fileObject = data [key];
files.push (`https: // $ {result.Name} .s3.us-east-2.amazonaws .com / $ {fileObject.Key} `);
});
return {
statusCode: 200,
body: JSON.stringify ({
files: files,
bucketName: `$ {result.Name}`,
subFolder: `$ {result.Prefix}`,
}, null, 2),
};
};
Espero sea de su interés hasta este momento.
Donate to devjaime
_Help support devjaime by donating or sharing with your friends._www.paypal.com
By Jaime Hernández on July 17, 2019.
Exported from Medium on March 15, 2025.
~devjaime