|
@@ -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'])
|
|
|
|
|
+ }
|
|
|
|
|
+
|