Personalice los nombres de los roles predeterminados mediante AWS CDK aspectos y trampillas de escape - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Personalice los nombres de los roles predeterminados mediante AWS CDK aspectos y trampillas de escape

SANDEEP SINGH y James Jacob, Amazon Web Services

Resumen

Este patrón muestra cómo personalizar los nombres predeterminados de los roles que se crean mediante componentes fijos. AWS Cloud Development Kit (AWS CDK) La personalización de los nombres de los roles suele ser necesaria si la organización tiene restricciones específicas basadas en las convenciones de nomenclatura. Por ejemplo, su organización puede establecer límites de permisos AWS Identity and Access Management (IAM) o políticas de control de servicios (SCPs) que requieran un prefijo específico en los nombres de las funciones. En esos casos, es posible que los nombres de los roles predeterminados generados por AWS CDK las construcciones no cumplan estas convenciones y sea necesario modificarlos. Este patrón aborda esos requisitos mediante el uso de vías de escape y aspectos de AWS CDK. Utilice las vías de escape para definir los nombres de los roles personalizados y los aspectos para aplicar un nombre personalizado a todos los roles, a fin de garantizar el cumplimiento de las políticas y restricciones de la organización.

Requisitos previos y limitaciones

Requisitos previos 

Limitaciones

  • Los aspectos filtran los recursos en función de los tipos de recursos, por lo que todos los roles comparten el mismo prefijo. Si necesita prefijos de rol diferentes para roles distintos, es necesario aplicar filtros adicionales en función de otras propiedades. Por ejemplo, para asignar distintos prefijos a los roles que están asociados a AWS Lambda funciones, puede filtrar por atributos o etiquetas de rol específicos y aplicar un prefijo para los roles relacionados con Lambda y un prefijo diferente para los demás roles.

  • Los nombres de los roles de IAM tienen una longitud máxima de 64 caracteres, por lo que los nombres de los roles modificados deben recortarse para cumplir con esta restricción.

  • Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para conocer la disponibilidad de las regiones, consulte Servicios de AWS by Region. Para los puntos de conexión específicos, consulte la página Service endpoints and quotas y elija el enlace del servicio.

Arquitectura

Pila de tecnología de destino

  • AWS CDK

  • AWS CloudFormation

Arquitectura de destino

Arquitectura para usar vías de escape y aspectos para personalizar los nombres de los roles asignados por AWS CDK.
  • Una AWS CDK aplicación consta de una o más CloudFormation pilas, que se sintetizan e implementan para administrar AWS los recursos.

  • Para modificar una propiedad de un recurso AWS CDK administrado que no esté expuesta por una construcción de capa 2 (L2), se utiliza una vía de escape para anular las CloudFormation propiedades subyacentes (en este caso, el nombre de la función) y un aspecto para aplicar la función a todos los recursos de la AWS CDK aplicación durante el proceso de síntesis de la pila. AWS CDK

Tools (Herramientas)

Servicios de AWS

  • AWS Cloud Development Kit (AWS CDK)es un marco de desarrollo de software que le ayuda a definir y aprovisionar la Nube de AWS infraestructura en el código.

  • AWS CDK La interfaz de línea de comandos (AWS CDK CLI) (también conocida como kit de AWS CDK herramientas) es un kit de desarrollo en la nube de línea de comandos que le ayuda a interactuar con su AWS CDK aplicación. El cdk comando CLI es la herramienta principal para interactuar con AWS CDK la aplicación. Ejecuta tu aplicación, consulta el modelo de aplicación que has definido y produce e implementa las CloudFormation plantillas generadas por el. AWS CDK

  • CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y administrarlos a lo largo de su ciclo de vida en todas Cuentas de AWS las regiones.

Repositorio de código

El código fuente y las plantillas de este patrón están disponibles en el repositorio GitHub CDK Aspects Override.

Prácticas recomendadas

Consulte las mejores prácticas para usar el AWS CDK in TypeScript para crear proyectos de IaC en el sitio web de la Guía AWS prescriptiva.

Epics

TareaDescripciónHabilidades requeridas

Instale la AWS CDK CLI.

Para instalar la AWS CDK CLI globalmente, ejecute el comando:

