Package Exports
- @amazon-codecatalyst/blueprint-component.environments
- @amazon-codecatalyst/blueprint-component.environments/lib/index.js
- @amazon-codecatalyst/blueprint-component.environments/package.json
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@amazon-codecatalyst/blueprint-component.environments) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
import {...} from '@amazon-codecatalyst/blueprint-component.environments'The environment component can be found here.
The blueprint wizard is dynamically generated from the Options interface exposed through the
[[wizard|https://github.com/aws/codecatalyst-blueprints/wiki/Wizard]]. Blueprints supports generating UI components from exposed types.
Example 1: Creating development environments
export interface Options extends ParentOptions {
...
myNewEnvironment: EnvironmentDefinition<{
thisIsMyFirstAccountConnection: AccountConnection<{
thisIsARole: Role<['lambda', 's3', 'dynamo']>;
}>;
}>;
}This allows authors to deploy their applications to the cloud.
The above interface will generate a UI component that asks for a new Environment myNewEnvironment with a single account connection
thisIsMyFirstAccountConnection and a role on that account connection thisIsARole with ['lambda', 's3', 'dynamo'] as the minimum required role
capabilities. Since not all users will have account connections, it is important to check for the case where a user does not connect an account, and
does not connect an account with a role either. This is reflected accurately in the type definition.
Roles can also be annotated with @inlinePolicies per
the documentation here.
The environment component requires a name and an environmentType. The minimal required default shape looks like this:
{
...
"myNewEnvironment": {
"name": "myProductionEnvironment",
"environmentType": "PRODUCTION"
},
}The UI component will then prompt the user for various fields and as they fill in those fields the blueprint will get a fully expanded shape. It is
sometimes helpful to include the full 'mock' (see the below examples) in the defaults.json for testing and development purposes.
Example 2: A simple mock interface
{
...
"thisIsMyEnvironment": {
"name": "myProductionEnvironment",
"environmentType": "PRODUCTION",
"thisIsMySecondAccountConnection": {
"id": "12345678910",
"name": "my-account-connection-name",
"secondAdminRole": {
"arn": "arn:aws:iam::12345678910:role/ConnectedCodecatalystRole",
"name": "ConnectedCodecatalystRole",
"capabilities": [
"lambda",
"s3",
"dynamo"
]
}
}
}
}Example 3: A more complicated mock interface
export interface Options extends ParentOptions {
/**
* The name of an environment
* @displayName This is a Environment Name
* @collapsed
*/
thisIsMyEnvironment: EnvironmentDefinition<{
/**
* blah blah blah some comments about the account that i'm deploying 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']>;
}>;
/**
* blah blah blah some comments about the account that i'm deploying 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']>;
}>;
}>;
}Example 4: A complete mock interface
{
...
"thisIsMyEnvironment": {
"name": "my-production-environment",
"environmentType": "PRODUCTION",
"thisIsMySecondAccountConnection": {
"id": "12345678910",
"name": "my-connected-account",
"secondAdminRole": {
"name": "LambdaCodecatalystRole",
"arn": "arn:aws:iam::12345678910:role/LambdaCodecatalystRole",
"capabilities": [
"admin",
"lambda",
"s3",
"cloudfront"
]
},
"secondLambdaRole": {
"name": "LambdaCodecatalystRole",
"arn": "arn:aws:iam::12345678910:role/LambdaCodecatalystRole",
"capabilities": [
"lambda",
"s3"
]
}
},
"thisIsMyFirstAccountConnection": {
"id": "12345678910",
"name": "my-connected-account",
"adminRole": {
"name": "LambdaCodecatalystRole",
"arn": "arn:aws:iam::12345678910:role/LambdaCodecatalystRole",
"capabilities": [
"admin",
"lambda",
"s3",
"cloudfront"
]
},
"lambdaRole": {
"name": "LambdaCodecatalystRole",
"arn": "arn:aws:iam::12345678910:role/LambdaCodecatalystRole",
"capabilities": [
"lambda",
"s3"
]
}
}
},
}