Rob*_*rax 66 python amazon-s3 amazon-web-services boto3
在boto上我以这种方式连接S3时用来指定我的凭据:
import boto
from boto.s3.connection import Key, S3Connection
S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )
Run Code Online (Sandbox Code Playgroud)
然后我可以使用S3来执行我的操作(在我的情况下从桶中删除一个对象).
使用boto3我发现的所有例子都是这样的:
import boto3
S3 = boto3.resource( 's3' )
S3.Object( bucket_name, key_name ).delete()
Run Code Online (Sandbox Code Playgroud)
我无法指定我的凭据,因此所有尝试都失败并InvalidAccessKeyId出现错误.
如何使用boto3指定凭据?
Ala*_*air 93
您可以创建会话:
import boto3
session = boto3.Session(
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
)
Run Code Online (Sandbox Code Playgroud)
然后使用该会话获取S3资源:
s3 = session.resource('s3')
Run Code Online (Sandbox Code Playgroud)
Raj*_*jez 45
您可以client直接获得新会话,如下所示.
s3_client = boto3.client('s3',
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
region_name=REGION_NAME
)
Run Code Online (Sandbox Code Playgroud)
Ber*_*ard 13
如果您依赖于.aws/credentials存储用户的 ID 和密钥,它将自动获取。
例如
session = boto3.Session(profile_name='dev')
s3 = session.resource('s3')
Run Code Online (Sandbox Code Playgroud)
如果您的文件包含以下内容,这将获取开发配置文件(用户) :credentials
[dev]
aws_access_key_id = AAABBBCCCDDDEEEFFFGG
aws_secret_access_key = FooFooFoo
region=op-southeast-2
Run Code Online (Sandbox Code Playgroud)
小智 9
这是旧的,但也把它放在这里供我参考。boto3.resource 只是实现了默认的 Session,您可以通过 boto3.resource 会话详细信息。
Help on function resource in module boto3:
resource(*args, **kwargs)
Create a resource service client by name using the default session.
See :py:meth:`boto3.session.Session.resource`.
Run Code Online (Sandbox Code Playgroud)
https://github.com/boto/boto3/blob/86392b5ca26da57ce6a776365a52d3cab8487d60/boto3/session.py#L265
你可以看到它只需要与 Boto3.Session 相同的参数
import boto3
S3 = boto3.resource('s3', region_name='us-west-2', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY)
S3.Object( bucket_name, key_name ).delete()
Run Code Online (Sandbox Code Playgroud)
我想扩展@JustAGuy 的回答。我更喜欢的方法是使用AWS CLI创建配置文件。原因是,使用配置文件,CLI或SDK将自动在~/.aws文件夹中查找凭据。好消息是它AWS CLI是用 python 编写的。
如果你还没有 cli,你可以从 pypi 获取它。以下是从终端设置 cli 的步骤
$> pip install awscli #can add user flag
$> aws configure
AWS Access Key ID [****************ABCD]:[enter your key here]
AWS Secret Access Key [****************xyz]:[enter your secret key here]
Default region name [us-west-2]:[enter your region here]
Default output format [None]:
Run Code Online (Sandbox Code Playgroud)
在此之后,您可以访问boto任何 api,而无需指定密钥(除非您想使用不同的凭据)。
| 归档时间: |
|
| 查看次数: |
54529 次 |
| 最近记录: |