开发SDK的使用教程【面试+工作】

开发SDK的使用教程【面试+工作】

最近很多人反映工作中SDK不会用,

这个说实话不是个难点,只是你不敢操作。

下面以TFS使用和阿里SDK做教程


TFS SDK使用

一、下载必要的软件

- Eclipse安装程序 http://www.eclipse.org/

- JDK http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html

二、创建Java项目,并导入TFS SDK

在Java项目中创建目录tfssdk,并将SDK中的文件复制到该目录下;将SDK中的文档做成zip文档,并复制到tfssdk目录下(tfs-sdk-11.0-javadoc.zip)

打开项目属性

添加JAR,并配置库位置和文档位置

三、创建并运行样例代码

添加一个样例代码:创建要求工作项

运行代码,成功


阿里云 SDK使用

一.快速开始

欢迎使用阿里云开发者工具套件(SDK)。阿里云Java SDK让您不用复杂编程即可访问云服务器、云监控等多个阿里云服务。这里向您介绍如何获取阿里云Java SDK并开始调用。

1.环境准备

  1. 要使用阿里云Java SDK,您需要一个RAM账号以及一对AccessKey IDAccessKey Secret。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey,或联系您的系统管理员。
  2. 要使用阿里云SDK访问某个产品的API,您需要事先在阿里云控制台中开通这个产品。
  3. 阿里云Java SDK需要1.6以上的JDK。

2.安装SDK

如果您使用Apache Maven来管理Java项目,只需在项目的pom.xml文件加入相应的依赖项即可。您可以在阿里云SDK频道中下载各云产品的Maven依赖。

无论您要使用哪个产品的开发工具包,都必须安装SDK核心库。比如,对云服务器ECS的SDK调用,您需要安装SDK核心库和云服务器ECS的SDK。

以3.5.0版本的SDK核心库和3.0.0版本的ECS SDK为例,您只需在pom.xml中声明这两个开发工具包,如下所示:

3.使用Java SDK

以下这个代码示例向您展示了调用阿里云Java SDK的3个主要步骤:

  1. 创建DefaultAcsClient实例并初始化。
  2. 创建API请求并设置参数。
  3. 发起请求并处理应答或异常。

二、使用手册


1.使用Java SDK

1.1安装

阿里云Java SDK支持1.6及以上版本的JDK,提供以下两种安装方式:

  • 1.1.1使用Maven(推荐) 如果您使用了Maven管理依赖,您可以通过向pom.xml中添加以下代码来安装阿里云Java SDK。
  • 1.1.2在集成开发环境(IDE)中导入JAR文件 注意: 该安装方式会在下个主版本中被废弃,届时将仅支持通过Maven安装SDK。 无论您使用Eclipse还是IntelliJ作为集成开发环境,都可以通过导入JAR文件的方式安装阿里云Java SDK。您可以在阿里云开发工具包(SDK)中下载各云产品的JAR文件。 1.1.3Eclipse 完成以下操作,在Eclipse的项目中安装阿里云Java SDK:
  • 1.1.3.1将下载的aliyun-java-sdk-XXX.jar文件复制到您的项目文件夹中。
  • 1.1.3.2在Eclipse中打开您的项目,右键单击该项目,单击Properties。
  • 1.1.3.3在弹出的对话框中,单击Java Build Path > Libraries > Add JARs,添加下载的JAR文件。

1.1.3.4单击Apply and Close。 1.1.4IntelliJ 完成以下操作,在IntelliJ的项目中安装阿里云Java SDK:

  • 1.1.4.1将下载的aliyun-java-sdk-XXX.jar文件复制到您的项目文件夹中。
  • 1.1.4.2在IntelliJ中打开您的项目,在菜单栏中单击File > Project Structure。
  • 1.1.4.3在弹出的对话框中,单击Modules > Dependencies。在出现的列表中单击add > JARs or directories,选择要添加的JAR文件。
  • 1.1.4.4单击Apply,然后单击OK。

