In this demo, we will:
aurora-demoadmin0.51aurora-demo-sg3306mydbAWS_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 InterfaceAWSLambdaVPCAccessExecutionRoleAmazonRDSDataFullAccessSecretsManagerReadWriteAmazonElastiCacheFullAccesslambda-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 --versionmkdir lambda_build && cd lambda_build
cat > lambda_function.py << EOF
FILE CONTENTS
EOFpython3.13 -m pip install --target . valkey-glide boto3zip -r function.zip . -x function.zipls -lh function.zipDownload the package from CloudShell:
~/lambda_build/function.zip
~/lambda_build/function.zip512VALKEY_ENDPOINTDB_ARNSECRET_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 melambda-valkey-roledelete medeletedelete default vpc