LocalStack 很简洁,但是很难找到它的文档。我无法访问连接到 Lambda 函数的 API Gateway 代理端点。
我唯一能想到的是,当我对网关进行 put-integration 时,我不确定如何处理凭证参数(鉴于这是 100% 本地...我没有使用真正的 AWS 帐户)所以我现在把它留下评论:
aws --endpoint-url=http://localhost:4567 apigateway \
put-integration \
--region us-west-2 \
--rest-api-id 0091232159 \
--resource-id 3732709762 \
--http-method ANY \
--type AWS_PROXY \
--integration-http-method POST \
--uri arn:aws:lambda:us-west-2:000000000000:function:PostProposal \
#--credentials arn:aws:iam::123456789012:role/apigAwsProxyRole
我的同事发现了一个线程,听起来可能是 LocalStack 中的一个错误:
https://github.com/atlassian/localstack/issues/129
无论如何,当我这样做时,我的 API 是这样的aws --endpoint-url=http://localhost:4567 apigateway get-resources --rest-api-id 0091232159
:
{
"items": [
{
"id": "3312801A-ZA-Z6",
"path": "/",
"resourceMethods": {
"GET": {}
}
},
{
"id": "3732709762",
"parentId": "3312801A-ZA-Z6",
"pathPart": "{proxy+}",
"path": "/{proxy+}",
"resourceMethods": {
"GET": {},
"ANY": {
"httpMethod": "ANY",
"authorizationType": "NONE",
"methodIntegration": {
"type": "AWS_PROXY",
"httpMethod": "ANY",
"uri": "arn:aws:lambda:us-west-2:000000000000:function:PostProposal",
"integrationResponses": {
"200": {
"statusCode": 200,
"responseTemplates": {
"application/json": null
}
}
}
}
}
}
}
]
}
我的 Lambda 函数已全部设置完毕,并在我执行以下操作时以 200 响应:
aws --endpoint-url=http://localhost:4574 lambda invoke --function-name PostProposal outfile.json
现在我只想卷曲一个将触发 Lambda 的端点。
我找到了这个线程:https ://github.com/localstack/localstack/issues/229 ,其中有一个 cURL 示例:
curl http://localhost:4567/restapis/35937034A-Z3/test/_user_request_/u-1234
还有一个:https ://bitbucket.org/atlassian/localstack/issues/4/how-to-create-api-gateway-deployments ,它有:
curl http://localhost:4567/restapis/$api_id/v1/_user_request_/mypath
我知道我的 API ID 并且“v1”与我的“测试”阶段名称相关。我的终点是根,所以我认为我不需要他绕过的东西。
所以我用 GET 和 POST 尝试了所有不同的路径变体:
curl http://localhost:4567/restapis/0091232159/test/_user_request_/
我收到了 404、500 和{"message": "Unable to find integration for path ...
.
我至少在访问 API Gateway 模拟服务器;当我做 curl -vv 我看到:
* Connected to localhost (127.0.0.1) port 4567 (#0)
> GET /restapis/0091232159/test/_user_request_/ HTTP/1.1
> Host: localhost:4567
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
有任何想法吗?我只需要魔法之路!