sparse-intern-71089
06/04/2021, 3:50 PMwitty-candle-66007
06/04/2021, 7:47 PMechoing-zebra-28421
06/04/2021, 7:57 PMwitty-candle-66007
06/04/2021, 8:07 PMwitty-candle-66007
06/04/2021, 8:07 PMrouteKey
and target
along with some lambda love are your friends.echoing-zebra-28421
06/05/2021, 1:13 AM// Copyright 2016-2019, Pulumi Corporation. All rights reserved.
import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";
import { getName } from "./utils";
const stack = pulumi.getStack();
const project = pulumi.getProject();
const nameBucket = `${getName(project, stack)}`;
// Create the role for the Lambda to assume
const lambdaRole = new aws.iam.Role(`${nameBucket}-role`, {
assumeRolePolicy: {
Version: "2012-10-17",
Statement: [
{
Action: "sts:AssumeRole",
Principal: {
Service: "<http://lambda.amazonaws.com|lambda.amazonaws.com>",
},
Effect: "Allow",
Sid: "",
},
],
},
});
// Attach the fullaccess policy to the Lambda role created above
const rolepolicyattachment = new aws.iam.RolePolicyAttachment(
`${nameBucket}-role-policy-attachment`,
{
role: lambdaRole,
policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole,
}
);
// Create the namedUsersLambda to execute
const namedUsersLambda = new aws.lambda.Function(`${nameBucket}-namedUsers`, {
code: new pulumi.asset.AssetArchive({
".": new pulumi.asset.FileArchive("./src/app/named-users"),
}),
runtime: "nodejs12.x",
role: lambdaRole.arn,
handler: "index.handler",
});
// Create the tagsLambda to execute
const tagsLambda = new aws.lambda.Function(`${nameBucket}-tags`, {
code: new pulumi.asset.AssetArchive({
".": new pulumi.asset.FileArchive("./src/app/tags"),
}),
runtime: "nodejs12.x",
role: lambdaRole.arn,
handler: "index.handler",
});
// Give API Gateway lambdapermissionNamedUsers to invoke the Lambda
const lambdapermissionNamedUsers = new aws.lambda.Permission(
`${nameBucket}-namedUsers`,
{
action: "lambda:InvokeFunction",
principal: "<http://apigateway.amazonaws.com|apigateway.amazonaws.com>",
function: namedUsersLambda,
}
);
// Give API Gateway lambdapermissionTags to invoke the Lambda
const lambdapermissionTags = new aws.lambda.Permission(`${nameBucket}-tags`, {
action: "lambda:InvokeFunction",
principal: "<http://apigateway.amazonaws.com|apigateway.amazonaws.com>",
function: tagsLambda,
});
// Set up the API Gateway
const apigwNamedUsers = new aws.apigatewayv2.Api(`${nameBucket}-namedUsers`, {
protocolType: "HTTP",
routeKey: "GET /named-users",
target: namedUsersLambda.invokeArn,
});
// Set up the API Gateway
const apigwTags = new aws.apigatewayv2.Api(`${nameBucket}-tags`, {
protocolType: "HTTP",
routeKey: "GET /tags",
target: tagsLambda.invokeArn,
});
export const endpointNamedUsers = apigwNamedUsers.apiEndpoint;
export const endpointTags = apigwTags.apiEndpoint;
curved-pharmacist-41509
06/05/2021, 1:17 AM