应用研发平台EMAS中在阿里云添加了 httpdns,怎么获取服务 ip?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云应用研发平台 EMAS 中,如果您已经添加了 HTTPDNS 服务并需要获取服务 IP 地址,可以按照以下步骤操作:
HTTPDNS 提供了一组默认的启动 IP 地址,用于初始化调度接口。这些启动 IP 地址分为国内站和国际站两部分,您可以根据实际需求选择合适的地址列表。
国内站启动 IP 地址:
203.107.1.1
203.107.1.33
203.107.1.34
203.107.1.35
国际站启动 IP 地址:
8.219.58.10
8.219.89.41
240b:4000:f10::92
240b:4000:f10::208
注意:请确保在应用中内置上述启动 IP 地址列表,以便在应用启动时调用调度接口。
通过启动 IP 地址列表中的任意一个 IP 地址,调用 HTTPDNS 的调度接口以获取最新的服务 IP 地址列表。调度接口的详细信息如下:
https://{启动IP}/{account_id}/ss
{启动IP}
:从启动 IP 地址列表中选择一个 IP 地址。{account_id}
:您的阿里云账号对应的 Account ID,可在 EMAS 控制台的概览页面获取。sid
:sessionId,用于标记一次独立的 App 生命周期。net
:网络类型,用于标记请求发起时的网络情况。bssid
:WiFi 环境的 bssid,用于标记不同的 WiFi 网络。n
:待加签的随机数。t
:1970 年 1 月 1 日以来的秒数。s
:用 secret 生成的签名。{
"service_ip": ["203.107.1.33"],
"service_ipv6": ["64:ff9b::cb6b:121"]
}
{
"code": "MissingArgument"
}
重要提示:调度接口会根据请求来源 IP 自动选择距离最近且健康的服务节点,并返回该节点的服务 IP 地址列表。
从调度接口返回的服务 IP 地址列表中,选择一个 IP 地址调用 HTTPDNS 解析服务进行域名解析。例如:
解析服务 URL 示例:
https://203.107.1.33/${accountId}/d?host=${host}
替换 ${accountId}
和 ${host}
为实际值后,预期返回结果应包含一个或多个 IP 地址。
注意:如果返回为空数组,请检查域名是否已正确添加到 EMAS 控制台。
为了确保解析服务的高可用性,建议定期更新服务 IP 地址列表。更新时机包括: - 应用冷启动时。 - 网络环境切换时。 - 每 8 小时至少更新一次。 - 当服务 IP 列表无法解析时立即更新。
如果您希望简化上述流程,可以直接集成阿里云提供的 HTTPDNS SDK。SDK 已内置了获取、更新和维护服务 IP 地址的功能,您只需调用相关接口即可完成域名解析。
在模块级 Gradle 文件中添加以下依赖:
dependencies {
implementation 'com.aliyun.ams:alicloud-android-httpdns:${httpdnsVersion}'
}
将 SDK 包内所有文件拷贝至 <project>/<app-module>/libs
目录下,并在模块级 Gradle 文件中配置本地 SDK 文件目录:
repositories {
flatDir {
dirs 'libs'
}
}
注意:
httpdnsVersion
请从 Android SDK 发布说明中获取。
通过上述步骤,您可以成功获取并使用阿里云 HTTPDNS 的服务 IP 地址。如果需要进一步优化解析性能,建议结合 SDK 使用,以减少手动配置的工作量。