开发者社区 问答 正文

应用研发平台EMAS中在阿里云添加了 httpdns,怎么获取服务 ip?

应用研发平台EMAS中在阿里云添加了 httpdns,怎么获取服务 ip?

展开
收起
陈幕白 2024-05-14 13:02:14 70 分享
分享
版权
阿里云 AI 助理回答

在阿里云应用研发平台 EMAS 中,如果您已经添加了 HTTPDNS 服务并需要获取服务 IP 地址,可以按照以下步骤操作:


1. 获取启动 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 地址列表,以便在应用启动时调用调度接口。


2. 调用调度接口获取服务 IP 地址

通过启动 IP 地址列表中的任意一个 IP 地址,调用 HTTPDNS 的调度接口以获取最新的服务 IP 地址列表。调度接口的详细信息如下:

调度接口 URL

https://{启动IP}/{account_id}/ss
  • {启动IP}:从启动 IP 地址列表中选择一个 IP 地址。
  • {account_id}:您的阿里云账号对应的 Account ID,可在 EMAS 控制台的概览页面获取。

请求方式

  • GET

可选参数

  • 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 地址列表。


3. 使用服务 IP 地址调用解析服务

从调度接口返回的服务 IP 地址列表中,选择一个 IP 地址调用 HTTPDNS 解析服务进行域名解析。例如:

  • 解析服务 URL 示例

    https://203.107.1.33/${accountId}/d?host=${host}
    
  • 替换 ${accountId}${host} 为实际值后,预期返回结果应包含一个或多个 IP 地址。

注意:如果返回为空数组,请检查域名是否已正确添加到 EMAS 控制台。


4. 定期更新服务 IP 地址列表

为了确保解析服务的高可用性,建议定期更新服务 IP 地址列表。更新时机包括: - 应用冷启动时。 - 网络环境切换时。 - 每 8 小时至少更新一次。 - 当服务 IP 列表无法解析时立即更新。


5. 集成 SDK(可选)

如果您希望简化上述流程,可以直接集成阿里云提供的 HTTPDNS SDK。SDK 已内置了获取、更新和维护服务 IP 地址的功能,您只需调用相关接口即可完成域名解析。

Maven 依赖方式

在模块级 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 使用,以减少手动配置的工作量。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答