Я собираюсь запустить некоторые из наших лямбда-выражений AWS локально через SAM, в том числе тот, который записывает данные в корзину S3. Есть ли способ заставить S3 запускаться локально или обращаться к корзине S3 в облаке и писать в нее при локальном запуске лямбды?
Как запустить лямбду AWS через локальный SAM, который записывает в корзину S3?
comment
Да, есть способ. Где ты застрял?
- person guijob   schedule 07.08.2019
comment
Я сделал несколько поисков в Интернете, но не смог понять, как это сделать. У меня работает лямбда, которая разговаривает с локальным экземпляром DynaModb, но не с s3.
- person jamesdwalker   schedule 07.08.2019
comment
@guijob Не могли бы вы включить соответствующий код?
- person Tom Nijs   schedule 07.08.2019
comment
@jamesdwalker, какую ошибку вы получили при попытке отправить файл в свой s3? локальный s3 еще не поддерживается, но вы можете подключиться к облачному сервису s3
- person guijob   schedule 07.08.2019
Ответы (1)
Да, я добился этого (после больших трудностей документация разбросана повсюду и сосредоточена на конкретных случаях использования, которые не были моими) с помощью локальный стек.
Вам нужно запустить докер, тогда:
pip install localstack
Затем:
localstack start
Некоторая документация, которую я нашел, предполагает, что вы используете http://localhost:4566
, и действительно, указывая на браузер там, что-то существует , но мне не удалось указать там boto3
или другого клиента AWS, получая очень загадочные сообщения об ошибках.
Реальный порт — 4572, попробуйте это:
aws --endpoint-url=http://localhost:4572 s3api create-bucket --bucket mybucket --region us-west-1
А теперь, если у вас есть такая лямбда-функция:
import boto3
def lambda_handler(event, context):
s3 = boto3.client('s3' ,
endpoint_url='http://localhost:4572',
use_ssl=False)
s3.create_bucket(Bucket="test-bucket")
#rest of your function here
Последний компонент (может зависеть от вашей настройки Docker) — вам может понадобиться вызвать его следующим образом:
sam local invoke --docker-network host
person
Josh Rumbut
schedule
17.05.2020