OCI Python SDK 认证 代码示例

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 进入用户信息

OCI Python SDK 认证 代码示例_第1张图片1.2 添加 API 密钥

OCI Python SDK 认证 代码示例_第2张图片

1.3 下载并保存密钥

OCI Python SDK 认证 代码示例_第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 开发准备工作和配置

Required Keys and OCIDs

OCI SDK认证访问方式

OCI SDK Authentication Methods

OCI JAVA SDK说明

SDK for Java

OCI JAVA SDK配置说明

Getting Started

你可能感兴趣的:(OCI云,服务器,运维,python,云计算,devops)