全部产品

应用配置

应用配置

在应用开发中,代码和配置的区别在于,代码不会随着部署环境而变化,而配置则相反。在实践中,应该尽可能把配置从应用中分离出来,进行外部化管理,构建出来的二进制工件中不包含任何配置信息,实际的配置值在部署时根据环境来确定。云开发提供了三套环境的配置管理。

数据库、文件存储和泛中间件服务,根据应用需要来进行开通、配置到项目工程中,向业务代码提供访问服务,云开发平台不会去消费这些服务配置。
云开发平台在平台层面提供TEST、PRE、RELEASE三套环境,支持每套环境进行相应环境的配置。您可以在「应用管理」->「应用详情」-> 「开发部署」Tab页中,点击对应的“环境”的「应用配置」。

应用配置

点击「编辑」,可以一次性复制粘贴或者输入多条 KEY=VALUE 对。


在应用代码中读取参数变量

方案一:参数变量设置好后,点击「在线开发部署」,在 CloudIDE 中,代码里可以读取环境变量

Python

  1. import os
  2. value = os.environ['key']
  3. print(value)

读取环境变量

NodeJS

  1. var value = process.env.key
  2. console.log(value)

Java

  1. System.out.println("value: "+ System.getenv("key"));

PHP

  1. $value = getenv('key');


方案二:在配置文件中设置占位符,比如Java SpringBoot配置文件application.properties中:

  1. spring.datasource.url=${url}
  2. spring.datasource.username=${username}
  3. spring.datasource.password=${password}


常见的应用配置获取办法

以下说明一些常用云服务、第三方开放平台的访问配置获取方式:

一方服务访问

阿里云产品能力经过POP开放出去的服务需要通过阿里云的AK、SK方式来访问,比如OSS、视觉智能、OTS数据库等云产品。通过AK、SK来访问云产品功能,有两种方式:

  1. 主账号的AK、SK方式。配置了主账号AK、SK应用无需授权即可以访问账户的所有权限。在右上角账户设置菜单中打开「AccessKey管理」,如下图。可以创建、删除AK、SK。AccessKey管理

  2. 子账户访问方式,让某个子账户具有某一个云产品的访问权限,这样可以做到更细粒度的权限控制,最大程度保护云服务安全。打开https://ram.console.aliyun.com/users 子账户管理页面,创建一个子账户,并允许子账户「编程访问」权限

创建子账户


经过短信安全验证后,子账户创建成功,同时生成子账户编程访问的AK、SK。

子账户AKSK

子账户AK、SK方式需要授予相应云产品的访问权限,在子账户管理列表里面「添加权限」,可以授予响应云产品的读写权限子账户授权

拿到AK、SK后,就可以在代码中访问OTS相应的服务了。比如:AK = LTAI4GGxxxxxxxxtDWY8USK= mMRXF3yyyyyyyyyyyGWBXrauf

则应用配置如下:

  1. cloud_otsAk=LTAI4GGxxxxxxxxtDWY8U
  2. cloud_otsSk=mMRXF3yyyyyyyyyyyGWBXrauf

SpringBoot属性配置如下:

  1. spring.cloud.otsAk=${cloud_otsAk}
  2. spring.cloud.otsSk=${cloud_otsSk}

云服务:

在「应用管理」->「应用详情」-> 「云服务管理」Tab页中,能查看到当前应用依赖的基础设施云服务,也能看到数据库、存储和泛中间件等云服务的实例状态。

阿里云RDS

打开RDS控制台https://rdsnext.console.aliyun.com/rdsList/cn-shanghai/basic ,选择正确的区域:比如“华东2(上海)”,打开相应的RDS实例,在「数据库连接」页面,有内网地址、外网地址两个值。

内网地址:一般应用中配置内网地址,云应用运行的VPC环境需要和RDS实例在的VPC环境是同一个。比如:rm-xxxxxxxxxxxxx.mysql.rds.aliyuncs.com

外网地址:当云应用和RDS不在同一个VPC时,需要通过外网地址来访问。需要满足两个条件:1、RDS所在的VPC能被外面访问到,白名单、安全组需要特别注意;2、云应用所在的VPC需要能访问公网,需要配置NAT、EIP。比如:rm-yyyyyyyyyyyyyyyy.mysql.rds.aliyuncs.com

数据库用户名密码,可以在「账户管理」中获取、或者新建。比如:taskmanager/task!23456

数据库名称可以在「数据库管理」中获取、或者新建。注意,一定需要配置让数据库用户能访问对应数据库的权限。比如:taskmanager

则应用配置如下:

  1. #内网访问配置
  2. url=jdbc:mysql://rm-xxxxxxxxxxxxx.mysql.rds.aliyuncs.com:3306/taskmanager
  3. username=taskmanager
  4. password=task!23456
  1. #外网访问配置
  2. url=jdbc:mysql://rm-yyyyyyyyyyyyyyy.mysql.rds.aliyuncs.com:3306/taskmanager
  3. username=taskmanager
  4. password=task!23456


MongoDB

打开MongoDB控制台:https://mongodb.console.aliyun.com/serverless/cn-shanghai/instances,选择正确的区域:比如“华东2(上海)”,打开相应的MongoDB实例,在「数据库连接」页面,有内网连接、公网连接两个地址。其中公网连接需要特别申请。

