Pattern for Cloud9 EC2 environment and SSM Document.
Project description
custom-cloud9-ssm
---All classes are under active development and subject to non-backward compatible changes or removal in any future version. These are not subject to the Semantic Versioning model. This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.
Language | Package |
---|---|
Python | cdk_use_cases.custom_cloud9_ssm |
Typescript | @cdk-use-cases/custom-cloud9-ssm |
This pattern implements a Cloud9 EC2 environment, applying an initial configuration to the EC2 instance using an SSM Document. It includes helper methods to add steps and parameters to the SSM Document and to resize the EBS volume of the EC2 instance to a given size.
Here is a minimal deployable pattern definition in Typescript:
new CustomCloud9Ssm(stack, 'CustomCloud9Ssm');
You can view other usage examples.
Initializer
new CustomCloud9Ssm(scope: Construct, id: string, props: CustomCloud9SsmProps);
Parameters
- scope
Construct
- id
string
- props
CustomCloud9SsmProps
Pattern Construct Props
Name | Type | Description |
---|---|---|
ssmDocumentProps? | ssm.CfnDocumentProps | Optional configuration for the SSM Document. |
cloud9Ec2Props? | cloud9.CfnEnvironmentEC2Props | Optional configuration for the Cloud9 EC2 environment. |
Pattern Properties
Name | Type | Description |
---|---|---|
ec2Role | iam.Role | The IAM Role that is attached to the EC2 instance launched with the Cloud9 environment to grant it permissions to execute the statements in the SSM Document. |
Pattern Methods
public addDocumentSteps(steps: string): void
Description
Adds one or more steps to the content of the SSM Document.
Parameters
- steps
string
: YAML formatted string containing one or more steps to be added to themainSteps
section of the SSM Document.
public addDocumentParameters(parameters: string): void
Description
Adds one or more parameters to the content of the SSM Document.
Parameters
- parameters
string
: YAML formatted string containing one or more parameters to be added to theparameters
section of the SSM Document.
public resizeEBSTo(size: number): void
Description
Adds a step to the SSM Document content that resizes the EBS volume of the EC2 instance. Attaches the required policies to ec2Role
.
Parameters
- size
number
: size in GiB to resize the EBS volume to.
public deployCDKProject(url: string, stackName: string = ''): void
Description
Adds a step to the SSM Document content that deploys a CDK project from its tar compressed version.
Parameters
- url
string
: from where to download the file using the wget command - stackName
string
: name of the stack to deploy
Default settings
Out of the box implementation of the Construct without any override will set the following defaults:
Cloud9 EC2 environment
-
Creates a Cloud9 EC2 environment with:
- T3.large instance type.
- Image id amazonlinux-2023-x86_64.
SSM Document
-
Creates an SSM Document with:
- A step that installs jq.
- A step that resizes the EBS volume of the EC2 instance to 100 GiB.
Architecture
Other usage examples
Using default configuration and adding steps
import {CustomCloud9Ssm} from '@cdk-use-cases/custom-cloud9-ssm';
// Define a step that installs boto3
const boto3Step = `
- name: InstallBoto3
action: aws:runShellScript
inputs:
runCommand:
- "#!/bin/bash"
- sudo pip install boto3
`
// Create the custom environment
let customCloud9 = new CustomCloud9Ssm(this, 'CustomCloud9Ssm')
// Add your step to the default document configuration
customCloud9.addDocumentSteps(boto3Step)
Providing props for the SSM Document and resizing the EBS volume
import {CustomCloud9Ssm, CustomCloud9SsmProps} from '@cdk-use-cases/custom-cloud9-ssm';
const yaml = require('yaml')
// Define the content of the document
const content = `
schemaVersion: '2.2'
description: Bootstrap Cloud9 EC2 instance
mainSteps:
- name: InstallBoto3
action: aws:runShellScript
inputs:
runCommand:
- "#!/bin/bash"
- sudo pip install boto3
`
// Specify the configuration for the SSM Document
const cloud9Props: CustomCloud9SsmProps = {
ssmDocumentProps: {
documentType: 'Command',
content: yaml.parse(content),
name: 'MyDocument'
}
}
// Create the custom environment
let customCloud9 = new CustomCloud9Ssm(this, 'CustomCloud9Ssm', cloud9Props)
// Add a step to resize the EBS volume to 50GB
customCloud9.resizeEBSTo(50)
© Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cdk-use-cases.custom-cloud9-ssm-1.4.0.tar.gz
.
File metadata
- Download URL: cdk-use-cases.custom-cloud9-ssm-1.4.0.tar.gz
- Upload date:
- Size: 290.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eccf1cae16f6aa053e0fc409bf2915268c522aaabbeebcb6e644ebd9eb70e2fc |
|
MD5 | c756d6d35ee83b93323db37fe8f1aadf |
|
BLAKE2b-256 | de8fca6adc0217436eaa3dd32746021a4e58fc36a4c4e59ad118b46356d72d8b |
File details
Details for the file cdk_use_cases.custom_cloud9_ssm-1.4.0-py3-none-any.whl
.
File metadata
- Download URL: cdk_use_cases.custom_cloud9_ssm-1.4.0-py3-none-any.whl
- Upload date:
- Size: 289.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e357dcb22f35048cc29fd982287d6f78a650f22e601a9df7145a8a12308ed41 |
|
MD5 | 1d5c736dadf0809274bded2c36f0eab1 |
|
BLAKE2b-256 | 7209d978d179843911ee66d67c40a1b8690b63f0e0d4db5e67abc671db27054f |