1.0.12 • Published 4 years ago

exito-aws v1.0.12

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

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

alt text

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

alt text

y luego se visualiza las credenciales, damos clic en Copy para obtener el dato necesario

alt text

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 alt text
  • En archivo de parametros ingresamos el nombre del archivo json que debe estar en la ruta de la linea de comandos alt text
  • En esta opción se ingresa el Access key ID de la cuenta de AWS alt text
  • En esta opción se ingresa el Secret access key de la cuenta de AWS alt text
  • Cuando los datos se ingresen correctamente la CLI mostrará el siguiente mensaje alt text
  • Si la infraestructura se crea correctamente mostrará el siguiente mensaje alt text

  • 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"
  }
]
1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago