AWS V2和AWS V3是AWS SDK的两个不同版本。它们之间的主要区别在于签名算法和方法名称的改变。
在AWS V2中,使用的是getPresignedUrl
方法来生成预签名URL,而在AWS V3中,使用的是getSignedUrl
方法。
AWS V2使用的是AWS Signature Version 2,它需要提供访问密钥ID和秘密访问密钥。以下是使用AWS V2的getPresignedUrl
方法生成预签名URL的示例代码:
import boto3
s3 = boto3.client('s3', region_name='us-west-2')
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'my-bucket',
'Key': 'my-object'
},
ExpiresIn=3600
)
print(url)
AWS V3使用的是AWS Signature Version 4,它需要提供一个凭证对象,其中包括访问密钥ID、秘密访问密钥和会话令牌(如果使用临时凭证)。以下是使用AWS V3的getSignedUrl
方法生成签名URL的示例代码:
import boto3
from botocore.credentials import Credentials
credentials = Credentials(
access_key='YOUR_ACCESS_KEY',
secret_key='YOUR_SECRET_KEY',
token='YOUR_SESSION_TOKEN'
)
s3 = boto3.client('s3', region_name='us-west-2', credentials=credentials)
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'my-bucket',
'Key': 'my-object'
},
ExpiresIn=3600
)
print(url)
通过使用AWS V3的getSignedUrl
方法,您可以更灵活地控制生成URL所需的凭证,并支持使用临时凭证进行身份验证。
总结起来,主要区别在于签名算法和方法名称的改变。在使用AWS V2时,使用getPresignedUrl
方法,而在使用AWS V3时,使用getSignedUrl
方法。