Я создал лямбда-выражение в регионе A и сегмент S3 в регионе B, пытаясь получить доступ к сегменту из клиента лямбда-бото-3, но получаю сообщение об ошибке (доступ запрещен). Пожалуйста, предложите какое-нибудь решение для этого в python CDK. Мне нужно будет создать для него какую-то конкретную политику.
Не могли бы вы поделиться кодом? Например. как выглядит роль выполнения Lambda? — person Shubham schedule 12.08.2020
Access Denied
предполагает, что проблема связана с разрешениями, а не с тем, что она межрегиональная. Каким образом роль IAM связана с лямбда-функцией, которая получает разрешение на доступ к сегменту в регионе B? (Все они находятся в одной учетной записи AWS, верно?) — person Shubham schedule 13.08.2020
Вашей лямбда-функции требуется разрешение на чтение S3.
Самый простой способ включить это — добавить управляемую политику AWS:
на вашу роль выполнения лямбда-выражения.
Указание региона не требуется, так как сегменты S3 имеют глобальную область действия.
Вы должны явно передать имя региона корзины, если она не находится в том же регионе, что и лямбда (потому что AWS имеет региональные конечные точки для S3, которые необходимо явно запрашивать при работе с s3 api).
Инициализируйте свой клиент boto3 S3 как:
см. здесь для полной справки о клиенте boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html#boto3.session.Session.client
——— Отредактировано ———— вам также понадобится следующая политика, прикрепленная (или встроенная) к роли вашей лямбды:
Если вам также нужно перечислить и удалить объекты, вместо этого вам необходимо иметь следующую политику, прикрепленную к роли лямбда (или встроенную в нее):
попробовал, но получил ту же ошибку! мне нужно какое-то конкретное заявление о политике? — person Shubham; 12.08.2020
Привет @shubham, Спасибо за вопрос, не могли бы вы поделиться заявлением о политике вашей лямбда-функции? Я могу указать именно то, что вам нужно. — person Shubham; 13.08.2020