すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:クイックスタート

最終更新日:Dec 19, 2025

このトピックでは、Object Storage Service (OSS) SDK for Python を使用して、バケットの作成、オブジェクトのアップロード、オブジェクトのダウンロードなどの一般的な操作を実行する方法について説明します。

注意事項

  • サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、環境変数から取得したアクセス認証情報を使用します。アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。

  • このトピックでは、OSS SDK for Python はデフォルト設定で初期化されます。その他のシナリオのサンプルコードについては、「初期化」をご参照ください。

前提条件

環境変数の設定

  1. OSS のすべての権限を持つ Resource Access Management (RAM) ユーザーの AccessKey ペアを作成します。

    ROS を使用した AccessKey ペアの作成

    Resource Orchestration Service (ROS) スクリプトを使用すると、OSS のすべての権限を持つ RAM ユーザーの AccessKey ペアを迅速に作成できます。そのためには、テンプレートを使用したスタック作成ウィザードに移動し、[セキュリティの確認] セクションで [Alibaba Cloud ROS が RAM リソースを作成することを承認します] を選択し、[作成] をクリックします。

    1.png

    AccessKey ペアが作成されたら、[出力] タブで AccessKey ペアをコピーします。

    image

  2. AccessKey ペアの環境変数を設定します。

    Linux

    1. CLI で次のコマンドを実行して、環境変数の設定を ~/.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

    macOS

    1. ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します:

      echo $SHELL
      1. デフォルトのシェルタイプに基づいて環境変数を設定します。

        Zsh

        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

        Bash

        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

    Windows

    CMD

    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%

    PowerShell

    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)
  3. 環境変数を設定した後、変更を有効にするには、開いているターミナルセッションまたは IDE を再起動する必要があります。

OSS SDK for Python のインストール

  1. 互換性のあるバージョンの Python がインストールされていることを確認します。次のコマンドを実行して Python のバージョンを確認します:

    OSS SDK for Python は、Python 2.6、2.7、およびバージョン 3.3 以降と互換性があります。

    python -version

    Python がインストールされていない場合は、公式の Python Web サイトからダウンロードしてインストールしてください。

  2. OSS SDK for Python をインストールします。

    次のコマンドを実行して OSS SDK for Python をインストールします:

    pip install oss2

サンプルコード

次のサンプルコードは、バケットの作成、オブジェクトのアップロード、オブジェクトのダウンロード、オブジェクトの一覧表示、オブジェクトとバケットの削除によるクリーンアップなど、OSS SDK for Python を使用した完全なワークフローを示しています。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from itertools import islice
import os
import logging
import time
import random

# ログを設定します。
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 環境変数が設定されているか確認します。
required_env_vars = ['OSS_ACCESS_KEY_ID', 'OSS_ACCESS_KEY_SECRET']
for var in required_env_vars:
    if var not in os.environ:
        logging.error(f"Environment variable {var} is not set.")
        exit(1)

# 環境変数からアクセス認証情報を取得します。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# エンドポイントとリージョンを指定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
region = "cn-hangzhou"

def generate_unique_bucket_name():
    # 現在のタイムスタンプを照会します。
    timestamp = int(time.time())
    # 0 から 9999 までの乱数を生成します。
    random_number = random.randint(0, 9999)
    # バケット名を指定します。名前はグローバルに一意である必要があります。
    bucket_name = f"demo-{timestamp}-{random_number}"
    return bucket_name

# 一意のバケット名を生成します。
bucket_name = generate_unique_bucket_name()
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)

def create_bucket(bucket):
    try:
        bucket.create_bucket(oss2.models.BUCKET_ACL_PRIVATE)
        logging.info("Bucket created successfully")
    except oss2.exceptions.OssError as e:
        logging.error(f"Failed to create bucket: {e}")

def upload_file(bucket, object_name, data):
    try:
        result = bucket.put_object(object_name, data)
        logging.info(f"File uploaded successfully, status code: {result.status}")
    except oss2.exceptions.OssError as e:
        logging.error(f"Failed to upload file: {e}")

def download_file(bucket, object_name):
    try:
        file_obj = bucket.get_object(object_name)
        content = file_obj.read().decode('utf-8')
        logging.info("File content:")
        logging.info(content)
        return content
    except oss2.exceptions.OssError as e:
        logging.error(f"Failed to download file: {e}")

def list_objects(bucket):
    try:
        objects = list(islice(oss2.ObjectIterator(bucket), 10))
        for obj in objects:
            logging.info(obj.key)
    except oss2.exceptions.OssError as e:
        logging.error(f"Failed to list objects: {e}")

def delete_objects(bucket):
    try:
        objects = list(islice(oss2.ObjectIterator(bucket), 100))
        if objects:
            for obj in objects:
                bucket.delete_object(obj.key)
                logging.info(f"Deleted object: {obj.key}")
        else:
            logging.info("No objects to delete")
    except oss2.exceptions.OssError as e:
        logging.error(f"Failed to delete objects: {e}")

def delete_bucket(bucket):
    try:
        bucket.delete_bucket()
        logging.info("Bucket deleted successfully")
    except oss2.exceptions.OssError as e:
        logging.error(f"Failed to delete bucket: {e}")

# 次のサンプルコードは、OSS SDK for Python を使用して一般的な操作を実行するメインプロセスの例を示しています。
if __name__ == '__main__':
    # 1: バケットを作成します。
    create_bucket(bucket)
    # 2. 文字列をオブジェクトとしてアップロードします。
    upload_file(bucket, 'test-string-file', b'Hello OSS, this is a test string.')
    # 3. バケットからオブジェクトをダウンロードします。
    download_file(bucket, 'test-string-file')
    # 4. バケット内のオブジェクトを一覧表示します。
    list_objects(bucket)
    # 5. バケット内のすべてのオブジェクトを削除します。
    delete_objects(bucket)
    # 6. バケットを削除します。
    delete_bucket(bucket)
    

よくある質問

OSS SDK の使用時に AccessDenied エラーが報告された場合の対処法

AccessDenied エラーは通常、権限が不十分な場合に発生します。この問題を解決するには、次の手順に従ってください:

  1. AccessKey ペアの確認: 使用している AccessKey ID と AccessKey Secret が正しいことを確認します。詳細については、「AccessKey ペアの作成」をご参照ください。

  2. RAM ユーザーに付与された権限の確認: RAM ユーザーがバケットまたはオブジェクトに対する操作に必要な権限を持っていることを確認してください。詳細については、「RAM ユーザーへの権限付与」をご参照ください。

  3. バケットポリシーの確認: エラーメッセージに 'Access denied by bucket policy' が含まれている場合、バケットポリシーで指定された制限が原因でエラーが発生したことを示します。詳細については、「バケットポリシー」をご参照ください。

  4. その他の種類のエラーについては、「エラーコード」をご参照ください。たとえば、アクセス制御に関連する一般的なエラーについては、「03-ACCESS_CONTROL」セクションをご参照ください。