1.0.8 • Published 4 years ago
@serverless-tools/aws v1.0.8
AWS Serverless Tools
import {Request as ApigRequest} from "@serverless-tools/aws/apigateway/Request";
export const handler = async ( event: APIGatewayProxyEvent ): Promise<APIGatewayProxyResult> =>
{
const req = new ApigRequest(event);
const json = {} as IJsonRetorno;
try
{
switch (req.method())
{
case "POST":
json.data = await _POST(req);
break;
case "GET":
json.data = await _GET(req);
break;
default:
json.erro = "Bad request (method)";
return req.responseCreate(json, 400)
}
}
catch(e:any)
{
req.logErro(e, req);
json.erro = e;
return req.responseCreate(json, 500);
}
return req.responseCreate(json); // CORS enabled by default
};
async function _POST(req: ApigRequest)
{
const payload = req.body(); // parsed object from body string
const user = req.cognitoAuthorizer()?.user(); // returns CognitoUser object
return await req.cognitoAuthorizer()?.email(); // Email (id token cames with request, access token has to go through cognito api to get user)
}
async function _GET(req: ApigRequest)
{
return req.queryString();
}Gateway
- Request(
event: APIGatewayProxyEvent).resource()=> /order/{proxy+}.path()=> /order/param1/param2.method()=> GET | POST | PUT | etc..pathParams()=> {"proxy":"param1/param2"}.headers()=> {Host: string, Authorization: string, etc}.queryString()=> ?param1=val1¶m2=val2 => {"param1":"val1","param2":"val2"}.body()=> parsed object.cognitoAuthorizer().responseCreate(body, statusCode, headers)
- CognitoAuthorizer(
event.requestContext.authorizer: APIGatewayEventDefaultAuthorizerContext).poolId().poolRegion().sub().userName().groups(): string[].async email().async user(): CognitoUser
Cognito
- CognitoUser(
userAttributes?: AttributeType[],adminGetUserCommandOutput?: AdminGetUserCommandOutput)- adminGetUserCommandOutput
.userCreateDate()=> Date.userLastModifiedDate()=> Date.userStatus()=> UNCONFIRMED | CONFIRMED | ARCHIVED | COMPROMISED | UNKNOWN | RESET_REQUIRED | FORCE_CHANGE_PASSWORD.userName().userEnable()
- userAttributes
.sub().email().name()
- adminGetUserCommandOutput
- PoolAdmin(
region,poolId)- List
.usersStartsWith(email).usersFromGroup(name)
- Get
.userGet(username).userGetByAccessToken(accessToken)// needs 'aws.cognito.signin.user.admin' scope.userGroups(username).userHasGroups(username, groups: string[])
- Create
.userCreate(email).userGroupAdd(username, group)
- List
Check lambda example