2015-09-11 4 views
0

Когда я называю client.put_bucket_logging() method в boto3 для того, чтобы определить место для лог-файлов недавно созданного ведром, я получаю следующее сообщение об ошибке:Boto3 S3 client.put_bucket_logging() Разбито?

botocore.exceptions.ClientError: An error occurred (MalformedXML) when calling the 
PutBucketLogging operation: The XML you provided was not well-formed or did not 
validate against our published schema 

Amazon's documentation на MalformedXML ошибок указывает:

This happens when the user sends malformed xml (xml that doesn't conform to the published xsd) for the configuration. The error message is, "The XML you provided was not well-formed or did not validate against our published schema."

Документация для этого метода довольно скудная, но то, что существует, ничего не говорит о передаче xml в аргументы. Итак, я начал верить, что это может быть проблемой с boto3, а не с параметрами, которые я передаю. Я попытался внести коррективы для решения этой проблемы (уменьшая только до требуемых аргументов) и дважды проверил мой синтаксис, но не могу найти решение. Кто-нибудь еще сталкивается с этой проблемой?

правок: [УДАЛЕНО] ОТВЕТ: Ниже

+0

Не могли бы вы показать, как вы на самом деле звоните? Что вы проходите? – garnaat

+0

@gamaat ... извините за то. Просто добавил скрипт к вопросу. –

+0

Документы API (http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html), по-видимому, предполагают, что если вы используете тип CanonicalUser, вы должны включить идентификатор, а также DisplayName , – garnaat

ответ

0

После дальнейших исследований, представляется, что Boto3 documentation для client.create_bucket() метод отсутствуют некоторые ключевые параметры для параметра в «ACL». В частности, отсутствует:

ACL = 'лог-доставки-запись'

К счастью, full set of options можно найти в ссылке выходной документации AWS, что @garnaat при условии. Спасибо за этот указатель.

После того, как я реализовал эту опцию для журнала ведра, я был в состоянии включить ведение журнала для примера ведра с использованием client.put_bucket_logging()

kw_args = { 
'Bucket': 'example-log-bucket, 
    'ACL': 'log-delivery-write' 
} 
client.create_bucket(**kw_args) 

kw_args = { 
    'Bucket': 'example-user-bucket, 
    'ACL': 'private' 
} 
client.create_bucket(**kw_args) 

kw_args = { 
    'Bucket': 'example-user-bucket, 
    'BucketLoggingStatus': { 
     'LoggingEnabled': { 
      'TargetBucket': 'example-log-bucket', 
      'TargetPrefix': 'user/' 
     } 
    } 
} 
client.put_bucket_logging(**kw_args) 

Надеется, кто-то с правами получат возможность корректировать документацию boto3 для S3 в некоторой точке. Было бы неплохо иметь в документации около Amazon's three pre-defined groups, так как существует множество способов предоставления разрешений группам.

Смежные вопросы