如何为OSS Python SDK配置访问凭证

更新时间:2025-03-27 04:29:44
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

使用Python SDK发起OSS请求,您需要配置访问凭证。阿里云服务会通过访问凭证验证您的身份信息和访问权限。您可以根据使用场景对认证和授权的要求,选择不同类型的访问凭证。

注意事项

  • 如果您希望获取关于OSS支持的RegionEndpoint的对应关系,请参见OSS地域和访问域名

  • 如果您希望创建RAM用户的AccessKey,请参见创建AccessKey

  • 在配置访问凭证前,您需要安装最新的OSS Python SDK。详情请参见安装

凭证提供者选型

OSS支持多种方式初始化凭证提供者,您可以根据使用场景对认证和授权的要求,选择对应的方式初始化凭证提供者。

凭证提供者初始化方式

适用场景

是否需要提供前置的AKSTS Token

底层实现基于的凭证

凭证有效期

凭证轮转或刷新方式

凭证提供者初始化方式

适用场景

是否需要提供前置的AKSTS Token

底层实现基于的凭证

凭证有效期

凭证轮转或刷新方式

使用RAM用户的AK

部署运行在安全、稳定且不易受外部攻击的环境的应用程序,无需频繁轮转凭证就可以长期访问云服务

AK

长期

手动轮转

使用STS临时访问凭证

部署运行在不可信的环境的应用程序,希望能控制访问的有效期、权限

STS Token

临时

手动刷新

使用RAMRoleARN

需要授权访问云服务,例如跨阿里云账号访问云服务的应用程序

STS Token

临时

自动刷新

使用ECSRAMRole

部署运行在阿里云的ECS实例、ECI实例、容器服务Kubernetes版的Worker节点中的应用程序

STS Token

临时

自动刷新

使用OIDCRoleARN

部署运行在阿里云的容器服务Kubernetes版的Worker节点中的不可信应用程序

STS Token

临时

自动刷新

使用自定义访问凭证

如果以上凭证配置方式都不满足要求时,您可以自定义获取凭证的方式

自定义

自定义

自定义

自定义

常用配置示例

使用RAM用户的AK

如果您的应用程序部署运行在安全、稳定且不易受外部攻击的环境中,需要长期访问您的OSS,且不能频繁轮转凭证时,您可以使用阿里云主账号或RAM用户的AK(Access Key ID、Access Key Secret)初始化凭证提供者。需要注意的是,该方式需要您手动维护一个AK,存在安全性风险和维护复杂度增加的风险。

警告
  • 阿里云账号拥有资源的全部权限,AK一旦泄露,会给系统带来巨大风险,不建议使用。推荐使用最小化授权的RAM用户的AK。

  • 如需创建RAM用户的AK,请直接访问创建AccessKey。RAM用户的Access Key ID、Access Key Secret信息仅在创建时显示,请及时保存,如若遗忘请考虑创建新的AK进行轮换。

环境变量

  1. 使用RAM用户AccessKey配置环境变量。

    Linux
    macOS
    Windows
    1. 在命令行界面执行以下命令来将环境变量设置追加到~/.bashrc 文件中。

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
      1. 执行以下命令使变更生效。

        source ~/.bashrc
      2. 执行以下命令检查环境变量是否生效。

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET
    1. 在终端中执行以下命令,查看默认Shell类型。

      echo $SHELL
      1. 根据默认Shell类型进行操作。

        Zsh
        Bash
        1. 执行以下命令来将环境变量设置追加到 ~/.zshrc 文件中。

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
        2. 执行以下命令使变更生效。

          source ~/.zshrc
        3. 执行以下命令检查环境变量是否生效。

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET
        1. 执行以下命令来将环境变量设置追加到 ~/.bash_profile 文件中。

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
        2. 执行以下命令使变更生效。

          source ~/.bash_profile
        3. 执行以下命令检查环境变量是否生效。

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET
    CMD
    PowerShell
    1. CMD中运行以下命令。

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. 运行以下命令,检查环境变量是否生效。

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%
    1. PowerShell中运行以下命令。

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      1. 运行以下命令,检查环境变量是否生效。

        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

  2. 参考上述方式修改系统环境变量后,请重启或刷新您的编译运行环境,包括IDE、命令行界面、其他桌面应用程序及后台服务,以确保最新的系统环境变量成功加载。

  3. 使用环境变量来传递凭证信息。

    import alibabacloud_oss_v2 as oss
    
    def main():
        # 从环境变量中加载凭证信息,用于身份验证
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # 加载SDK的默认配置,并设置凭证提供者
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
        cfg.region = 'cn-hangzhou'
    
        # 使用配置好的信息创建OSS客户端
        client = oss.Client(cfg)
    
        # 使用创建好的client执行后续操作...
    
    # 当此脚本被直接运行时,调用main函数
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数

