Kimlik doğrulama, yeniden deneme ve hata işleme mekanizmalarını yeniden tasarlayan; ayrıca sayfalayıcılar, aktarım yöneticileri ve dosya benzeri arayüzler ekleyen OSS Python SDK V2 sürümünü kullanmanızı öneririz.
Hızlı başlangıç
OSS Python SDK V1'i aşağıdaki adımları izleyerek kullanmaya başlayabilirsiniz.
Ortamı hazırlayın
Python'ı yükleyin
OSS Python SDK V1, Python 2,6, 2,7, 3,3, 3,4, 3,5, 3,6, 3,7, 3,8 veya sonraki sürümlerle uyumludur.
Windows ortamında Python SDK'yı yüklerken Visual C++ sürümünün 15,0 veya daha yüksek olduğundan emin olun.
python-devel paketini yükleyin
OSS Python SDK V1, CRC sağlama toplamları için crcmod kitaplığını kullanır. Bu kitaplığın C uzantısı, python-devel paketindeki Python.h üstbilgisine ihtiyaç duyar. Bu paket yüklü değilse SDK, saf Python CRC doğrulamasına geri döner; bu durum yükleme ve indirme işlemlerinde performansı önemli ölçüde düşürür.
Windows
Windows'ta gerekli üstbilgi dosyaları varsayılan Python kurulumuna dahildir. python-devel paketini ayrı olarak yüklemeniz gerekmez.
macOS
macOS'ta gerekli üstbilgi dosyaları varsayılan Python kurulumuna dahildir. python-devel paketini ayrı olarak yüklemeniz gerekmez.
CentOS
python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.
yum install python-devel
RHEL
python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.
yum install python-devel
Fedora
python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.
yum install python-devel
Debian
python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.
apt-get install python-dev
Ubuntu
python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.
apt-get install python-dev
SDK'yı yükleyin
SDK'yı aşağıdaki yöntemlerden birini kullanarak yükleyin. Kod örnekleriyle uyumluluğu sağlamak için en son sürümü kullanın.
pip ile yükleyin
pip aracını yükleyin. Python 2,7,9 veya sonraki sürümlerde ve Python 3,4 veya sonraki sürümlerde pip varsayılan olarak yüklü gelir.
-
En son SDK sürümünü yüklemek için aşağıdaki komutu çalıştırın.
pip install oss2
Kaynak koddan yükleyin
-
SDK'nın en son sürümünü GitHub üzerinden indirin, paketi açın ve ilgili dizine gidin. Dizinin içinde setup.py dosyasının bulunduğundan emin olun.
OSS Python SDK V1'in önceki bir sürümünü indirmek için Release History sayfasına bakın.
-
SDK'yı yüklemek için aşağıdaki komutu çalıştırın.
python setup.py install
Erişim kimlik bilgilerini yapılandırın
Bir RAM kullanıcısının AccessKey çiftini kullanarak erişim kimlik bilgilerini yapılandırın.
RAM konsolunda, Permanent AccessKey Pair seçeneğiyle bir RAM kullanıcısı oluşturun. AccessKey çiftini kaydedin ve kullanıcıya
AliyunOSSFullAccessiznini atayın.-
RAM kullanıcısının AccessKey çiftini kullanarak ortam değişkenlerini yapılandırın.
Linux
-
Ortam değişkeni ayarlarını
~/.bashrcdosyasına eklemek için komut satırı arayüzünde aşağıdaki komutları çalıştırın.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc -
Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.
source ~/.bashrc -
Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
-
Varsayılan kabuk türünü görüntülemek için terminalde aşağıdaki komutu çalıştırın.
echo $SHELL -
Varsayılan kabuk türüne göre aşağıdaki işlemleri gerçekleştirin.
Zsh
-
Ortam değişkeni ayarlarını
~/.zshrcdosyasına eklemek için aşağıdaki komutları çalıştırın.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.
source ~/.zshrc -
Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Ortam değişkeni ayarlarını
~/.bash_profiledosyasına eklemek için aşağıdaki komutları çalıştırın.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.
source ~/.bash_profile -
Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
Windows
CMD
-
CMD'de aşağıdaki komutları çalıştırın.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
-
PowerShell'de aşağıdaki komutları çalıştırın.
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) -
Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
İstemciyi başlatın
OSS Python SDK V1 ile gerçekleştirilen çoğu işlem oss2.Service ve oss2.Bucket sınıflarını kullanır.
oss2.Servicesınıfı paketleri listeler. Özel alan adları üzerinden erişimi desteklemez.oss2.Bucketsınıfı dosyaları yükler, indirir ve siler; ayrıca çeşitli paket ayarlarını yapılandırır.
Uyumluluk ve güvenliği artırmak amacıyla yapılan politika değişikliği gereği, 20 Mart 2025 tarihinden itibaren yeni OSS kullanıcılarının Çin anakarasındaki bölgelerde bulunan OSS paketlerinde veri API işlemleri gerçekleştirmek için özel bir alan adı (CNAME) kullanması zorunludur. Bu işlemler için varsayılan genel uç noktalar kısıtlanmıştır. Etkilenen işlemlerin tam listesini görmek için resmi duyuruya bakın. Verilerinize HTTPS üzerinden erişiyorsanız özel alan adınıza geçerli bir SSL Sertifikası bağlamanız gerekir. Konsol HTTPS kullanımını zorunlu kıldığından bu adım OSS Konsolu erişimi için zorunludur.
Paket örneğini başlatın
Örnek kodu çalıştırmadan önce<region-id>gibi yer tutucuları kendi bölge ve uç nokta bilgilerinizle değiştirin. Örneğin:ap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Sample code for initializing a client with OSS Python SDK V1
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Load access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Set the OSS service region.
region = "<region-id>"
# Set the endpoint.
endpoint = "<endpoint>"
# Set the bucket name.
bucket_name = "example-bucket"
# Initialize an OSS Bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# List files in the bucket.
print("=== List files in the bucket ===")
try:
# Use the list_objects method to list files.
result = bucket.list_objects()
# Iterate through the file list and print only the file names.
for obj in result.object_list:
print(obj.key)
# Print statistics.
print(f"\nTotal files listed: {len(result.object_list)}")
if result.is_truncated:
print("Note: The result is truncated. More files are available.")
except oss2.exceptions.OssError as e:
print(f"OSS error: {e}")
raise
except Exception as e:
print(f"An error occurred: {e}")
raise
if __name__ == "__main__":
# Entry point of the program.
try:
main()
except Exception as e:
print(f"An error occurred during execution: {e}")
raise
Hizmet örneğini başlatın
Örnek kodu çalıştırmadan önce<region-id>gibi yer tutucuları kendi bölge ve uç nokta bilgilerinizle değiştirin. Örneğin:ap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Sample code for initializing a Service instance with OSS Python SDK V1
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Load access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Set the OSS service region.
region = "<region-id>"
# Set the endpoint.
endpoint = "<endpoint>"
# Initialize an OSS Service instance.
service = oss2.Service(auth, endpoint, region=region)
# List all buckets.
print("=== List all buckets ===")
try:
# Use BucketIterator to list buckets.
buckets = [b.name for b in oss2.BucketIterator(service)]
# Iterate through the bucket list and print only the bucket names.
for bucket in buckets:
print(bucket)
# Print statistics.
print(f"\nTotal buckets listed: {len(buckets)}")
except oss2.exceptions.OssError as e:
print(f"OSS error: {e}")
raise
except Exception as e:
print(f"An error occurred: {e}")
raise
if __name__ == "__main__":
# Entry point of the program.
try:
main()
except Exception as e:
print(f"An error occurred during execution: {e}")
raise
İstemci yapılandırması
OSS istemcisini başlatırken uç nokta, zaman aşımı ve bağlantı havuzu boyutu gibi parametreleri özelleştirebilirsiniz.
Dahili alan adı kullanın
OSS'e dahili ağ üzerinden erişmek için uç nokta olarak dahili alan adını kullanın.
Koddaki<region-id>yer tutucusunu geçerli bir bölge ile değiştirin. Örneğin:ap-southeast-1.
endpoint = "oss-<region-id>-internal.aliyuncs.com"
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
Özel alan adı kullanın
Özel alan adı kullanmak için uç noktayı kendi alan adınıza ayarlayın ve is_cname=True parametresini etkinleştirin.
Kullanmadan önce özel alan adınızı paketinize eşleyin. Özel Alan Adları Kullanarak OSS'e Erişme konusuna bakın.
# Set the custom domain name.
endpoint = "http://example.com"
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, is_cname=True, region=region)
Zaman aşımı kontrolü
İstemciyi başlatırken connect_timeout parametresini saniye cinsinden ayarlayın. Varsayılan değer: 60 saniye.
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, connect_timeout=30, region=region)
Bağlantı havuzu boyutu
session nesnesinin pool_size parametresiyle bağlantı havuzu boyutunu ayarlayın.
# Set the connection pool size. The default value is 10.
session = oss2.Session(pool_size=20)
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, session=session, region=region)
TLS sürümü
Bir TLS sürümü belirtmek için özel bir SSLAdapter kullanarak oturum oluşturun.
Python SDK 2,18,1 ve sonraki sürümler TLS sürümünü belirtmenize olanak tanır.
import ssl
from requests.adapters import HTTPAdapter
# Define a custom adapter to specify the TLS version.
class SSLAdapter(HTTPAdapter):
def init_poolmanager(self, *args, **http_client_config):
# Specify TLS 1.2.
http_client_config["ssl_version"] = ssl.PROTOCOL_TLSv1_2
return super(SSLAdapter, self).init_poolmanager(*args, **http_client_config)
# Create a session by using SSLAdapter.
session = oss2.Session(adapter=SSLAdapter())
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, session=session, region=region)
CRC kontrolünü devre dışı bırakın
CRC veri bütünlüğü kontrolünü devre dışı bırakmak için enable_crc=False parametresini ayarlayın.
CRC özelliğini etkin tutun. Devre dışı bırakılması durumunda OSS, yükleme ve indirme işlemleri sırasında veri bütünlüğünü garanti edemez.
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, enable_crc=False, region=region)
İmza sürümü
Alibaba Cloud Object Storage V1 imzaları aşağıdaki takvime göre kullanımdan kaldırılacaktır. Hizmetlerinizin etkilenmemesini sağlamak için mümkün olan en kısa sürede V4 imzaya yükseltme yapmanızı öneririz.
1 Mart 2025 tarihinden itibaren yeni kullanıcılar V1 imzasını kullanamaz.
1 Eylül 2025 tarihinden itibaren V1 imzası için destek ve bakım kademeli olarak sonlandırılacak ve bu imzayı kullanan yeni paketler oluşturulamaz.
Aşağıdaki örnek, istemciyi V1 imzasıyla başlatır. V4 imzasıyla başlatma için İstemciyi Başlatma bölümüne bakın.
Örnek kodu çalıştırmadan önce <endpoint> gibi yer tutucuları kendi bölge ve uç nokta bilgilerinizle değiştirin. Örneğin: https://oss-ap-southeast-1.aliyuncs.com .
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# OSS Python SDK V1 client initialization sample code
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Load access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Set the endpoint.
endpoint = "<endpoint>"
# Set the bucket name.
bucket_name = "example-bucket"
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name)
# List files in the bucket.
print("=== List files in the bucket ===")
try:
# List files by using the list_objects() method.
result = bucket.list_objects()
# Iterate through the object list and print each object's key.
for obj in result.object_list:
print(obj.key)
# Print statistics.
print(f"\nTotal files listed: {len(result.object_list)}")
if result.is_truncated:
print("Note: The result is truncated. More files are available.")
except oss2.exceptions.OssError as e:
print(f"OSS error: {e}")
raise
except Exception as e:
print(f"An error occurred: {e}")
raise
if __name__ == "__main__":
# Program entry point.
try:
main()
except Exception as e:
print(f"An error occurred while running the program: {e}")
raise
Özel uygulama adı
User-Agent üstbilgisine özel bir tanımlayıcı eklemek için app_name parametresini ayarlayın. Varsayılan değer: boş dize.
Uygulama adı bir HTTP üstbilgi değeri olarak iletilir ve HTTP standartlarına uygun olmalıdır.
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, app_name="client_test", region=region)
Örnek kod
OSS Python SDK V1; paket yönetimi, nesne işlemleri, erişim kontrolü ve şifreli aktarım için kod örnekleri sağlar. Bu örnekleri referans olarak kullanabilir veya uygulamanıza entegre edebilirsiniz.
|
GitHub örnek kodları |
Dokümantasyon örnek kodları |
Uç nokta bilgilerini sorgulama
Genel (IPv4), dahili ve hızlandırılmış aktarım uç noktaları dahil olmak üzere tüm kullanılabilir bölgeler veya belirli bir bölge için uç nokta bilgilerini sorgulayabilirsiniz.
Python SDK 2.18.0 ve sonraki sürümleri uç nokta bilgilerini sorgulamayı destekler.
Örnek kodu çalıştırmadan önce,<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgilerinizle değiştirin; örneğinap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Sample code for querying endpoint information using the OSS Python SDK
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
print("=== Querying endpoint information for all supported regions ===\n")
# Obtain access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint for the region where your bucket is located.
endpoint = "<endpoint>"
# Specify the region that corresponds to the endpoint. This parameter is required when you use Signature V4.
region = "<region-id>"
# Initialize an OSS Service instance.
service = oss2.Service(auth, endpoint, region=region)
try:
# Query endpoint information for all supported regions.
result = service.describe_regions()
# Iterate through the region information.
for r in result.regions:
print(f"Region: {r.region}")
print(f" Public (IPv4) Endpoint: {r.internet_endpoint}")
print(f" Internal (Classic Network or VPC) Endpoint: {r.internal_endpoint}")
print(f" Transfer Acceleration Endpoint: {r.accelerate_endpoint}")
print("-" * 80)
# Print statistics.
print(f"\nFound endpoint information for {len(result.regions)} regions.")
except oss2.exceptions.OssError as e:
print(f"OSS error: {e}")
raise
except Exception as e:
print(f"An error occurred: {e}")
raise
if __name__ == "__main__":
# Entry point of the program.
try:
main()
except Exception as e:
print(f"An error occurred during execution: {e}")
raise
Belirli bir bölgenin uç nokta bilgilerini sorgulamak için describe_regions yöntemine OSS'e özel bölge kimliğini belirtin.
result = service.describe_regions("oss-<region-id>")
Kimlik bilgisi yapılandırması
OSS, birden çok kimlik bilgisi başlatma yöntemini destekler. Kimlik doğrulama gereksinimlerinize göre bir yöntem seçin.
alibabacloud-credentials kütüphanesinin 0.3.5 veya sonraki bir sürümünü kullanmanız gerekir. Daha eski bir sürüm kullanılması hatayla sonuçlanır.
RAM kullanıcısı AK
Sık kimlik bilgisi döndürmesi olmadan uzun vadeli OSS erişimine ihtiyaç duyan güvenli ve kararlı ortamlar için uygundur. Kimlik bilgisi sağlayıcısını bir RAM kullanıcısının AccessKey (AK) bilgileriyle başlatın. Bu yöntem manuel AK bakımı gerektirdiğinden güvenlik riskleri oluşturur.
Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam izinlere sahiptir. Hesabın AK bilgileri sızdırılırsa sisteminiz risk altında kalır. Bunun yerine yalnızca gerekli minimum izinlere sahip bir RAM kullanıcısının AK bilgisini kullanın.
Bir RAM kullanıcısı için AK oluşturmak üzere bkz. AccessKey oluşturma. AccessKey ID ve AccessKey Secret yalnızca oluşturma sırasında gösterilir. Bu bilgileri unutursanız yeni bir tane oluşturmanız gerekir.
Environment variables
-
Bir RAM kullanıcısının Access Key (AK) bilgilerini kullanarak ortam değişkenlerini yapılandırın.
Linux
-
Ortam değişkeni ayarlarını
~/.bashrcdosyasına eklemek için komut satırı arayüzünde aşağıdaki komutları çalıştırın.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc -
Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.
source ~/.bashrc -
Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
-
Varsayılan kabuk türünü görüntülemek için terminalde aşağıdaki komutu çalıştırın.
echo $SHELL -
Varsayılan kabuk türüne göre aşağıdaki işlemleri gerçekleştirin.
Zsh
-
Ortam değişkeni ayarlarını
~/.zshrcdosyasına eklemek için aşağıdaki komutları çalıştırın.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.
source ~/.zshrc -
Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Ortam değişkeni ayarlarını
~/.bash_profiledosyasına eklemek için aşağıdaki komutları çalıştırın.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.
source ~/.bash_profile -
Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
Windows
CMD
-
CMD'de aşağıdaki komutları çalıştırın.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
-
PowerShell'de aşağıdaki komutları çalıştırın.
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) -
Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
Ortam değişkenlerini değiştirdikten sonra yeni değerlerin yüklenmesi için IDE'nizi, CLI'nizi ve diğer çalışma zamanı ortamlarınızı yeniden başlatın veya yenileyin.
-
Kimlik bilgilerini sağlamak için ortam değişkenlerini kullanın.
Örnek kodu çalıştırmadan önce
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.#!/usr/bin/env python3 # -*- coding: utf-8 -*- # OSS Python SDK V1: Sample code for client initialization import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider def main(): # Load access credentials from environment variables. You must set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Set the OSS service region. region = "<region-id>" # Set the endpoint. endpoint = "<endpoint>" # Set the bucket name. bucket_name = "example-bucket-hz" # Initialize an OSS Bucket instance. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # List objects in the bucket. print("=== List objects in the bucket ===") try: # Use the list_objects method to list objects. result = bucket.list_objects() # Iterate through the object list and print only the object keys. for obj in result.object_list: print(obj.key) # Print statistics. print(f"\nTotal objects listed: {len(result.object_list)}") if result.is_truncated: print("Note: The result is truncated. More objects are not listed.") except oss2.exceptions.OssError as e: print(f"OSS error: {e}") raise except Exception as e: print(f"An error occurred: {e}") raise if __name__ == "__main__": # Entry point of the program. try: main() except Exception as e: print(f"An error occurred during execution: {e}") raise
Static credentials
Aşağıdaki örnek kod, kimlik bilgilerinin uygulamanıza nasıl sabit kodlanacağını gösterir.
Üretim ortamındaki uygulamalara kimlik bilgilerini gömmeyin. Bu yöntem yalnızca test amaçlıdır.
Örnek kodu çalıştırmadan önce<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# OSS Python SDK V1: Sample code for client initialization
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Specify the AccessKey ID and AccessKey Secret of a RAM user.
access_key_id = 'yourAccessKeyID'
access_key_secret = 'yourAccessKeySecret'
# Configure access credentials using the Access Key (AK) of the RAM user.
auth = oss2.AuthV4(access_key_id, access_key_secret)
# Set the OSS service region.
region = "<region-id>"
# Set the endpoint.
endpoint = "<endpoint>"
# Set the bucket name.
bucket_name = "example-bucket-hz"
# Initialize an OSS Bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# List objects in the bucket.
print("=== List objects in the bucket ===")
try:
# Use the list_objects method to list objects.
result = bucket.list_objects()
# Iterate through the object list and print only the object keys.
for obj in result.object_list:
print(obj.key)
# Print statistics.
print(f"\nTotal objects listed: {len(result.object_list)}")
if result.is_truncated:
print("Note: The result is truncated. More objects are not listed.")
except oss2.exceptions.OssError as e:
print(f"OSS error: {e}")
raise
except Exception as e:
print(f"An error occurred: {e}")
raise
if __name__ == "__main__":
# Entry point of the program.
try:
main()
except Exception as e:
print(f"An error occurred during execution: {e}")
raise
STS geçici kimlik bilgileri
Geçici OSS erişimine ihtiyaç duyan uygulamalar için uygundur. Kimlik bilgisi sağlayıcısını STS'den alınan geçici kimlik bilgileriyle (AccessKey ID, AccessKey Secret ve güvenlik belirteci) başlatın. STS belirtecinin süresi dolmadan önce manuel olarak yenilemeniz gerekir.
API çağrısı yaparak geçici erişim kimlik bilgilerini elde etmek için bkz. AssumeRole - RAM rolü için geçici güvenlik kimlik bilgilerini alma.
SDK kullanarak geçici erişim kimlik bilgilerini elde etmek için bkz. OSS'e erişmek için STS tarafından sağlanan geçici kimlik bilgilerini kullanma.
Bir STS belirteci oluştururken bir sona erme süresi belirtmeniz gerekir. Belirtecin süresi dolduğunda artık kullanılamaz.
STS uç noktalarının listesi için bkz. Hizmet uç noktaları.
Environment variables
-
Geçici erişim kimlik bilgilerini kullanarak ortam değişkenlerini ayarlayın.
macOS, Linux, and Unix
ÖnemliBir RAM kullanıcısının Access Key (AK) bilgileri yerine STS'den alınan geçici erişim kimlik bilgilerini (Access Key ID, Access Key Secret ve güvenlik belirteci) kullanın.
STS'den alınan Access Key ID "STS." ile başlar; örneğin "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>Windows
ÖnemliBir RAM kullanıcısının Access Key (AK) bilgileri yerine STS'den alınan geçici erişim kimlik bilgilerini (Access Key ID, Access Key Secret ve güvenlik belirteci) kullanın.
STS'den alınan Access Key ID "STS." ile başlar; örneğin "STS.****".
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> -
Kimlik bilgilerini sağlamak için ortam değişkenlerini kullanın.
Örnek kodu çalıştırmadan önce
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # yourEndpoint specifies the endpoint for the region where the bucket is located. endpoint = '<endpoint>' # yourBucketName specifies the bucket name. bucket_name = 'yourBucketName' # Specify the region where the bucket is located. region = '<region-id>' # Configure access credentials by using the STS AK, SK, and Security Token from environment variables. # Note that ProviderAuthV4 indicates the use of V4 signatures. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures; # otherwise, an error occurs. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Use the bucket object for subsequent operations...
Static credentials
Kimlik bilgilerini uygulamanıza sabit kodlayabilir ve geçici erişim anahtarlarını açıkça ayarlayabilirsiniz.
Örnek kodu çalıştırmadan önce<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.
# -*- coding: utf-8 -*-
import oss2
# Specify the temporary AccessKey ID and AccessKey Secret obtained from STS, not the AccessKey ID and AccessKey Secret of your Alibaba Cloud account.
# Note that the Access Key ID obtained from STS starts with "STS."
sts_access_key_id = 'STS.****************'
sts_access_key_secret = 'yourAccessKeySecret'
# Specify the security token obtained from STS.
security_token = 'yourSecurityToken'
# yourEndpoint specifies the endpoint for the region where the bucket is located.
endpoint = '<endpoint>'
# yourBucketName specifies the bucket name.
bucket_name = 'yourBucketName'
# Specify the region where the bucket is located.
region = '<region-id>'
# Initialize the StsAuth instance. Note that setting auth_version to "v4" enables OSS V4 signatures.
auth = oss2.StsAuth(sts_access_key_id,
sts_access_key_secret,
security_token,
auth_version="v4")
# Initialize the bucket using the StsAuth instance. Note that the region parameter is required when using V4 signatures;
# otherwise, an error occurs.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Use the bucket object for subsequent operations...
RAM rolü ARN
Hesaplar arası erişim için uygundur. Kimlik bilgisi sağlayıcısını bir RAM rolü ARN ile başlatın. Kimlik bilgisi aracı, süresi dolmadan önce AssumeRole işlevini çağırarak STS belirtecini otomatik olarak yeniler. İzinleri daha da kısıtlamak için policy parametresini ayarlayabilirsiniz.
Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam izinlere sahiptir. Hesabın AK bilgileri sızdırılırsa sisteminiz risk altında kalır. Bunun yerine yalnızca gerekli minimum izinlere sahip bir RAM kullanıcısının AK bilgisini kullanın.
Bir RAM kullanıcısı için AK oluşturmak üzere bkz. AccessKey oluşturma. AccessKey ID ve AccessKey Secret yalnızca oluşturma sırasında gösterilir. Bu bilgileri unutursanız yeni bir tane oluşturmanız gerekir.
Bir RAM rolü ARN elde etmek için bkz. RAM rolü oluşturma.
-
Kimlik bilgisi bağımlılığını ekleyin.
pip install alibabacloud_credentials -
Erişim kimlik bilgisi olarak Access Key (AK) ve RAM rolü ARN bilgisini yapılandırın.
Örnek kodu çalıştırmadan önce
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials import os class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( # Obtain the Access Key (AccessKey ID and AccessKey Secret) of the RAM user from environment variables. access_key_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), access_key_secret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), type='ram_role_arn', # The ARN of the RAM role to assume. Example: acs:ram::123456789012****:role/adminrole. You can set the RoleArn using the ALIBABA_CLOUD_ROLE_ARN environment variable. role_arn='<RoleArn>', # The role session name. You can set the RoleSessionName using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable. role_session_name='<RoleSessionName>', # Optional. A more restrictive permission policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} policy='<Policy>', # Optional. The validity period of the role session. role_session_expiration=3600 ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Note that ProviderAuthV4 indicates the use of V4 signatures. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint specifies the endpoint for the region where the bucket is located. endpoint = '<endpoint>' # yourBucketName specifies the bucket name. bucket_name = 'yourBucketName' # Specify the region where the bucket is located. region = '<region-id>' # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures; # otherwise, an error occurs. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Use the bucket object for subsequent operations...
ECS örnek RAM rolü
ECS örneklerinde, ECI örneklerinde veya Container Service for Kubernetes (ACK) işçi düğümlerindeki uygulamalar için uygundur. Bir ECS örnek RAM rolü, bir AK veya STS belirteci sağlamadan ECS örneklerinde, ECI örneklerinde veya Container Service for Kubernetes (ACK) işçi düğümlerinde STS belirtecinin otomatik olarak yenilenmesini sağlar. Rol elde etmek için bkz. RAM rolü oluşturma. Rolü bir örneke atamak için bkz. Örnek RAM rolü.
-
Kimlik bilgisi bağımlılığını ekleyin.
pip install alibabacloud_credentials -
Erişim kimlik bilgisi olarak ECS örnek RAM rolünü yapılandırın.
Örnek kodu çalıştırmadan önce
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( type='ecs_ram_role', # Credential type. Fixed value: ecs_ram_role. role_name='<RoleName>' # The name of the RAM role attached to the ECS instance. Optional. If not set, it is retrieved automatically. We strongly recommend setting this parameter to reduce requests. ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Note that ProviderAuthV4 indicates the use of V4 signatures. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint specifies the endpoint for the region where the bucket is located. endpoint = '<endpoint>' # yourBucketName specifies the bucket name. bucket_name = 'yourBucketName' # Specify the region where the bucket is located. region = '<region-id>' # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures; # otherwise, an error occurs. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Use the bucket object for subsequent operations...
OIDC rol ARN'si
Güvenilmeyen uygulamalar ACK çalışan düğümlerinde çalıştığında, bu uygulamaların düğümün örnek RAM rolü STS belirtecini elde etmesini önlemek için RRSA kullanın. Küme, her pod başına bir hizmet hesabı OIDC belirteci dosyasını bağlar ve yapılandırmayı ortam değişkenlerine ekler. Kimlik bilgisi aracı, bir AK veya STS belirteci gerektirmeden AssumeRoleWithOIDC aracılığıyla OIDC belirtecini bir STS belirteci ile değiştirir. RRSA kullanarak pod izin yalıtımını uygulamak için ServiceAccount için RAM izinlerini yapılandırma.
-
Kimlik bilgisi bağımlılığını ekleyin.
pip install alibabacloud_credentials -
Erişim kimlik bilgisi olarak OIDC rolünü yapılandırın.
Örnek kodu çalıştırmadan önce,
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials import os class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( # Credential type. Fixed value: oidc_role_arn. type='oidc_role_arn', # The ARN of the RAM role. You can set the RoleArn using the ALIBABA_CLOUD_ROLE_ARN environment variable. role_arn=os.environ.get('<RoleArn>'), # The ARN of the OIDC provider. You can set the OidcProviderArn using the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable. oidc_provider_arn=os.environ.get('<OidcProviderArn>'), # The OIDC token file path. You can set the OidcTokenFilePath using the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable. oidc_token_file_path=os.environ.get('<OidcTokenFilePath>'), # The role session name. You can set the RoleSessionName using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable. role_session_name='<RoleSessionName>', # Optional. A more restrictive permission policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} policy='<Policy>', # The validity period of the session. role_session_expiration=3600 ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Note that ProviderAuthV4 indicates the use of V4 signatures. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint specifies the endpoint for the region where the bucket is located. endpoint = '<endpoint>' # yourBucketName specifies the bucket name. bucket_name = 'yourBucketName' # Specify the region where the bucket is located. region = '<region-id>' # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures; # otherwise, an error occurs. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Use the bucket object for subsequent operations...
Function Compute bağlamı
FC'de çalışan işlevler için uygundur. FC, bir STS belirteci (36 saat geçerli) almak için bir hizmet rolü üstlenir ve bunu bağlam Kimlik Bilgileri parametresi aracılığıyla iletir. Maksimum işlev çalıştırma süresi 24 saat olduğundan, belirteç yürütme sırasında sona ermez; bu nedenle yenileme gerekmez. FC'nin OSS'e erişim izinlerini vermek için bkz. Function Compute'a diğer cloud hizmetlerine erişim izni vermek için işlev rolü kullanma.
Kimlik bilgisi sağlayıcısını FC bağlamındaki kimlik bilgileriyle başlatın.
Örnek kodu çalıştırmadan önce,<region-id>gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.
# -*- coding: utf-8 -*-
import oss2
from oss2 import CredentialsProvider
from oss2.credentials import Credentials
def handler(event, context):
class CredentialProviderWrapper(CredentialsProvider):
def get_credentials(self):
creds = context.credentials
return Credentials(creds.access_key_id, creds.access_key_secret, creds.security_token)
credentials_provider = CredentialProviderWrapper()
# Note that ProviderAuthV4 indicates the use of V4 signatures.
auth = oss2.ProviderAuthV4(credentials_provider)
# yourEndpoint specifies the endpoint for the region where the bucket is located.
endpoint = '<endpoint>'
# yourBucketName specifies the bucket name.
bucket_name = 'yourBucketName'
# Specify the region where the bucket is located.
region = '<region-id>'
# Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
# otherwise, an error occurs.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Use the bucket object for subsequent operations...
return 'success'
Kimlik Bilgisi URI'si
Kimlik bilgilerini harici bir sistemden alan uygulamalar için uygundur. Kimlik bilgisi aracı, sağlanan URI'den bir STS belirteci alır ve otomatik yenilemeyi yönetir.
Bir kimlik bilgisi URI'si, STS belirtecini almak için kullanılan sunucu adresidir.
Kimlik bilgisi URI'si yanıtını sağlayan arka uç hizmeti, uygulamanın her zaman geçerli kimlik bilgileri almasını sağlamak için otomatik STS belirteci yenileme mantığını uygulamalıdır.
-
Kimlik bilgisi aracının STS belirtecini doğru şekilde ayrıştırıp kullanabilmesi için URI yanıtı aşağıdaki protokole uymalıdır:
Yanıt durum kodu: 200
-
Yanıt gövdesi yapısı:
{ "Code": "Success", "AccessKeySecret": "AccessKeySecret", "AccessKeyId": "AccessKeyId", "Expiration": "2021-09-26T03:46:38Z", "SecurityToken": "SecurityToken" }
-
Kimlik bilgisi bağımlılığını ekleyin.
pip install alibabacloud_credentials -
Erişim kimlik bilgisi olarak kimlik bilgisi URI'sini yapılandırın.
Örnek kodu çalıştırmadan önce,
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( type='credentials_uri', # The URI for the credentials, in the format http://local_or_remote_uri/. You can set the CredentialsUri using the ALIBABA_CLOUD_CREDENTIALS_URI environment variable. credentials_uri='<CredentialsUri>', ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Note that ProviderAuthV4 indicates the use of V4 signatures. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint specifies the endpoint for the region where the bucket is located. endpoint = '<endpoint>' # yourBucketName specifies the bucket name. bucket_name = 'yourBucketName' # Specify the region where the bucket is located. region = '<region-id>' # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures; # otherwise, an error occurs. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Use the bucket object for subsequent operations...
Otomatik döndürülen AK
AK'nin ele geçirilme riski altında olduğu ortamlar için uygundur. Yönetilen RAM kullanıcı AK'sini otomatik olarak döndüren KMS'ten bir ClientKey ile kimlik bilgisi sağlayıcısını başlatın. KMS, bir AK ele geçirildiğinde anında döndürmeyi de destekler. Bir ClientKey edinmek için bkz. Uygulama Erişim Noktası oluşturma.
-
Secrets Manager istemci bağımlılığını ekleyin.
pip install aliyun-secret-manager-client -
secretsmanager.propertiesadlı bir yapılandırma dosyası oluşturun.# The type of access credential. Fixed value: client_key credentials_type=client_key # The decryption password for the ClientKey. You can read it from an environment variable or a file. Set only one. client_key_password_from_env_variable=<your client key private key password environment variable name> client_key_password_from_file_path=<your client key private key password file path> # The path to the private key file of the ClientKey. client_key_private_key_path=<your client key private key file path> # The region of the associated KMS. cache_client_region_id=[{"regionId":"<regionId>"}] -
Kimlik bilgisi bilgilerini sağlamak için yapılandırma dosyasını kullanın.
Örnek kodu çalıştırmadan önce,
<region-id>gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.# -*- coding: utf-8 -*- import json import oss2 from oss2 import CredentialsProvider from oss2.credentials import Credentials from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder class CredentialProviderWrapper(CredentialsProvider): def get_credentials(self): secret_cache_client = SecretManagerCacheClientBuilder.new_client() secret_info = secret_cache_client.get_secret_info("<secretName>") secret_value_json = json.loads(secret_info.secret_value) return Credentials(secret_value_json["AccessKeyId"], secret_value_json["AccessKeySecret"]) credentials_provider = CredentialProviderWrapper() # Note that ProviderAuthV4 indicates the use of V4 signatures. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint specifies the endpoint for the region where the bucket is located. endpoint = '<endpoint>' # yourBucketName specifies the bucket name. bucket_name = 'yourBucketName' # Specify the region where the bucket is located. region = '<region-id>' # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures; # otherwise, an error occurs. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Use the bucket object for subsequent operations...
Özel kimlik bilgisi sağlayıcısı
Yukarıdaki kimlik bilgisi yapılandırma yöntemlerinden hiçbiri gereksinimlerinizi karşılamıyorsa, CredentialProvider arabirimini uygulayarak özel bir kimlik bilgisi sağlayıcısı tanımlayabilirsiniz. Uygulamanız bir STS belirteci kullanıyorsa, kimlik bilgisi yenilemesini de yönetmeniz gerekir.
Örnek kodu çalıştırmadan önce,<region-id>gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin,<region-id>ifadesiniap-southeast-1ile değiştirin.
# -*- coding: utf-8 -*-
import oss2
from oss2 import CredentialsProvider
from oss2.credentials import Credentials
class CredentialProviderWrapper(CredentialsProvider):
def get_credentials(self):
# TODO
# Implement your custom method for obtaining access credentials.
# Return long-term credentials: access_key_id, access_key_secret
return Credentials('<access_key_id>', '<access_key_secrect>')
# Return temporary credentials: access_key_id, access_key_secret, token
# For temporary credentials, you need to refresh them based on their expiration time.
# return Credentials('<access_key_id>', '<access_key_secrect>', '<token>');
credentials_provider = CredentialProviderWrapper()
# Note that ProviderAuthV4 indicates the use of V4 signatures.
auth = oss2.ProviderAuthV4(credentials_provider)
# yourEndpoint specifies the endpoint for the region where the bucket is located.
endpoint = '<endpoint>'
# yourBucketName specifies the bucket name.
bucket_name = 'yourBucketName'
# Specify the region where the bucket is located.
region = '<region-id>'
# Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
# otherwise, an error occurs.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Use the bucket object for subsequent operations...
SSS
Hata: No module named _crcfunext?
OSS Python SDK V1 kullanılarak yapılan yüklemeler ve indirmeler, ossutil veya diğer SDK'lar gibi diğer araçlara kıyasla daha yavaştır.
-
Neden:
_crcfunext.sokütüphanesi, sistemde gerekliPython.hdosyası eksik olduğu içincrcmodderlemesi sırasında oluşturulamaz.crcmodhakkında daha fazla bilgi için crcmod tanıtımı bölümüne bakın. -
Çözüm:
crcmodiçin C uzantı modunun doğru şekilde yüklendiğini doğrulayın.-
Python ortamına girmek için aşağıdaki komutu çalıştırın.
python -
crcmodmodülünden_crcfunextC uzantı modülünü içe aktarmak için aşağıdaki komutu çalıştırın.import crcmod._crcfunextAşağıdaki hata,
crcmodkütüphanesi için C uzantı modunun yüklenemediğini gösterir.Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named _crcfunext -
İşletim sisteminize göre bir çözüm seçin.
Windows
-
crcmod-1.7.win32-py2.7.msi veya .msi dosyasının başka bir sürümünü indirin.
Notcrcmod32 bit sürümü, hem 32 bit hem de 64 bit Windows sistemleriyle uyumludur. .msi dosyasını yükleyin ve yükleme işlemi sırasında crcmod için yükleme yolunu yerel Python yükleme dizininizdeki
Lib\site-packagesklasörüne belirtin. Örneğin,D:\python\Lib\site-packages\.Yükleme tamamlandıktan sonra
crcmoddoğrulama adımlarını tekrar çalıştırın.
Linux
Bu sorun bir Linux sisteminde oluşursa aşağıdaki adımları gerçekleştirin:
-
crcmodpaketini kaldırmak için aşağıdaki komutu çalıştırın.pip uninstall crcmod python-develpaketini yükleyin. Bkz. Ortamı hazırlama.-
crcmodpaketini yeniden yüklemek için aşağıdaki komutu çalıştırın.pip install crcmodYükleme tekrar başarısız olursa
crcmodpaketini kaldırın ve ayrıntılı hata bilgilerini görüntülemek için aşağıdaki komutu çalıştırın.pip install crcmod -v
-
-
Hata: No module named 'Crypto'?
-
Neden:
Sistemde
Cryptomodülü yok veyacryptomodülü (küçük harfle başlayan) mevcut. -
Çözüm:
Yerel Python yükleme yolunuzda Crypto modülünü kontrol edin, örneğin
D:\python3.9\Lib\site-packages.-
Crypto modülü mevcut değilse aşağıdaki komutu çalıştırın.
python -m pip install --upgrade setuptools crypto(küçük c harfiyle) adında bir modül varsa, bunuCryptoolarak yeniden adlandırın ve ardından programınızı yeniden başlatın.
-
Hata: "not an internal or external command"?
Windows'ta, 'is not recognized as an internal or external command' hatası alırsanız Python ve pip yükleme yollarını (genellikle Python dizinindeki Scripts klasörü) Path ortam değişkenine ekleyin. Değişikliklerin etkili olması için bilgisayarınızı yeniden başlatın.
OSS Python SDK V1 yükleme hatası
Yükleme başarısız olursa paketi kaldırın ve yeniden deneyin.
pip uninstall oss2
OSS Python SDK V1'i yükseltme
SDK'yı yükseltmek için aşağıdaki komutu çalıştırın.
pip install --upgrade oss2
AccessDenied hatalarını giderme
Bir AccessDenied hatası, yetersiz izinleri gösterir. Sorun giderme adımları şöyledir:
Doğru AccessKey ID ve AccessKey Secret kullandığınızdan emin olun.
RAM kullanıcısının paket veya nesne işlemleri için gerekli izinlere sahip olduğunu doğrulayın.
Paket ilkesini kontrol edin: "Access denied by bucket policy" içeren bir hata mesajı, isteğin bir paket ilkesi tarafından engellendiğini gösterir.
Bölge içi erişim için aktarım hızını artırma
Daha hızlı aktarımlar için, paketinizle aynı bölgedeki bir Alibaba Cloud ürününden (ECS gibi) dahili bir uç nokta kullanarak OSS'e erişin.
AccessKey'leri görüntüleme ve AccessKey Secret'ları yönetme
Bir RAM kullanıcısının AccessKey'ini görüntülemek için: RAM konsolu üzerinde oturum açın ve AccessKey bilgilerini görüntülemek için belirli kullanıcıyı seçin.
Bir RAM kullanıcısının AccessKey Secret değeri yalnızca oluşturma sırasında gösterilir. Bu değeri kaybederseniz RAM konsolu üzerinden yeni bir AccessKey oluşturun. AccessKey oluşturma.