1.2设置身份验证凭据

当使用阿里云SDK访问阿里云服务时,您需要提供阿里云账号进行身份验证。

目前,Java SDK支持以下几种身份验证方式:

验证方式

说明

AccessKey

使用AccessKey ID和AccessKey Secret访问

StsToken

使用STS Token访问

RamRoleArn

使用RAM子账号的AssumeRole方式访问

EcsRamRole

在ECS实例上通过EcsRamRole实现免密验证

RsaKeyPair

使用RSA公私钥方式(仅日本站支持)

本文以AccessKey为例说明如何设置凭据。为了保证您的账号安全,建议您使用RAM账号来访问阿里云服务。阿里云账号的AccessKey对拥有的资源有完全的权限。RAM账号由阿里云账号授权创建,仅有对特定资源限定的操作权限。看最下面附录:创建AccessKey获取RAM账号的AccessKey。

使用AccessKey作为访问凭据,需要在初始化Client时设置凭证。

注意:确保包含AccessKey的代码不会泄漏(例如提交到外部公开的GitHub项目),否则将会危害您的阿里云账号的信息安全。

1.3发起调用

本文以ECS为例,介绍如何使用阿里云Java SDK发起请求。

1.3.1新建一个AcsClient。

1.3.2创建请求。

  1. 请求类的命名规范为${apiName}Request,其中
  2. ${apiName}为API名称,例如DescribeInstances。
  3. 在引入多个产品SDK时,有可能存在Request类同名的情况,请注意按照package区分。
  1. 发起调用并处理应答。
  1. 正常情况下,应答中的所有字段,都会被反序列化到response中,您可以直接调用response.getXXX()来获得应答中的字段。
  1. 如果出现了异常,或您需要原始HTTP应答的情况下,您可以通过以使用doAction()来获取原始应答。

2.使用CommonRequest进行调用

2.1CommonRequest调用方式

当您要访问的API没有产品SDK提供时,可以采用泛用型的API调用方式(CommonRequest)。使用CommonRequest调用方式可实现任意OpenAPI接口的调用。

CommonRequest有如下特点:

  1. 轻量:只需Core包即可发起调用,无需下载安装各产品的SDK。
  2. 简便:无需更新SDK即可调用最新发布的API。
  3. 快速迭代。

2.2使用CommonRequest

阿里云产品的API有RPC和RESTful两种风格,不同风格的API的CommonRequest的调用方法也不同。

通常API参数中包含Action参数的是RPC风格,包含PathPattern参数的是RESTful风格。一般情况下,每个产品内,所有API的调用风格是统一的。每个API仅支持特定的一种风格调用,传入错误的标识,可能会调用到其他API,或收到ApiNotFound的错误信息。

发起一次CommonRequest请求,您需要获取以下几个参数的值。您可以在文档中心-https://help.aliyun.com/各产品的API文档中获取以下参数的值。此外,部分产品也可以通过OpenAPI Explorer-https://api.aliyun.com/来获取API的参数信息。

  • 域名(domain):该产品的通用访问域名。
  • API版本(version):该API的版本号,格式为YYYY-MM-DD。 说明:在”公共参数”内容中,API版本号的信息通常是Version参数的值, 但也有些产品的API版本号为x-acs-version参数的值。
  • 当调用的API为RPC风格时(大部分阿里云产品API为RPC风格)如ECS和RDS,需要获取Action参数,使用request.ApiName = "<Action>"的方式来指定API名称。 例如RunInstances-https://helpcdn.aliyun.com/document_detail/63440.html接口的Action为RunInstances,在发起CommonRequest请求时,要使用request.ApiName = "RunInstances"来指定API名称。
  • 当调用的API为RESTful风格时如容器服务, 需要获取PathPattern参数,使用request.PathPattern = "<PathPattern>"的方式来指定RESTful路径。 例如容器服务的查看所有集群实例-https://helpcdn.aliyun.com/document_detail/26053.html的API的PathPattern为/clusters,在发起CommonRequest请求时,要使用request.PathPattern = "/clusters"指定RESTful路径。

