AWS S3带交换的bucket访问问题

2024-09-24 00:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我登录到AWS控制台是MFA&;因为我使用的是googleauthenticator。 我有S3 DEV bucket,要访问这个DEV bucket,我必须切换角色,切换之后我可以访问DEV bucket。你知道吗

我需要帮助如何用boto3在python中实现同样的功能。你知道吗

我需要在dataframe中打开许多csv文件,如果没有解析访问,我将无法继续。你知道吗

我尝试配置AWS凭证&;config,并在python代码中使用它,但没有起到任何作用。你知道吗

AWS文档不清楚如何在python中使用&do时进行角色切换。你知道吗

import boto3
import s3fs
import pandas as pd
import boto.s3.connection

access_key = 'XXXXXXXXXXX'
secret_key = 'XXXXXXXXXXXXXXXXX'

# bucketName = 'XXXXXXXXXXXXXXXXX'

s3 = boto3.resource('s3')

for bucket in s3.buckets.all():
    print(bucket.name)

预期的结果应该是在python代码和MFA中切换角色之后访问该bucket。你知道吗


Tags: key代码devimport功能mfaaws角色
1条回答
网友
1楼 · 发布于 2024-09-24 00:28:32

一般来说,在程序代码中放置凭据对安全性不利。最好将它们存储在配置文件中。您可以使用AWS Command-Line Interface (CLI)aws configure命令来实现这一点。你知道吗

一旦凭证以这种方式存储,任何awsdk(例如boto3)都将自动检索凭证,而不必在代码中引用它们。你知道吗

见:Configuring the AWS CLI - AWS Command Line Interface

配置文件还有一个附加功能,允许您存储希望担任的角色。这可以通过指定角色为ARN的配置文件来完成:

# In ~/.aws/credentials:
[development]
aws_access_key_id=foo
aws_access_key_id=bar

# In ~/.aws/config
[profile crossaccount]
role_arn=arn:aws:iam:...
source_profile=development

source_profile指向包含将用于进行AssumeRole()调用的凭据的配置文件,role_arn指定要承担的角色。你知道吗

见:Assume Role Provider

最后,您可以告诉boto3使用该特定配置文件作为凭据:

session = boto3.Session(profile_name='crossaccount')
# Any clients created from this session will use credentials
# from the [crossaccount] section of ~/.aws/credentials.
dev_s3_client = session.client('s3')

以上所有操作的替代方法(boto3为您做的)是在代码中调用^{},然后使用返回的临时凭据定义一个新的session,您可以使用它连接到服务。但是,上面使用概要文件的方法要简单得多。你知道吗

相关问题 更多 >