У меня есть функция, которая изменяет класс хранения объекта S3. Функция работает, за исключением того, что теги не копируются
def to_deep_archive(s3_key):
'''
Set the storage to DEEP_ARCHIVE
Copied from https://stackoverflow.com/questions/39309846/how-to-change-storage-class-of-existing-key-via-boto3
'''
s3 = boto3.client('s3')
# Source data to move to DEEP_ARCHIVE
copy_source = {
'Bucket' : BUCKET,
'Key' : s3_key
}
# TODO : encryption
# convert to DEEP_ARCHIVE by copying
s3.copy(
copy_source,
BUCKET,
s3_key,
ExtraArgs = {
'StorageClass' : 'DEEP_ARCHIVE',
'MetadataDirective' : 'COPY',
'TaggingDirective' : 'COPY',
'ServerSideEncryption' : 'AES256'
}
)
Не было сгенерировано исключение. Моя политика ролей выглядит примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:DeleteObjectTagging",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:ReplicateTags"
],
"Resource": "arn:aws:s3:::my_bucket/*"
}
]
}
Моя политика сегментов выглядит следующим образом:
{
"Sid": "Stmt1492757001621",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::my_account:role/my_role"
},
"Action": [
"s3:GetObject",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:DeleteObjectTagging",
"s3:ListBucket",
"s3:ReplicateTags"
],
"Resource": [
"arn:aws:s3:::my_bucket/*",
"arn:aws:s3:::my_bucket"
]
}
Есть ли что-то еще, что мне нужно сделать?