2.3代码示例

2.3.1调用RPC风格的API

以下代码展示了如何使用CommonRequest的方式调用ECS的DescribeInstanceStatus-https://helpcdn.aliyun.com/document_detail/25505.html接口:

2.3.2调用RESTful风格的API

以下代码展示了如何使用CommonRequest的方式调用容器服务的查看所有集群实例-https://helpcdn.aliyun.com/document_detail/26053.html接口:


3.使用STS Token作为用户凭据

直接使用阿里云账号的主账号的AccessKey ID和AccessKey Secret进行应用开发会有一定的安全风险,为了提升安全性,除了通过RAM角色控制权限范围外,您还可以使用为RAM角色签发的STS Token来访问阿里云服务。

使用STS Token调用SDK有以下优点:

  • 减少了主账号AccessKey ID和AccessKey Secret泄露的风险,特别是移动设备等场景。
  • 能使用灵活的权限控制,STS Token有一定的时间限制,并且根据RAM角色的灵活设置对ECS、SLB等资源的精细授权。

本文介绍如何使用STS Token来调用SDK访问阿里云服务,更多关于RAM和STS的信息,请参考RAM和STS介绍-https://helpcdn.aliyun.com/document_detail/27360.html。

注意: 在使用STS Token前,确保该产品支持STS Token验证。详情参见支持STS Token的产品-https://helpcdn.aliyun.com/document_detail/28630.html。

3.1方式一:直接使用STS Token

直接使用STS Token时,您需要自行维护STS Token的周期性更新。

其中:

  • region-id是您正在使用的地域(可用区)的ID,详情参见地域列表-https://helpcdn.aliyun.com/document_detail/40654.html。
  • sts-access-key-id sts-access-key-secret sts-session-token 是通过STS的AssumeRole-https://helpcdn.aliyun.com/document_detail/28763.html请求返回的授权信息。

3.2方式二:使用SDK自动管理STS Token的周期

您可以通过指定RAM的角色信息,让SDK帮您自动申请并维护STS Token。

其中:

  • role-arn是角色全局资源描述符,您可以通过访问RAM控制台-https://ram.console.aliyun.com/role/list#/role/list,单击角色名,进入详情页后查询角色名对应的role-arn
  • role-session-name是临时角色名称,您可以通过调用AssumeRole-https://helpcdn.aliyun.com/document_detail/28763.html接口来获取一个扮演该角色的临时身份,创建成功后,便可以使用创建时的RoleSessionName作为本方式的role-session-name参数。

4.配置RamRole实现在ECS实例上的“无AK访问”

为了提高应用部署的安全性的同时提升便利性,阿里云SDK支持通过实例元数据-https://helpcdn.aliyun.com/document_detail/49122.html服务来获取ECS RAM角色的授权信息来访问阿里云资源和服务。使用这种方式,您部署在ECS上的应用程序,无需在SDK上配置授权信息即可访问阿里云API(即不需要配置AccessKey),通过这种方式授权的SDK,可以拥有这个ECS RAM角色的权限。

注意:确保ECS实例已经配置了RAM角色,详情参见借助于实例RAM角色访问其他云产品-https://helpcdn.aliyun.com/document_detail/54579.html。

4.1代码示例

其中:

  • role-name是与ECS实例关联的RAM角色名称。
  • region-id是您正在使用的地域的Region ID,详情参见地域列表-https://helpcdn.aliyun.com/document_detail/40654.html。

注意:示例中的region-id是目标服务(且RAM角色有权访问)的API所在Region,不一定等于这个ECS实例的Region ID。


5.错误处理

在使用阿里云Java SDK时,当服务端或者SDK端出错时,SDK会返回相应的异常信息。这些异常信息中会包含具体的错误信息,例如错误码(Error Code)和错误消息(Error Message)。

