Установка (или изменение) ACL для объекта в корзине S3 с помощью put_acl () в R? - PullRequest
1 голос
/ 09 октября 2019

get_acl() возвращает строковое представление XML, показывающее текущий ACL. Это работает, как и ожидалось.

Согласно ?put_acl и AWS docs , я должен иметь возможность редактировать ACL и put_acl(), чтобы установить новый.

Пример

Предположим, мы вставляем новый grant в существующий ACL, чтобы предоставить открытый доступ для чтения к объекту в сегменте

library(aws.s3)
original_acl <- get_acl("object_name", "bucket_name") 

public_access_grant <- '<Grant><Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee><Permission>READ</Permission></Grant>'

# Split existing ACL into two
original_acl_part_1 <- substr(original, 1, nchar(original) - 42)
original_acl_part_2 <- substr(original,  nchar(original) - 42 + 1, nchar(original))

# Paste the chunks back together with the new grant included
new_acl_in_xml_as_a_string <- paste0(original_part_1, public_access_grant, original_part_2)

На этом этапе ядолжна быть в состоянии установить новый ACL, например:

put_acl(object=object_name, bucket=bucket_name, body=new_acl_in_xml_as_a_string)

Неожиданный результат

Быстрый тест с использованием get_acl() показывает, что ACL не изменился по сравнению с исходным

Вопрос

Что происходит и почему ACL не был обновлен, как ожидалось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...