应用配置

更新时间:

应用配置

说明

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

数据库、文件存储和泛中间件服务,根据应用需要来进行开通、配置到项目工程中,向业务代码提供访问服务,云开发平台不会去消费这些服务配置。

云开发平台在平台层面提供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来访问云产品功能,有两种方式:

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

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

创建子账户

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

image.png

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

image.png

拿到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文件系统实例,②是程序访问路径。

image.png

则应用访问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用于服务注册中心命名空间隔离,可以定义任何合法字符串,服务提供方和服务消费方需要保证一致。