静态凭证

以下示例代码展示了如何对访问凭据直接进行硬编码,显式设置要使用的访问密钥。

警告

请勿将访问凭据嵌入到生产环境的应用程序中,此方法仅用于测试目的。

import alibabacloud_oss_v2 as oss

def main():
    # 创建静态凭证提供者,显式设置访问密钥和密钥密码,请替换为您的RAM用户的AccessKey ID和AccessKey Secret
    credentials_provider = oss.credentials.StaticCredentialsProvider(
        access_key_id="RAM AccessKey ID",
        access_key_secret="RAM AccessKey Secret"
    )

    # 加载SDK的默认配置,并设置凭证提供者
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
    cfg.region = 'cn-hangzhou'

    # 使用配置好的信息创建OSS客户端
    client = oss.Client(cfg)

    # 使用创建好的client执行后续操作...


# 当此脚本被直接运行时,调用main函数
if __name__ == "__main__":
    main()  # 脚本入口,当文件被直接运行时调用main函数

使用STS临时访问凭证

如果您的应用程序需要临时访问OSS,您可以使用通过STS服务获取的临时身份凭证(Access Key ID、Access Key SecretSecurity Token)初始化凭证提供者。需要注意的是,该方式需要您手动维护一个STS Token,存在安全性风险和维护复杂度增加的风险。此外,如果您需要多次临时访问OSS,您需要手动刷新STS Token。

重要

环境变量

  1. 使用临时身份凭证设置环境变量。

    Mac OS X/Linux/Unix
    Windows
    警告
    • 请注意,此处使用的是通过STS服务获取的临时身份凭证(Access Key ID、Access Key SecretSecurity Token),而非RAM用户的Access KeyAccess Key Secret。

    • 请注意区分STS服务获取的Access Key IDSTS开头,例如“STS.****************”。

    export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
    警告
    • 请注意,此处使用的是通过STS服务获取的临时身份凭证(Access Key ID、Access Key SecretSecurity Token),而非RAM用户的AK(Access Key ID、Access Key Secret)。

    • 请注意区分STS服务获取的Access Key IDSTS开头,例如“STS.L4aBSCSJVMuKg5U1****”。

    set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
  2. 通过环境变量来传递凭证信息。

    import alibabacloud_oss_v2 as oss
    
    def main():
        # 从环境变量中加载访问OSS所需的认证信息,用于身份验证
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # 加载SDK的默认配置,并设置凭证提供者
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
        cfg.region = 'cn-hangzhou'
    
        # 使用配置好的信息创建OSS客户端
        client = oss.Client(cfg)
    
        # 使用创建好的client执行后续操作...
    
    
    # 当此脚本被直接运行时,调用main函数
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数

静态凭证

以下示例代码展示了如何对访问凭据直接进行硬编码,显式设置要使用的临时访问密钥。

警告

请勿将访问凭据嵌入到生产环境的应用程序中,此方法仅用于测试目的。

import alibabacloud_oss_v2 as oss

def main():
    # 填写获取的临时访问密钥AccessKey ID和AccessKey Secret,非阿里云账号AccessKey ID和AccessKey Secret。
    # 请注意区分STS服务获取的Access Key ID是以STS开头,如下所示。
    sts_access_key_id = 'STS.****************'
    sts_access_key_secret = 'yourAccessKeySecret'
    # 填写获取的STS安全令牌(SecurityToken)。
    sts_security_token = 'yourSecurityToken'

    # 创建静态凭证提供者,显式设置临时访问密钥AccessKey ID和AccessKey Secret,以及STS安全令牌
    credentials_provider = oss.credentials.StaticCredentialsProvider(
        access_key_id=sts_access_key_id,
        access_key_secret=sts_access_key_secret,
        security_token=sts_security_token,
    )

    # 加载SDK的默认配置,并设置凭证提供者
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
    cfg.region = 'cn-hangzhou'

    # 使用配置好的信息创建OSS客户端
    client = oss.Client(cfg)

    # 使用创建好的client执行后续操作...


