Например, если я храню данные в стандарте США, на странице цен на S3 указано, что в Amazon EC2 в регионе Северная Вирджиния передается 0,00 долларов США за ГБ.
И похоже, что запросы GET составляют 0,004 доллара за 10 000 запросов.
Итак, мне кажется, что если я правильно настрою свои правила S3 для стандартного региона США, а мои клиенты правильно настроят свои экземпляры EC2 в регионе Северная Вирджиния, это будет стоить мне ВСЕГО 0,004 доллара за 10 000 запросов GET.
(Помимо моих затрат на хранилище S3.)
Если мои клиенты хотят перенести данные из EC2, это их расходы, их проблема - выставление счетов и т. Д.
Итак, какая комбинация политик сегмента S3 и политик IAM или даже устаревших списков ACL S3 сделает это возможным на моей стороне?
Верный.
Возьмем опубликованный список сетевых IP-блоков для us-east-1 (домашний регион US-Standard в S3) ...
https://forums.aws.amazon.com/ann.jspa?annID=1701
... и используйте его для создания политики корзины, чтобы отклонять запрос, когда исходный IP-адрес не входит в диапазон, или разрешать только тогда, когда исходный IP-адрес находится в диапазоне (лучший выбор будет зависеть от других ваших политик, так как отказ всегда будет, всегда, всегда отменять конфликтующее разрешение) ...
http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
... и у вас должно быть то, что вам нужно.
В качестве альтернативы существует концепция корзины "запрашивающая сторона платит", в которой бремя расходов возлагается на запрашивающую сторону.
http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html
Это будет означать, что вашим клиентам придется выполнять собственную аутентификацию по своим собственным учетным данным AWS (которым вы можете разрешить доступ к своей корзине индивидуально или глобально, в зависимости от вашей модели безопасности).
Или, в зависимости от рассматриваемого контента, вы можете потребовать от клиента создать сегмент в стандарте США (подтвердите с помощью /?location
запрос к ведру; отсутствие ограничений означает стандарт США), и вы можете передавать им контент за их счет.