Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 Boto3设置自定义用户代理以测试S3访问策略_Amazon S3_Boto3_Amazon Iam - Fatal编程技术网

Amazon 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

我正在使用boto3创建一些测试,以验证S3存储桶上的微服务访问策略

铲斗设置:

测试铲斗/
服务/
微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(
  ...
)