应用配置
应用配置
在应用开发中,代码和配置的区别在于,代码不会随着部署环境而变化,而配置则相反。在实践中,应该尽可能把配置从应用中分离出来,进行外部化管理,构建出来的二进制工件中不包含任何配置信息,实际的配置值在部署时根据环境来确定。云开发提供了三套环境的配置管理。
数据库、文件存储和泛中间件服务,根据应用需要来进行开通、配置到项目工程中,向业务代码提供访问服务,云开发平台不会去消费这些服务配置。
云开发平台在平台层面提供TEST、PRE、RELEASE三套环境,支持每套环境进行相应环境的配置。您可以在「应用管理」->「应用详情」-> 「开发部署」Tab页中,点击对应的“环境”的「应用配置」。
点击「编辑」,可以一次性复制粘贴或者输入多条 KEY=VALUE 对。
在应用代码中读取参数变量
方案一:参数变量设置好后,点击「在线开发部署」,在 CloudIDE 中,代码里可以读取环境变量。
Python
import os
value = os.environ['key']
print(value)
NodeJS
var value = process.env.key
console.log(value)
Java
System.out.println("value: "+ System.getenv("key"));
PHP
$value = getenv('key');
方案二:在配置文件中设置占位符,比如Java SpringBoot配置文件application.properties中:
spring.datasource.url=${url}
spring.datasource.username=${username}
spring.datasource.password=${password}
常见的应用配置获取办法
以下说明一些常用云服务、第三方开放平台的访问配置获取方式:
一方服务访问
阿里云产品能力经过POP开放出去的服务需要通过阿里云的AK、SK方式来访问,比如OSS、视觉智能、OTS数据库等云产品。通过AK、SK来访问云产品功能,有两种方式:
主账号的AK、SK方式。配置了主账号AK、SK应用无需授权即可以访问账户的所有权限。在右上角账户设置菜单中打开「AccessKey管理」,如下图。可以创建、删除AK、SK。
子账户访问方式,让某个子账户具有某一个云产品的访问权限,这样可以做到更细粒度的权限控制,最大程度保护云服务安全。打开https://ram.console.aliyun.com/users子账户管理页面,创建一个子账户,并允许子账户「编程访问」权限。
经过短信安全验证后,子账户创建成功,同时生成子账户编程访问的AK、SK。
子账户AK、SK方式需要授予相应云产品的访问权限,在子账户管理列表里面「添加权限」,可以授予响应云产品的读写权限。
拿到AK、SK后,就可以在代码中访问OTS相应的服务了。比如:AK = LTAI4GGxxxxxxxxtDWY8USK= mMRXF3yyyyyyyyyyyGWBX****
则应用配置如下:
cloud_otsAk=LTAI4GGxxxxxxxxtDWY8U
cloud_otsSk=mMRXF3yyyyyyyyyyyGWBXrauf
SpringBoot属性配置如下:
spring.cloud.otsAk=${cloud_otsAk}
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
则应用配置如下:
#内网访问配置
url=jdbc:mysql://rm-xxxxxxxxxxxxx.mysql.rds.aliyuncs.com:3306/taskmanager
username=taskmanager
password=task!23456
#外网访问配置
url=jdbc:mysql://rm-yyyyyyyyyyyyyyy.mysql.rds.aliyuncs.com:3306/taskmanager
username=taskmanager
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
则应用配置如下:
#内网访问配置
database=taskmanager
host=dds-xxxxxxxxxxxxx.mongodb.rds.aliyuncs.com
port=3717
username=userxxxxxxxx
password=task!23456
#外网访问配置
database=taskmanager
host=dds-yyyyyyyyyyyyyy-pub.mongodb.rds.aliyuncs.com
port=3717
username=userxxxxxxxx
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的配置如下:
#内网访问配置
EndPoint = https://taskmanager.cn-shanghai.vpc.tablestore.aliyuncs.com
AccessKeyID=LTxxxxxxxxxxxCf
AccessKeySecret=eGRehwGSCByyyyyyyyyhjSXBG
InstanceName=taskmanager
#外网访问配置
EndPoint=https://taskmanager.cn-shanghai.vpc.tablestore.aliyuncs.com
AccessKeyID=LTxxxxxxxxxxxCf
AccessKeySecret=eGRehwGSCByyyyyyyyyhjSXBG
InstanceName=taskmanager
程序中具体怎么访问可以参考:https://help.aliyun.com/document_detail/31757.html
NAS
NAS在云开发平台中做了集成处理,您可以在应用的部署配置中进行创建、选择已有的NAS实例,然后设置挂载路径 ,比如:”/mnt/wb” ,如下图:
①是NAS文件系统实例,②是程序访问路径。
则应用访问NAS的配置如下:
#应用配置
nas_path=/mnt/wb
SpringBoot应用配置
#Spring配置
nat.path=${nas_path}
#代码访问
//java代码配置值注入
@Value("${nas.path}")
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
则应用配置如下:
#内网访问配置
registry_address=mse-xxxxxx-nacos-ans.mse.aliyuncs.com
user_namespace=xxxx
#外网访问配置
registry_address=mse-yyyyyyy-p.nacos-ans.mse.aliyuncs.com
user_namespace=xxxx
//其中user_namespace用于服务注册中心命名空间隔离,可以定义任何合法字符串,服务提供方和服务消费方需要保证一致。