Search

DynamoDB

CLUSTER_NAME=<CLUSTER_NAME> AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
Shell
복사
aws dynamodb create-table \ --table-name keda-events \ --attribute-definitions \ AttributeName=event_type,AttributeType=S \ AttributeName=id,AttributeType=S \ --key-schema \ AttributeName=event_type,KeyType=HASH \ AttributeName=id,KeyType=RANGE \ --billing-mode PAY_PER_REQUEST \ --region ap-northeast-2
Shell
복사
cat << EOF > iam_policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccess", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": "arn:aws:dynamodb:ap-northeast-2:$AWS_ACCOUNT_ID:table/keda-events" } ] } EOF
Shell
복사
aws iam create-policy \ --policy-name DynamoDBPolicy \ --policy-document file://iam_policy.json
Shell
복사
eksctl create iamserviceaccount \ --cluster=$CLUSTER_NAME \ --namespace=keda-dynamodb-guidance \ --name=keda-operator \ --role-name=keda-operator-role \ --attach-policy-arn=arn:aws:iam::$AWS_ACCOUNT_ID:policy/DynamoDBPolicy \ --approve
Shell
복사
helm repo add kedacore https://kedacore.github.io/charts helm repo update helm install keda kedacore/keda \ -n keda-dynamodb-guidance \ --set serviceAccount.operator.create=false \ --set serviceAccount.operator.name=keda-operator
Shell
복사
apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: aws-dynamodb-table-scaledobject namespace: keda-dynamodb-guidance spec: scaleTargetRef: name: nginx-deployment minReplicaCount: 2 maxReplicaCount: 100 pollingInterval: 10 cooldownPeriod: 90 triggers: - type: aws-dynamodb metadata: awsRegion: ap-northeast-2 tableName: keda-events expressionAttributeNames: '{ "#k" : "event_type"}' keyConditionExpression: "#k = :key" expressionAttributeValues: '{ ":key" : {"S":"scaling_event"}}' targetValue: "5" identityOwner: operator
YAML
복사
kubectl apply -f scaledobject.yaml
Shell
복사
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: keda-dynamodb-guidance labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: serviceAccountName: keda-operator containers: - name: nginx image: nginx:latest ports: - containerPort: 80
YAML
복사
kubectl apply -f deployment.yaml
Shell
복사