exito-aws
v1.0.12
Published
Commands for aws exito
Downloads
5
Readme
EXITO AWS CLI
Exito aws cli permite facilmente crear infrastructuras tipo Fargate y crear CodePipelines dentro de AWS
Instalación
npm i exito-aws
npm i -g exito-aws
Uso
En la linea de comandos
exito-aws
Nota: Si se desea crear el proyecto de netCore en DDD se ejecuta
- Instalar el template en el equipo con el siguiente comando en consola:
dotnet new -i Exito.DDD.WebApi.NetCore
- En la consola ir a la ruta donde va a quedar el proyecto y ejecutar el comando:
dotnet new exitoddd --ProjectName
Las opciones que se listan al ejecutar la cli son:
- ECR
- Fargate LoadBalancer
- Fargate Apigateway
- CodePipeline
- Generar Buildspec
- Descargar archivo parametros
- Administrador
Las opciones que permiten crear servicios en AWS solicitan ingresar Access Key Id, Secret access key y session token , estos se obtienen desde el login de AWS en la cuenta seleccionando Command line or programmatic access
y luego se visualiza las credenciales, damos clic en Copy para obtener el dato necesario
Seleccionar una de las opciones.
Seleccionando ECR. Permite crear un Elastic Container Registry, donde se pueden subir las imagenes docker del proyecto
Seleccionando Fargate.
En nombre colocamos un nombre que no se encuentre en la cuenta de AWS y que no contenga espacios en blanco, mayusculas ni caracteres especiales
En archivo de parametros ingresamos el nombre del archivo json que debe estar en la ruta de la linea de comandos
En esta opción se ingresa el Access key ID de la cuenta de AWS
En esta opción se ingresa el Secret access key de la cuenta de AWS
Cuando los datos se ingresen correctamente la CLI mostrará el siguiente mensaje
Si la infraestructura se crea correctamente mostrará el siguiente mensaje
Seleccionando la opción Codepipeline ingresamos el nombre del stack sin caracteres especiales ni espacios en blanco
Parámetros
Fargate LoadBalancer y Fargate Apigateway
[
{
"ParameterKey": "BalancerListenerPort",
"ParameterValue": "80",
"Description": "Puerto de LoadBalancer por defecto es 80"
},
{
"ParameterKey": "ClusterName",
"ParameterValue": "clusteraws",
"Description": "Cluster del ECS el nombre debe ser unico en la cuenta AWS"
},
{
"ParameterKey": "CpuTask",
"ParameterValue": "256",
"Description": "CPU que se desea dar al task definition"
},
{
"ParameterKey": "Environment",
"ParameterValue": "development",
"Description": "El ambiente del ECS opciones: development ó production"
},
{
"ParameterKey": "HealthCheckPathName",
"ParameterValue": "/api/environment",
"Description": "La ruta del health del microservicio con esta ruta se valida si esta respondiendo el servicio debe ser un controller GET"
},
{
"ParameterKey": "ImageRepositoryECR",
"ParameterValue": "repositorioaws",
"Description": "El nombre asignado al Repositorio ECR para la imagen docker"
},
{
"ParameterKey": "MemoryTask",
"ParameterValue": "512",
"Description": "Memoria asignada al task definition"
},
{
"ParameterKey": "SecurityGroupServicePort",
"ParameterValue": "80",
"Description": "Puerto del security group por defecto es 80"
},
{
"ParameterKey": "ServiceName",
"ParameterValue": "serviceaws",
"Description": "Nombre que se asignará al service de ECS debe ser unico en la cuenta AWS"
},
{
"ParameterKey": "TagECR",
"ParameterValue": "latest",
"Description": "el tag que posee el docker en el repositorio ECS por defecto es latest"
},
{
"ParameterKey": "TaskQuantity",
"ParameterValue": "1",
"Description": "Cantidad de task definition asignado al ECS"
},
{
"ParameterKey": "VpcName",
"ParameterValue": "vpc-00xxxxxxxxxxx",
"Description": "Vpc que se va a utilizar"
},
{
"ParameterKey": "subnets",
"ParameterValue": "subnet-0xxxxxxxxxxx,subnet-0xxxxxxxxxxx",
"Description": "Subnet's utilizadas por ECS, deben ser minimo 2"
},
{
"ParameterKey": "subnetsLoadBalancer",
"ParameterValue": "subnet-0xxxxxxxxxx,subnet-0xxxxxxxxxxx",
"Description": "Subnet's utilizadas por LoadBalancer, deben ser minimo 2"
},
{
"ParameterKey": "ProjectName",
"ParameterValue": "aplicacion",
"Description": "El nombre del proyecto que va a tener asociado la infrastructura"
}
]
Descripción parámetros
Estos parámetros deben de ir en un archivo .json ubicado en el path de la consola donde se ejecuta el comando de exito-aws-cli
ParameterKey: Se deben conservar los mismos nombres que existen en este campo debido a que todos son obligatorios.
ParameterValue: En este campo se definen los valores que va a tomar el key del parámetro.
A continuación se describe cada uno de los parámetros:
- BalancerListenerPort: Es el puerto que se asigna al listener del load balancer por defecto es "80".
- ClusterName: Nombre que se le asigna al cluster de ECS debe ser un nombre único en la cuenta de AWS, no debe tener espacios ni caracteres especiales.
- CpuTask: La capacidad de CPU que se le desea dar al task definition del ECS.
- Environment: Se describe en cual ambiente sera utilizada la infraestructura, las opciones son: developer, production. Se deben colocar en minúsculas.
- HealthCheckPathName: La ruta del endpoint con el cual se quiere identificar el health del servicio, por defecto es /api/environment
- ImageRepositoryECR: El nombre del repositorio del ECR creado para alojar la imagen docker.
- MemoryTask: La capacidad de memoria que se le desea asignar al task definition.
- SecurityGroupServicePort: El puerto que se le asigna al security group, por defecto es 80.
- ServiceName: El nombre que se le va a asignar al servicio de ECS, debe ser único en la cuenta de AWS, no debe tener espacios.
- TagECR: La etiqueta que se le colocó a la imagen docker subida en ECR, por defecto es latest.
- TaskQuantity: Se define la cantidad de task definition que va a tener ECS.
- VpcName: El nombre de la vpc que se va a asignar a la infraestructura.
- subnets: Las subnets que se asignan al ECS, deben ser mínimo 2 y deben estar en distinta zona de disponibilidad.
- subnetsLoadBalancer: Las subnets que se asignan al load balancer, deben ser mínimo 2 y deben estar en distinta zona de disponibilidad, pueden ser las mismas del parámetro "subnets" si es el caso.
- ProjectName: El nombre del proyecto al que se le asignará la infraestructura de AWS, no debe contener espacios.
CodePipeline
[
{
"ParameterKey": "CodeCommitName",
"ParameterValue": "repositorioaws",
"Description": "Nombre del repositorio CodeCommit"
},
{
"ParameterKey": "BranchRepository",
"ParameterValue": "develop",
"Description": "Branch a utilizar opciones: develop ó master"
},
{
"ParameterKey": "CodePipelineName",
"ParameterValue": "dev-pipeline",
"Description": "Nombre del Codepipeline debe ser unico en la cuenta AWS"
},
{
"ParameterKey": "Environment",
"ParameterValue": "development",
"Description": "El ambiente del ECS opciones: development ó production"
},
{
"ParameterKey": "ProjectName",
"ParameterValue": "aplicacion",
"Description": "El nombre del proyecto que va a tener asociado el Codepipeline"
},
{
"ParameterKey": "CodeBuildName",
"ParameterValue": "build-aplicacion",
"Description": "Nombre del Codebuild debe ser unico en la cuenta AWS"
},
{
"ParameterKey": "S3CodePipeline",
"ParameterValue": "codepipeline-us-east-1-731055110175",
"Description": "Nombre del S3 de la cuenta donde se crea el Codepipeline --s3 cuentas--: coreecommerce: codepipeline-us-east-1-111801213144 devops: codepipeline-us-east-1-731055110175 "
},
{
"ParameterKey": "CodePipelineRole",
"ParameterValue": "mercado",
"Description": "Nombre del role codepipeline destinado para la cli "
},
{
"ParameterKey": "CodeBuildRole",
"ParameterValue": "mercado",
"Description": "Nombre del role codebuild destinado para la cli "
}
]
Buildspec ECS
[
{
"ParameterKey": "ProjectSln",
"ParameterValue": "Ecommerce.Example.sln",
"Description": "Nombre del archivo sln del proyecto"
},
{
"ParameterKey": "ProjectName",
"ParameterValue": "Ecommerce.Example",
"Description": "Nombre del proyecto este se vera reflejado en SonarQube"
},
{
"ParameterKey": "ProjectPathTest",
"ParameterValue": "Ecommerce.Example.Test/Ecommerce.Example.Test.csproj",
"Description": "Ruta completa del archivo csproj del proyecto de test"
},
{
"ParameterKey": "ProjectTest",
"ParameterValue": "Ecommerce.Example.Test",
"Description": "Nombre de la carpeta base del proyecto de test"
},
{
"ParameterKey": "ProjectRestore",
"ParameterValue": "Ecommerce.Example.API/Ecommerce.Example.API.csproj",
"Description": "Ruta completa del archivo csproj al que se le debe instalar las depencias "
},
{
"ParameterKey": "SonarUrl",
"ParameterValue": "http://18.213.XXX.XX",
"Description": "Url del SonarQube"
},
{
"ParameterKey": "SonarToken",
"ParameterValue": "123456789XXXXXXXXXXX",
"Description": "Token del SonarQube"
}
]
Buildspec Lambda
[
{
"ParameterKey": "ProjectSln",
"ParameterValue": "Ecommerce.Example.sln",
"Description": "Nombre del archivo sln del proyecto"
},
{
"ParameterKey": "ProjectName",
"ParameterValue": "Ecommerce.Example",
"Description": "Nombre del proyecto este se vera reflejado en SonarQube"
},
{
"ParameterKey": "ProjectPathTest",
"ParameterValue": "Ecommerce.Example.Test/Ecommerce.Example.Test.csproj",
"Description": "Ruta completa del archivo csproj del proyecto de test"
},
{
"ParameterKey": "ProjectTest",
"ParameterValue": "Ecommerce.Example.Test",
"Description": "Nombre de la carpeta base del proyecto de test"
},
{
"ParameterKey": "SonarUrl",
"ParameterValue": "http://18.213.XXX.XX",
"Description": "Url del SonarQube"
},
{
"ParameterKey": "SonarToken",
"ParameterValue": "123456789XXXXXXXXXXX",
"Description": "Token del SonarQube"
},
{
"ParameterKey": "PROJECT_LAMBDA",
"ParameterValue": "Orders.Example.Lambda/src/Orders.Example.Lambda",
"Description": "Ruta completa del proyecto de la lambda"
},
{
"ParameterKey": "DIRECTORY_BASE_LAMBDA",
"ParameterValue": "Orders.Example.Lambda",
"Description": "Nombre de la carpeta base del proyecto de la lambda"
}
]