众所周知,通过SDK来访问对象存储是云服务的标配,这里我们将会详细介绍如何在OCI VM实例上实现通过JAVA SDK访问对象存储服务。
OCI SDK for Java环境准备
Java 8 or Java 11
A TTL value of 60
OCI API Key生成需要一个具有OCI管理资源权限的OCI用户和组,请参考:
https://docs.oracle.com/en-us/iaas/Content/GSG/Tasks/addingusers.htm;
并授予资源管理、访问权限,请参考:
https://docs.oracle.com/en-us/iaas/Content/Identity/Concepts/commonpolicies.htm
一对keypair用于签名API请求,其中public key(公共密钥)将上传到OCI,通过私钥调用OCI API
API Key生成演示:
1)用户登录OCI控制台

如上图1,点击右上用户图标展开的用户名称

在用户详细信息界面,点击左面的”API密钥“

添加API密钥

在弹出界面,添加public key(公共密钥)


安装OCI SDK
方法一:直接从以下GitHub链接下载:
https://github.com/oracle/oci-java-sdk/releases
方法二:通过 yum安装(Oracle Linux 7 or 8)
Oracle Linux 7,执行以下命令:
sudo yum-config-manager --enable ol7_developer
sudo yum install java-oci-sdk
Oracle Linux 8,执行以下命令:
sudo yum-config-manager --enable ol8_developer
sudo yum install java-oci-sdk
缺省配置文件位于:
~/.oci/config
[DEFAULT]
user=ocid1.user.oc1..。。。。
fingerprint=…..
key_file=……
tenancy=…..
region=us-ashburn-1
可参考生成API Key时最后显示“配置文件预览“
https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkgettingstarted.htm
参考链接:
https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkexamples.htm
OCI SDK for Java API Reference(API参考手册):
https://docs.oracle.com/en-us/iaas/tools/java/2.3.2/
创建动态组Dynamic Group

动态组匹配规则Matching Rules:
支持使用以下变量:
instance.compartment.id - the OCID of the compartment where the instance resides
instance.id - the OCID of the instance
tag.<tagnamespace>.<tagkey>.value - the tag namespace and tag key. For example, tag.department.operations.value.
tag.<tagnamespace>.<tagkey>.value='<tagvalue>' - the tag namespace, tag key, and tag value. For example, tag.department.operations.value='45'
示例:
Any {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa********************************'}
创建资源授权策略policy

示例:
Allow dynamic-group ostest-dg to manage object-family in compartment test-os
创建OCI VM实例
安装OCI JAVA SDK(VM实例为Oracle Linux 7,参见前面的安装配置介绍)
sudo yum-config-manager --enable ol7_developer
sudo yum install java-oci-sdk.x86_64
编译运行示例程序
javac -cp .:/usr/lib64/java-oci-sdk/third-party/lib/*:/usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-1.30.0.jar ObjectStorageExample.java
java -cp .:/usr/lib64/java-oci-sdk/third-party/lib/*:/usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-1.30.0.jar ObjectStorageExample
附:使用InstancePrincipals授权方法示例代码:
InstancePrincipalsAuthenticationDetailsProvider provider = InstancePrincipalsAuthenticationDetailsProvider.builder().build();
IdentityClient identityClient = new IdentityClient(provider);
ObjectStorage client = new ObjectStorageClient(provider);
...
注:
1) ObjectStorageExample.java示例源程序来自
参考链接:https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkexamples.htm
2) API调用示例编程方法与使用config文件相同

作者简介
郭静贤,甲骨文云平台解决方案专家团队资深咨询顾问,专注于甲骨文云平台IaaS、PaaS平台、SaaS应用集成、混合云集成、SaaS应用扩展,公有云、混合云等领域,具有20多年的IT行业从业经验,擅长企业应用架构咨询、设计和实现。可以通过jingxian.guo@oracle.com与他联系。




