OCI(Oracle Cloud Infrastructure)是由 Oracle 提供的云计算服务平台,旨在为企业和个人提供可扩展、安全、高性能的云解决方案。OCI 包括一系列云服务,涵盖计算、存储、数据库、网络等多个方面,为用户提供了构建和托管各种应用的基础设施。
同样OCI为云管平台或自动化集成方面提供了多种SDK访问方式:
1.命令行界面 (CLI):
- 使用 OCI CLI 工具,通过命令行直接调用 OCI 服务。
- 适用于需要快速测试和验证 OCI 资源的简单场景。
2.软件开发包 (SDK):
- 使用 SDK,通过在代码中嵌入 OCI SDK,实现对 OCI 服务的调用。
- 适用于在开发环境中进行更复杂的自动化任务、应用程序开发等场景。
- 目前支持的SDK包括: Python, JAVA, Go, NodeJS, .NET..
3. Terraform:
- 使用 Terraform,通过编写 Terraform 脚本定义 OCI 资源配置,实现对 OCI 服务的自动化部署和管理。
- 适用于需要基础设施即代码 (IaC) 的用户,希望以声明性的方式管理 OCI 资源。
OCI提供了多种认证方式,满足不同开发习惯的需求:
- 配置API认证文件访问 OCI SDK
- 通过API认证配置文件访问 OCI SDK
- 通过字典+API私钥文件配置访问 OCI SDK
- 将API私钥字符串存放到代码中访问 OCI SDK
1 生成API KEY(通过控制台生成API KEY)
在资源配置中,OCI云上所有的资源都具备唯一标示符号 OCID, 用于唯一标识和定位各种云资源。关于租户和用户的资源信息,可以通过右上角查看的摘要信息进行查看。
1.1 进入用户信息
1.2 添加 API 密钥
1.3 下载并保存密钥
1.4 获得配置示例文件
2 配置SDK认证(Python Demo)
OCI提供了多种认证方式,满足不同开发习惯的需求
2.1 配置API认证文件
# 默认的 OCI 认证位置
# mkdir -pv ~/.oci/config
# vim ~/.oci/config
[DEFAULT]
user=ocid1.user.<用户OCID> ## 用户OCID信息
fingerprint=65:d4:14:77:a4:77:93:b4:39:38:92:fc:88:a7:70:fb #API指纹信息,可以从控制台API密钥处获取
tenancy=ocid1.<租户OCID> ## 租户信息
region=ap-tokyo-1 ## 所在区域
key_file=/root/.oci/oci-apikey.pem ## 私钥位置
2.2 通过API配置文件访问OCI SDK
通过API认证文件,访问OCI SDK
import oci
default_config = oci.config.from_file() # 默认读取 ~/.oci/config的DEFAULT文件
# config = oci.config.from_file("~/.oci/config","DEFAULT") # 指定配置文件路径
# 验证配置文件
oci.config.validate_config(default_config)
# 查看用户信息, 基础代码测试
identity = oci.identity.IdentityClient(default_config) # 验证认证可用性
user = identity.get_user(default_config["user"]).data # 打印用户信息
print("="*30)
print(user) # 输出用户信息
print("="*30)
2.3 通过字典+私钥文件配置访问 OCI SDK
import oci
config_with_key_file = {
"user": 'ocid1.user.<用户OCID>',
"key_file": '~/.oci/oci-apikey.pem', # APi私钥的位置
"fingerprint": '65:d4:14:77:a4:77:93:b4:39:38:92:fc:88:a7:70:fb',
"tenancy": 'ocid1.<租户OCIID>',
"region": 'ap-tokyo-1'
}
oci.config.validate_config(config_with_key_file) # 验证认证可用性
# 验证sdk可用性
identity = oci.identity.IdentityClient(config_with_key_file) # 打印用户信息
user = identity.get_user(config_with_key_file["user"]).data
print("="*30)
print(user)
print("="*30)
2.4 不通过配置文件访问OCI SDK
将私钥文件以字符串变量形式存储在程序中,访问OCI SDK
# 注意: 如果将 KEY 配置到代码中,需要保证key信息为单行字符串,可以通过函数或手动的方式处理后使用
import oci
pem_prefix = '-----BEGIN RSA PRIVATE KEY-----\n'
pem_suffix = '\n-----END RSA PRIVATE KEY-----'
key = "MIIEv<私钥信息,需要保证密钥为单行>b+yDB/Cl40=" # 私钥信息
key_content = '{}{}{}'.format(pem_prefix, key, pem_suffix) # 整合私钥头和底部
config_with_key_content = {
"user": 'ocid1.user.<用户OCID>',
"key_content": key_content,
"fingerprint": '65:d4:14:77:a4:77:93:b4:39:38:92:fc:88:a7:70:fb',
"tenancy": 'ocid1.tenancy.oc1..<租户OCID>',
"region": 'ap-tokyo-1'
}
oci.config.validate_config(config_with_key_content) # 验证认证可用性
# 基础SDK信息验证
identity = oci.identity.IdentityClient(config_with_key_content) # 打印用户信息
user = identity.get_user(config_with_key_content["user"]).data
print("="*30)
print(user)
print("="*30)
3 参考资料
OCI Python SDK
https://github.com/oracle/oci-python-sdk
OCI Java SDK
https://github.com/oracle/oci-java-sdk
OCI 开发准备工作和配置
OCI SDK认证访问方式
OCI SDK Authentication Methods
OCI JAVA SDK说明
OCI JAVA SDK配置说明
🚀 炸鸡物料库 🚀
🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。
🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。
🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。
🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。
💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。
🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!