Python Операция Boto3 PutBucketReplication: Предоставленная вами XML была неправильно сформирована или не прошла проверку по нашей опубликованной схеме - PullRequest
2 голосов
/ 23 января 2020

Я пытаюсь обновить правило репликации сегмента, используя python boto3. Но я продолжаю получать сообщение об ошибке: botocore.exceptions.ClientError: An error occurred (MalformedXML) when calling the PutBucketReplication operation: The XML you provided was not well-formed or did not validate against our published schema

Я следую документации, чтобы сделать это: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3 .Client.put_bucket_replication

Вот моя функция это работает. Кто-нибудь может увидеть, что не так с xml, который я передаю?

def apply_bucket_replication_rule(client):
    response = client.put_bucket_replication(
        Bucket= 'my-bucket',
            'Role': 'arn:aws:iam::0123456:role/replicate_s3_buckets',
            'Rules': [
                {
                    'Status': 'Enabled',
                    'Destination': {
                        'Bucket': 'arn:aws:s3:::my-bucket-backup',
                        'Account': '111222333'
                    }
                }
            ]
        },
    )
    print (response)

1 Ответ

0 голосов
/ 23 марта 2020

У меня была такая же проблема, после того как ответ (stackoverflow.com/a/57778885/9931092) работал для меня, это мой пример рабочего кода:

def apply_bucket_replication_rule(client):
response = client.put_bucket_replication(
    Bucket='mybucket',
    ReplicationConfiguration={
        'Role': 'arn:aws:iam::0123456:role/replicate_s3_buckets',
        'Rules': [
            {
                "Status": "Disabled",
                "Priority": 1,
                "DeleteMarkerReplication": {"Status": "Disabled"},
                "Filter": {"Prefix": ""},
                "Destination": {
                    "Bucket": "arn:aws:s3:::my-bucket-backup",
                    "Account": "111222333"
                }
            }
        ]
    }
)
print(response)
...