2017-05-17 10 views
1

S3 버킷의 마이크로 서비스 액세스 정책을 확인하기 위해 boto3을 사용하여 몇 가지 테스트를 만듭니다.Boto3는 S3 액세스 정책을 테스트하기 위해 사용자 지정 사용자 에이전트를 설정합니다.

버킷 설정이 버킷 정책이 지정된 역할을 가진 사람들에 대한 액세스를 제한하기위한 것입니다

test-bucket/ 
    service/ 
    micro-a/ 
    micro-b/  

:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AllowAccessIfInThisRole", 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::test-bucket/*", 
      "Condition": { 
       "StringNotLike": { 
        "aws:userid": "*role-id*" 
       } 
      } 
     } 
    ] 
} 

이 역할 ID가 부여이 IAM 역할을 참조하고 마이크로 서비스 사용자 에이전트, 즉 마이크로 서비스 A의 사용자 에이전트는 '마이크로 A'일 수 있으므로 버킷의 각 마이크로 서비스 특정 폴더에 대한 액세스는 012에 액세스해야합니다 337,817,하지만 test-bucket/service/micro-b/*에 :

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::as-bucket-test/service/${aws:useragent}/*" 
      ] 
     }, 
     { 
      "Sid": "AllowListingOfUserFolder", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::as-bucket-test" 
      ], 
      "Condition": { 
       "StringLike": { 
        "s3:prefix": [ 
         "service/${aws:useragent}/*" 
        ] 
       } 
      } 
     } 
    ] 
} 

내가 다른 액세스 정책을 확인하기 위해 사용자 에이전트 여러 항목을 설정할 수 있도록 boto3 클라이언트를 만드는 방법을 이해하지 않습니다.

AttributeError: 'str' object has no attribute 'user_agent_name' 

답변

1

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(
    ... 
) 
을 설정하는 것을 비롯하여 사용자 설정 옵션을 설정할 수있는 설정 객체를 취에

import boto3 
import botocore 

session = botocore.session.Session(
    user_agent_name="something" 
) 

session = boto3.session.Session(botocore_session=session) 
print session 

이 결과 : 이것은 내가 지금까지 무엇을 가지고