Bladeren bron

add py/api+Dy_update.

xdc 5 jaren geleden
bovenliggende
commit
0b8252cc21
1 gewijzigde bestanden met toevoegingen van 273 en 0 verwijderingen
  1. 273 0
      py/api+Dy_updata.py

+ 273 - 0
py/api+Dy_updata.py

@@ -0,0 +1,273 @@
+import json
+import boto3
+import time
+
+def lambda_handler(event, context):
+    print(event)
+    msg = json.loads(event['body'])
+    secret = msg['secret_code']
+    print(secret)
+    
+    client = boto3.client('dynamodb')
+    
+    table_name = "xdctb"
+    # timedata = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
+    response = client.update_item(
+        TableName=table_name,
+        # ExpressionAttributeNames={
+        #     'skip': secret,
+        # },
+        ExpressionAttributeValues={
+            ':y': {
+                'S': secret,
+            }
+        },
+        Key={
+        'dtime': {
+            'S': '20200605',
+        }
+        },
+        UpdateExpression='SET skip = :y',
+        ReturnValues="UPDATED_NEW"
+    )
+    
+    return {
+    "statusCode": 200,
+    "isBase64Encoded": False,
+    "headers": {
+        "Content-Type": "application/json; charset=utf-8"
+        },
+    "body": "OK ! "
+    }
+
+
+#=======================第一版本=========================#
+
+import json
+import boto3
+import time
+
+def lambda_handler(event, context):
+    print(event)
+    msg = json.loads(event['body'])
+    secret = msg['secret_code']
+    print(secret)
+    
+    client = boto3.client('dynamodb')
+    
+    table_name = "xdctb"
+    # timedata = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
+    response = client.update_item(
+        TableName=table_name,
+        Key={
+        'dtime': {
+            'S': '20200605',
+        },
+        'skip': {
+            'S': secret,
+        },
+        })
+        
+    # print(timedata)
+    return {
+    "statusCode": 200,
+    "isBase64Encoded": False,
+    "headers": {
+        "Content-Type": "application/json; charset=utf-8"
+        },
+    "body": "OK ! "
+    } 
+
+
+# ========================? v2 ========================
+
+import boto3
+import json
+import time
+import base64
+from botocore.exceptions import ClientError
+
+print('Loading function')
+dynamodb = boto3.client('dynamodb')
+
+
+def respond(err, res=None):
+    return {
+        'statusCode': '400' if err else '200',
+        'body': err.message if err else json.dumps(res),
+        'headers': {
+            'Content-Type': 'application/json',
+        },
+    }
+
+
+def lambda_handler(event, context):
+    response = {}
+    response["headers"] = event["headers"]
+    #dynamodb.put_item(TableName='K12D', Item= {'id':{"S": json.loads(event['body'])["secret_code"]},'key':{"S": str(round(time.time()))}})
+    #ret_data=dynamodb.scan(TableName='K12D')
+
+    secret_name = "test"
+    region_name = "cn-northwest-1"
+
+    # Create a Secrets Manager client
+    session = boto3.session.Session()
+    client = session.client(
+        service_name='secretsmanager',
+        region_name=region_name
+    )
+
+    # In this sample we only handle the specific exceptions for the 'GetSecretValue' API.
+    # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
+    # We rethrow the exception by default.
+
+    try:
+        get_secret_value_response = client.get_secret_value(
+            SecretId=secret_name
+        )
+    except ClientError as e:
+        if e.response['Error']['Code'] == 'DecryptionFailureException':
+            # Secrets Manager can't decrypt the protected secret text using the provided KMS key.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'InternalServiceErrorException':
+            # An error occurred on the server side.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'InvalidParameterException':
+            # You provided an invalid value for a parameter.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'InvalidRequestException':
+            # You provided a parameter value that is not valid for the current state of the resource.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'ResourceNotFoundException':
+            # We can't find the resource that you asked for.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+    else:
+        # Decrypts secret using the associated KMS CMK.
+        # Depending on whether the secret is a string or binary, one of these fields will be populated.
+        if 'SecretString' in get_secret_value_response:
+            secret = get_secret_value_response['SecretString']
+        else:
+            decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary'])
+        
+        #updated_secret=get_secret_value_response.update({"key": "test223123123"})
+        try:
+            client.update_secret(SecretId=secret_name, SecretString=json.dumps(json.loads(event['body'])["secret_code"]))
+            return {
+                'statusCode': 200,
+                #'body': json.loads(event['body'])["secret_code"]
+                #'body': str(max(ret_data['Items'].key))
+                #'body': json.loads(get_secret_value_response['SecretString'])['key']
+                #'body': get_secret_value_response['SecretString']
+                'body': json.loads(event['body'])["secret_code"]
+            }
+        except:
+            return {
+                'statusCode': 200,
+                #'body': json.loads(event['body'])["secret_code"]
+                #'body': str(max(ret_data['Items'].key))
+                #'body': json.loads(get_secret_value_response['SecretString'])['key']
+                #'body': get_secret_value_response['SecretString']
+                'body': json.loads(get_secret_value_response['SecretString'])
+            }
+
+# ========================? v3 ========================
+
+import boto3
+import json
+import time
+import base64
+from botocore.exceptions import ClientError
+
+print('Loading function')
+dynamodb = boto3.client('dynamodb')
+
+
+def respond(err, res=None):
+    return {
+        'statusCode': '400' if err else '200',
+        'body': err.message if err else json.dumps(res),
+        'headers': {
+            'Content-Type': 'application/json',
+        },
+    }
+
+
+def lambda_handler(event, context):
+    response = {}
+    response["headers"] = event["headers"]
+    #dynamodb.put_item(TableName='K12D', Item= {'id':{"S": json.loads(event['body'])["secret_code"]},'key':{"S": str(round(time.time()))}})
+    #ret_data=dynamodb.scan(TableName='K12D')
+
+    secret_name = "test"
+    region_name = "cn-northwest-1"
+
+    # Create a Secrets Manager client
+    session = boto3.session.Session()
+    client = session.client(
+        service_name='secretsmanager',
+        region_name=region_name
+    )
+
+    # In this sample we only handle the specific exceptions for the 'GetSecretValue' API.
+    # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
+    # We rethrow the exception by default.
+
+    try:
+        get_secret_value_response = client.get_secret_value(
+            SecretId=secret_name
+        )
+    except ClientError as e:
+        if e.response['Error']['Code'] == 'DecryptionFailureException':
+            # Secrets Manager can't decrypt the protected secret text using the provided KMS key.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'InternalServiceErrorException':
+            # An error occurred on the server side.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'InvalidParameterException':
+            # You provided an invalid value for a parameter.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'InvalidRequestException':
+            # You provided a parameter value that is not valid for the current state of the resource.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+        elif e.response['Error']['Code'] == 'ResourceNotFoundException':
+            # We can't find the resource that you asked for.
+            # Deal with the exception here, and/or rethrow at your discretion.
+            raise e
+    else:
+        # Decrypts secret using the associated KMS CMK.
+        # Depending on whether the secret is a string or binary, one of these fields will be populated.
+        if 'SecretString' in get_secret_value_response:
+            secret = get_secret_value_response['SecretString']
+        else:
+            decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary'])
+        
+        #updated_secret=get_secret_value_response.update({"key": "test223123123"})
+        try:
+            client.update_secret(SecretId=secret_name, SecretString=json.dumps(json.loads(event['body'])["secret_code"]))
+            return {
+                'statusCode': 200,
+                #'body': json.loads(event['body'])["secret_code"]
+                #'body': str(max(ret_data['Items'].key))
+                #'body': json.loads(get_secret_value_response['SecretString'])['key']
+                #'body': get_secret_value_response['SecretString']
+                'body': json.loads(event['body'])["secret_code"]
+            }
+        except:
+            return {
+                'statusCode': 200,
+                #'body': json.loads(event['body'])["secret_code"]
+                #'body': str(max(ret_data['Items'].key))
+                #'body': json.loads(get_secret_value_response['SecretString'])['key']
+                #'body': get_secret_value_response['SecretString']
+                'body': json.loads(get_secret_value_response['SecretString'])
+            }
+