亚马逊云科技中国区部署 SaaS Boost 的步骤总结 --- 配置篇

0
0
# 配置应用模版 登录 SaaS Boost 管理应用程序后,您需要做的第一件事是配置环境,以使其与您的应用程序的运行需求保持一致。 ## 第 1 步 - SaaS Boost 支持租户分层。 您可以通过为每个层设置不同的容器大小和数据库大小来提供服务。SaaS Boost 中针对每个微服务都可以定义多个层。在创建租户前,您将有机会选择适用于总体应用的租户分层,这将使得每个微服务在都会配置相应分层的设置。 从左侧菜单中选择 Tiers。 ![image.png](https://dev-media.amazoncloud.cn/63788f4e129343eaab40065b0fcfa2a1\\_image.png "image.png") ## 第 2 步 - 在Tiers屏幕上,选择右上角的 Create Tier。 ## 第 3 步 - 我们依次创建三个层级: Basic 、 Standard 和 Premium 层。 如下图所示通过选择 Mark as Default 将“Basic Tier”设置为默认。 ![image.png](https://dev-media.amazoncloud.cn/51b6af8b345b4038925887a306996156\\_image.png "image.png") ## 第 4 步 - 删除默认层 Default层。 当新的三个tier都设置好后,最后的配置如下图。 ![image.png](https://dev-media.amazoncloud.cn/1b158c48b2f046269795086f44a79765\\_image.png "image.png") ## 第 5 步 - 等级设置现已完成,接下来让我们开始设置要部署到租户的应用程序。  从 SaaS Boost 控制台屏幕的左侧菜单中选择 Application。 ![image.png](https://dev-media.amazoncloud.cn/2147902282294591900b887acbc4af6b_image.png "image.png") ## 第 6 步 - 在此步骤中,我们输入创建要部署的应用程序的名称和服务。  输入 boost在 Name 文本框中,点击 New Service 创建一个在您的应用程序中使用的新服务。 ![image.png](https://dev-media.amazoncloud.cn/c93f51e279df48ab950882991eeb67a7\\_image.png "image.png") ## 第 7 步 - 输入新的服务名称 sample并点击 Create Service 。 ![image.png](https://dev-media.amazoncloud.cn/dee08cc552df4b089484f9a13811224d_image.png "image.png") ## 第 8 步 - 如图所示创建了新服务“sample”,选择 sample 服务以进行详细设置。 SSL Certificate 在本实验中不需要选择配置。 ![image.png](https://dev-media.amazoncloud.cn/4e810f3a766f41cd93494af647c2d0c7\\_image.png "image.png") ## 第 9 步 - 服务设置分为两大类。在该步骤中,配置服务要使用的容器环境并设置数据库。 首先,要确保勾选可公开访问 ,指定容器使用的端口号为8080。 接着,输入 /index.html 作为健康检查的URL,容器操作系统选择 Linux,并选择 Fargate 作为容器启动类型。 最后,勾选 Provision a database for this service 为服务预置一个数据库。将数据库引擎设置为 PostgreSQL,对于数据库版本,选择 PostgreSQL 13.4-R1,如下所示输入用户名、密码和数据库名称。 不用勾选应用程序的对象存储。 红框12的\[Provision an S3 bucket for the application]不用勾选 ![image.png](https://dev-media.amazoncloud.cn/d5136f98fe9b46a4968e84d48a6361e3\\_image.png "image.png") ## 第 10 步 - 在此步骤中,我们会为每一层配置示例服务。 Basic Tier 的组成如下图所示,请勿在运行容器的 ECS 中配置 Auto Scaling。配置应用程序需要使用的文件系统,选择 db.t3.medium 作为数据库使用的实例。 ![image.png](https://dev-media.amazoncloud.cn/1cb29dd8d1d044709533c22424d9d7b7\\_image.png "image.png") ## 第 11 步 - 标准层包括以下内容: 运行容器的 ECS 由至少两个 Fargate 实例提供服务,ECS 使用 Auto Scaling 横向扩展到 4 个 Fargate 实例。配置应用程序需要使用的文件系统,选择 db.r5.xlarge 作为数据库使用的实例。 ![image.png](https://dev-media.amazoncloud.cn/048512c991b0499db77f6a46dad1024d_image.png "image.png") ## 第 12 步 - 高级层包括以下内容: ECS 运行容器通过至少 4 个 EC2 实例提供服,ECS 通过 Auto Scaling 横向扩展到 8 个 EC2 实例。 配置应用程序需要使用的文件系统,选择 db.r5.2xlarge 作为数据库使用的实例。 ![image.png](https://dev-media.amazoncloud.cn/d466c684689c47d7aa6705c7216e9cc5\\_image.png "image.png") ## 第 13 步 - 对于 sample服务,当每层的配置都完成之后,选择 Submit 以保存所有设置。 ![image.png](https://dev-media.amazoncloud.cn/532264bba50b47a7afe6a690dfb9fd16\\_image.png "image.png") ## 第 14 步 - 保存上一步中的设置将更新 sb-dev-core 堆栈以创建 SaaS Boost 专用ECR。 堆栈更新完成后,SaaS Boost 控制台的第一页会显示有关已配置服务的信息。 可能需要完成 ECR 创建并在 SaaS Boost 控制台中显示相关信息。 # 构建示例应用 ## 第 1 步 - 部署 SaaS Boost 会创建应用程序使用的专用 ECR 存储库。  我们会将租户要使用的应用镜像上传到这个仓库。 首先,我们将连接到安装 SaaS Boost 的EC2实例。 在顶部的搜索栏中搜索“EC2”。 在搜索结果中单击 EC2。 ![image.png](https://dev-media.amazoncloud.cn/e909d70df4bf4a3483f49c2248e3ca22\\_image.png "image.png") 勾选名为 saasboost 的示例,并点击 Connect。 ![image.png](https://dev-media.amazoncloud.cn/3806c660d45f4dd2b0dc3e7f58479307\\_image.png "image.png") 在选项卡中选择 Session Manager, 并单击 Connect。 ![image.png](https://dev-media.amazoncloud.cn/efc2468a335f4d1d922ed95e4cfbf253\\_image.png "image.png") ## 第 2 步 - 移至 SaaS Boost 提供的示例应用程序的源目录。 sudo sucd /home/ec2-user/aws-saas-boost/samples/java ## 第 3 步 - 执行当前目录下的build.sh。 此 shell 脚本会对 Sample Application进行编译,创建容器映像并将其上传到指定的 SaaS Boost 存储库。 ./build.sh 在执行 shell 脚本后,请在"AWS SaaS Boost Environment label"后键入“dev-1”。接下来,输入在上一个练习中创建的服务编号。由于我们创建了sample,因此我们将输入 0。 Please enter your AWS SaaS Boost Environment label: dev-1Using region: us-west-2 account: 576154168333boost contains 1 services:| 0: samplePlease enter the number of the service to upload to: 0Uploading to sampleUploading to sample repository: sb-boost-core-xwjw1lkezzeh-sample-7cbiezudp0psRunning AWS CLI version 1WARNING! Your password will be stored unencrypted in /home/ec2-user/.docker/config.json.Configure a credential helper to remove this warning. Seehttps\://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded576154168333.dkr.ecr.us-west-2.amazonaws.com/sb-boost-core-xwjw1lkezzeh-sample-7cbiezudp0ps:latest 构建和容器镜像创建完成后,您可以查看以下日志。 \[INFO] Layout: WAR\[INFO] Replacing main artifact with repackaged archive\[INFO] ------------------------------------------------------------------------\[INFO] BUILD SUCCESS\[INFO] ------------------------------------------------------------------------\[INFO] Total time: 20.835 s\[INFO] Finished at: 2023-01-13T07:18:31Z\[INFO] Final Memory: 30M/104M\[INFO] ------------------------------------------------------------------------Sending build context to Docker daemon 96.03MBStep 1/10 : FROM public.ecr.aws/docker/library/amazoncorretto:11-alpine-jdk AS build11-alpine-jdk: Pulling from docker/library/amazoncorrettoca7dd9ec2225: Pull complete2778865ff857: Pull completeDigest: sha256:5cab8451adb8a919c6799ececf2503eca84c18b9b96df47f4549ea00dde90a65Status: Downloaded newer image for public.ecr.aws/docker/library/amazoncorretto:11-alpine-jdk--> 6024c40c727eStep 2/10 : RUN \["/usr/lib/jvm/default-jvm/bin/jlink", "--compress=2", "--no-man-pages", "--module-path", "/usr/lib/jvm/default-jvm/jmods", "--add-modules", "java.base,java.logging,java.xml,jdk.unsupported,java.sql,java.sql.rowset,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,java.net.http", "--output", "/jdk-mini"]--> Running in 20efc813da03Removing intermediate container 20efc813da03--> c456a0af57bbStep 3/10 : FROM public.ecr.aws/docker/library/alpine:latestlatest: Pulling from docker/library/alpine8921db27df28: Pull completeDigest: sha256:f271e74b17ced29b915d351685fd4644785c6d1559dd1f2d4189a5e851ef753aStatus: Downloaded newer image for public.ecr.aws/docker/library/alpine:latest--> 042a816809aaStep 4/10 : COPY --from=build /jdk-mini /opt/jdk/--> 1c7b6248312cStep 5/10 : VOLUME /mnt--> Running in bb0b58d6eb6cRemoving intermediate container bb0b58d6eb6c--> 2d0f679c29bdStep 6/10 : ENV PATH=$PATH:/opt/jdk/bin--> Running in bd61c2e26167Removing intermediate container bd61c2e26167--> 28c28de0ba30Step 7/10 : COPY ./target/HelloWorld.war /usr/src/app/app.war--> 0d81ec54e9d8Step 8/10 : ENTRYPOINT \["java", "-jar", "/usr/src/app/app.war"]--> Running in d4354c7198ccRemoving intermediate container d4354c7198cc--> 609288db70aeStep 9/10 : ENV TENANT_ID=""--> Running in 9e23f61bc222Removing intermediate container 9e23f61bc222--> a1f0e9716517Step 10/10 : EXPOSE 8080/tcp--> Running in 9a3f19c713cbRemoving intermediate container 9a3f19c713cb--> 2e1010be5ed1Successfully built 2e1010be5ed1Successfully tagged helloworld:latestThe push refers to repository \[576154168333.dkr.ecr.us-west-2.amazonaws.com/sb-boost-core-xwjw1lkezzeh-sample-7cbiezudp0ps]d9e58143db84: Pushed7f837477d2cf: Pushed8e012198eea1: Pushedlatest: digest: sha256:76398b23c7a8e7f1bbddbc21cb1d783433b16a2976a0beb16f6fa3b1cd200578 size: 952 ## 第 4 步 - 让我们检查上传的容器镜像。 在顶部的搜索栏中搜索 ecr。在搜索结果中单击 Elastic Container Registry。 ![image.png](https://dev-media.amazoncloud.cn/73b60be4ee0f46d795633b3fbae2b9bb_image.png "image.png") ## 第 5 步 - 单击专用于 SaaS Boost 的存储库。 ![image.png](https://dev-media.amazoncloud.cn/245c9085bcf14a54939286d2b58adf86\\_image.png "image.png") ## 第 6 步 - 可以看到容器化镜像已经上传。 ![image.png](https://dev-media.amazoncloud.cn/d4ba167f0ebd4812858635070278f28f_image.png "image.png") # 创建新租户 ## 第 1 步 - 从 SaaS Boost 控制台屏幕的左侧菜单中选择 Onboarding。 ![image.png](https://dev-media.amazoncloud.cn/ce8d6a2220784338be4fc0b9564b978f_image.png "image.png") ## 第 2 步 - 选择屏幕右上角的 Provision Tenant 以转到 Tenant Onboarding 界面。 ![image.png](https://dev-media.amazoncloud.cn/291f6da3ab1446fe9bbc0c944844108b_image.png "image.png") ## 第 3 步 - 输入租户名称 tenant1。 租户的等级选择 Basic Tier。选择屏幕底部的Submit以开始Onboarding。 ![image.png](https://dev-media.amazoncloud.cn/a845bb5741964a0ca33320720941d874\\_image.png "image.png") ## 第 4 步 - 当租户 Onboarding 开始时,会通过 CloudFormation 创建租户所需的亚马逊云科技资源。 ![image.png](https://dev-media.amazoncloud.cn/ef17ba5a07754ed99c632f877325360e_image.png "image.png") ## 第 5 步 - 当租户的 onboarding 完成后,状态将更改为 Deployed。 从 SaaS Boost 控制台屏幕的左侧菜单中选择Tenants项。 ![image.png](https://dev-media.amazoncloud.cn/dc642604a4cf43b3b5b1a988005f1050\\_image.png "image.png") ## 第 6 步 - 在 Tenants 屏幕中,选择状态为 Active 的新创建的 Tenant 的 ID。 ![image.png](https://dev-media.amazoncloud.cn/bf1d986d178c4ad584446364154471a1\\_image.png "image.png") ## 第 7 步 - 您可以通过租户详情页面查看新创建的租户信息。 您可以通过单击地址字段中的Application Load Balancer URL 来访问该应用程序。 ![image.png](https://dev-media.amazoncloud.cn/50b26972742245cc9fc022bc0879a741\\_image.png "image.png") ## 第 8 步 - 以下即为 SaaS Boost 的展示页面。 ![image.png](https://dev-media.amazoncloud.cn/52e6bc50eb084b0ea74b23295af37e76\\_image.png "image.png") # 创建成本使用报告 ## 第1步 - SaaS Boost 为每个租户设置一个独特的 Tag,以帮助分离每个租户的成本。 我们将设置成本分配标签,用 Tag 来分析成本。在顶部的搜索栏中搜索Billing,在搜索结果中点击计费。 ![image.png](https://dev-media.amazoncloud.cn/2903d7a03eed4a45986f35555f902524\\_image.png "image.png") ## 第2步 - 点击 "账单 "屏幕左侧菜单中的成本分配标签。 ![image.png](https://dev-media.amazoncloud.cn/70a3d88e055b4d24ba84b5e070729e4e_image.png "image.png") ## 第3步 - 从用户定义的成本分配标签中选择三个:BoostService,SaasBoost,和Tenant。 然后,单击右上角的 激活。标签定义如下: ● BoostService: SaaS Boost控制面相关的微服务标签,比如Onbording, Setting等 ● Application: SaaS Boost控制面相关所有资源的标签,值统一为SaaSBoost ● Environment: 若同时安装了多套SaaS Boost环境,可通过此标签来区分 ● Tenant: 租户标签,每个租户关联的资源都会被标记此标签,设定值均为特定的租户ID ![image.png](https://dev-media.amazoncloud.cn/b3a757ae659f4aa6b29f7591ed0d1def_image.png "image.png") ## 第4步 - 点击激活,激活成本分配标签。 ![image.png](https://dev-media.amazoncloud.cn/adc068aa70c04bf3b16b310f25446665\\_image.png "image.png") ## 第5步 - BoostService、Saas Boost、Tenant成本分配标签被激活。 ![image.png](https://dev-media.amazoncloud.cn/849f201a06f64b8583266a16af79a17c_image.png "image.png") ## 第6步 - 亚马逊云科技提供各种数据格式的成本和使用报告,让我们创建一个报告来分析 SaaS Boost 的成本。 点击左侧菜单中的成本和使用情况报告。 ![image.png](https://dev-media.amazoncloud.cn/e0c48022b0274d578f7ca3a75016fafc_image.png "image.png") ## 第7步 - 点击创建报告,创建一个新的报告。 ![image.png](https://dev-media.amazoncloud.cn/ada71be93fc34e9a813623a80003c026\\_image.png "image.png") ## 第8步 - 将报告的名称设为 saas-boost-cost-report。 接下来,在附加报告细节中勾选包括资源 ID,以便进行准确的成本分析。点击右下角的下一步按钮。 ![image.png](https://dev-media.amazoncloud.cn/fdf4912dc2044a95ad379c6011a042b6\\_image.png "image.png") ## 第9步 - 设置报告路径前缀为saasboost。 时间粒度选择为 "每小时"。选择 "Amazon Athena "作为启用报告数据整合的对象。点击屏幕顶部的配置按钮,设置存储报告的 S3 桶。 ![image.png](https://dev-media.amazoncloud.cn/47c596663efc4398b839eff9b7f1de84\\_image.png "image.png") ## 第10步 - 我们将创建一个新的S3桶来存储报告。 在右边的创建桶中,将S3桶的名称设置为 saas-boost-cost-<>。这时,将 Region 设置为与目前正在进行的工作坊 Region 相同。点击右下角的下一步。 请确保将 S3 桶名称中的(<>)替换为个性化的唯一名称。 ![image.png](https://dev-media.amazoncloud.cn/9c6fb0639ba34cb4998f7a2737b3b4d4\\_image.png "image.png") ## 第11步 - 勾选我已确认此政策是正确的,点击右下角的 "保存"。 ![image.png](https://dev-media.amazoncloud.cn/2986effd2fb84422acb2a96a47576d2f_image.png "image.png") ## 第12步 - 您已经完成了对成本和使用情况报告的S3设置,点击右下角的 "下一步"。 ![image.png](https://dev-media.amazoncloud.cn/11f416cea2f14960ad040da27dc72931\\_image.png "image.png") ## 第13步 - 检查完设置后,点击右下角的审查和完成。 ![image.png](https://dev-media.amazoncloud.cn/e3ba94008d064948968096c117d0fe87\\_image.png "image.png") ## 第14步 - 成本和使用情况报告设置完成。 创建新报告后,可能需要24小时才能保存第一批数据。 ![image.png](https://dev-media.amazoncloud.cn/167e6d8ad2b541b5b9e85473858c3944\\_image.png "image.png") # 配置 Amazon Athena ## 第1步 - 控制台转到 S3 管理页面,确认成本使用报告已经创建。 从存储桶的列表中,选择、saas-boost-cost-<>,成本和使用情况报告就存储在这里。 ![image.png](https://dev-media.amazoncloud.cn/0c5b5eb334d546739b475afeddc8ed8e_image.png "image.png") ## 第2步 - 转到 saasboost 文件夹。 ![image.png](https://dev-media.amazoncloud.cn/e642faf628004cef9cb6d501cb6533ff_image.png "image.png") ## 第3步 - 转到saas-boost-cost-report文件夹。 ## 第4步 - 下载crawer-cfn.yml文件。 如果您在创建成本与使用情况报告时选择了为 Amazon Athena 启用报告数据集成,那么就会创建一个 CloudFormation 模板文件,该文件配置了 Athena 可以读取存储在 S3 中的数据的环境,该文件为 crawer-cfn.yml,请下载这个文件。 ![image.png](https://dev-media.amazoncloud.cn/efa05d17d1744b428fedd3e1363de1a7\\_image.png "image.png") ## 第5步 - 进入CloudFormation,用下载的CloudFormation模板创建一个堆栈。 在顶部搜索栏中搜索'cloudformation',在搜索结果中点击CloudFormation。 ![image.png](https://dev-media.amazoncloud.cn/5b65a898d0a34288a34ecbe21b7db052\\_image.png "image.png") ## 第6步 - 点击右上角的创建堆栈。从菜单上点击'使用新资源(标准)。 ![image.png](https://dev-media.amazoncloud.cn/b45020d28a8e4d219c06a5f4bc55039d_image.png "image.png") ## 第7步 - 选择从模板源上传模板文件。点击 "选择文件",选择下载的 crawler-cfn.yml,点击右下角的 "下一步"。 ## 第8步 - 在堆栈名称栏中输入 cur-crawler,点击右下角的 "下一步"。 ![image.png](https://dev-media.amazoncloud.cn/7b8ce1adb3f04689bf916663c46e5453\\_image.png "image.png") ## 第9步 - 点击右下角的 "下一步"。 ![image.png](https://dev-media.amazoncloud.cn/ad6a95c0572840cd9a806e6a7c905a16\\_image.png "image.png") ## 第10步 - 勾选屏幕底部的 I acknowledge that Amazon CloudFormation might create IAM resources, 点击右下角的创建堆栈来创建一个堆栈。 ![image.png](https://dev-media.amazoncloud.cn/b5e93bf556ff40599282cb3bf90e3e52\\_image.png "image.png") ## 第11步 - 等待一段时间,完成堆栈的创建。 ![image.png](https://dev-media.amazoncloud.cn/057aa9bf93e54d3491856e432f656a84\\_image.png "image.png") ## 第12步 - 当堆栈创建完成后,Amazon Glue Crawler 会抓取存储在 S3 中的成本和使用报告,以创建一个目录。在顶部搜索栏中搜索并点击Amazon Glue。 ![image.png](https://dev-media.amazoncloud.cn/711cd7cf306a4e1eac6857ea9f67ad36\\_image.png "image.png") ## 第13步 - 在 Amazon Glue 屏幕的左侧菜单中,点击 Crawlers。 ![image.png](https://dev-media.amazoncloud.cn/70877761a2e6405e90102c91ab8cc69f_image.png "image.png") ## 第14步 - 在爬虫屏幕上,点击新创建的爬虫 AmazonCURCrawler-saas-boost-cost-report。 ![image.png](https://dev-media.amazoncloud.cn/b6d6aac634dc4f139b80b178ffb73aac_image.png "image.png") ## 第15步 - 验证生成的爬虫信息。您已经完成了从 Athena 读取存储在 S3 中的成本和使用报告的设置。 ![image.png](https://dev-media.amazoncloud.cn/8012e41f76e6444483cc3dcc4017dad1\\_image.png "image.png") ## 第16步 - Athena 自动存储针对 S3 运行的查询结果和元数据信息。 让我们创建一个 S3 桶供 Athena 使用。 在顶部搜索栏中搜索 S3,在搜索结果中点击 S3。 ![image.png](https://dev-media.amazoncloud.cn/6fcc239c009b42a0af0bace65e7452cb_image.png "image.png") ## 第17步 - 点击屏幕右侧的 "创建桶",创建一个新的桶。 ![image.png](https://dev-media.amazoncloud.cn/f83348b4dccd42e7a61e8ea466c9d947\\_image.png "image.png") ## 第18步 - 在 Bucket 名称字段中,输入 saasboost-athena-<>。 对于亚马逊云科技区域,选择与当前车间相同的区域。请确保将桶的名称(<>)替换为您自己的桶的名称。 ![image.png](https://dev-media.amazoncloud.cn/71d6edbf203f43059f8d01ebab1a3614\\_image.png "image.png") ## 第19步 - 所有其他的设置都保持其默认值。点击屏幕底部的 "创建桶",完成桶的创建。 ![image.png](https://dev-media.amazoncloud.cn/0b2453730cde4e0890ffe99ebe8c8827\\_image.png "image.png") ## 第20步 - 要设置 Athena,请在顶部搜索栏中搜索 Athena,在搜索结果中点击 Athena。 ![image.png](https://dev-media.amazoncloud.cn/55c21b9fef754275acf41aee893402ea_image.png "image.png") ## 第21步 - 点击探索 Athena 屏幕中间的查询编辑器。 ![image.png](https://dev-media.amazoncloud.cn/3c5b90cb6334468e8dc542cd15e078e8\\_image.png "image.png") ## 第22步 - 在运行第一个查询之前,我们需要设置 Athena 将使用的 S3 桶,点击右上角的 "查看设置"。 ![image.png](https://dev-media.amazoncloud.cn/4ad65fd56c8c4b9cb10e9eeafbcc0cf2\\_image.png "image.png") ## 第23步 - 点击右上角的管理。 ![image.png](https://dev-media.amazoncloud.cn/9b101e165ef14f61b9dedeeac586a4a8\\_image.png "image.png") ## 第24步 - 点击浏览 S3,选择你希望 Athena 使用的 S3 桶。 ![image.png](https://dev-media.amazoncloud.cn/61f01369889f4ccbad724fb4fb399d27\\_image.png "image.png") ## 第25步 - 选择在上一步创建的桶。点击右下角的选择。 ![image.png](https://dev-media.amazoncloud.cn/3f68bb6f9760451f93d8a81cd16f0a4e_image.png "image.png") ## 第26步 - 点击右下角的 "保存 "来保存您的设置。 ![image.png](https://dev-media.amazoncloud.cn/c09f6c653c1d4bd298ee86584e7ba740\\_image.png "image.png") ## 第27步 - 选择数据库和表来查看成本和使用报告。 数据库选择 athenacurcfn_saas_boost_cost_report。表使用 saas_boost_cost_report。 ![image.png](https://dev-media.amazoncloud.cn/ed11bd2cdc354417bf57ea85d994c6fe_image.png "image.png") ## 第28步 - 我们将创建一个视图并从 saas_boost_cost_report 表中获取必要的数据。 复制并粘贴下面的 SQL 到查询编辑器。点击 RUN 按钮,运行视图创建查询。当执行完成后,saas_boost_cost_data 视图被创建。 ![image.png](https://dev-media.amazoncloud.cn/8846735c9e2c431abddf00402f95aa27\\_image.png "image.png") ``` CREATE OR REPLACE VIEW saas_boost_cost_data ASSELECT"year", "month", "bill_billing_period_start_date" "billing_period", "date_trunc"('day', "line_item_usage_start_date") "usage_date", "bill_payer_account_id" "payer_account_id", "line_item_usage_account_id" "linked_account_id", "bill_invoice_id" "invoice_id", "line_item_line_item_type" "charge_type", CASE WHEN "resource_tags_user_tenant"='' THEN 'Admin' ELSE substring(resource_tags_user_tenant,1,8) END "tenant_id", CASE WHEN ("line_item_line_item_type" = 'Usage') THEN 'Running_Usage' ELSE 'non_usage' END "charge_category", "line_item_product_code" "product_code", "product_product_name" "product_name", CASE WHEN ("line_item_usage_type" LIKE '%Spot%') THEN 'Spot' ELSE 'OnDemand' END "purchase_option", CASE WHEN ("bill_billing_entity" = 'AWS Marketplace' AND "line_item_line_item_type" NOT LIKE '%Discount%') THEN "Product_Product_Name" WHEN ("product_servicecode" = '') THEN "line_item_product_code" ELSE "product_servicecode" END "service", "product_product_family" "product_family", "line_item_usage_type" "usage_type", "line_item_operation" "operation", "line_item_line_item_description" "item_description", "line_item_availability_zone" "availability_zone", "product_region" "region", CASE WHEN (("line_item_usage_type" LIKE '%Spot%') AND ("line_item_product_code" = 'AmazonEC2') AND ("line_item_line_item_type" = 'Usage')) THEN "split_part"("line_item_line_item_description", '.', 1) ELSE "product_instance_type_family" END "instance_type_family", CASE WHEN (("line_item_usage_type" LIKE '%Spot%') AND ("line_item_product_code" = 'AmazonEC2') AND ("line_item_line_item_type" = 'Usage')) THEN "split_part"("line_item_line_item_description", ' ', 1) ELSE "product_instance_type" END "instance_type", CASE WHEN (("line_item_usage_type" LIKE '%Spot%') AND ("line_item_product_code" = 'AmazonEC2') AND ("line_item_line_item_type" = 'Usage')) THEN "split_part"("split_part"("line_item_line_item_description", ' ', 2), '/', 1) ELSE "product_operating_system" END "platform" , "product_tenancy" "tenancy", "product_physical_processor" "processor", "product_processor_features" "processor_features", "product_database_engine" "database_engine", "product_group" "product_group", "product_from_location" "product_from_location", "product_to_location" "product_to_location", "product_current_generation" "current_generation", "line_item_legal_entity" "legal_entity", "bill_billing_entity" "billing_entity", "pricing_unit" "pricing_unit", "count"(DISTINCT "Line_item_resource_id") "resource_id_count", sum(CASE - WHEN ("line_item_line_item_type" = 'SavingsPlanCoveredUsage') THEN "line_item_usage_amount"  *  WHEN ("line_item_line_item_type" = 'DiscountedUsage') THEN "line_item_usage_amount"  # WHEN ("line_item_line_item_type" = 'Usage') THEN "line_item_usage_amount" ELSE 0 END) "usage_quantity", sum ("line_item_unblended_cost") "unblended_cost", sum(CASEWHEN ("line_item_line_item_type" = 'Usage') THEN "line_item_unblended_cost"ELSE "line_item_unblended_cost" END) "amortized_cost", CAST(sum(CASEWHEN (line_item_line_item_type = 'Usage') THEN 0ELSE 0 END) AS double) "ri_sp_trueup", CAST(sum(CASEWHEN ("line_item_line_item_type" = 'Usage') THEN 0ELSE 0 END) AS Double) "ri_sp_upfront_fees", sum(CASEWHEN ("line_item_line_item_type" <> 'SavingsPlanNegation') THEN "pricing_public_on_demand_cost" ELSE 0 END) "public_cost" FROMathenacurcfn_saas_boost_cost_report.saas_boost_cost_reportWHERE (("bill_billing_period_start_date" >= ("date_trunc"('month', current_timestamp) - INTERVAL '7' MONTH)) AND (CAST("concat"("year", '-', "month", '-01') AS date) >= ("date_trunc"('month', current_date) - INTERVAL '7' MONTH)))GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34租户成本可视化 前文提到 SaaS Boost 为每个租户设置一个独特的 Tag,以帮助分离每个租户的成本。以下示例分别是租户 EC2 和 RDS 资源关联的标签,Tenant 标签为特定租户的 ID。 ``` ![image.png](https://dev-media.amazoncloud.cn/bc5c18e91dd04f519e71dca7b3c0dba1\\_image.png "image.png") 同时,我们在账单控制台中也已经启用了成本分配标签,接下来将基于此进行可视化分析。 注意 \[所有标签可能最多需要24小时才能生效出现在计费和成本管理控制台。] ![image.png](https://dev-media.amazoncloud.cn/85b0234d600142ba99c2fb1b9e0c8862\\_image.png "image.png") 控制台中搜索 Cost Explorer 进入成本管理控制台,Cost Explorer 成本管理服务可帮助您按天或按月直观看到、理解和管理云平台上消耗的资源成本和使用情况。 ![image.png](https://dev-media.amazoncloud.cn/e11a8f8dd16b4063b241342046b9c7fd_image.png "image.png") 以上述租户为例,租户标签 Tenant 值为 05bbxxxxxf283 希望查看 2023-04 和 05 月份产生的云资源成本。只需要在 Report Parameters 版块分别输入过滤的日期和过滤的特定 Tag 以及筛选的具体 Tag Value,点击 Apply。 ![image.png](https://dev-media.amazoncloud.cn/6812462fa4514a8399597127d3311bca_image.png "image.png") Cost Explorer 能够立即展示出对应的成本消耗,以及所使用的不同亚马逊云服务和各自花费,并且支持导出成本报告下载。以下为该租户在过去两个月内云成本: ![image.png](https://dev-media.amazoncloud.cn/78662f715ffa40b6812ebc809a2556bd_image.png "image.png") # 参考文档 * <https://aws.amazon.com/cn/partners/saas-boost/?trk=cndc-detail> * <https://github.com/awslabs/aws-saas-boost?trk=cndc-detail> * <https://catalog.us-east-1.prod.workshops.aws/workshops/962a7019-9c8a-49d1-a0bf-ab7229b94e94/zh-CN?trk=cndc-detail> * <https://aws.amazon.com/cn/campaigns/smb-hub-saas/?trk=cndc-detail> # 关于作者 **刘振华** 亚马逊云科技高级解决方案架构师,本硕均毕业于上海交通大学。加入亚马逊云科技之前,曾就职于埃森哲和华为公司,主导过多个大型软件项目的设计、开发和项目管理工作。擅长 SaaS 领域的理论和落地实践,致力于向客户提供相关领域的技术咨询和赋能工作。目前主要是工作是加速中国区的 SaaS 客户的转型速度和促进亚马逊云科技 SaaS 生态发展等事宜。 **宗福祥** 华讯公有云解决方案架构师,在亚马逊云科技上有着丰富的客户经验,专注于帮助客户在亚马逊云科技上部署 SAAS 层业务,为客户提供更高效、更灵活的 SAAS 解决方案。
0
目录
关闭