cbeckley
02/26/2022, 2:20 PMcbeckley
02/26/2022, 2:30 PMcbeckley
02/26/2022, 2:32 PMthdxr
02/26/2022, 5:24 PMcbeckley
02/26/2022, 6:28 PMcbeckley
02/26/2022, 6:29 PMimport * as sst from "@serverless-stack/resources";
import { RemovalPolicy } from "aws-cdk-lib";
import { ProjectionType } from "aws-cdk-lib/aws-dynamodb";
export default class InventoryData extends sst.Stack {
// Public references
bucket;
table;
constructor(scope, id, props) {
super(scope, id, props);
// Create an S3 bucket
this.bucket = new sst.Bucket(this, "inventorybucket", {
s3Bucket: {
autoDeleteObjects: true,
removalPolicy: RemovalPolicy.DESTROY,
},
});
// Create the DynamoDB table
this.table = new sst.Table(this, "inventorytable", {
fields: {
PK: sst.TableFieldType.STRING,
SK: sst.TableFieldType.STRING,
},
primaryIndex: { partitionKey: "PK", sortKey: "SK" },
globalIndexes: {
reversePrimaryIndex: { partitionKey: "SK",
sortKey: "PK",
indexProps: { ProjectionType: ProjectionType.ALL },
},
},
dynamodbTable: {
removalPolicy: RemovalPolicy.DESTROY,
},
});
}
}
cbeckley
02/26/2022, 6:29 PMimport InventoryData from "./InventoryData";
import InventoryApi from "./InventoryApi";
export default function main(app) {
// Set default runtime for all functions
app.setDefaultFunctionProps({
runtime: "nodejs14.x"
});
const inventoryData = new InventoryData(app, "inventorydata");
new InventoryApi(app, "inventoryapi", {
table: inventoryData.table,
});
}
cbeckley
02/26/2022, 6:31 PMcbeckley
02/26/2022, 6:32 PMDevOpsFocal:cbeckley:/home/cbeckley/repos/inventory > npm -v
8.3.1
DevOpsFocal:cbeckley:/home/cbeckley/repos/inventory > node -v
v16.14.0
cbeckley
02/26/2022, 6:34 PMcbeckley
02/26/2022, 6:34 PM"dependencies": {
"@serverless-stack/cli": "0.65.6",
"@serverless-stack/resources": "0.65.6",
"aws-cdk-lib": "2.7.0",
"aws-sdk": "^2.1081.0",
"uuid": "^7.0.3"
}
cbeckley
02/27/2022, 4:33 PMcbeckley
02/27/2022, 4:41 PM