Tencent Cloud SDK
Tencent CloudGitHub
简体中文
简体中文
  • 欢迎
  • 常见问题
  • Python
  • 概述
  • 安装
  • 入门
  • 最佳实践
    • 无服务器云函数
      • 无服务器云函数间调用
      • 定时调用无服务器云函数
      • 原生调用无服务器云函数
        • 绑定到无服务器云函数
        • 使用例程组织无服务器云函数
    • 无服务器数据库
      • 创建和管理无服务器数据库
    • 其他 Tencent Cloud 产品
      • 选择最佳的访问凭据类型
  • API 文档
    • 无服务器云函数
      • 类和方法
        • Client 类
          • easy_invoke 方法
          • routine_invoke 方法
          • select_function 方法
          • select_routine 方法
          • bind_function 方法
          • bind_routine 方法
          • schedule_invoke 方法
          • run_schedule 方法
          • invoke 方法
          • create_function 方法
          • delete_function 方法
          • publish_function_version 方法
          • copy_function 方法
          • update_function_code 方法
          • update_function_configure 方法
          • get_function_result_by_request_id 方法
          • get_function_results 方法
          • list_functions 方法
          • list_function_versions 方法
          • get_function_info 方法
          • create_trigger 方法
          • delete_trigger 方法
          • create_namespace 方法
          • delete_namespace 方法
          • list_namespaces 方法
          • update_namespace 方法
          • get_function_code_download_url 方法
          • download_function_code 方法
          • create_layer 方法
          • delete_layer 方法
          • get_layer_info 方法
          • list_layers 方法
          • list_layer_versions 方法
          • submit_monitor_indicator 方法
        • FunctionSchedule 类
          • cancel 方法
        • FunctionResultFuture 类
          • get_request_id 方法
        • FunctionTrigger 类
          • get_trigger_kind 方法
          • get_trigger_context 方法
          • use_timer 方法
          • use_object_storage_bucket 方法
          • use_message_queue_topic 方法
        • FunctionCode 类
          • get_code_source 方法
          • get_code_context 方法
          • use_object_storage_bucket 方法
          • use_local_zip_archive 方法
          • use_git_repository 方法
        • LayerContent 类
        • fetch_client 函数
        • use_routine_dispatcher 函数
      • 数据类型
        • FunctionResult 类型
        • FunctionInfo 类型
        • FunctionInfoEx 类型
        • FunctionVersionInfo 类型
        • NamespaceInfo 类型
        • LayerInfo 类型
        • FunctionConfigure 类型
        • FunctionResultFilter 类型
        • FunctionFilter 类型
        • ObjectStorageBucketTriggerFilter 类型
        • MessageQueueTopicTriggerFilter 类型
        • LayerFilter 类型
        • FunctionRuntime 枚举器
        • FunctionType 枚举器
        • FunctionResultType 枚举器
        • FunctionTriggerKind 枚举器
        • FunctionCodeSource 枚举器
        • LayerContentSource 枚举器
        • LayerStatus 枚举器
      • 异常
        • InvokeError 异常
        • StatusError 异常
    • 无服务器数据库
      • 类和方法
        • Client 类
          • create_instance 方法
          • delete_instance 方法
          • list_instances 方法
          • set_instance_extranet 方法
        • fetch_client 函数
      • 数据类型
        • InstanceInfo 类型
        • InstanceConfigure 类型
        • DatabaseCharset 枚举器
    • 其他 Tencent Cloud 产品
      • 类和方法
        • Waitable 类
          • wait_for_done 方法
          • has_done 方法
          • set_result 方法
        • ErrorManager 类
          • add_handler 方法
          • remove_handler 方法
          • has_handler 方法
          • clear_all_handler 方法
        • UniversalClient 类
          • action 方法
          • action_for_product 方法
          • select_action 方法
          • get_product_id 方法
          • set_product_id 方法
          • set_access_endpoint 方法
          • set_access_proxies 方法
          • get_last_response_metadata 方法
        • Proxies 类
          • use_proxy_server 方法
          • add_proxy_server 方法
          • remove_proxy_server 方法
      • 数据类型
        • ResponseMetadata 类型
        • ProxyAuth 类型
        • ProxyType 枚举器
        • ErrorHandlerResult 枚举器
        • WaitableStatus 枚举器
      • 异常
        • Error 异常
        • NotFoundError 异常
        • ExistedError 异常
        • OccupiedError 异常
        • ClientError 异常
        • RequestError 异常
        • ResponseError 异常
        • ActionError 异常
        • ActionResultError 异常
  • GitHub 存储库
  • Issues 跟踪器
  • PyPI 项目主页
由 GitBook 提供支持
在本页
  • 概述
  • 种类
  • 环境凭据
  • 文件凭据
  • 优先级
  • 建议

这有帮助吗?

导出为 PDF
  1. 最佳实践
  2. 其他 Tencent Cloud 产品

选择最佳的访问凭据类型

本页将向您介绍 Tencent Cloud SDK for Python 目前已支持的访问凭据类型

概述

通常情况下,我们会选择最简单、直观的在应用程序源代码中硬编码访问凭据信息,这种方式并不便于访问凭据的管理和定期轮换,也不利于组织复杂的应用程序项目源代码。我们将该方式称之为默认访问凭据类型,其源代码形态通常为:

access_credentials: credentials.Credentials = credentials.Credentials(
    secret_id = 'AKIDF3sMOAU1pOgkmrKHchX6TZQ1Mo1C5qa7',
    secret_key = 'b4JL8fwxkIgsKMXGi39yYt0ECxZw4wZf'
)

在下文中我们将向您介绍 Tencent Cloud SDK for Python 中所支持的其他访问凭据类型,您可以根据应用程序需求选择最佳的实践方式。

