Создайте прокси-ресурс шлюза API с помощью SAM
У меня, по-видимому, простое требование создать прокси-ресурс в SAM (модель бессерверных приложений Amazon). Настолько просто, что документация Amazon оставляет читателю это упражнение!
Я хочу создать универсальную конечную точку шлюза AWS API для передачи всего прокси в другой HTTP-сервис.
В консоли AWS конфигурация, которую я пытаюсь создать, выглядит следующим образом:
Я видел этот замечательный пост Кристиана Йохансена и его связанный с этим вопрос переполнения стека здесь о том, как сделать то же самое в CloudFormation. Я полагаю, что я мог бы просто использовать этот код в SAM, однако у SAM есть неявные и явные API, поэтому я хочу избежать создания явных ресурсов, если "правильный путь" - ссылаться на неявные ресурсы.
Кто-нибудь знает как это сделать?
1 ответ
После долгой игры я думаю, что нашел ответ в примере здесь. Разница относительно примера Hello World, который SAM настроил для вас из коробки:
diff --git a/sam-app/template.yaml b/sam-app/template.yaml
index 02cd901..f349dcc 100644
--- a/sam-app/template.yaml
+++ b/sam-app/template.yaml
@@ -17,11 +17,11 @@ Resources:
Variables:
PARAM1: VALUE
Events:
- HelloWorld:
+ ProxyApiGreedy:
Type: Api
Properties:
- Path: /hello
- Method: get
+ Path: /{proxy+}
+ Method: ANY
Outputs:
HelloWorldApi:
Description: API Gateway endpoint URL for Prod stage for Hello World function
Другими словами, вот так:
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
...
Events:
ProxyApiGreedy:
Type: Api
Properties:
Path: /{proxy+}
Method: ANY