Skip to content

Commit f2cec55

Browse files
authored
Merge pull request #194 from awslabs/v1.1.0
v1.1.0 release
2 parents 3ba4fe7 + f96c697 commit f2cec55

File tree

371 files changed

+37911
-28520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

371 files changed

+37911
-28520
lines changed

CHANGELOG.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,47 @@
11
# Change Log
2+
23
All notable changes to this project are documented in this file.
34

45
Based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
56
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
67

8+
## [1.1.x] - 2021-06-21
9+
### Added
10+
11+
- Support for newer ECS task ARNs
12+
- Version number to UI side panel to show which version of Perspective is deployed.
13+
- Ability to select Elasticsearch instance type on deploy ([#53](https://github.com/awslabs/aws-perspective/issues/53))
14+
- Ability to update Perspective in-place rather than re-installing ([#86](https://github.com/awslabs/aws-perspective/issues/86))
15+
- Support for Redshift resources
16+
- Upload a CSV containing Regions during the import process
17+
- "Costs & Usage" component in the UI.
18+
- "Cost report" option on the canvas to see a breakdown of the costs for a workload
19+
20+
### Changed
21+
22+
- Fix API Gateway logging issue ([#81](https://github.com/awslabs/aws-perspective/issues/81))
23+
- Fix access log bucket deletion issue ([#30](https://github.com/awslabs/aws-perspective/issues/30))
24+
- Fix filters issue ([#46](https://github.com/awslabs/aws-perspective/issues/46))
25+
- Fix lambda layer files that were erroneously in .gitignore ([#64](https://github.com/awslabs/aws-perspective/issues/64))
26+
- Fix unnecessary ConfigAggregator deployment in account import template ([#73](https://github.com/awslabs/aws-perspective/issues/73))
27+
- Fix API Gateway logging issue ([#81](https://github.com/awslabs/aws-perspective/issues/81))
28+
- Show resource names instead of IDs where possible ([#90](https://github.com/awslabs/aws-perspective/pull/90))
29+
- Fixed README examples for using the API ([#92](https://github.com/awslabs/aws-perspective/issues/92))
30+
- Fixed cost bucket not being removed on deletion ([#97](https://github.com/awslabs/aws-perspective/issues/97))
31+
- Fixed Docker Hub rate limit for downloading images. ([#93](https://github.com/awslabs/aws-perspective/issues/93))
32+
- Enable buildspec.yaml customization ([#111](https://github.com/awslabs/aws-perspective/issues/111))
33+
- Fix IAM permissions when checking for duplicate ECS tasks ([#112](https://github.com/awslabs/aws-perspective/issues/112))
34+
- Increased zoom on canvas to visualize larger diagrams
35+
- Cost data is now retrieved from a new API that queries Cost and Usage Reports via Athena (manual steps to set up are still required)
36+
- Improved the "Getting started" wizard to help new users.
37+
- Improved filtering to allow user to include or exclude resources of a certain type.
38+
739
## [1.0.1] - 2020-09-29
840

941
- Added 'Save Template' option when importing new accounts and Regions. This removes the need to enable public access objects in the AmplifyStorageBucket
1042
- Altered wording around visibility levels when saving architecture diagrams. 'You' and 'All users' is now used instead of 'public' and 'private'.
1143
- Fixed bug that was causing import configurations to become corrupt when an account or Region was deleted by the UI if a discovery was in progress.
12-
- Fixed bug leading to invalid JSON being generated in CloudFormation templates for importing accounts and Regions.
44+
- Fixed bug leading to invalid JSON being generated in CloudFormation templates for importing accounts and Regions.
1345
- Fixed Dependabot issues raised by GitHub
1446
- Fixed bug leading to RestApi icons not being displayed in Firefox.
1547
- Added support for Amazon QLDB Ledgers.

README.md

Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1-
# AWS Perspective
1+
# AWS Perspective (v1.1.0)
22

33
AWS Perspective is a tool that quickly visualizes AWS Cloud workloads as architecture diagrams. You can use the solution to build, customize, and share detailed workload visualizations based on live data from AWS. This solution works by maintaining an inventory of the AWS resources across your accounts and Regions, mapping relationships between them, and displaying them in a web user interface (web UI).
44

5+
v1.1.0 brings a new feature that uses AWS Cost & Usage Reports (AWS CUR) to help you identify AWS resources that have incurred a cost. You can build architecture diagrams displaying this cost information and generate Cost Reports which graph the overall cost of your workload over a configurable time period. These reports can be exported in CSV format.
6+
7+
The new release includes many UX improvements among them a Grouped Resources ** view which displays an inventory of your workloads. Resource type coverage has also been improved with Perspective now supporting your Amazon Redshift Clusters.
8+
9+
An update-in-place option has been added to further simplify the update process. Perspective will default to using Graviton instances where possible, resulting in up to a 20% reduction in running costs over the previous version.
10+
511
To find out more about AWS Perspective visit the [AWS Perspective Solution Page](https://aws.amazon.com/solutions/implementations/aws-perspective).
612

713
## Features
@@ -10,19 +16,23 @@ To find out more about AWS Perspective visit the [AWS Perspective Solution Page]
1016

1117
AWS Perspective lets you build, customize, and share detailed architecture diagrams. Perspective maintains an inventory of the AWS resources across your accounts and Regions, mapping relationships between them and displaying them in a web user interface (UI).
1218

13-
![Generating an architecture diagram.](/docs/screenshots/full-arch.png "An example of the architecture diagrams you can create")
19+
![Generating an architecture diagram.](/docs/screenshots/example-arch.png "An example of the architecture diagrams you can create")
1420

15-
### Search across Accounts and Regions
21+
### Query AWS Cost & Usage Reports (CURs)
1622

17-
The search feature lets you use basic information e.g. resource name, Tag name, or IP address to locate the resources you are interested in.
23+
The cost query builder lets you locate AWS resources and services that may have incurred a cost. The estimated cost data is automatically calculated for the time period specified and displays on your architecture diagrams.
24+
25+
You can generate a cost report for your architecture diagrams that contains an overview of the estimated cost and export them as CSV.
1826

19-
![Searching for an IP will bring back resources you might be interested in.](/docs/screenshots/ip-search.png "Searching for IP address")
27+
![View Cost & Usage Report data.](/docs/screenshots/cost-dialog.png "An example of the Cost & Usage dialog")
2028

2129
### Explore your AWS Resources
2230

2331
Explore resources provisioned across your accounts and Regions using the resource directory. It contains all the resources Perspective has discovered. You can start building your architecture diagrams with a single click of a resource.
2432

25-
![See the resource directory, detailing each resource that we have discovered.](/docs/screenshots/resource-directory.png "Using the resource directory")
33+
The search feature lets you use basic information e.g. resource name, Tag name, or IP address to locate the resources you are interested in.
34+
35+
![Searching by resource type e.g. ::RDS will bring back RDS resources.](/docs/screenshots/search.png "Searching for RDS resources")
2636

2737
### Save & export architecture diagrams
2838

@@ -46,6 +56,9 @@ To find out more about AWS Perspective visit our [AWS Solutions](https://aws.ama
4656
| Europe (Ireland) (eu-west-1) | [Launch](https://console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/create/template?stackName=aws-perspective&templateURL=https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) | [Link](https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) |
4757
| Europe (London) (eu-west-2) | [Launch](https://console.aws.amazon.com/cloudformation/home?region=eu-west-2#/stacks/create/template?stackName=aws-perspective&templateURL=https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) | [Link](https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) |
4858
| Europe (Frankfurt) (eu-central-1)| [Launch](https://console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/create/template?stackName=aws-perspective&templateURL=https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) | [Link](https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) |
59+
| Europe (Paris) (eu-west-3)| [Launch](https://console.aws.amazon.com/cloudformation/home?region=eu-west-3#/stacks/create/template?stackName=aws-perspective&templateURL=https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) | [Link](https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) |
60+
| Europe (Stockholm) (eu-north-1)| [Launch](https://console.aws.amazon.com/cloudformation/home?region=eu-north-1#/stacks/create/template?stackName=aws-perspective&templateURL=https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) | [Link](https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) |
61+
| South America (Sao Paulo) (sa-east-1) | [Launch](https://console.aws.amazon.com/cloudformation/home?region=sa-east-1#/stacks/create/template?stackName=aws-perspective&templateURL=https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) | [Link](https://solutions-reference.s3.amazonaws.com/aws-perspective/latest/aws-perspective.template) |
4962

5063
## Installation
5164

@@ -63,7 +76,7 @@ To submit an idea for a feature you would like to see implemented, please [creat
6376

6477
## Architecture
6578

66-
![Architecture diagram showing full set of deployment resources](/docs/architecture-diagrams/full-arch-diagram.png "Full architecture diagram")
79+
![Architecture diagram showing full set of deployment resources](/docs/architecture-diagrams/arch-diagram.png "Full architecture diagram")
6780

6881
AWS Perspective is deployed to your account using an AWS CloudFormation template consisting of six components. Following is a high level overview of the components. For additional details about each component, refer to the [Solution components guide](https://docs.aws.amazon.com/solutions/latest/aws-perspective/solution-components.html).
6982

@@ -73,7 +86,8 @@ The storage management component stores user preferences and saved architecture
7386

7487
The discovery component uses [AWS Config](http://aws.amazon.com/config) and AWS API calls to maintain an inventory of resource data from imported accounts and Regions, then stores its findings in the data componenet. This runs every 15 minutes as a container task on [AWS Fargate](http://aws.amazon.com/fargate/). The discovery component container image is built in the image deployment component using [AWS CodePipeline](http://aws.amazon.com/codepipeline/) and [AWS CodeBuild](http://aws.amazon.com/codebuild/).
7588

76-
The cost component processes [AWS Cost and Usage Reports](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html) (AWS CUR) to make cost data available in AWS Perspective. To use this feature, you must [create a report in AWS CUR](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html) to deliver the reports to the PerspectiveCostBucket Amazon S3 bucket. When an AWS CUR is delivered, it triggers an [AWS Lambda](http://aws.amazon.com/lambda) function to process the cost data and store it in an [Amazon DynamoDB](http://aws.amazon.com/dynamodb/) table. The data component queries this DynamoDB table to provide the costs associated with the individual resources for display in the web UI. If you do not create an AWS CUR, cost data will not be included in AWS Perspective architecture diagrams.
89+
The cost component processes [AWS Cost and Usage Reports](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html) (AWS CUR) to make cost data available in AWS Perspective. To use this feature, you must [create a report in AWS CUR](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html) to deliver the reports to the ```CostAndUsageReportBucket``` Amazon S3 bucket. When an AWS CUR is delivered, it triggers an [AWS Lambda](http://aws.amazon.com/lambda) function to trigger a AWS Glue Crawler that will update a table ready for Amazon Athena to query. You can query these AWS CURs via the Perspectie UI. You can bring in cost data from other accounts discoverable to Perspective by setting up a AWS CUR and setting up replication between the S3 bucket in the discoverable account and the ```CostAndUsageReportBucket```
90+
7791

7892
## Development
7993
### Directory structure
@@ -106,14 +120,14 @@ To develop locally, this `settings.js` file must be present.
106120

107121
### Running unit tests
108122

109-
```
123+
```sh
110124
cd ./deployment
111125
./run-unit-tests.sh
112126
```
113127

114128
### Running a local build
115129

116-
```
130+
```sh
117131
cd ./deployment
118132
./build-s3-dist.sh
119133
```
@@ -135,10 +149,10 @@ When you have made changes to the code, you can build it locally and upload the
135149
```touch local-deploy-script.sh```
136150
2. Copy the contents below and paste in local-deploy-script.sh. Substitute the value placeholders (marked with angle brackets) with your own values, then save the script.
137151

138-
```
152+
```sh
139153
#!/usr/bin/env bash
140154

141-
set -e
155+
set -euo pipefail
142156

143157
# The Region you wish to deploy to.
144158
AWS_REGION=<aws-region>
@@ -203,8 +217,11 @@ Parameters required by the template:
203217
* **OptOutOfSendingAnonymousUsageMetrics** - Yes/No depending on whether you are happy to send anonymous usage metrics back to AWS.
204218
* **CreateNeptuneReplica** - Yes/No depending on whether you want a read-replica created for Amazon Neptune. Note, that this will increase the cost of running the solution.
205219
* **NeptuneInstanceClass** - Select from a range of instance types that will be provisioned for the Amazon Neptune database. Note, the selection could increase the cost associated with running the solution.
206-
207-
**Note** - You will need to deploy in the same account and region as the S3 bucket.
220+
* **ElasticsearchInstanceType** - Select the instance type that will be provisioned for the Amazon ElasticSearch Domain.
221+
* **CreateAPIGatewayCloudWatchLogsRole** - If set to Yes, the solution creates a role and overwrites the existing APIGatewayCloudWatchLogsLogsRole property. Set to No if you already have an existing role set.
222+
* **AthenaWorkgroup** - The Workgroup that will be used to issue the Athena query when the Cost feature is enabled.
223+
224+
**Note** - You will need to deploy in the same account and region as the S3 bucket that the deployment artefacts are uploaded to.
208225

209226

210227
## Web API Examples
@@ -229,13 +246,18 @@ You can find your Bearer Token by:
229246

230247
#### getAllResources
231248

249+
The Server API URL is specified in the `PerspectiveWebUiApiUrl` CloudFormation template output
250+
232251
##### Request
233252

234-
```
235-
curl --location --request POST 'https://<your-api-gateway-id>.execute-api.<deployment-region>.amazonaws.com/Prod/resources' \
236-
--header 'Authorization: Bearer <your-token>' \
237-
--header 'Content-Type: application/json' \
238-
--data-raw '{"command":"getAllResources","data":{}}'
253+
```sh
254+
SERVER_API_URL=''
255+
AUTH=''
256+
257+
curl -X POST "${SERVER_API_URL}" \
258+
--header "Authorization: Bearer ${AUTH}" \
259+
--header 'Content-Type: application/json' \
260+
--data-raw '{"command":"getAllResources","data":{}}'
239261
```
240262

241263
##### Response
@@ -244,11 +266,17 @@ You will receive all the resources that have been discovered with just a subset
244266

245267
#### linkedNodesHierarchy
246268

269+
The Server API URL is specified in the `PerspectiveWebUiApiUrl` CloudFormation template output
270+
247271
##### Request
248272

249-
```
250-
curl --location --request GET 'https://<your-api-gateway-id>.execute-api.<deployment-region>.amazonaws.com/Prod/resources?command=linkedNodesHierarchy&id=<node-id>' \
251-
--header 'Authorization: Bearer <your-token>'
273+
```sh
274+
SERVER_API_URL=''
275+
AUTH=''
276+
NODE_ID=''
277+
278+
curl -X GET "${SERVER_API_URL}/resources?command=linkedNodesHierarchy&id=${NODE_ID}" \
279+
--header "Authorization: Bearer ${AUTH}"
252280
```
253281

254282
##### Response
@@ -258,14 +286,17 @@ You will receive an array of nodes that have a relationship with the node id use
258286
#### DrawIO Export
259287

260288
This takes a JSON representation of the architecture diagram and converts it to **mxGraph** and opens in a DrawIO tab.
289+
The DrawIO API URL is specified in the `DrawIOApiUrl` CloudFormation template output
261290

262291
##### Request
263292

264-
```
265-
curl --location --request POST 'https://<your-api-gateway-id>.execute-api.<deployment-region>.amazonaws.com/Prod/resources' \
266-
--header 'Authorization: Bearer <your-token> \
267-
--header 'Content-Type: text/plain' \
268-
--data-raw '{"elements":{"nodes":[], "edges": []'}}
293+
```sh
294+
DRAWIO_API_URL=''
295+
AUTH=''
296+
297+
curl -X POST "${DRAWIO_API_URL}/resources" \
298+
--header "Authorization: Bearer ${AUTH}" \
299+
--data-raw '{"elements":{"nodes":[], "edges": []}}'
269300
```
270301

271302
##### Response
@@ -274,6 +305,10 @@ You will receive a URL that when clicked will open up DrawIO in the browser and
274305

275306
***
276307

308+
## Collecting Anonymous Operational Metrics
309+
310+
This solution collects anonymous operational metrics to help AWS improve the quality of features of the solution. For more information, including how to disable this capability, please see the Implementation Guide.
311+
277312
Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
278313

279314
Licensed under the Apache License Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at https://www.apache.org/licenses/ or in the "[license](LICENSE.txt)" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and limitations under the License.

deployment/build-open-source-dist.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
# - solution-name: name of the solution for consistency
1111

1212
# Check to see if input has been provided:
13+
set -euo pipefail
14+
1315
if [ -z "$1" ]; then
1416
echo "Please provide the trademark approved solution name for the open source package."
1517
echo "For example: ./build-s3-dist.sh trademarked-solution-name"

0 commit comments

Comments
 (0)