Using DynamoDB
The first step in this process is to re-configure the carts service to use a DynamoDB table that has already been created for us. The application loads most of its confirmation from a ConfigMap, lets take look at it:
apiVersion: v1
data:
AWS_ACCESS_KEY_ID: key
AWS_SECRET_ACCESS_KEY: secret
CARTS_DYNAMODB_CREATETABLE: true
CARTS_DYNAMODB_ENDPOINT: http://carts-dynamodb:8000
CARTS_DYNAMODB_TABLENAME: Items
kind: ConfigMap
metadata:
name: carts
namespace: carts
The following kustomization overwrites the ConfigMap, removing the DynamoDB endpoint configuration which tells the SDK to default to the real DynamoDB service instead of our test Pod. We've also provided it with the name of the DynamoDB table thats been created already for us which is being pulled from the environment variable CARTS_DYNAMODB_TABLENAME.
- Kustomize Patch
 - ConfigMap/carts
 - Diff
 
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../../../manifests/carts
configMapGenerator:
- name: carts
  namespace: carts
  env: config.properties
  behavior: replace
  options:
    disableNameSuffixHash: true
resources:
- nlb.yaml
apiVersion: v1
data:
  CARTS_DYNAMODB_TABLENAME: eks-workshop-carts
kind: ConfigMap
metadata:
  name: carts
  namespace: carts
 apiVersion: v1
 data:
-  AWS_ACCESS_KEY_ID: key
-  AWS_SECRET_ACCESS_KEY: secret
-  CARTS_DYNAMODB_CREATETABLE: "true"
-  CARTS_DYNAMODB_ENDPOINT: http://carts-dynamodb:8000
-  CARTS_DYNAMODB_TABLENAME: Items
+  CARTS_DYNAMODB_TABLENAME: eks-workshop-carts
 kind: ConfigMap
 metadata:
   name: carts
   namespace: carts
Let's check the value of CARTS_DYNAMODB_TABLENAME then run Kustomize to use the real DynamoDB service:
eks-workshop-carts
This will overwrite our ConfigMap with new values:
apiVersion: v1
data:
CARTS_DYNAMODB_TABLENAME: eks-workshop-carts
kind: ConfigMap
metadata:
labels:
app: carts
name: carts
namespace: carts
Now we need to recycle all the carts Pods to pick up our new ConfigMap contents:
deployment.apps/carts restarted
Let us try to access our application using the browser. A LoadBalancer type service named ui-nlb is provisioned in the ui namespace from which the application's UI can be accessed.
k8s-ui-uinlb-647e781087-6717c5049aa96bd9.elb.us-west-2.amazonaws.com
So now our application should be using DynamoDB right? Load it up in the browser using the output of the above command and navigate to the shopping cart:

The shopping cart page is not accessible! What's gone wrong?