内网地址:一般应用中配置内网地址,云应用运行的VPC环境需要和MongoDB实例在的VPC环境是同一个。比如:dds-xxxxxxxxxxxxx.mongodb.rds.aliyuncs.com

外网地址:当云应用和MongoDB不在同一个VPC时,需要通过外网地址来访问。需要满足两个条件:1、MongoDB所在的VPC能被外面访问到,白名单、安全组需要特别注意需要开放3717端口;2、云应用所在的VPC需要能访问公网,需要配置NAT、EIP。比如:dds-yyyyyyyyyyyyyy-pub.mongodb.rds.aliyuncs.com

MongoDB实例名、密码,在创建MongoDB的时候已经设置。比如:taskmanager/task!23456,实例创建成功后系统会自动生成一个访问账户,比如:userxxxxxxxx

则应用配置如下:

  1. #内网访问配置
  2. database=taskmanager
  3. host=dds-xxxxxxxxxxxxx.mongodb.rds.aliyuncs.com
  4. port=3717
  5. username=userxxxxxxxx
  6. password=task!23456
  1. #外网访问配置
  2. database=taskmanager
  3. host=dds-yyyyyyyyyyyyyy-pub.mongodb.rds.aliyuncs.com
  4. port=3717
  5. username=userxxxxxxxx
  6. password=task!23456


OTS

打开OTS控制台https://otsnext.console.aliyun.com/cn-shanghai/list ,如果没有开通,则需要开通OTS服务。打开相应的OTS实例详情页,在「全部实例」页面,有经典网、VPC、公网3个地址。

VPC地址:一般应用中配置VPC地址,云应用运行的VPC环境需要和OTS实例在的VPC环境是同一个。比如:https://taskmanager.cn-shanghai.vpc.tablestore.aliyuncs.com

公网地址:当云应用和OTS不在同一个VPC时,需要通过外网地址来访问。需要满足两个条件:1、OTS所在的VPC能被外面访问到;2、云应用所在的VPC需要能访问公网,需要配置NAT、EIP。比如:https://taskmanager.cn-shanghai.vpc.tablestore.aliyuncs.com

实例名称是OTS上创建的实例名比如:taskmanager

OTS安全审核是通过阿里云账户AK、SK方式的,配置AK、SK参考“一方服务访问”配置。比如:

AK: LTxxxxxxxxxxxCfSK: eGRehwGSCByyyyyyyyyhjSXBG

则应用访问OTS的配置如下:

  1. #内网访问配置
  2. EndPoint = https://taskmanager.cn-shanghai.vpc.tablestore.aliyuncs.com
  3. AccessKeyID=LTxxxxxxxxxxxCf
  4. AccessKeySecret=eGRehwGSCByyyyyyyyyhjSXBG
  5. InstanceName=taskmanager
  1. #外网访问配置
  2. EndPoint=https://taskmanager.cn-shanghai.vpc.tablestore.aliyuncs.com
  3. AccessKeyID=LTxxxxxxxxxxxCf
  4. AccessKeySecret=eGRehwGSCByyyyyyyyyhjSXBG
  5. InstanceName=taskmanager

程序中具体怎么访问可以参考:https://help.aliyun.com/document_detail/31757.html

NAS

NAS在云开发平台中做了集成处理,您可以在应用的部署配置中进行创建、选择已有的NAS实例,然后设置挂载路径 ,比如:”/mnt/wb” ,如下图: 挂载NAS则应用访问NAS的配置如下:

  1. #应用配置
  2. nas_path=/mnt/wb
  3. SpringBoot应用配置
  1. #Spring配置
  2. nat.path=${nas_path}
  1. #代码访问
  2. //java代码配置值注入
  3. @Value("${nas.path}")
  4. private String nasPath;

OSS

OSS需要通过账户AK、SK的方式来访问,详细参考:https://help.aliyun.com/document_detail/52834.html

MSE

打开MSE控制台:https://mse.console.aliyun.com/#/Home选择正确的区域:比如“华东2(上海)”,打开相应的MSE实例,在「基础信息」页面,有内网地址、公网地址。

内网地址:一般应用中配置内网地址,云应用必须和MSE实例在同一个VPC。比如实例地址:mse-xxxxxx-nacos-ans.mse.aliyuncs.com

外网地址:当云应用和MSE不在同一个VPC时,需要通过外网地址来访问。需要满足两个条件:1、MSE所在的VPC能被外面访问到,白名单、安全组需要特别注意需要开放8848端口;2、云应用所在的VPC需要能访问公网,需要配置NAT、EIP。比如公网实例地址:mse-yyyyyyy-p.nacos-ans.mse.aliyuncs.com

则应用配置如下:

  1. #内网访问配置
  2. registry_address=mse-xxxxxx-nacos-ans.mse.aliyuncs.com
  3. user_namespace=xxxx
  1. #外网访问配置
  2. registry_address=mse-yyyyyyy-p.nacos-ans.mse.aliyuncs.com
  3. user_namespace=xxxx
  4. //其中user_namespace用于服务注册中心命名空间隔离,可以定义任何合法字符串,服务提供方和服务消费方需要保证一致。