Existing CloudFormation Architecture Visualization
Stackery can be used to quickly visualize existing AWS CloudFormation YAML infrastructure-as-code architectures.
Visualizing CloudFormation Architecture Templates in Stackery
1. Create a Stackery account
If you haven't already, sign up for a Stackery account.
Complete or skip through the getting started process (you'll only need to link your Git provider to visualize a template), and click "Get Started" to finish the setup.
2. Add a new stack
The next step is to create a blank stack:
- Navigate to Stacks
- Click the Add a Stack button in the top right corner
3. Paste in your serverless configuration
When you clicked Add Stack in the previous step, you were redirected to an empty canvas in the Visual Editor. Here we'll be using the Template Editor to paste in our existing configuration.
To get you started, you can use the following template.yaml
configuration file from our serverless nodeJS CRUD demo:
AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: Stackery Serverless CRUD API Demo Resources: function48A53742: Type: AWS::Serverless::Function Properties: FunctionName: !Sub ${AWS::StackName}-function48A53742 Description: !Sub - Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName} - ResourceName: listUsers CodeUri: src/function48A53742 Handler: index.handler Runtime: nodejs12.x MemorySize: 3008 Timeout: 30 Tracing: Active Policies: - AWSXrayWriteOnlyAccess - DynamoDBCrudPolicy: TableName: !Ref table6E08C5D Environment: Variables: TABLE_NAME: !Ref table6E08C5D TABLE_ARN: !GetAtt table6E08C5D.Arn Events: api3FEE112A: Type: Api Properties: Path: /users Method: GET RestApiId: !Ref api3FEE112A Metadata: StackeryName: listUsers api3FEE112A: Type: AWS::Serverless::Api Properties: Name: !Sub - ${ResourceName} From Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} - ResourceName: /users StageName: !Ref StackeryEnvironmentAPIGatewayStageName DefinitionBody: swagger: '2.0' info: {} paths: /users: get: x-amazon-apigateway-integration: httpMethod: POST type: aws_proxy uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${function48A53742.Arn}/invocations responses: {} post: x-amazon-apigateway-integration: httpMethod: POST type: aws_proxy uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${function1D0BF340.Arn}/invocations responses: {} /users/{id}: get: x-amazon-apigateway-integration: httpMethod: POST type: aws_proxy uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${function6871BEC5.Arn}/invocations responses: {} put: x-amazon-apigateway-integration: httpMethod: POST type: aws_proxy uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${functionC2148022.Arn}/invocations responses: {} delete: x-amazon-apigateway-integration: httpMethod: POST type: aws_proxy uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${function5A53E646.Arn}/invocations responses: {} EndpointConfiguration: REGIONAL Metadata: StackeryName: /users function5A53E646: Type: AWS::Serverless::Function Properties: FunctionName: !Sub ${AWS::StackName}-function5A53E646 Description: !Sub - Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName} - ResourceName: deleteUser CodeUri: src/function5A53E646 Handler: index.handler Runtime: nodejs12.x MemorySize: 3008 Timeout: 30 Tracing: Active Policies: - AWSXrayWriteOnlyAccess - DynamoDBCrudPolicy: TableName: !Ref table6E08C5D Environment: Variables: TABLE_NAME: !Ref table6E08C5D TABLE_ARN: !GetAtt table6E08C5D.Arn Events: api3FEE112A: Type: Api Properties: Path: /users/{id} Method: DELETE RestApiId: !Ref api3FEE112A Metadata: StackeryName: deleteUser function1D0BF340: Type: AWS::Serverless::Function Properties: FunctionName: !Sub ${AWS::StackName}-function1D0BF340 Description: !Sub - Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName} - ResourceName: createUser CodeUri: src/function1D0BF340 Handler: index.handler Runtime: nodejs12.x MemorySize: 3008 Timeout: 30 Tracing: Active Policies: - AWSXrayWriteOnlyAccess - DynamoDBCrudPolicy: TableName: !Ref table6E08C5D Environment: Variables: TABLE_NAME: !Ref table6E08C5D TABLE_ARN: !GetAtt table6E08C5D.Arn Events: api3FEE112A: Type: Api Properties: Path: /users Method: POST RestApiId: !Ref api3FEE112A Metadata: StackeryName: createUser functionC2148022: Type: AWS::Serverless::Function Properties: FunctionName: !Sub ${AWS::StackName}-functionC2148022 Description: !Sub - Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName} - ResourceName: updateUser CodeUri: src/functionC2148022 Handler: index.handler Runtime: nodejs12.x MemorySize: 3008 Timeout: 30 Tracing: Active Policies: - AWSXrayWriteOnlyAccess - DynamoDBCrudPolicy: TableName: !Ref table6E08C5D Environment: Variables: TABLE_NAME: !Ref table6E08C5D TABLE_ARN: !GetAtt table6E08C5D.Arn Events: api3FEE112A: Type: Api Properties: Path: /users/{id} Method: PUT RestApiId: !Ref api3FEE112A Metadata: StackeryName: updateUser function6871BEC5: Type: AWS::Serverless::Function Properties: FunctionName: !Sub ${AWS::StackName}-function6871BEC5 Description: !Sub - Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName} - ResourceName: getUser CodeUri: src/function6871BEC5 Handler: index.handler Runtime: nodejs12.x MemorySize: 3008 Timeout: 30 Tracing: Active Policies: - AWSXrayWriteOnlyAccess - DynamoDBCrudPolicy: TableName: !Ref table6E08C5D Environment: Variables: TABLE_NAME: !Ref table6E08C5D TABLE_ARN: !GetAtt table6E08C5D.Arn Events: api3FEE112A: Type: Api Properties: Path: /users/{id} Method: GET RestApiId: !Ref api3FEE112A Metadata: StackeryName: getUser table6E08C5D: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: id KeyType: HASH ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES TableName: !Sub ${AWS::StackName}-table6E08C5D Metadata: StackeryName: Users Parameters: StackeryStackTagName: Type: String Description: Stack Name (injected by Stackery at deployment time) StackeryEnvironmentTagName: Type: String Description: Environment Name (injected by Stackery at deployment time) StackeryEnvironmentAPIGatewayStageName: Type: String Description: Environment name used for API Gateway Stage names (injected by Stackery at deployment time)
Click to copy the above code, and replace the starter configuration code in the Template Editor with it. When you click back to the Visual Editor, you will see a visual representation of each of the cloud resources included in the configuration file.
Examples to get Started
Stackery lets you visualize any valid AWS SAM or CloudFormation template file.
If you're not sure where to get started, or just want to try out Stackery with an existing serverless app, there are several places where you can find examples:
- Stackery's own GitHub repo, which includes the repositories of all of our stack blueprints as well as our tutorials
- The AWS Serverless Application Model example app repository