#image #permissions #mturk
#изображение #разрешения #mturk
Вопрос:
Я передаю задачу классификации изображений на аутсорсинг Mechanical Turk от Amazon. Поэтому используется CSV-файл, в котором хранятся URL-адреса изображений, используемых для классификации рабочими. Изображения, на которые указывают эти URL, должны быть общедоступными, чтобы рабочие имели доступ в соответствии с примером в Документах.
Однако мои данные конфиденциальны и не позволяют размещать их публично. Есть ли шанс, что я смогу использовать MTurk для изображений с ограниченным доступом?
Ответ №1:
Я предлагаю размещать изображения в частной корзине S3 и генерировать предварительно подписанные URL-адреса с истечением expiration
секунд. Поступая таким образом, вы позволите работникам MTurk видеть изображения хитов (по указанному URL-адресу) и гарантируете, что через expiration
несколько секунд срок действия URL-адреса истечет, и никто больше не сможет получить доступ к конфиденциальным данным.
import logging
import boto3
from botocore.exceptions import ClientError
def create_presigned_url(bucket: str, key: str, expiration: int):
"""Generate a presigned URL to share an S3 object
:param bucket: name of the bucket
:param key: key of the object for which to create a presigned URL
:param expiration: Time in seconds for the presigned URL to remain valid
:return: Presigned URL as string. If error, returns None.
"""
# Generate a presigned URL for the S3 object
s3_client = boto3.client('s3')
try:
response = s3_client.generate_presigned_url(
'get_object',
Params={'Bucket': bucket, 'Key': key},
ExpiresIn=expiration
)
except ClientError as e:
logging.error(e)
return None
# The response contains the presigned URL
return response
Более подробная информация о том, как сгенерировать URL-адрес, указанный пользователем, здесь: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html