一般情况下,您不需要对阿里云Java SDK返回的错误进行处理。您只需要根据服务端的错误提示处理服务端错误即可。

  • ServerException是服务端错误信息。
  • ClientException是SDK端错误信息。

例如,当出现如下错误时,您可以根据具体的错误信息,修改AccessKey的ID即可。

com.aliyuncs.exceptions.ClientException: InvalidAccessKeyId.NotFound : Specified access key is not found.

如果您需要对SDK的错误进行处理,可以参考如下示例编写代码:


附录:

创建AccessKey

访问密钥AccessKey(AK)相当于登录密码,只是使用场景不同。AccessKey用于程序方式调用云服务API,而登录密码用于登录控制台。如果您不需要调用API,那么就不需要创建AccessKey。

您可以使用AccessKey构造一个API请求(或者使用云服务SDK)来操作资源。AccessKey包括AccessKeyId和AccessKeySecret。

  • AccessKeyId用于标识用户。
  • AccessKeySecret是用来验证用户的密钥。AccessKeySecret必须保密。

注意:禁止使用主账号AK,因为主账号AK泄露会威胁您所有资源的安全。请使用子账号AK进行操作,可有效降低AK泄露的风险。

操作步骤

  1. 登录RAM管理控制台。
  2. 在左侧导航栏,单击用户管理。
  3. 单击目标用户,进入用户详情页面。
  4. 在用户AccessKey区域,单击创建AccessKey。
  5. 在弹出的对话框中,展开AccessKey详情查看查看AcessKeyId和AccessKeySecret。然后单击保存AK信息,下载AccessKey信息。 注意: 请您妥善保存AccessKey,谨防泄露。

原文发布于微信公众号 - Java帮帮(javahelp)

原文发表时间:2018-04-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

生产环境之“进程”两字

一、进程概念 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux...

37980
来自专栏BestSDK

REST API 安全设计指南

REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出提出一个既适于客户端应...

99580
来自专栏GAN&CV

Ubuntu16.04安装opencv2&&ImportError: No module named cv2.cv

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

60230
来自专栏Java3y

Linux用户和权限管理看了你就会用啦

没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了。这篇主要将Linux下的用户和权限知识点再整理一下。

3.7K10
来自专栏北京马哥教育

Redis数据库安全手册

Redis是一个 高性能的key-value数据库,这两年可谓火的不行。而Redis的流行也带来一系列安全问题,不少攻击者都通过Redis发起攻击。本文将讲解...

36660
来自专栏小狼的世界

Mac下使用XLD转换无损音乐Ape

最近想要给音乐库增加一些音乐,下载了一些Ape格式的无损音乐,但是无法直接导入到iTunes中,必须经过其他工具转换成苹果的无损格式,XLD就是这样一款工具。X...

24910
来自专栏无题

分布式Session一致性解决方案

在分布式架构或微服务架构下,必须保证一个应用服务器上保存Session后,其它应用服务器可以同步或共享这个Session Web应用在单机部署的情况下,Ses...

45160
来自专栏伪君子的梦呓

使用github搭建个人博客

前言 为什么我要搭建一个个人博客呢?主要是为了方便自己分类一些东西,而且最近在学 html 和 css ,搭建一个博客来帮助自己理解一下。 文章主要分6个部分,...

46160
来自专栏JMCui

Hybris安装和各个Extention简单介绍

前言:突然想好好梳理一下这几个月所学的内容了,顺便让自己的知识有一个系统的框架。这种安装仅仅适用于开发环境,不适于生产环境。 一、  安装JDK 请安装最新的O...

547110
来自专栏云计算教程系列

如何在Ubuntu 16.04上为匿名下载设置vsftpd

FTP是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。它已被更快,更安全,更方便的文件传输方式所取代。许多休闲网民希望直接从他们...

25300

扫码关注云+社区

领取腾讯云代金券