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" ] } } }, }