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).
v1.1.1 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.
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.
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.
To find out more about AWS Perspective visit the AWS Perspective Solution Page.
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).
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.
You can generate a cost report for your architecture diagrams that contains an overview of the estimated cost and export them as CSV.
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.
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.
You can save your architecture diagram to revisit later or share it with other Perspective users. If you need to use the diagrams outside of Perspective you can export to PNG, JSON, CSV, or DrawIO.
To find out more about AWS Perspective visit our AWS Solutions page.
Region | Launch | Template Link |
---|---|---|
US East (N. Virginia) (us-east-1) | Launch | Link |
US East (Ohio) (us-east-2) | Launch | Link |
US West (Oregon) (us-west-2) | Launch | Link |
Asia Pacific (Mumbai) (ap-south-1) | Launch | Link |
Asia Pacific (Seoul) (ap-northeast-2) | Launch | Link |
Asia Pacific (Singapore) (ap-southeast-1) | Launch | Link |
Asia Pacific (Sydney) (ap-southeast-2) | Launch | Link |
Asia Pacific (Tokyo) (ap-northeast-1) | Launch | Link |
Canada (Central) (ca-central-1) | Launch | Link |
Europe (Ireland) (eu-west-1) | Launch | Link |
Europe (London) (eu-west-2) | Launch | Link |
Europe (Frankfurt) (eu-central-1) | Launch | Link |
Europe (Paris) (eu-west-3) | Launch | Link |
Europe (Stockholm) (eu-north-1) | Launch | Link |
South America (Sao Paulo) (sa-east-1) | Launch | Link |
AWS Perspective is deployed to your account using an AWS CloudFormation template and should take approximately 30 minutes to deploy. See the deployment guide for instructions, and the cost overview to learn about costs.
A web interface is included with AWS Perspective. To login to the interface, follow the Post-deployment configuration steps of the installation guide.
Refer to the implementation guide to learn how to use AWS Perspective.
To submit an idea for a feature you would like to see implemented, please create an issue and use the 'enhancement' label. Your issue will be available on the project board for others to vote on.
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.
The web user interface (UI) interacts with the data component via Amazon API Gateway and AWS AppSync endpoints. The web UI requests resource relationship data from the data component. The data component queries and returns data from an Amazon Neptune database.
The storage management component stores user preferences and saved architecture diagrams. This is implemented using AWS Amplify and an Amazon Simple Storage Service (Amazon S3) bucket.
The discovery component uses AWS 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. The discovery component container image is built in the image deployment component using AWS CodePipeline and AWS CodeBuild.
The cost component processes AWS Cost and Usage Reports (AWS CUR) to make cost data available in AWS Perspective. To use this feature, you must create a report in AWS CUR to deliver the reports to the CostAndUsageReportBucket
Amazon S3 bucket. When an AWS CUR is delivered, it triggers an AWS 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
|-deployment/
|-build-s3-dist.sh [ shell script for packaging distribution assets ]
|-run-unit-tests.sh [ shell script for executing unit tests ]
|-perspective-setup.yaml [ the main CloudFormation deployment template ]
|-source/
|-frontend/ [ the frontend ui code ]
|-backend/ [ the backend code ]
|-discovery/ [ the code for the discovery process ]
|-functions/ [ the code for the Lambda functions ]
|-cfn/ [ the CloudFormation templates that deploy aws-perspective ]
For development and debugging, it's possible to run the Perspective UI locally.The Perspective solution must already be deployed to an account.
The Perspective solution generates a settings.js
file used by the web browser for configuration.To develop locally, this settings.js
file must be present.
settings.js
file from the S3 Bucket containing the Perspective UI. This has the logical name WebUIBucket
in the CloudFormation stack.settings.js
file in source/frontend/public
.source/frontend
directory, run npm install
npm run start
to run the local development server.cd ./deployment
./run-unit-tests.sh
cd ./deployment
./build-s3-dist.sh
When you have made changes to the code, you can build it locally and upload the deployment artefacts to Amazon S3 by running the following bash script.
touch local-deploy-script.sh
#!/usr/bin/env bash
set -euo pipefail
# The Region you wish to deploy to.
AWS_REGION=<aws-region>
# The S3 Bucket name to be created to store your deployment artefacts
DIST_OUTPUT_BUCKET=<s3-bucket>
# A name for your test solution
SOLUTION_NAME=<solution-name>
# A version number for this test release e.g vX.Y.Z
VERSION=<version>
# Tag that will be given to Docker image.
IMAGE_TAG=<tag>
if aws s3api head-bucket --bucket "${DIST_OUTPUT_BUCKET}" 2>/dev/null;
then
echo "${DIST_OUTPUT_BUCKET} bucket exists and you own it, so not creating it"
else
echo "creating bucket in region ${AWS_REGION} with name ${DIST_OUTPUT_BUCKET}"
aws s3 mb s3://${DIST_OUTPUT_BUCKET} --region ${AWS_REGION}
fi
if aws s3api head-bucket --bucket "${DIST_OUTPUT_BUCKET}-${AWS_REGION}" 2>/dev/null;
then
echo "${DIST_OUTPUT_BUCKET}-${AWS_REGION} bucket exists and you own it, so not creating it"
else
echo "creating bucket in region ${AWS_REGION} with name ${DIST_OUTPUT_BUCKET}-${AWS_REGION}"
aws s3 mb s3://${DIST_OUTPUT_BUCKET}-${AWS_REGION} --region ${AWS_REGION}
fi
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION $IMAGE_TAG
aws cloudformation package --template-file "global-s3-assets/perspective-setup.template" --s3-bucket "$DIST_OUTPUT_BUCKET" --s3-prefix "${SOLUTION_NAME}/${VERSION}" --output-template-file packaged.template
aws s3 cp packaged.template "s3://${DIST_OUTPUT_BUCKET}/${SOLUTION_NAME}/${VERSION}/aws-perspective.template"
aws s3 cp global-s3-assets s3://${DIST_OUTPUT_BUCKET}-${AWS_REGION}/${SOLUTION_NAME}/${VERSION}/ --recursive --acl bucket-owner-full-control
aws s3 cp regional-s3-assets s3://${DIST_OUTPUT_BUCKET}-${AWS_REGION}/${SOLUTION_NAME}/${VERSION}/ --recursive --acl bucket-owner-full-control
echo "You can now deploy using this template URL https://${DIST_OUTPUT_BUCKET}.s3.${AWS_REGION}.amazonaws.com/${SOLUTION_NAME}/${VERSION}/aws-perspective.template"
chmod +x ./local-deploy-script.sh
./local-deploy-script.sh
This will:
Once you have the deployment artefacts in S3, you can deploy the aws-perspective.template in the CloudFormation console. Just pass the link to the template in S3 to CloudFormation and it will do the rest.
Parameters required by the template:
Note - You will need to deploy in the same account and region as the S3 bucket that the deployment artefacts are uploaded to.
The Web API requires a JWT present in the request Authorization Header.You can find your Bearer Token by:
The Server API URL is specified in the PerspectiveWebUiApiUrl
CloudFormation template output
SERVER_API_URL=''
AUTH=''
curl -X POST "${SERVER_API_URL}" \
--header "Authorization: Bearer ${AUTH}" \
--header 'Content-Type: application/json' \
--data-raw '{"command":"getAllResources","data":{}}'
You will receive all the resources that have been discovered with just a subset of data about each one. You will also receive a metadata object that breaks down the resource types discovered and the resource counts for each. This is done for each account and region that is discoverable to AWS Perspective.
The Server API URL is specified in the PerspectiveWebUiApiUrl
CloudFormation template output
SERVER_API_URL=''
AUTH=''
NODE_ID=''
curl -X GET "${SERVER_API_URL}/resources?command=linkedNodesHierarchy&id=${NODE_ID}" \
--header "Authorization: Bearer ${AUTH}"
You will receive an array of nodes that have a relationship with the node id used in the request.
This takes a JSON representation of the architecture diagram and converts it to mxGraph and opens in a DrawIO tab.The DrawIO API URL is specified in the DrawIOApiUrl
CloudFormation template output
DRAWIO_API_URL=''
AWS_REGION=''
AUTH=''
curl -X POST "https://${DRAWIO_API_URL}.execute-api.${AWS_REGION}.amazonaws.com/Prod/resources" \
--header 'Content-Type: text/plain' \
-H "Authorization: Bearer ${AUTH}" \
--data-raw '{"elements":{"nodes":[], "edges": []}}'
You will receive a URL that when clicked will open up DrawIO in the browser and show your graph.
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.
AWS Perspective is able to generate its architecture diagrams thanks to these libraries developed and maintained by the Info Visualization Research Lab over at Bilkent University:
Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
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" 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.
机器学习/数据挖掘在各种业务场景中的应用已经非常之多了,在线广告/搜索/商品推荐/风险建模/图像处理/语音识别/机器翻译都是机器学习成功应用的典型case。 有效应用机器学习解决业务问题,在我看来依赖于三个维度: 1. 对Domain相关的business knowledge的深入理解[1] 2. 对机器学习技能知识本身的深入理解 3. 高效的工具平台[2][3][4][5][6] 这三个维度我是
我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CloudFormation的优缺点是什么? 我感兴趣的是一个可以自动伸缩的系统,它可以处理任意数量的并发web请求(从每分钟1000个请求到1000万rpm),包括一个可以自动伸缩的数据库层。 理想情况下,我希望有效地共享一些硬件资源,而不是为每个应用程序提供单独的实例。在过去,我主要使用EC2实例RDS Cloudtop
介绍如何在AWS上获取在云联壹云平台需要使用的配置参数。 获取AWS的访问密钥 使用AWS主账号(或拥有AdministratorAccess管理权限的子账号)登录AWS管理控制台,单击 “IAM” 菜单项,进入IAM控制面板页面。 单击左侧菜单栏 “用户” 菜单项,进入用户管理列表,单击用户名名称项,进入指定用户详情页面。注意需要选择有足够管理权限的用户。 单击“安全证书”页签。 单击 “创建访
AWS Global Infrastructure AWS Global Cloud - A single global cloud, is made up of devices and Services in many regions. AWS Region - A physical location around the world where Amazon have equipment(de
A collection of bash shell scripts for automating various tasks with Amazon Web Services using the AWS CLI and jq. https://github.com/swoodford/aws Table of contents Why Getting Started What's Include
我使用的是AWS SQS服务,很难定义SQS队列上的权限。在我的设置中,我使用的是AWS Lambda服务,当一个对象被推到S3存储桶上时会触发该服务。 然而,让我简短地提问,这是我想要实现的: 对象被推送到S3存储桶中 正如您可以从前面的用例中看到的,我希望我的AWS Lambda方法是唯一可以向SQS队列发送消息的应用程序。我试图设置一个原则和一个条件“sourceArn”。但是它们都不起作用
我有一个Powershell Lambda,我希望通过AWS CDK部署它,但在运行时遇到问题。 通过手动发布AWSPowerShellLambda部署Powershell可以: 但是,与CDK一起部署的同一脚本不会记录到CloudWatch日志,即使它具有以下权限: powershell脚本当前仅包含以下行,在CLI上由Publish AWSPowerShellLambda部署时可以工作: 注意