Add a table viewer to your stack #
Add the following highlighted lines to
src/CdkWorkshop/CdkWorkshopStack.cs
to add a TableViewer
construct to your stack:
using Amazon.CDK;
using Amazon.CDK.AWS.APIGateway;
using Amazon.CDK.AWS.Lambda;
using Cdklabs.DynamoTableViewer;
using Construct;
namespace CdkWorkshop
{
public class CdkWorkshopStack : Stack
{
public CdkWorkshopStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)
{
// Defines a new lambda resource
var hello = new Function(this, "HelloHandler", new FunctionProps
{
Runtime = Runtime.NODEJS_14_X, // execution environment
Code = Code.FromAsset("lambda"), // Code loaded from the "lambda" directory
Handler = "hello.handler" // file is "hello", function is "handler"
});
// Defines out HitCounter resource
var helloWithCounter = new HitCounter(this, "HelloHitCounter", new HitCounterProps
{
Downstream = hello
});
// Defines an API Gateway REST API resource backed by our "hello" function.
new LambdaRestApi(this, "Endpoint", new LambdaRestApiProps
{
Handler = helloWithCounter.Handler
});
// Defines a new TableViewer resource
new TableViewer(this, "ViewerHitCount", new TableViewerProps
{
Title = "Hello Hits",
Table = //???
});
}
}
}
What about the table? #
As you’ll notice, TableViewer
requires that you specify a Table
property.
What we want is to somehow access the DynamoDB table behind our hit counter. However, the current API of our hit counter doesn’t expose the table as a public member.
In the next section, we’ll expose our table as a property of HitCounter
so we
can access it from our stack.