このトピックでは、Object Storage Service (OSS) SDK for Python を使用して、バケットの作成、オブジェクトのアップロード、オブジェクトのダウンロードなどの一般的な操作を実行する方法について説明します。
注意事項
サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、環境変数から取得したアクセス認証情報を使用します。アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。
このトピックでは、OSS SDK for Python はデフォルト設定で初期化されます。その他のシナリオのサンプルコードについては、「初期化」をご参照ください。
前提条件
Alibaba Cloud アカウントが作成済みであること。
OSS が有効化されていること。
環境変数の設定
OSS のすべての権限を持つ Resource Access Management (RAM) ユーザーの AccessKey ペアを作成します。
AccessKey ペアの環境変数を設定します。
Linux
CLI で次のコマンドを実行して、環境変数の設定を
~/.bashrcファイルに追加します:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc変更を適用します。
source ~/.bashrc環境変数が有効になったか確認します:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します:
echo $SHELLデフォルトのシェルタイプに基づいて環境変数を設定します。
Zsh
次のコマンドを実行して、環境変数の設定を
~/.zshrcファイルに追加します:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc変更を適用します。
source ~/.zshrc環境変数が有効になったか確認します:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
次のコマンドを実行して、環境変数の設定を
~/.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変更を適用します。
source ~/.bash_profile環境変数が有効になったか確認します:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
CMD で次のコマンドを実行します:
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"環境変数が有効になったか確認します:
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
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)環境変数が有効になったか確認します:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
環境変数を設定した後、変更を有効にするには、開いているターミナルセッションまたは IDE を再起動する必要があります。
OSS SDK for Python のインストール
互換性のあるバージョンの Python がインストールされていることを確認します。次のコマンドを実行して Python のバージョンを確認します:
OSS SDK for Python は、Python 2.6、2.7、およびバージョン 3.3 以降と互換性があります。
python -versionPython がインストールされていない場合は、公式の Python Web サイトからダウンロードしてインストールしてください。
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)