# 当此脚本被直接运行时,调用main函数
if __name__ == "__main__":
    main()  # 脚本入口,当文件被直接运行时调用main函数

更多场景化配置示例

使用RAMRoleARN

如果您的应用程序需要授权访问OSS,例如跨阿里云账号访问OSS,您可以使用RAMRoleARN初始化凭证提供者。该方式底层实现是STS Token。通过指定RAM角色的ARN(Alibabacloud Resource Name),Credentials工具会前往STS服务获取STS Token,并在会话到期前调用AssumeRole接口申请新的STS Token。此外,您还可以通过为policy赋值来限制RAM角色到一个更小的权限集合。

重要
  • 阿里云账号拥有资源的全部权限,AK一旦泄露,会给系统带来巨大风险,不建议使用。推荐使用最小化授权的RAM用户的AK。

  • 如需创建RAM用户的AK,请直接访问创建AccessKey。RAM用户的Access Key ID、Access Key Secret信息仅在创建时显示,请及时保存,如若遗忘请考虑创建新的AK进行轮换。

  • 如需获取RAMRoleARN,请直接访问CreateRole - 创建角色

  1. 添加alibabacloud_credentials依赖。

    pip install alibabacloud_credentials
  2. 配置AKRAMRoleARN作为访问凭证。

    # -*- coding: utf-8 -*-
    import os
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    import alibabacloud_oss_v2 as oss
    
    def main():
        config = Config(
            # 从环境变量中获取RAM用户的访问密钥(AccessKey ID和AccessKey Secret)
            access_key_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            type='ram_role_arn',
            # 要扮演的RAM角色ARN,示例值:acs:ram::123456789012****:role/adminrole,可以通过环境变量ALIBABA_CLOUD_ROLE_ARN设置RoleArn
            role_arn='<RoleArn>',
            # 角色会话名称,可以通过环境变量ALIBABA_CLOUD_ROLE_SESSION_NAME设置RoleSessionName
            role_session_name='<RoleSessionName>',
            # 设置更小的权限策略,非必填。示例值:{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            policy='<Policy>',
            # 设置角色会话有效期,单位为秒,默认值为3600秒(1小时),非必填
            role_session_expiration=3600
        )
    
        cred_client = Client(config)
    
        def get_credentials_wrapper():
            cred = cred_client.get_credential()
            return oss.credentials.Credentials(access_key_id=cred.access_key_id, access_key_secret=cred.access_key_secret, security_token=cred.security_token)
    
        # 创建凭证提供者,用于动态加载凭证
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
        # 加载OSS SDK的默认配置
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
        cfg.region = 'cn-hangzhou'
    
        # 创建OSS客户端实例
        client = oss.Client(cfg)
    
        # 使用client进行后续操作...
    
    
    # 当此脚本被直接运行时,调用main函数
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数

使用ECSRAMRole

如果您的应用程序运行在ECS实例、ECI实例、容器服务KubernetesWorker节点中,建议您使用ECSRAMRole初始化凭证提供者。该方式底层实现是STS Token。ECSRAMRole允许您将一个角色关联到ECS实例、ECI实例或容器服务 Kubernetes 版Worker节点,实现在实例内部自动刷新STS Token。该方式无需您提供一个AKSTS Token,消除了手动维护AKSTS Token的风险。如何获取ECSRAMRole,请参见CreateRole - 创建角色

  1. 添加alibabacloud_credentials依赖。

    pip install alibabacloud_credentials
  2. 配置ECSRAMRole作为访问凭证。

    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    import alibabacloud_oss_v2 as oss
    
    def main():
        config = Config(
            type='ecs_ram_role',      # 访问凭证类型。固定为ecs_ram_role。
            role_name='EcsRoleExample'    # 为ECS授予的RAM角色的名称。可选参数。如果不设置,将自动检索。强烈建议设置,以减少请求。
        )
    
        cred_client = Client(config)
    
        def get_credentials_wrapper():
            cred = cred_client.get_credential()
            return oss.credentials.Credentials(access_key_id=cred.access_key_id, access_key_secret=cred.access_key_secret, security_token=cred.security_token)
    
        # 创建凭证提供者,用于动态加载凭证
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
        # 加载OSS SDK的默认配置
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。
        cfg.region = 'cn-hangzhou'
    
        # 创建OSS客户端实例
        client = oss.Client(cfg)
    
        # 使用client进行后续操作...
    
    
    # 当此脚本被直接运行时,调用main函数
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数

