Adición de componentes del entorno a un esquema - Amazon CodeCatalyst

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.

Adición de componentes del entorno a un esquema

El asistente de esquemas personalizados se genera dinámicamente desde la interfaz Options expuesta a través del asistente. Los esquemas permiten generar componentes de la interfaz de usuario (IU) a partir de tipos expuestos.

Para importar los componentes del entorno de Amazon CodeCatalyst blueprints

Añada lo siguiente al archivo blueprint.ts:

import {...} from '@amazon-codecatalyst/codecatalyst-environments'

Creación de entornos de desarrollo

En el siguiente ejemplo se muestra cómo implementar la aplicación en la nube:

export interface Options extends ParentOptions { ... myNewEnvironment: EnvironmentDefinition{ thisIsMyFirstAccountConnection: AccountConnection{ thisIsARole: Role['lambda', 's3', 'dynamo']; }; }; }

La interfaz genera un componente de la interfaz de usuario que solicita un nuevo entorno (myNewEnvironment) con una conexión de cuenta única (thisIsMyFirstAccountConnection). También se genera un rol en la conexión de cuenta (thisIsARole) con ['lambda', 's3', 'dynamo'] como las funcionalidades de rol mínimas requeridas. No todos los usuarios tienen conexiones de cuenta, por lo que debería comprobar cuándo un usuario no se conecta a una cuenta o no se conecta a una cuenta con un rol. Los roles también se pueden anotar con @inlinePolicies. Para obtener más información, consulte @inlinePolicy. /path/to/policy/file.json.

El componente de entorno requiere un name y environmentType. El siguiente código es la forma predeterminada mínima requerida:

{ ... "myNewEnvironment": { "name": "myProductionEnvironment", "environmentType": "PRODUCTION" }, }

A continuación, el componente de la interfaz de usuario le solicitará varios campos. A medida que rellene los campos, el esquema irá adquiriendo una forma totalmente expandida. Puede resultarle útil incluir el esquema simulado completo del archivo defaults.json para fines de prueba y desarrollo.

Lista de entornos

Al especificar un tipo de matriz EnvironmentDefinition se generará una lista de entornos en la interfaz de usuario del asistente.

export interface Options extends ParentOptions { ... /** @showName readOnly */ myEnvironments: EnvironmentDefinition<{ thisIsMyFirstAccountConnection: AccountConnection<{ thisIsARole: Role<['lambda', 's3', 'dynamo']>; }>; }>[]; }

En el siguiente ejemplo se muestran los valores predeterminados para una lista de entornos:

{ ... "myEnvironments": [ { "name": "myProductionEnvironment", "environmentType": "PRODUCTION" }, { "name": "myDevelopmentEnvironment", "environmentType": "DEVELOPMENT" }, ] }

Ejemplos de interfaces simuladas

Interfaz simulada simple

{ ... "thisIsMyEnvironment": { "name": "myProductionEnvironment", "environmentType": "PRODUCTION", "thisIsMySecondAccountConnection": { "id": "12345678910", "name": "my-account-connection-name", "secondAdminRole": { "arn": "arn:aws:iam::12345678910:role/ConnectedQuokkaRole", "name": "ConnectedQuokkaRole", "capabilities": [ "lambda", "s3", "dynamo" ] } } } }

Interfaz simulada compleja

export interface Options extends ParentOptions { /** * The name of an environment * @displayName This is a Environment Name * @collapsed */ thisIsMyEnvironment: EnvironmentDefinition{ /** * comments about the account that is being deployed into * @displayName This account connection has an overriden name * @collapsed */ thisIsMyFirstAccountConnection: AccountConnection{ /** * Blah blah some information about the role that I expect * e.g. here's a copy-pastable policy: [to a link] * @displayName This role has an overriden name */ adminRole: Role['admin', 'lambda', 's3', 'cloudfront']; /** * Blah blah some information about the second role that I expect * e.g. here's a copy-pastable policy: [to a link] */ lambdaRole: Role['lambda', 's3']; }; /** * comments about the account that is being deployed into */ thisIsMySecondAccountConnection: AccountConnection{ /** * Blah blah some information about the role that I expect * e.g. here's a copy-pastable policy: [to a link] */ secondAdminRole: Role['admin', 'lambda', 's3', 'cloudfront']; /** * Blah blah some information about the second role that I expect * e.g. here's a copy-pastable policy: [to a link] */ secondLambdaRole: Role['lambda', 's3']; }; }; }

Interfaz simulada completa

{ ... "thisIsMyEnvironment": { "name": "my-production-environment", "environmentType": "PRODUCTION", "thisIsMySecondAccountConnection": { "id": "12345678910", "name": "my-connected-account", "secondAdminRole": { "name": "LambdaQuokkaRole", "arn": "arn:aws:iam::12345678910:role/LambdaQuokkaRole", "capabilities": [ "admin", "lambda", "s3", "cloudfront" ] }, "secondLambdaRole": { "name": "LambdaQuokkaRole", "arn": "arn:aws:iam::12345678910:role/LambdaQuokkaRole", "capabilities": [ "lambda", "s3" ] } }, "thisIsMyFirstAccountConnection": { "id": "12345678910", "name": "my-connected-account", "adminRole": { "name": "LambdaQuokkaRole", "arn": "arn:aws:iam::12345678910:role/LambdaQuokkaRole", "capabilities": [ "admin", "lambda", "s3", "cloudfront" ] }, "lambdaRole": { "name": "LambdaQuokkaRole", "arn": "arn:aws:iam::12345678910:role/LambdaQuokkaRole", "capabilities": [ "lambda", "s3" ] } } }, }