npm install -g aws-cdk
AWS DevOps

Verificar la versión.

Ejecute el comando:

cdk --version

Confirme que está utilizando la versión 2 de la AWS CDK CLI.

AWS DevOps

Inicie el AWS CDK entorno.

Antes de implementar las CloudFormation plantillas, prepare la cuenta Región de AWS que desea usar. Ejecute el comando:

cdk bootstrap <account>/<Region>

Para obtener más información, consulte el proceso de AWS CDK arranque en la documentación. AWS

AWS DevOps
TareaDescripciónHabilidades requeridas

Configure el proyecto.

  1. Clona el GitHub repositorio de este patrón en tu computadora local:

    git clone https://github.com/aws-samples/cdk-aspects-override
  2. Vaya al directorio del proyecto en el equipo local.

  3. Instale las dependencias del proyecto:

    npm ci
AWS DevOps

Implemente pilas con los nombres de rol predeterminados asignados por AWS CDK.

Implemente dos CloudFormation pilas (ExampleStack1yExampleStack2) que contengan las funciones de Lambda y sus funciones asociadas:

npm run deploy:ExampleAppWithoutAspects

El código no transfiere explícitamente las propiedades de los roles, por lo que los nombres de los roles los construirá AWS CDK.

Para obtener un ejemplo de resultado, consulte la sección Información adicional.

AWS DevOps

Implemente pilas con aspectos.

En este paso, se aplica un aspecto que impone una convención de nombres de roles añadiendo un prefijo a todos los roles de IAM que se implementan en el proyecto. AWS CDK El aspecto se define en el archivo lib/aspects.ts. El aspecto utiliza una vía de escape para anular el nombre del rol mediante la adición de un prefijo. El aspecto se aplica a las pilas del archivo bin/app-with-aspects.ts. En este ejemplo, el prefijo del nombre del rol es dev-unicorn.

  1. Edite el archivo bin/app-with-aspects.ts.

  2. En el archivo, actualice la variable ROLE_NAME_PREFIX con el prefijo dev-unicorn:

    const app = new cdk.App(); // Define a prefix for the role names const ROLE_NAME_PREFIX = 'dev-unicorn'; // Instantiate the RoleNamingConventionAspect with the desired prefix const roleNamingConventionAspect = new RoleNamingConventionAspect(ROLE_NAME_PREFIX);
  3. Implemente la AWS CDK aplicación con los siguientes aspectos:

    npm run deploy:ExampleAppWithAspects

Para obtener un ejemplo de resultado, consulte la sección Información adicional.

AWS DevOps
TareaDescripciónHabilidades requeridas

Elimine sus AWS CloudFormation pilas.

Cuando termine este patrón, ejecute el comando siguiente para eliminar los recursos y evitar incurrir en costos adicionales:

cdk destroy --all -f && cdk --app npx ts-node bin/app-with-aspects.ts' destroy --all -f
AWS DevOps

Resolución de problemas

ProblemaSolución

Tiene problemas al utilizar el AWS CDK.

Consulte Solución de AWS CDK problemas comunes en la AWS CDK documentación.

Recursos relacionados

Información adicional

Nombres de roles creados por CloudFormation sin aspectos

Outputs: ExampleStack1WithoutAspects.Function1RoleName = example-stack1-without-as-Function1LambdaFunctionSe-y7FYTY6FXJXA ExampleStack1WithoutAspects.Function2RoleName = example-stack1-without-as-Function2LambdaFunctionSe-dDZV4rkWqWnI ... Outputs: ExampleStack2WithoutAspects.Function3RoleName = example-stack2-without-as-Function3LambdaFunctionSe-ygMv49iTyMq0

Nombres de rol creados por CloudFormation With Aspects

Outputs: ExampleStack1WithAspects.Function1RoleName = dev-unicorn-Function1LambdaFunctionServiceRole783660DC ExampleStack1WithAspects.Function2RoleName = dev-unicorn-Function2LambdaFunctionServiceRole2C391181 ... Outputs: ExampleStack2WithAspects.Function3RoleName = dev-unicorn-Function3LambdaFunctionServiceRole4CAA721C