使用OIDCRoleARN

容器服务Kubernetes中设置了Worker节点RAM角色后,对应节点内的Pod中的应用也就可以像ECS上部署的应用一样,通过元数据服务(Meta Data Server)获取关联角色的STS Token。但如果容器集群上部署的是不可信的应用(比如部署您的客户提交的应用,代码也没有对您开放),您可能并不希望它们能通过元数据服务获取Worker节点关联实例RAM角色的STS Token。为了避免影响云上资源的安全,同时又能让这些不可信的应用安全地获取所需的STS Token,实现应用级别的权限最小化,您可以使用RRSA(RAM Roles for Service Account)功能。该方式底层实现是STS Token。阿里云容器集群会为不同的应用Pod创建和挂载相应的服务账户OIDC Token文件,并将相关配置信息注入到环境变量中,Credentials工具通过获取环境变量的配置信息,调用STS服务的AssumeRoleWithOIDC接口换取绑定角色的STS Token。该方式无需您提供一个AKSTS Token,消除了手动维护AKSTS Token的风险。详情请参见通过RRSA配置ServiceAccountRAM权限实现Pod权限隔离

  1. 添加alibabacloud_credentials依赖。

    pip install alibabacloud_credentials
  1. 配置OIDCRoleArn作为访问凭证。

    # -*- coding: utf-8 -*-
    import os
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    import alibabacloud_oss_v2 as oss
    
    def main():
        config = Config(
            # 指定Credential类型,固定值为oidc_role_arn。
            type='oidc_role_arn',
            # RAM角色名称ARN,可以通过环境变量ALIBABA_CLOUD_ROLE_ARN设置RoleArn
            role_arn=os.environ.get('<RoleArn>'),
            # OIDC提供商ARN,可以通过环境变量ALIBABA_CLOUD_OIDC_PROVIDER_ARN设置OidcProviderArn
            oidc_provider_arn=os.environ.get('<OidcProviderArn>'),
            # OIDC Token文件路径,可以通过环境变量ALIBABA_CLOUD_OIDC_TOKEN_FILE设置OidcTokenFilePath
            oidc_token_file_path=os.environ.get('<OidcTokenFilePath>'),
            # 角色会话名称,可以通过环境变量ALIBABA_CLOUD_ROLE_SESSION_NAME设置RoleSessionName
            role_session_name='<RoleSessionName>',
            # 设置更小的权限策略,非必填。示例值:{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            policy='<Policy>',
            # 设置角色会话有效期,单位为秒,默认值为3600秒(1小时),非必填
            role_session_expiration=3600
        )
    
        cred_client = Client(config)
    
        def get_credentials_wrapper():
            cred = cred_client.get_credential()
            return oss.credentials.Credentials(access_key_id=cred.access_key_id, access_key_secret=cred.access_key_secret, security_token=cred.security_token)
    
        # 创建凭证提供者,用于动态加载凭证
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
        # 加载OSS SDK的默认配置
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。
        cfg.region = 'cn-hangzhou'
    
        # 创建OSS客户端实例
        client = oss.Client(cfg)
    
        # 使用client进行后续操作...
    
    
    # 当此脚本被直接运行时,调用main函数
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数

使用自定义访问凭证

