Escenario
Se trata de crear una aplicación móvil desde Android Studio utilizando algunos de los servicios de AWS como API Gateway, Lambda, Step Functions y Cognito de tal forma que no tengamos que acceder a la plataforma de AWS durante el desarrollo.
Amplify permite ir añadiendo servicios desde el terminal de Android Studio e ir creandolos a medida que avanzamos en nuestro proyecto.
Para ello vamos a seguir los pasos de la documentación que nos ofrece Amlify en su página web:
https://docs.amplify.aws/lib/q/platform/android/
Instalación de Amplify en local
Lo primero que tenemos que hacer si no lo hemos hecho antes, algo que nos servirá en adelante para futuros proyectos, es instalar y configurar Amplify CLI para desde el momento que tengamos instalado poder ejecutar los diferentes comandos de Amplify como añadir API Gateway o Lambdas al proyecto o incluso modificarlas durante el desarrollo.
https://docs.amplify.aws/lib/project-setup/prereq/q/platform/android/
Creación de la aplicación e instalación del las librerías
android {
compileOptions {
// Support for Java 8 features
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 }
}
dependencies {
// Amplify core dependency
implementation 'com.amplifyframework:core:2.8.4'
// Support for Java 8 features
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}
Para inicializar Amplify solamente es necesario ejecutar el siguiente comando:
amplify init
El cual después de ejecutar nos pedirá una serie de datos como nombre de la aplicación, nombre del entrono de desarrollo, IDE de desarrollo etc. Podemos comprobar en AWS Console como después de inicializar la apliación se nos ha creado en la consola de AWS.
Validar password de cognito user:
PS C:\Users\Santy> aws cognito-idp admin-set-user-password --user-pool-id us-east-1_5CdLlaQoe --username santy --password P@ssw0rd --permanent
Obtener token de usuario:
PS C:\Users\Santy> aws cognito-idp admin-initiate-auth --user-pool-id us-east-1_5CdLlaQoe --client-id 6orkabpm5vvq5ie3rl5b2rj5r1 --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=santy,PASSWORD=P@ssw0rd
Configuración del archivo amplifyconfiguration.json en app/src/res/raw
"UserAgent": "aws-amplify-cli/2.0",
"Version": "1.0",
"api": {
"plugins": {
"awsAPIPlugin": {
"AndroidNodeJS": {
"endpointType": "REST",
"endpoint": "https://go1aqvo7h8.execute-api.us-east-1.amazonaws.com/dev",
"region": "us-east-1",
"authorizationType": "AMAZON_COGNITO_USER_POOLS"
}
}
}
},
Construir la llamada a la API
RestOptions options = RestOptions.builder()
//.addPath("/documents")
.addHeader("TokenNodeJS", "eyJraWQiOiJ2VVlOK2lvd0N4WjBUUENNODFqRTNVNzdcL3pObFI1N1g5YjQrZzVZQVdBbz0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxMmY3NzI5NS0zMGY2LTQ0YzktOTFkZC01ZWI5NTJjNGI5NGQiLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV81Q2RMbGFRb2UiLCJjb2duaXRvOnVzZXJuYW1lIjoic2FudHkiLCJvcmlnaW5fanRpIjoiMzBjZTZmMzktYzI0Ny00ZDk1LWFhNzYtYWJjZTdiMjljMmNkIiwiYXVkIjoiNm9ya2FicG01dnZxNWllM3JsNWIycmo1cjEiLCJldmVudF9pZCI6IjU2NWE4MjdiLTQ2MGItNGMxYS1iZTQ0LTE2ZTU5Y2YyM2U3MSIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjg1ODkxNDM1LCJleHAiOjE2ODU4OTUwMzUsImlhdCI6MTY4NTg5MTQzNSwianRpIjoiY2JjMTNlNWYtZGZhYy00MjdmLTgxNjctYTFjYjYzZDMyYjU0IiwiZW1haWwiOiJzYW50eUBjaWVyY28uZXMifQ.07okzlEbhELkRyh__ChK9J_2jmrlx3jEfBB0et7LAQEdFtBooHfjfMNsGxHNSBWSulsmtsf1ge1FVnEeg9Q_YnlIdykGAwjv11w1smhSspVu-AHuPu4pW67YDtYOFPmfqRiRRV9YAA-ssifX1V6H4hJHbHW_UISx5hI5S793yIBIh-Mv9-21jvcPa3NV6W2m2GTfsYr65nd5IU6keCFL_fI3mgyDifmbmjvEJ6yOTn-urmsQVHIQXg50GCemlL46RPDuOW-un0r6KfqK62_kzfp-9H_hfIXFBP95rcOWDKABonnv-xGOelcOs8wm__frfK7eG2OMGD8IyA6B8f04Sw")
.addPath("/users") //añado la ruta de mi api y creo la función lambda y le añado el rol de la función lambda de documents
.build();
Llamamos a la API:
Amplify.API.get(options,
restResponse -> Log.i("MyAmplifyApp", "GET succeeded: " + restResponse.getData().asString()),
apiFailure -> Log.e("MyAmplifyApp", "GET failed.", apiFailure)
);
https://www.youtube.com/watch?v=LI31QxfAgho
- Log in to post comments