122 lines
3.2 KiB
Plaintext
122 lines
3.2 KiB
Plaintext
from urllib2_aws4auth import aws_urlopen, Request
|
|
from urllib2 import HTTPError
|
|
from urllib import urlencode
|
|
import json
|
|
import system
|
|
import boto3
|
|
from pprint import pformat
|
|
|
|
REGION ='us-west-2'
|
|
|
|
|
|
def openSession():
|
|
CREDS = boto3.Session().get_credentials()
|
|
AWS_ACCESS_KEY_ID = CREDS.access_key
|
|
AWS_SECRET_ACCESS_KEY = CREDS.secret_key
|
|
TOKEN = CREDS.token
|
|
CREDSRETURN = {'AccessKeyId':AWS_ACCESS_KEY_ID,
|
|
'SecretAccessKey':AWS_SECRET_ACCESS_KEY,
|
|
'SessionToken':TOKEN}
|
|
# OPENER = aws_urlopen(
|
|
# AWS_ACCESS_KEY_ID,
|
|
# AWS_SECRET_ACCESS_KEY,
|
|
# REGION,
|
|
# SERVICE,
|
|
# session_token=TOKEN,
|
|
# verify=False)
|
|
# return OPENER
|
|
|
|
return CREDSRETURN
|
|
|
|
|
|
def DynamoDeleter(PrimaryKey, publish):
|
|
import json
|
|
from pprint import pformat
|
|
import boto3
|
|
from datetime import datetime
|
|
from decimal import Decimal
|
|
import time
|
|
|
|
LOGGER = system.util.getLogger('notify_to_dynamodb_log')
|
|
|
|
# Get STAGE variable
|
|
roleArn = 'arn:aws:iam::533266954132:role/ignition_to_aws_scada_notify'
|
|
STAGE = 'beta'
|
|
# Make sure STAGE is valid. no gamma stage configured
|
|
if STAGE not in ['alpha', 'beta', 'gamma', 'prod']:
|
|
STAGE = 'beta'
|
|
if STAGE == 'gamma':
|
|
STAGE = 'beta'
|
|
|
|
STAGE_CONFIG = {
|
|
'alpha':{
|
|
'region' : 'us-west-2',
|
|
'roleArn' : roleArn,
|
|
'tableName' : 'NotificationsEntries'
|
|
},
|
|
'beta': {
|
|
'region':'us-west-2',
|
|
'roleArn': roleArn,
|
|
'tableName' : 'NotificationsEntries'
|
|
|
|
},
|
|
'prod': {
|
|
'region':'us-west-2',
|
|
'roleArn': roleArn,
|
|
'tableName' : 'NotificationsEntries'
|
|
}
|
|
}
|
|
|
|
|
|
# create sts session to get credentials from EC2
|
|
sts_client = boto3.client('sts')
|
|
region_name = STAGE_CONFIG.get(STAGE, 'alpha').get('region', 'us-west-2')
|
|
|
|
assume_role_response = sts_client.assume_role(
|
|
RoleArn = STAGE_CONFIG.get(STAGE, 'beta').get('roleArn', roleArn),
|
|
RoleSessionName = 'AssumeRole'
|
|
)
|
|
|
|
temp_credentials = assume_role_response['Credentials']
|
|
|
|
# create session using the temp creds
|
|
b3_session = boto3.Session(
|
|
aws_access_key_id = temp_credentials['AccessKeyId'],
|
|
aws_secret_access_key = temp_credentials['SecretAccessKey'],
|
|
aws_session_token = temp_credentials['SessionToken'],
|
|
region_name = 'us-west-2',
|
|
)
|
|
|
|
# create a dynamodb session
|
|
dynamodb = b3_session.resource('dynamodb')
|
|
table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'beta').get('tableName', 'NotificationsEntries'))
|
|
# response = client.scan(
|
|
# TableName='string',
|
|
# IndexName='string',
|
|
# AttributesToGet=[
|
|
# 'string',
|
|
# ],
|
|
# Limit=123,
|
|
|
|
# write data directly to dynamodb table
|
|
try:
|
|
response = table.delete_item(Key={
|
|
'PrimaryKey': PrimaryKey,
|
|
"publish": publish
|
|
},
|
|
ConditionExpression="attribute_exists (PrimaryKey)")
|
|
# response = table.scan(ProjectionExpression="PrimaryKey, publish, expire, title")
|
|
# TableName='NotificationsEntries',
|
|
# IndexName='publish',
|
|
## ProjectionExpression =['publish', 'expire', 'title'],
|
|
# Limit=123)
|
|
# system.perspective.print(response)
|
|
system.perspective.print('Delete from NotificationsEntries DynamoDB Table Successful')
|
|
except Exception as e:
|
|
system.perspective.print('Delete from NotificationsEntries DynamoDB Table NOT Successful')
|
|
system.perspective.print(str(e))
|
|
LOGGER.error(str(e))
|
|
|
|
|
|
return response
|
|
|