In this demo, we will:
aurora-demo
admin
0.5
1
aurora-demo-sg
3306
mydb
AWS_PAGER=""
DB_ARN="
SECRET_ARN='
# Create Database if not exists
aws rds-data execute-statement \
--resource-arn "$DB_ARN" \
--secret-arn "$SECRET_ARN" \
--sql "CREATE DATABASE IF NOT EXISTS mydb;" \
--database "mysql"
# Create the products table
aws rds-data execute-statement \
--resource-arn "$DB_ARN" \
--secret-arn "$SECRET_ARN" \
--sql "CREATE TABLE products(id INT PRIMARY KEY, name VARCHAR(50), price DECIMAL(6,2));" \
--database "mydb"
# Insert sample data
for i in {1..20}; do
aws rds-data execute-statement \
--resource-arn "$DB_ARN" \
--secret-arn "$SECRET_ARN" \
--sql "INSERT INTO products VALUES($i, CONCAT('Widget-', $i), ROUND(RAND()*100,2));" \
--database "mydb"
done
# Verify data creation
aws rds-data execute-statement \
--resource-arn "$DB_ARN" \
--secret-arn "$SECRET_ARN" \
--sql "SELECT COUNT(*) as product_count FROM products;" \
--database "mydb"
elasticache-valkey-demo
# Get your VPC ID
VPC_ID=$(aws ec2 describe-vpcs --filters \
"Name=is-default,Values=true" \
--query 'Vpcs[0].VpcId' --output text)
# Get subnet IDs
SUBNET_IDS=$(aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=$VPC_ID" \
--query 'Subnets[*].SubnetId' --output text | tr '\t' ' ')
# Create VPC endpoint for RDS Data API
aws ec2 create-vpc-endpoint \
--vpc-id $VPC_ID \
--service-name com.amazonaws.us-east-1.rds-data \
--subnet-ids $SUBNET_IDS \
--security-group-ids $(aws ec2 describe-security-groups \
--filters "Name=group-name,Values=default" \
--query 'SecurityGroups[0].GroupId' --output text) \
--vpc-endpoint-type Interface
# Create VPC endpoint for Secrets Manager
aws ec2 create-vpc-endpoint \
--vpc-id $VPC_ID \
--service-name com.amazonaws.us-east-1.secretsmanager \
--subnet-ids $SUBNET_IDS \
--security-group-ids $(aws ec2 describe-security-groups \
--filters "Name=group-name,Values=default" \
--query 'SecurityGroups[0].GroupId' --output text) \
--vpc-endpoint-type Interface
AWSLambdaVPCAccessExecutionRole
AmazonRDSDataFullAccess
SecretsManagerReadWrite
AmazonElastiCacheFullAccess
lambda-valkey-role
# Install Python 3.13 binaries
sudo yum update -y
sudo yum install -y python3.13 python3.13-pip zip
# Verify installation
python3.13 --version
pip3.13 --version
mkdir lambda_build && cd lambda_build
cat > lambda_function.py << EOF
FILE CONTENTS
EOF
python3.13 -m pip install --target . valkey-glide boto3
zip -r function.zip . -x function.zip
ls -lh function.zip
Download the package from CloudShell:
~/lambda_build/function.zip
~/lambda_build/function.zip
512
VALKEY_ENDPOINT
DB_ARN
SECRET_ARN
{
"id": 5
}
test-cache-miss
# List and delete VPC endpoints
aws ec2 describe-vpc-endpoints \
--query 'VpcEndpoints[?ServiceName==`com.amazonaws.us-east-1.rds-data`].VpcEndpointId' \
--output text | xargs -I {} aws ec2 delete-vpc-endpoints --vpc-endpoint-id {}
aws ec2 describe-vpc-endpoints \
--query 'VpcEndpoints[?ServiceName==`com.amazonaws.us-east-1.secretsmanager`].VpcEndpointId' \
--output text | xargs -I {} aws ec2 delete-vpc-endpoints --vpc-endpoint-id {}
delete me
lambda-valkey-role
delete me
delete
delete default vpc