Amazon s3 Region - холодное слияние - PullRequest
0 голосов
/ 11 марта 2019

У моей учетной записи s3 разные корзины, и некоторые из них относятся к региону ЕС, а некоторые к региону США.Как можно указать регион при подключении к s3 через Coldfusion.Потому что теперь я могу получить доступ только к корзинам только в регионе США (я подключился к s3 только с использованием секретного ключа и ключа доступа).Моя функция инициализации компонента s3 выглядит так:

<cffunction name="init" access="public" returnType="s3" output="false">
    <cfargument name="accessKeyId" type="string" required="true">
    <cfargument name="secretAccessKey" type="string" required="true">
    <cfset variables.accessKeyId = arguments.accessKeyId>
    <cfset variables.secretAccessKey = arguments.secretAccessKey>
    <cfreturn this>
</cffunction>

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Имена блоков S3 уникальны во всех AWS. Когда вы делаете вызов S3, используя встроенную поддержку CFML, вы не указываете регион. AWS автоматически направляет запрос из вашего приложения CFML в правильный регион.

До выпуска ColdFusion 2018, обновление 2, интеграция с ColdFusion S3 работала только с регионами, которые поддерживали более старый стиль подписи v2 для отправки запросов в AWS. В ColdFusion 2018, обновление 2, появилась поддержка подписей v4, которые поддерживаются во всех регионах. Если вы используете более старую версию ColdFusion, вы можете отправлять запросы S3 только в те регионы, которые поддерживают подписи v2 - это означает, что регионы были подключены к сети до 2016 года. Большинство регионов США были подключены к сети до 2016 года, в то время как большинство регионов ЕС этого не сделали.

Если вы используете версию ColdFusion до CF 2018, обновление 2, вам нужно будет использовать AWS Java SDK для выполнения запросов S3 в регионах, где требуется подпись v4, или подписывать запросы S3 вручную с помощью метода v4 , Я не рекомендую этот маршрут. Использовать AWS Java SDK просто. У меня есть многочисленные примеры того, как использовать его на моем блоге .

1 голос
/ 12 марта 2019

Имена блоков S3 уникальны для всех блоков AWS.Только при создании сегмента вам нужно указать регион, и все объекты будут созданы и доступны из одного региона (при создании или доступе к объекту вам нужно только указать сегмент, а не область).

В ColdFusion вы можете определить местоположение по умолчанию на уровне приложения с помощью свойства "s3.defaultLocation" или при создании сегмента с помощью атрибута storeLocation.например,

  1. область по умолчанию на уровне приложения this.se.defaultLocation = "eu-west-1"
  2. указание региона во время создания сегмента <cfdirectory action="create" directory="s3://bucketName" storeLocation="eu-west-1" storeacl="#perms#">

Создание файла в созданном сегменте(Нет необходимости указывать регион):

<cffile action="write" file="s3://bucketName/somefile.txt" output="sdgkjfcskbkcjsa" />

Список файлов в корзине (Нет необходимости указывать регион):

<cfdirectory action="list" directory="s3://bucketName" name="tmp"> <cfdump var="#tmp#"/>

Даже новые регионы AWS хорошо работают с более старыми версиями ColdFusion.Я пробовал с ColdFusion 2016 и 2018 и новыми регионами AWS.

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