开发SDK的使用教程【面试+工作】
最近很多人反映工作中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项目中创建目录tfssdk,并将SDK中的文件复制到该目录下;将SDK中的文档做成zip文档,并复制到tfssdk目录下(tfs-sdk-11.0-javadoc.zip)
打开项目属性
添加JAR,并配置库位置和文档位置
添加一个样例代码:创建要求工作项
运行代码,成功
阿里云 SDK使用
一.快速开始
欢迎使用阿里云开发者工具套件(SDK)。阿里云Java SDK让您不用复杂编程即可访问云服务器、云监控等多个阿里云服务。这里向您介绍如何获取阿里云Java SDK并开始调用。
AccessKey ID
和AccessKey Secret
。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey,或联系您的系统管理员。如果您使用Apache Maven来管理Java项目,只需在项目的pom.xml文件加入相应的依赖项即可。您可以在阿里云SDK频道中下载各云产品的Maven依赖。
无论您要使用哪个产品的开发工具包,都必须安装SDK核心库。比如,对云服务器ECS的SDK调用,您需要安装SDK核心库和云服务器ECS的SDK。
以3.5.0版本的SDK核心库和3.0.0版本的ECS SDK为例,您只需在pom.xml中声明这两个开发工具包,如下所示:
以下这个代码示例向您展示了调用阿里云Java SDK的3个主要步骤:
1.使用Java SDK
阿里云Java SDK支持1.6及以上版本的JDK,提供以下两种安装方式:
pom.xml
中添加以下代码来安装阿里云Java SDK。aliyun-java-sdk-XXX.jar
文件复制到您的项目文件夹中。1.1.3.4单击Apply and Close。 1.1.4IntelliJ 完成以下操作,在IntelliJ的项目中安装阿里云Java SDK:
aliyun-java-sdk-XXX.jar
文件复制到您的项目文件夹中。当使用阿里云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项目),否则将会危害您的阿里云账号的信息安全。
本文以ECS为例,介绍如何使用阿里云Java SDK发起请求。
1.3.1新建一个AcsClient。
1.3.2创建请求。
${apiName}Request
,其中response.getXXX()
来获得应答中的字段。doAction()
来获取原始应答。2.使用CommonRequest进行调用
当您要访问的API没有产品SDK提供时,可以采用泛用型的API调用方式(CommonRequest)。使用CommonRequest调用方式可实现任意OpenAPI接口的调用。
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的参数信息。
Version
参数的值, 但也有些产品的API版本号为x-acs-version
参数的值。Action
参数,使用request.ApiName = "<Action>"
的方式来指定API名称。
例如RunInstances-https://helpcdn.aliyun.com/document_detail/63440.html接口的Action为RunInstances
,在发起CommonRequest请求时,要使用request.ApiName = "RunInstances"
来指定API名称。PathPattern
参数,使用request.PathPattern = "<PathPattern>"
的方式来指定RESTful路径。
例如容器服务的查看所有集群实例-https://helpcdn.aliyun.com/document_detail/26053.html的API的PathPattern为/clusters
,在发起CommonRequest请求时,要使用request.PathPattern = "/clusters"
指定RESTful路径。以下代码展示了如何使用CommonRequest的方式调用ECS的DescribeInstanceStatus-https://helpcdn.aliyun.com/document_detail/25505.html接口:
以下代码展示了如何使用CommonRequest的方式调用容器服务的查看所有集群实例-https://helpcdn.aliyun.com/document_detail/26053.html接口:
直接使用阿里云账号的主账号的AccessKey ID和AccessKey Secret进行应用开发会有一定的安全风险,为了提升安全性,除了通过RAM角色控制权限范围外,您还可以使用为RAM角色签发的STS Token来访问阿里云服务。
使用STS Token调用SDK有以下优点:
本文介绍如何使用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。
直接使用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请求返回的授权信息。您可以通过指定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
参数。为了提高应用部署的安全性的同时提升便利性,阿里云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。
其中:
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。
注意:禁止使用主账号AK,因为主账号AK泄露会威胁您所有资源的安全。请使用子账号AK进行操作,可有效降低AK泄露的风险。