当以上凭证配置方式不满足要求时,您可以自定义获取凭证的方式。SDK 支持多种实现方式。

  1. 通过credentials.CredentialsProviderFunc接口

    import argparse
    import alibabacloud_oss_v2 as oss
    import os
    
    def main():
    
        def get_credentials_wrapper():
            # 返回长期凭证
            return oss.credentials.Credentials(access_key_id='access_key_id', access_key_secret='access_key_security')
            # 返回STS临时凭证
            # return oss.credentials.Credentials(access_key_id='access_key_id', access_key_secret='access_key_security', security_token='security_token')
    
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
       # 加载SDK的默认配置,并设置凭证提供者
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
        
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
        cfg.region = "cn-hangzhou"
    
        # 使用配置好的信息创建OSS客户端
        client = oss.Client(cfg)
    
        # 使用client进行后续操作...
    
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数
  2. 实现credentials.CredentialsProvider接口

    # -*- coding: utf-8 -*-
    import alibabacloud_oss_v2 as oss
    
    class CredentialProviderWrapper(oss.credentials.CredentialsProvider):
        def get_credentials(self):
            # TODO
            # 自定义访问凭证的获取方法
    
            # 返回长期凭证access_key_id, access_key_secrect
            return oss.credentials.Credentials('<access_key_id>', '<access_key_secrect>')
    
            # 返回 STS临时凭证access_key_id, access_key_secrect, token
            # 对于临时凭证,需要根据过期时间,刷新凭证。
            # return oss.credentials.Credentials('<access_key_id>', '<access_key_secrect>', '<token>');
    
    
    def main():
        # 创建凭证提供者,用于动态加载凭证
        credentials_provider = CredentialProviderWrapper()
    
        # 加载OSS SDK的默认配置
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou
        cfg.region = 'cn-hangzhou'
    
        client = oss.Client(cfg)
    
        # 使用client进行后续操作...
    
    
    if __name__ == "__main__":
        main()  # 脚本入口,当文件被直接运行时调用main函数

常见问题

在使用通过STS服务获取的临时身份凭证去初始化凭证提供者时,误使用RAM用户的AK

当您使用通过STS服务获取的临时身份凭证(Access Key ID、Access Key SecretSecurity Token)初始化访问凭证时,请勿混淆STS服务返回的AKRAM用户的AK,STS对应的AK是以STS开头,示例如下:

image

如何查看RAM用户的AK?是否可以查看旧的AccessKey Secret?

  1. 如需查看RAM用户的AK,请直接参考文档查看RAM用户的AccessKey信息

  2. RAM用户的AccessKey Secret仅在创建时显示,之后无法查看,若您已经遗忘了的话无法找回。您可以直接访问RAM控制台选择具体用户,并创建新的AccessKey进行轮换。详细请参见创建AccessKey

使用RAM用户的AK进行上传文件时,报错AccessDenied如何排查?

上传文件时出现AccessDenied的问题,通常是因为使用了错误的AK信息或没有给RAM用户添加上传文件的权限,您可以按照以下步骤检查:

  1. 检查您使用的RAM用户的AK是否正确,请直接参考文档查看RAM用户的AccessKey信息

  2. RAM用户的AccessKey Secret仅在创建时显示,之后无法查看,若您已经遗忘了的话无法找回。您可以直接访问RAM控制台选择具体用户,并创建新的AccessKey进行轮换。详细请参见创建AccessKey

  3. 登录RAM控制台选择具体用户,给RAM用户添加上传文件到OSS的权限。

在使用外网Endpoint访问OSS时,报错无法连接该如何排查?

出现外网Endpoint无法连接的问题,通常是因为使用了错误的Endpoint地址或Bucket所在地域与请求的Endpoint不匹配。请您按照以下步骤检查:

  1. 确认Bucket所在地域:登录阿里云控制台,找到您的Bucket,确认其所在地域。

  2. 使用正确的Endpoint:根据Bucket所在地域,使用对应的外网Endpoint。例如,如果Bucket位于华东1(杭州),则应使用oss-cn-hangzhou.aliyuncs.com。各地域的Endpoint信息请参见OSS地域和访问域名

  3. 检查网络连接:确保您的网络环境可以正常访问互联网,避免因网络问题导致连接失败。

如果遇到报错问题该如何查询具体的错误类型?

关于错误类型的查询,OSS文档提供了EC错误码供您参阅,例如关于认证方面的常见报错问题,请参见02-AUTH

  • 本页导读 (1)
  • 注意事项
  • 凭证提供者选型
  • 常用配置示例
  • 使用RAM用户的AK
  • 使用STS临时访问凭证
  • 更多场景化配置示例
  • 使用RAMRoleARN
  • 使用ECSRAMRole
  • 使用OIDCRoleARN
  • 使用自定义访问凭证
  • 常见问题
  • 在使用通过STS服务获取的临时身份凭证去初始化凭证提供者时,误使用RAM用户的AK
  • 如何查看RAM用户的AK?是否可以查看旧的AccessKey Secret?
  • 使用RAM用户的AK进行上传文件时,报错AccessDenied如何排查?
  • 在使用外网Endpoint访问OSS时,报错无法连接该如何排查?
  • 如果遇到报错问题该如何查询具体的错误类型?