故事里的小黄花,从芸记算那年就飘着

样题一:

1. 创建Flask应用文件/root/api.py:
from flask import Flask, request, jsonify
import boto3
import psycopg2

app = Flask(__name__)

dynamodb = boto3.resource(
    'dynamodb',
    region_name='us-east-1',
)
table = dynamodb.Table('data_table1')

rds_host = ""RDS节点端口
db_name = ""初始数据库名
username = "" root
password = ""自己设置的密码


@app.route('/post_data1', methods=['POST'])
def post_data1():
    try:
        data = request.json
        table.put_item(Item=data)
        return jsonify({"message": "Data stored in DynamoDB"}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500


@app.route('/post_data2', methods=['POST'])
def post_data2():
    try:
        data = request.json
        conn = psycopg2.connect(
            host=rds_host,
            database=db_name,
            user=username,
            password=password,
            connect_timeout=3
        )
        cur = conn.cursor()
        cur.execute("""
            CREATE TABLE IF NOT EXISTS data_table2 (
                id VARCHAR(255) PRIMARY KEY,
                value VARCHAR(255)
            )
        """)
        cur.execute("""
            INSERT INTO data_table2 (id, value) 
            VALUES (%s, %s)
            ON CONFLICT (id) DO UPDATE SET value = EXCLUDED.value
        """, (data['id'], data['value']))
        conn.commit()
        return jsonify({"message": "Data stored in RDS"}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500
    finally:
        if 'conn' in locals():
            conn.close()


@app.route('/get_value', methods=['GET'])
def get_value():
    try:
        id = request.args.get('id')
        if not id:
            return jsonify({"error": "ID is required"}), 400

        # 从DynamoDB获取值
        response = table.get_item(Key={'id': id})
        if 'Item' not in response:
            return jsonify({"error": "ID not found in DynamoDB"}), 404
        dynamo_value = int(response['Item']['value'])

        # 从RDS获取值
        conn = psycopg2.connect(
            host=rds_host,
            database=db_name,
            user=username,
            password=password,
            connect_timeout=3
        )
        cur = conn.cursor()
        cur.execute("SELECT value FROM data_table2 WHERE id = %s", (id,))
        result = cur.fetchone()
        if not result:
            return jsonify({"error": "ID not found in RDS"}), 404
        rds_value = int(result[0])

        return jsonify({"message": str(dynamo_value + rds_value)}), 200
    except Exception as e:
        return jsonify({"error": str(e)}), 500
    finally:
        if 'conn' in locals():
            conn.close()


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

nohup python3 api.py & netstat -ntpl

3.下载创建Nginx配置文件
 yum -y install nginx
 vim /etc/nginx/conf.d/api.conf
   
   server {
       listen 80;
       server_name _;
       
       location / {
           proxy_pass http://localhost:5000;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
   }
4. 重启Nginx:
   sudo systemctl restart nginx
      
5测试是否做对  
[root@ip-172-31-95-55 ~]# curl -X POST http://54.158.180.27/post_data1   -H "Content-Type: application/json"   -d '{"id":"02", "value":"123"}'
{"message":"Data stored in DynamoDB"}
[root@ip-172-31-95-55 ~]# curl -X POST http://54.158.180.27/post_data2   -H "Content-Type: application/json"   -d '{"id":"02", "value":"456"}'
{"message":"Data stored in RDS"}
[root@ip-172-31-95-55 ~]# curl -X GET "http://54.158.180.27/get_value?id=02"
{"message":"579"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值