2017-05-24 2 views
0

다음 코드는 버킷/버킷 목록에서 버전 관리를 활성화 한 다음 lifecycle configuration을 설정해야합니다.AWS : Boto3 구성 버킷 라이프 사이클 - 조작 된 XML

가 가 가

는 지금까지 내가 말할 수있는, 모든 것이 올바른 모습

File "putVersioning.py", line 42, in <module> 
    'NoncurrentDays': 30 
    File "/home/user/.local/lib/python2.7/site-packages/botocore/client.py", line 253, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/home/user/.local/lib/python2.7/site-packages/botocore/client.py", line 557, in _make_api_call 
    raise error_class(parsed_response, operation_name) 
botocore.exceptions.ClientError: An error occurred (MalformedXML) when calling the PutBucketLifecycleConfiguration operation: The XML you provided was not well-formed or did not validate against our published schema 
:이 실행할 때마다

import boto3 

# Create session 
s3 = boto3.resource('s3') 
s3Client = boto3.client('s3') 

# Bucket list 
buckets = ['BUCKETNAMEHERE'] 

# iterate through list of buckets 
for bucket in buckets: 
    # Enable Versioning 
    bucketVersioning = s3.BucketVersioning(bucket) 
    bucketVersioning.enable() 

    # Configure Lifecycle 
    s3Client.put_bucket_lifecycle_configuration(
     Bucket=bucket, 
     LifecycleConfiguration={ 
      'Rules': [ 
       { 
        'Status': 'Enabled', 
        'NoncurrentVersionTransitions': [ 
         { 
          'NoncurrentDays': 7, 
          'StorageClass': 'GLACIER' 
         }, 
        ], 
        'NoncurrentVersionExpiration': { 
         'NoncurrentDays': 30 
        } 
       }, 
      ] 
     } 
    ) 

print "Versioning and lifecycle have been enabled for buckets." 

그러나, 나는 다음과 같은 오류가 발생합니다?

답변

1

문서 here에 따르면 아마존 API에 따라 필요한 필터 요소를 추가해야하며 혼란스럽게도 boto가 필요하지는 않습니다. 필터 대신 사용되지 않는 접두사 인수를 추가 했으므로 작동하는 것처럼 보입니다.

+0

하아! 고맙습니다. 제 문법이 옳았다는 것을 확신했습니다. 당신의 도움을 주셔서 감사합니다! – flyingcars34