种类

环境凭据

环境凭据是指在特定应用程序运行环境中由环境变量所存储的访问凭据信息,Tencent Cloud SDK for Python 支持自动查找并使用有效的环境凭据作为客户端的访问凭据。

环境凭据类型由命名空间和模块 tencent.cloud.auth.credentials 中类 EnvironmentalCredentials 代表,该类的签名如下:

class EnvironmentalCredentials(Credentials)

继承:tencent.cloud.auth.credentials.Credentials 类

当您选择并使用环境凭据时,Tencent Cloud SDK for Python 将尝试在当前运行环境的环境变量中查找默认名为 TENCENTCLOUD_SECRETID 和 TENCENTCLOUD_SECRETKEY 的环境变量值,对应访问凭据的 Secret ID 和 Secret Key 字段。

在下文中我们将通过 Python 代码片段向您演示如何使用环境凭据实例化无服务器云函数产品客户端:

from tencent.cloud.auth import credentials

function_client: functions.Client = functions.Client(
    access_credentials = credentials.EnvironmentalCredentials()
)

当您在 Tencent Cloud 无服务器云函数产品所运行的无服务器云函数代码中使用时,您可以为该无服务器云函数配置 运行角色。当无服务器云函数运行时将自动为其分配非持久临时访问凭据,该访问凭据将被 Tencent Cloud SDK for Python 视为环境凭据。

如果运行环境中存储访问凭据的环境变量名称与默认查找的环境变量名称不同,您可以手动指定:

from tencent.cloud.auth import credentials

function_client: functions.Client = functions.Client(
    access_credentials = credentials.EnvironmentalCredentials(
        variable_name_of_secret_id = 'MY_SECRETID',
        variable_name_of_secret_key = 'MY_SECRETKEY'
    )
)

现在 Tencent Cloud SDK for Python 将尝试在当前运行环境的环境变量中查找名为 MY_SECRETID 和 MY_SECRETKEY 的环境变量值。

环境凭据支持隐式使用,这意味着若当前应用程序的运行环境符合环境凭据的所有默认行为,您将无需明确指定使用环境凭据:

function_client: functions.Client = functions.Client()

请注意,如果当前应用程序运行环境中无法找到符合条件的环境凭据,将引发 EnvironmentError 异常。

文件凭据

没错,Tencent Cloud SDK for Python 不但支持环境凭据,也支持文件凭据。顾名思义,文件凭据是指将有效的访问凭据信息以 JSON 序列化文本的形式存储在文件上,Tencent Cloud SDK for Python 支持自动查找并使用有效的文件凭据作为客户端的访问凭据。

环境凭据类型由命名空间和模块 tencent.cloud.auth.credentials 中类 FileCredentials 代表,该类的签名如下:

class FileCredentials(Credentials)

继承:tencent.cloud.auth.credentials.Credentials 类

当您选择并使用文件凭据时,Tencent Cloud SDK for Python 将尝试在当前运行目录下查找名为 secret.json 的 JSON 序列化文本文件,其文件内容形态如下:

{
    "secretId": "AKIDF3sMOAU1pOgkmrKHchX6TZQ1Mo1C5qa7",
    "secretKey": "b4JL8fwxkIgsKMXGi39yYt0ECxZw4wZf"
}

其中,JSON 属性 secretId 和 secretKey 分别对应访问凭据的 Secret ID 和 Secret Key 字段。

在下文中我们将通过 Python 代码片段向您演示如何使用文件凭据实例化无服务器云函数产品客户端:

from tencent.cloud.auth import credentials

function_client: functions.Client = functions.Client(
    access_credentials = credentials.FileCredentials('./secret.json')
)

请注意,文件凭据类型与环境凭据类型的实例化默认参数值不同,文件凭据类型实例化时必须明确指定包含访问凭据的 JSON 序列化文本文件的路径。

与环境凭据相同,文件凭据也支持隐式使用,这意味着若当前应用程序的文件环境符合文件凭据的所有默认行为,您将无需明确指定使用环境凭据,Tencent Cloud SDK for Python 将尝试在应用程序当前工作目录下查找名为 secret.json 的 JSON 序列化文本文件:

function_client: functions.Client = functions.Client()

请注意,如果当前应用程序文件环境中无法找到符合条件的文件凭据,将引发 FileNotFoundError 异常;如果文件凭据中缺少必要的属性,将引发 KeyError 异常。

优先级

在上文中我们向您介绍了 Tencent Cloud SDK for Python 最新版本目前已支持的访问凭据类型,如果您决定隐式使用访问凭据类型,Tencent Cloud SDK for Python 将自动根据以下优先级查找:

  1. 默认凭据

  2. 文件凭据

  3. 环境凭据

查找规则为若前一项访问凭据类型已找到,则终止其他类型的访问凭据查找。例如当前应用程序运行环境中同时满足文件凭据和环境凭据,根据访问凭据类型优先级,文件凭据将优先被使用。

建议

根据您的应用场景,Tencent Cloud SDK for Python 建议您选择的访问凭据类型如下:

应用场景类型

建议选择的访问凭据类型

参考级别

单一源文件

优先使用默认凭据,其次考虑使用文件凭据。

不适用

多源文件项目

优先使用文件凭据,其次考虑使用环境凭据。

不适用

无服务器云函数

优先使用文件凭据,其次考虑使用环境凭据。

不适用

开发环境

建议使用环境凭据,降低访问凭据泄漏风险。

高

建议您根据应用程序所需要访问的 Tencent Cloud 产品资源分别创建适用于您 Tencent Cloud 账户的最小权限访问凭据。除非必要,否则访问凭据不应具有资源完全访问权限。

上一页其他 Tencent Cloud 产品下一页API 文档

最后更新于5年前

这有帮助吗?