Я пытаюсь получить доступ к кластеру AWS Elasticache из функции Lambda с использованием безсерверной рамки (v 0.5.6) без потери доступа к Dynamodb. Я пробовал использовать этот Gist без везения. Внутри функции лямбда первое, что я делаю, это подключиться к экземпляру Redis, но я продолжаю получать тайм-ауты, я дважды проверял переменные CloudFormation и их видимость внутри функции и лямбда-роли/политики для VPC, но все равно ничего ... Я не знаю не найдено ни одного руководства о том, как создавать VPC и группы безопасности с CloudFormation и Serverless, чтобы создавать общедоступные и закрытые подсети, NAT и интернет-шлюзы, как предложено here. Может ли кто-нибудь помочь?Подключить Лямбда к Elasticache с помощью безсерверной рамки
ответ
Вам нужно будет поместить функцию Лямбды внутри VPC, в которой находится кластер ElastiCache. Конечно, как только вы это сделаете, функция Lambda имеет доступ только к ресурсам, которые существуют внутри VPC, поэтому у него больше не будет доступа к DynamoDB. Решением этого является добавление шлюза NAT к VPC, который позволит функции Lambda получать доступ к ресурсам вне VPC.
Я бы подумал, что настройка шлюза VPC и NAT будет за пределами рамки без сервера, но я не эксперт в этой структуре. Я бы предложил изучить настройку этого вручную через консоль AWS или сделать это с помощью чего-то вроде CloudFormation, а затем просто указать в конфигурации сервера без сервера VPC, которую он должен использовать.
Хотя это не правильно документированы, вы можете настроить VPC непосредственно в файле бессерверной конфигурации (см link)
Версия 0,5
# s-function.json
{
"name": "hello",
"runtime": "nodejs4.3",
"handler": "handler.hello”,
"endpoints": [],
"events": [],
"vpc": {
"securityGroupIds": ["sg-123456"],
"subnetIds": [
"subnet-abc1",
"subnet-abc2",
"subnet-abc3",
]
}
}
Версия 1,0
# serverless.yaml
service: aws-hello
provider: aws
runtime: nodejs4.3
vpc:
securityGroupIds:
— "sg-123456"
subnetIds:
— "subnet-abc1"
— "subnet-abc1"
— "subnet-abc1"
functions:
foo: # inherits the VPC config
handler: src/handler.foo
bar: # overwrites the VPC config
handler: src/handler.bar
vpc:
securityGroupIds:
— "sg-999999"
subnetIds:
— "subnet-zzz9"
Спасибо за ответ, я уже знаю, как делать вещи вручную, но я обнаружил, что Gist для безсервера и, похоже, это хорошо, я хочу, чтобы эта работа работала с платформой Serverless и формированием облаков. –