Amazon s3 Boto3设置自定义用户代理以测试S3访问策略
我正在使用boto3创建一些测试,以验证S3存储桶上的微服务访问策略 铲斗设置:Amazon s3 Boto3设置自定义用户代理以测试S3访问策略,amazon-s3,boto3,amazon-iam,Amazon S3,Boto3,Amazon Iam,我正在使用boto3创建一些测试,以验证S3存储桶上的微服务访问策略 铲斗设置: 测试铲斗/ 服务/ 微a/ micro-b/ 此bucket策略旨在限制具有指定角色的用户的访问: { “版本”:“2012-10-17”, “声明”:[ { “Sid”:“AllowAccessFinThisRole”, “效果”:“拒绝”, “委托人”:“*”, “行动”:“s3:*”, “资源”:“arn:aws:s3:::测试桶/*”, “条件”:{ “StringNotLike”:{ “aws:user
测试铲斗/
服务/
微a/
micro-b/
此bucket策略旨在限制具有指定角色的用户的访问:
{
“版本”:“2012-10-17”,
“声明”:[
{
“Sid”:“AllowAccessFinThisRole”,
“效果”:“拒绝”,
“委托人”:“*”,
“行动”:“s3:*”,
“资源”:“arn:aws:s3:::测试桶/*”,
“条件”:{
“StringNotLike”:{
“aws:userid”:“*角色id*”
}
}
}
]
}
角色id引用此IAM角色,该角色根据microservice用户代理授予对bucket中每个microservice特定文件夹的访问权限,即microservice A的用户代理可能是“micro-A”,因此应该可以访问测试bucket/service/micro-A/*
,但不能访问测试bucket/service/micro-b/*
:
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“s3:*”
],
“资源”:[
“arn:aws:s3:::as bucket test/service/${aws:useragent}/*”
]
},
{
“Sid”:“AllowListingFuserFolder”,
“行动”:[
“s3:ListBucket”
],
“效果”:“允许”,
“资源”:[
“arn:aws:s3:::作为桶测试”
],
“条件”:{
“线状”:{
“s3:前缀”:[
“服务/${aws:useragent}/*”
]
}
}
}
]
}
我不知道如何创建boto3客户端,以便可以将用户代理设置为多个项目以验证不同的访问策略。这就是我到目前为止所做的:
import boto3
import botocore
session = botocore.session.Session(
user_agent_name="something"
)
session = boto3.session.Session(botocore_session=session)
print session
导致:
AttributeError: 'str' object has no attribute 'user_agent_name'
S3客户端接受一个配置对象,您可以在其中设置自定义配置选项,包括设置自定义用户代理
from boto3 import client
import botocore
# Create a config
session_config = botocore.config.Config(
user_agent="new_user_agent"
)
s3 = client(
's3',
config=session_config
)
# Make an API call
response = s3.put_object(
...
)