final version
This commit is contained in:
parent
671ec841a7
commit
5b65d9d480
.ipynb_checkpoints
Untitled-checkpoint.ipynbautoscaling3-checkpoint.pyautoscaling_runner-checkpoint.ipynblb2-checkpoint.pyload_balancer_runner-checkpoint.ipynbmain-checkpoint.pymain2-checkpoint.pyscipt-checkpoint.shsprawdzarka-checkpoint.ipynbtester-checkpoint.ipynb
Dockerfile__pycache__
autoscaling3.pyautoscaling_runner.ipynbaws_credentials.jsonlb2.pyload_balancer_runner.ipynbmain.pys464863-key.pems464953-key-5tbwjp0h.pems464953-key-878poos8.pems464953-key-9zfwetjt.pems464953-key-ah39b0g3.pems464953-key-dwa56awk.pems464953-key-he6jgiep.pems464953-key-j0tb393g.pems464953-key-k0xsnd7v.pems464953-key-khqyy6zc.pems464953-key-l8tvp0sn.pems464953-key-ledcih7j.pems464953-key-qepbiky3.pems464953-key-r9idbi5g.pems464953-key-splliwm2.pems464953-key-su5viqwk.pems464953-key-t90y4hnf.pems464953-key-tbsg1uv1.pems464953-key-vasuwhem.pems464953-key-yi5mu86o.pems464953-key-yw7re7qc.pemtester.ipynb
103
.ipynb_checkpoints/Untitled-checkpoint.ipynb
Normal file
103
.ipynb_checkpoints/Untitled-checkpoint.ipynb
Normal file
@ -0,0 +1,103 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"id": "1b1c4049-4305-482f-8257-fbb92654b094",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Pobieranie danych AWS CLI...\n",
|
||||
"Uruchamianie main.py...\n",
|
||||
"Czyszczenie istniejących zasobów...\n",
|
||||
"Usuwam Key Pair: s464953-key\n",
|
||||
"Tworzenie zasobów...\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/home/students/s464953/praktyczne zastosowanie chmury/aws/main.py\", line 269, in <module>\n",
|
||||
" main(args.aws_access_key_id, args.aws_secret_access_key, args.aws_session_token)\n",
|
||||
" File \"/home/students/s464953/praktyczne zastosowanie chmury/aws/main.py\", line 118, in main\n",
|
||||
" vpc_response = ec2_client.create_vpc(CidrBlock=vpc_cidr)\n",
|
||||
"UnboundLocalError: local variable 'ec2_client' referenced before assignment\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "1",
|
||||
"output_type": "error",
|
||||
"traceback": []
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#!/bin/bash\n",
|
||||
"\n",
|
||||
"chmod +x main.py\n",
|
||||
"\n",
|
||||
"pip install boto3 os load_dotenv base64\n",
|
||||
"\n",
|
||||
"python3 main.py"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"id": "63193145-a21b-4d0d-8473-196c9a89011e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"bash: !pip: event not found\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"!pip install python-dotenv"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "fceeae88-9f3a-4211-9f21-c04ec526bfbf",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"bash: !aws: event not found\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"!aws configure set region us-east-1\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1bbd1a2d-2e9a-4074-b026-a9afc46fe439",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Bash",
|
||||
"language": "bash",
|
||||
"name": "bash"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "shell",
|
||||
"file_extension": ".sh",
|
||||
"mimetype": "text/x-sh",
|
||||
"name": "bash"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
230
.ipynb_checkpoints/autoscaling3-checkpoint.py
Normal file
230
.ipynb_checkpoints/autoscaling3-checkpoint.py
Normal file
@ -0,0 +1,230 @@
|
||||
import boto3
|
||||
import base64
|
||||
from USER_DATA import user_data
|
||||
import json
|
||||
import time
|
||||
import random
|
||||
import string
|
||||
|
||||
PREFIX = "s464953"
|
||||
AMI_ID = "ami-0b5eea76982371e91"
|
||||
INSTANCE_TYPE = "t2.micro"
|
||||
SECURITY_GROUP_NAME = f"{PREFIX}-sg"
|
||||
REGION = "us-east-1"
|
||||
|
||||
with open("aws_credentials.json", 'r') as file:
|
||||
creds = json.load(file)
|
||||
|
||||
client_ec2 = boto3.client('ec2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
client_elb = boto3.client('elbv2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
autoscaling_client = boto3.client('autoscaling', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
cloudwatch_client = boto3.client('cloudwatch', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
def create_vpc():
|
||||
vpc_id = client_ec2.create_vpc(CidrBlock='10.0.0.0/16')['Vpc']['VpcId']
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={'Value': True})
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={'Value': True})
|
||||
return vpc_id
|
||||
|
||||
def create_subnet(vpc_id, cidr, az):
|
||||
subnet_id = client_ec2.create_subnet(VpcId=vpc_id, CidrBlock=cidr, AvailabilityZone=az)['Subnet']['SubnetId']
|
||||
client_ec2.modify_subnet_attribute(SubnetId=subnet_id, MapPublicIpOnLaunch={'Value': True})
|
||||
return subnet_id
|
||||
|
||||
def create_igw(vpc_id):
|
||||
igw_id = client_ec2.create_internet_gateway()['InternetGateway']['InternetGatewayId']
|
||||
client_ec2.attach_internet_gateway(InternetGatewayId=igw_id, VpcId=vpc_id)
|
||||
return igw_id
|
||||
|
||||
def create_route_table(vpc_id, subnet_id, igw_id):
|
||||
rt_id = client_ec2.create_route_table(VpcId=vpc_id)['RouteTable']['RouteTableId']
|
||||
client_ec2.create_route(
|
||||
RouteTableId=rt_id,
|
||||
DestinationCidrBlock='0.0.0.0/0',
|
||||
GatewayId=igw_id
|
||||
)
|
||||
client_ec2.associate_route_table(RouteTableId=rt_id, SubnetId=subnet_id)
|
||||
return rt_id
|
||||
|
||||
def create_key_pair(name):
|
||||
random_suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
|
||||
unique_name = f"{name}-{random_suffix}"
|
||||
key_material = client_ec2.create_key_pair(KeyName=unique_name)['KeyMaterial']
|
||||
|
||||
with open(f"{unique_name}.pem", 'w') as file:
|
||||
file.write(key_material)
|
||||
return unique_name
|
||||
|
||||
|
||||
def create_sg(vpc_id):
|
||||
sg_id = client_ec2.create_security_group(GroupName=SECURITY_GROUP_NAME, Description="Security group", VpcId=vpc_id)['GroupId']
|
||||
client_ec2.authorize_security_group_ingress(
|
||||
GroupId=sg_id,
|
||||
IpPermissions=[
|
||||
{
|
||||
'IpProtocol': 'tcp',
|
||||
'FromPort': 8080,
|
||||
'ToPort': 8080,
|
||||
'IpRanges': [
|
||||
{
|
||||
'CidrIp': '0.0.0.0/0'
|
||||
}
|
||||
]
|
||||
}
|
||||
])
|
||||
return sg_id
|
||||
|
||||
def create_launch_template(key_name, sg_id):
|
||||
lt_id = client_ec2.create_launch_template(
|
||||
LaunchTemplateName=f"{PREFIX}-lt",
|
||||
LaunchTemplateData=
|
||||
{
|
||||
'ImageId': AMI_ID,
|
||||
'InstanceType': INSTANCE_TYPE,
|
||||
'SecurityGroupIds': [sg_id],
|
||||
'KeyName': key_name,
|
||||
'UserData': base64.b64encode(user_data.encode('utf-8')).decode('utf-8')
|
||||
}
|
||||
)['LaunchTemplate']['LaunchTemplateId']
|
||||
return lt_id
|
||||
|
||||
def create_target_group(vpc_id):
|
||||
tg_arn = client_elb.create_target_group(
|
||||
Name=f"{PREFIX}-tg",
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
VpcId=vpc_id,
|
||||
TargetType='instance',
|
||||
IpAddressType='ipv4',
|
||||
HealthCheckProtocol='HTTP',
|
||||
HealthCheckPort='8080',
|
||||
HealthCheckPath='/factors/6',
|
||||
HealthCheckIntervalSeconds=30,
|
||||
HealthCheckTimeoutSeconds=5,
|
||||
HealthyThresholdCount=3,
|
||||
UnhealthyThresholdCount=3
|
||||
)['TargetGroups'][0]['TargetGroupArn']
|
||||
return tg_arn
|
||||
|
||||
def create_lb(subnets, sg_id):
|
||||
lb_arn = client_elb.create_load_balancer(
|
||||
Name=f"{PREFIX}-lb",
|
||||
Subnets=subnets,
|
||||
SecurityGroups=[sg_id],
|
||||
Scheme='internet-facing',
|
||||
Type='application',
|
||||
IpAddressType='ipv4'
|
||||
)['LoadBalancers'][0]['LoadBalancerArn']
|
||||
return lb_arn
|
||||
|
||||
def create_listener(lb_arn, tg_arn):
|
||||
listener_arn = client_elb.create_listener(
|
||||
LoadBalancerArn=lb_arn,
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
DefaultActions=[
|
||||
{
|
||||
'Type': 'forward',
|
||||
'TargetGroupArn': tg_arn
|
||||
}
|
||||
]
|
||||
)['Listeners'][0]['ListenerArn']
|
||||
return listener_arn
|
||||
|
||||
def create_auto_scaling_group(launch_template_id, target_group_arn, subnet_id_1, subnet_id_2):
|
||||
autoscaling_client.create_auto_scaling_group(
|
||||
AutoScalingGroupName=f"{PREFIX}-asg",
|
||||
LaunchTemplate={
|
||||
'LaunchTemplateId': launch_template_id,
|
||||
'Version': '$Latest'
|
||||
},
|
||||
MinSize=2,
|
||||
MaxSize=5,
|
||||
DesiredCapacity=2,
|
||||
TargetGroupARNs=[target_group_arn],
|
||||
AvailabilityZones=[f"{REGION}a", f"{REGION}b"],
|
||||
HealthCheckType='EC2',
|
||||
HealthCheckGracePeriod=90,
|
||||
VPCZoneIdentifier=f"{subnet_id_1},{subnet_id_2}",
|
||||
Tags=[
|
||||
{
|
||||
'Key': 'Name',
|
||||
'Value': f"{PREFIX}-asg",
|
||||
'PropagateAtLaunch': True
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
describe_response = autoscaling_client.describe_auto_scaling_groups(
|
||||
AutoScalingGroupNames=[f"{PREFIX}-asg"]
|
||||
)
|
||||
|
||||
asg_arn = describe_response['AutoScalingGroups'][0]['AutoScalingGroupARN']
|
||||
return asg_arn
|
||||
|
||||
def put_scaling_policy():
|
||||
policy = autoscaling_client.put_scaling_policy(
|
||||
AutoScalingGroupName=f"{PREFIX}-asg",
|
||||
PolicyName=f"{PREFIX}-scale-policy-cpu",
|
||||
PolicyType='SimpleScaling',
|
||||
AdjustmentType='ChangeInCapacity',
|
||||
ScalingAdjustment=1,
|
||||
Cooldown=180
|
||||
)
|
||||
return policy['PolicyARN']
|
||||
|
||||
def create_cloudwatch_alarm(sp_arn):
|
||||
cloudwatch_client.put_metric_alarm(
|
||||
AlarmName=f"{PREFIX}-cpu-utilization-alarm",
|
||||
ComparisonOperator='GreaterThanOrEqualToThreshold',
|
||||
EvaluationPeriods=1,
|
||||
MetricName='CPUUtilization',
|
||||
Namespace='AWS/EC2',
|
||||
Period=60,
|
||||
Statistic='Average',
|
||||
Threshold=30.0,
|
||||
ActionsEnabled=True,
|
||||
AlarmActions=[sp_arn],
|
||||
AlarmDescription='Alarm to scale out/in based on CPU utilization',
|
||||
Dimensions=[{
|
||||
'Name': 'AutoScalingGroupName',
|
||||
'Value': f"{PREFIX}-asg"
|
||||
}]
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
vpc = create_vpc()
|
||||
subnet = create_subnet(vpc, '10.0.1.0/24', f"{REGION}a")
|
||||
subnet2 = create_subnet(vpc, '10.0.2.0/24', f"{REGION}b")
|
||||
igw = create_igw(vpc)
|
||||
create_route_table(vpc, subnet, igw)
|
||||
key = create_key_pair(f"{PREFIX}-key")
|
||||
sg = create_sg(vpc)
|
||||
lt = create_launch_template(key, sg)
|
||||
tg = create_target_group(vpc)
|
||||
lb = create_lb([subnet, subnet2], sg)
|
||||
listener = create_listener(lb, tg)
|
||||
asg_arn = create_auto_scaling_group(lt, tg, subnet, subnet2)
|
||||
sp = put_scaling_policy()
|
||||
create_cloudwatch_alarm(sp)
|
||||
dns = client_elb.describe_load_balancers(LoadBalancerArns=[lb])['LoadBalancers'][0]['DNSName']
|
||||
print(dns)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
72
.ipynb_checkpoints/autoscaling_runner-checkpoint.ipynb
Normal file
72
.ipynb_checkpoints/autoscaling_runner-checkpoint.ipynb
Normal file
@ -0,0 +1,72 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "dfd09c32-c2f2-431d-9bef-25616b4195e3",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Defaulting to user installation because normal site-packages is not writeable\n",
|
||||
"Requirement already satisfied: boto3 in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: python-dotenv in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (1.0.1)\n",
|
||||
"Requirement already satisfied: paramiko in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (3.5.0)\n",
|
||||
"Requirement already satisfied: requests in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 4)) (2.32.3)\n",
|
||||
"Requirement already satisfied: botocore<1.36.0,>=1.35.81 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.0.1)\n",
|
||||
"Requirement already satisfied: s3transfer<0.11.0,>=0.10.0 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (0.10.4)\n",
|
||||
"Requirement already satisfied: bcrypt>=3.2 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (4.2.1)\n",
|
||||
"Requirement already satisfied: cryptography>=3.3 in /usr/local/lib/python3.9/dist-packages (from paramiko->-r requirements.txt (line 3)) (38.0.1)\n",
|
||||
"Requirement already satisfied: pynacl>=1.5 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (1.5.0)\n",
|
||||
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2.1.1)\n",
|
||||
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (3.4)\n",
|
||||
"Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (1.26.12)\n",
|
||||
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2022.9.14)\n",
|
||||
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/dist-packages (from botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (2.8.2)\n",
|
||||
"Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (1.15.1)\n",
|
||||
"Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (2.21)\n",
|
||||
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (1.16.0)\n",
|
||||
"\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n",
|
||||
"Auto Scaling Group created with ARN: arn:aws:autoscaling:us-east-1:304199018171:autoScalingGroup:91d82aae-1256-44d9-ac62-f9db2492c65f:autoScalingGroupName/s464953-asg\n",
|
||||
"CPU Utilization alarm created\n",
|
||||
"s464953-lb-500026741.us-east-1.elb.amazonaws.com\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#!/bin/bash\n",
|
||||
"chmod +x autoscaling3.py\n",
|
||||
"pip3 install -r requirements.txt\n",
|
||||
"python3 autoscaling3.py\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "b0e3f3c0-47c6-4676-9ada-72520abc8481",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Bash",
|
||||
"language": "bash",
|
||||
"name": "bash"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "shell",
|
||||
"file_extension": ".sh",
|
||||
"mimetype": "text/x-sh",
|
||||
"name": "bash"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
127
.ipynb_checkpoints/lb2-checkpoint.py
Normal file
127
.ipynb_checkpoints/lb2-checkpoint.py
Normal file
@ -0,0 +1,127 @@
|
||||
import boto3
|
||||
import base64
|
||||
from USER_DATA import user_data
|
||||
import json
|
||||
import time
|
||||
import random
|
||||
import string
|
||||
|
||||
PREFIX = "s464953"
|
||||
AMI_ID = "ami-0b5eea76982371e91"
|
||||
INSTANCE_TYPE = "t2.micro"
|
||||
SECURITY_GROUP_NAME = f"{PREFIX}-sg"
|
||||
REGION = "us-east-1"
|
||||
|
||||
with open("aws_credentials.json", 'r') as file:
|
||||
creds = json.load(file)
|
||||
|
||||
client_ec2 = boto3.client('ec2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
client_elb = boto3.client('elbv2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
def create_vpc():
|
||||
vpc_id = client_ec2.create_vpc(CidrBlock='10.0.0.0/16')['Vpc']['VpcId']
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={'Value': True})
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={'Value': True})
|
||||
return vpc_id
|
||||
|
||||
def create_subnet(vpc_id, cidr, az):
|
||||
subnet_id = client_ec2.create_subnet(VpcId=vpc_id, CidrBlock=cidr, AvailabilityZone=az)['Subnet']['SubnetId']
|
||||
client_ec2.modify_subnet_attribute(SubnetId=subnet_id, MapPublicIpOnLaunch={'Value': True})
|
||||
return subnet_id
|
||||
|
||||
def create_igw(vpc_id):
|
||||
igw_id = client_ec2.create_internet_gateway()['InternetGateway']['InternetGatewayId']
|
||||
client_ec2.attach_internet_gateway(InternetGatewayId=igw_id, VpcId=vpc_id)
|
||||
return igw_id
|
||||
|
||||
def create_route_table(vpc_id, subnet_id, igw_id):
|
||||
rt_id = client_ec2.create_route_table(VpcId=vpc_id)['RouteTable']['RouteTableId']
|
||||
client_ec2.create_route(RouteTableId=rt_id, DestinationCidrBlock='0.0.0.0/0', GatewayId=igw_id)
|
||||
client_ec2.associate_route_table(RouteTableId=rt_id, SubnetId=subnet_id)
|
||||
return rt_id
|
||||
|
||||
def create_key_pair(name):
|
||||
random_suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
|
||||
unique_name = f"{name}-{random_suffix}"
|
||||
key_material = client_ec2.create_key_pair(KeyName=unique_name)['KeyMaterial']
|
||||
|
||||
with open(f"{unique_name}.pem", 'w') as file:
|
||||
file.write(key_material)
|
||||
return unique_name
|
||||
|
||||
|
||||
def create_sg(vpc_id):
|
||||
sg_id = client_ec2.create_security_group(GroupName=SECURITY_GROUP_NAME, Description="Security group", VpcId=vpc_id)['GroupId']
|
||||
client_ec2.authorize_security_group_ingress(GroupId=sg_id, IpPermissions=[
|
||||
{'IpProtocol': 'tcp', 'FromPort': 22, 'ToPort': 22, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]},
|
||||
{'IpProtocol': 'tcp', 'FromPort': 8080, 'ToPort': 8080, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}
|
||||
])
|
||||
return sg_id
|
||||
|
||||
def create_launch_template(key_name, sg_id):
|
||||
lt_id = client_ec2.create_launch_template(
|
||||
LaunchTemplateName=f"{PREFIX}-lt", LaunchTemplateData={
|
||||
'ImageId': AMI_ID, 'InstanceType': INSTANCE_TYPE,
|
||||
'SecurityGroupIds': [sg_id], 'KeyName': key_name,
|
||||
'UserData': base64.b64encode(user_data.encode('utf-8')).decode('utf-8')
|
||||
})['LaunchTemplate']['LaunchTemplateId']
|
||||
return lt_id
|
||||
|
||||
def create_target_group(vpc_id):
|
||||
tg_arn = client_elb.create_target_group(
|
||||
Name=f"{PREFIX}-tg", Protocol='HTTP', Port=8080, VpcId=vpc_id, TargetType='instance',
|
||||
HealthCheckProtocol='HTTP', HealthCheckPort='8080', HealthCheckPath='/factors/6'
|
||||
)['TargetGroups'][0]['TargetGroupArn']
|
||||
return tg_arn
|
||||
|
||||
def create_lb(subnets, sg_id):
|
||||
lb_arn = client_elb.create_load_balancer(
|
||||
Name=f"{PREFIX}-lb", Subnets=subnets, SecurityGroups=[sg_id], Scheme='internet-facing',
|
||||
Type='application', IpAddressType='ipv4'
|
||||
)['LoadBalancers'][0]['LoadBalancerArn']
|
||||
return lb_arn
|
||||
|
||||
def create_listener(lb_arn, tg_arn):
|
||||
listener_arn = client_elb.create_listener(
|
||||
LoadBalancerArn=lb_arn, Protocol='HTTP', Port=8080,
|
||||
DefaultActions=[{'Type': 'forward', 'TargetGroupArn': tg_arn}]
|
||||
)['Listeners'][0]['ListenerArn']
|
||||
return listener_arn
|
||||
|
||||
def create_instances(lt_id, subnet_id):
|
||||
ids = [i['InstanceId'] for i in client_ec2.run_instances(
|
||||
LaunchTemplate={'LaunchTemplateId': lt_id, 'Version': '$Latest'},
|
||||
MinCount=2, MaxCount=2, SubnetId=subnet_id)['Instances']]
|
||||
while True:
|
||||
states = [r['Instances'][0]['State']['Name'] for r in client_ec2.describe_instances(InstanceIds=ids)['Reservations']]
|
||||
if all(s == 'running' for s in states):
|
||||
break
|
||||
time.sleep(10)
|
||||
return ids
|
||||
|
||||
def main():
|
||||
vpc = create_vpc()
|
||||
subnet1 = create_subnet(vpc, '10.0.1.0/24', 'us-east-1a')
|
||||
subnet2 = create_subnet(vpc, '10.0.2.0/24', 'us-east-1b')
|
||||
igw = create_igw(vpc)
|
||||
create_route_table(vpc, subnet1, igw)
|
||||
key = create_key_pair(f"{PREFIX}-key")
|
||||
sg = create_sg(vpc)
|
||||
lt = create_launch_template(key, sg)
|
||||
tg = create_target_group(vpc)
|
||||
lb = create_lb([subnet1, subnet2], sg)
|
||||
listener = create_listener(lb, tg)
|
||||
instances = create_instances(lt, subnet1)
|
||||
client_elb.register_targets(TargetGroupArn=tg, Targets=[{'Id': i} for i in instances])
|
||||
dns = client_elb.describe_load_balancers(LoadBalancerArns=[lb])['LoadBalancers'][0]['DNSName']
|
||||
print(dns)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
70
.ipynb_checkpoints/load_balancer_runner-checkpoint.ipynb
Normal file
70
.ipynb_checkpoints/load_balancer_runner-checkpoint.ipynb
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "6781ce95-c6ad-42cd-bcb5-ac1cda3a56cc",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Defaulting to user installation because normal site-packages is not writeable\n",
|
||||
"Requirement already satisfied: boto3 in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: python-dotenv in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (1.0.1)\n",
|
||||
"Requirement already satisfied: paramiko in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (3.5.0)\n",
|
||||
"Requirement already satisfied: requests in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 4)) (2.32.3)\n",
|
||||
"Requirement already satisfied: botocore<1.36.0,>=1.35.81 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.0.1)\n",
|
||||
"Requirement already satisfied: s3transfer<0.11.0,>=0.10.0 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (0.10.4)\n",
|
||||
"Requirement already satisfied: bcrypt>=3.2 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (4.2.1)\n",
|
||||
"Requirement already satisfied: cryptography>=3.3 in /usr/local/lib/python3.9/dist-packages (from paramiko->-r requirements.txt (line 3)) (38.0.1)\n",
|
||||
"Requirement already satisfied: pynacl>=1.5 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (1.5.0)\n",
|
||||
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2.1.1)\n",
|
||||
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (3.4)\n",
|
||||
"Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (1.26.12)\n",
|
||||
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2022.9.14)\n",
|
||||
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/dist-packages (from botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (2.8.2)\n",
|
||||
"Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (1.15.1)\n",
|
||||
"Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (2.21)\n",
|
||||
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (1.16.0)\n",
|
||||
"\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n",
|
||||
"s464953-lb-29746609.us-east-1.elb.amazonaws.com\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#!/bin/bash\n",
|
||||
"chmod +x lb2.py\n",
|
||||
"pip3 install -r requirements.txt\n",
|
||||
"python3 lb2.py\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e807cccb-cb8e-4b25-91f1-43a72cda214f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Bash",
|
||||
"language": "bash",
|
||||
"name": "bash"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "shell",
|
||||
"file_extension": ".sh",
|
||||
"mimetype": "text/x-sh",
|
||||
"name": "bash"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
218
.ipynb_checkpoints/main-checkpoint.py
Normal file
218
.ipynb_checkpoints/main-checkpoint.py
Normal file
@ -0,0 +1,218 @@
|
||||
import boto3
|
||||
import base64
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# Konfiguracja
|
||||
PREFIX = "464953"
|
||||
REGION = "us-east-1"
|
||||
AMI_ID = "ami-0b5eea76982371e91"
|
||||
REPO_URL = "https://git.wmi.amu.edu.pl/464953/aws.git"
|
||||
INSTANCE_TYPE = "t2.micro"
|
||||
USER_DATA = f"""#!/bin/bash
|
||||
sudo yum update -y
|
||||
sudo yum install -y git
|
||||
cd /home/ec2-user
|
||||
git clone {REPO_URL}
|
||||
cd aws
|
||||
chmod +x webservice
|
||||
./webservice
|
||||
"""
|
||||
|
||||
aws_credentials = {
|
||||
'region_name': REGION,
|
||||
'aws_access_key_id': "ASIAUNU5MU25US5ZA3TT",
|
||||
'aws_secret_access_key': "Ca1K+Wo2JkWSFb3njIUYPYuhSCNjnJj7a/azLKzw",
|
||||
'aws_session_token':"IQoJb3JpZ2luX2VjEP///////////wEaCXVzLXdlc3QtMiJGMEQCIC8cXrkVu9cE6ByMrA2YhQeEYLnRgqr4G63MpYiwlcy5AiB7HyJ8nVKH06oISMnvzP93WU0KIUM7QAF30qK/1eYwcyq2AgjI//////////8BEAAaDDMwNDE5OTAxODE3MSIM3kxLqz5/wuHN0dzfKooCk+k5uJH7GvDsgxxxlcwEouefn3TuUYq88q2WESMgkOdvS7j2qxmghwydSpIlvsaYiyHUSMEo8xUjGGLTm62CZGxILf2383A2VU3adThLfXkf/qn9CxRcmFw7tqP4oDJYMN/CqMPGw+Nc3g3Uc87eHUsSqMDuib84SOIT6Uv5UyCIAXC5akdIf8vxLsfn9r9kXS+3mcWBNi3igUnv2v2c4J3ceFmsVCWvw8hfa5Bx4HomXMNTM85KMGHY/PyNgyO0yl4vnDgpXuB0iojXnotrtuqde0ybNZWuZjfAmageEpCQCusqqhcCF2M4nv4MPt5rdWx68jk9bsOkSfcffJTV6qNELRq82ZKxdrowmayiuwY6ngGmsuWmdUYkAlfCt7GsOiOMNvYbeZFY7rLfhNIHxIzIYGZCXXqO5k0GrxutUxPD2ZChWGEQKrEAsjT7JZhiL063/bk15AUKt69+3X4uchzaxjV68lO4lvrgj2pkwzb/PuYas+ntYTd9wRhrY3Q3tk08qHZhBh8N+pkxQBklfsT86at78/32GV8+JpPO/0uRNV1plxAWXyqDnCiSYbemag==",
|
||||
}
|
||||
|
||||
# Klienci AWS
|
||||
ec2_client = boto3.client('ec2', **aws_credentials)
|
||||
elbv2_client = boto3.client('elbv2', **aws_credentials)
|
||||
autoscaling_client = boto3.client('autoscaling', **aws_credentials)
|
||||
cloudwatch_client = boto3.client('cloudwatch', **aws_credentials)
|
||||
|
||||
# Tworzenie VPC
|
||||
def create_vpc():
|
||||
vpc = ec2_client.create_vpc(CidrBlock='10.0.0.0/16')['Vpc']
|
||||
ec2_client.modify_vpc_attribute(VpcId=vpc['VpcId'], EnableDnsSupport={'Value': True})
|
||||
ec2_client.modify_vpc_attribute(VpcId=vpc['VpcId'], EnableDnsHostnames={'Value': True})
|
||||
ec2_client.create_tags(Resources=[vpc['VpcId']], Tags=[{'Key': 'Name', 'Value': f"{PREFIX}-vpc"}])
|
||||
return vpc['VpcId']
|
||||
|
||||
# Tworzenie dwóch subnetów w różnych Availability Zones
|
||||
def create_subnets(vpc_id):
|
||||
# Pobierz dostępne Availability Zones
|
||||
availability_zones = ec2_client.describe_availability_zones()['AvailabilityZones']
|
||||
|
||||
# Wybierz pierwsze dwie dostępne strefy (zakładając, że co najmniej dwie są dostępne)
|
||||
az_1 = availability_zones[0]['ZoneName']
|
||||
az_2 = availability_zones[1]['ZoneName']
|
||||
|
||||
# Tworzenie subnetu w pierwszej Availability Zone
|
||||
subnet_1 = ec2_client.create_subnet(CidrBlock='10.0.1.0/24', VpcId=vpc_id, AvailabilityZone=az_1)['Subnet']
|
||||
ec2_client.modify_subnet_attribute(SubnetId=subnet_1['SubnetId'], MapPublicIpOnLaunch={'Value': True})
|
||||
ec2_client.create_tags(Resources=[subnet_1['SubnetId']], Tags=[{'Key': 'Name', 'Value': f"{PREFIX}-subnet-az1"}])
|
||||
|
||||
# Tworzenie subnetu w drugiej Availability Zone
|
||||
subnet_2 = ec2_client.create_subnet(CidrBlock='10.0.2.0/24', VpcId=vpc_id, AvailabilityZone=az_2)['Subnet']
|
||||
ec2_client.modify_subnet_attribute(SubnetId=subnet_2['SubnetId'], MapPublicIpOnLaunch={'Value': True})
|
||||
ec2_client.create_tags(Resources=[subnet_2['SubnetId']], Tags=[{'Key': 'Name', 'Value': f"{PREFIX}-subnet-az2"}])
|
||||
|
||||
return [subnet_1['SubnetId'], subnet_2['SubnetId']]
|
||||
|
||||
# Tworzenie Security Group
|
||||
def create_security_group(vpc_id):
|
||||
sg = ec2_client.create_security_group(
|
||||
Description=f"{PREFIX}-sg",
|
||||
GroupName=f"{PREFIX}-sg",
|
||||
VpcId=vpc_id
|
||||
)['GroupId']
|
||||
ec2_client.authorize_security_group_ingress(
|
||||
GroupId=sg,
|
||||
IpPermissions=[{
|
||||
'IpProtocol': 'tcp',
|
||||
'FromPort': 8080,
|
||||
'ToPort': 8080,
|
||||
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]
|
||||
}])
|
||||
return sg
|
||||
|
||||
def get_target_group_by_name(name):
|
||||
try:
|
||||
response = elbv2_client.describe_target_groups(Names=[name])
|
||||
return response['TargetGroups'][0] # Jeśli istnieje, zwróci grupę
|
||||
except elbv2_client.exceptions.ClientError:
|
||||
return None # Grupa nie istnieje
|
||||
|
||||
# Tworzenie ALB i grupy docelowej
|
||||
def create_alb_and_target_group(subnet_ids, vpc_id):
|
||||
# Dodanie unikalnego identyfikatora do nazwy grupy docelowej
|
||||
target_group_name = f"{PREFIX}-TG-{os.urandom(4).hex()}" # Dodaje losowy ciąg do nazwy, aby uniknąć duplikacji
|
||||
|
||||
tg = elbv2_client.create_target_group(
|
||||
Name=target_group_name,
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
VpcId=vpc_id,
|
||||
TargetType='instance'
|
||||
)['TargetGroups'][0]
|
||||
|
||||
# Jeśli chcesz przypisać więcej niż jeden subnet, zaktualizuj ten fragment:
|
||||
alb = elbv2_client.create_load_balancer(
|
||||
Name=f"{PREFIX}-ALB",
|
||||
Subnets=[subnet_ids[0], subnet_ids[1]], # Drugi subnet
|
||||
Scheme='internet-facing',
|
||||
Type='application',
|
||||
IpAddressType='ipv4'
|
||||
)['LoadBalancers'][0]
|
||||
|
||||
elbv2_client.create_listener(
|
||||
LoadBalancerArn=alb['LoadBalancerArn'],
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
DefaultActions=[{'Type': 'forward', 'TargetGroupArn': tg['TargetGroupArn']}]
|
||||
)
|
||||
|
||||
return alb['DNSName'], tg['TargetGroupArn']
|
||||
|
||||
|
||||
|
||||
# Tworzenie Launch Template
|
||||
def create_launch_template(sg_id):
|
||||
lt = ec2_client.create_launch_template(
|
||||
LaunchTemplateName=f"{PREFIX}-LT",
|
||||
LaunchTemplateData={
|
||||
'ImageId': AMI_ID,
|
||||
'InstanceType': INSTANCE_TYPE,
|
||||
'SecurityGroupIds': [sg_id],
|
||||
'UserData': base64.b64encode(USER_DATA.encode('utf-8')).decode('utf-8'),
|
||||
}
|
||||
)['LaunchTemplate']
|
||||
return lt['LaunchTemplateId']
|
||||
|
||||
# Tworzenie Auto Scaling Group
|
||||
def create_auto_scaling_group(lt_id, subnet_ids, tg_arn):
|
||||
autoscaling_client.create_auto_scaling_group(
|
||||
AutoScalingGroupName=f"{PREFIX}-ASG",
|
||||
LaunchTemplate={
|
||||
'LaunchTemplateId': lt_id,
|
||||
'Version': '$Latest'
|
||||
},
|
||||
MinSize=2,
|
||||
MaxSize=5,
|
||||
DesiredCapacity=2,
|
||||
VPCZoneIdentifier=','.join(subnet_ids),
|
||||
TargetGroupARNs=[tg_arn],
|
||||
HealthCheckType='ELB',
|
||||
HealthCheckGracePeriod=90,
|
||||
Tags=[{'Key': 'Name', 'Value': f"{PREFIX}-instance", 'PropagateAtLaunch': True}]
|
||||
)
|
||||
|
||||
# Tworzenie Internet Gateway i przypisanie do VPC
|
||||
def create_internet_gateway(vpc_id):
|
||||
igw = ec2_client.create_internet_gateway()['InternetGateway']
|
||||
ec2_client.attach_internet_gateway(InternetGatewayId=igw['InternetGatewayId'], VpcId=vpc_id)
|
||||
|
||||
# Zaktualizowanie tablicy routingu VPC, aby umożliwić ruch do internetu
|
||||
route_table_id = ec2_client.describe_route_tables(Filters=[{'Name': 'vpc-id', 'Values': [vpc_id]}])['RouteTables'][0]['RouteTableId']
|
||||
|
||||
ec2_client.create_route(
|
||||
RouteTableId=route_table_id,
|
||||
DestinationCidrBlock='0.0.0.0/0',
|
||||
GatewayId=igw['InternetGatewayId']
|
||||
)
|
||||
|
||||
print(f"Internet Gateway {igw['InternetGatewayId']} został przypisany do VPC {vpc_id}")
|
||||
return igw['InternetGatewayId']
|
||||
|
||||
|
||||
# Funkcja czyszcząca
|
||||
def cleanup_previous_infrastructure():
|
||||
# Usuwanie Auto Scaling Group
|
||||
try:
|
||||
autoscaling_client.delete_auto_scaling_group(
|
||||
AutoScalingGroupName=f"{PREFIX}-ASG",
|
||||
ForceDelete=True
|
||||
)
|
||||
print("Usunięto Auto Scaling Group.")
|
||||
except Exception as e:
|
||||
print(f"Nie udało się usunąć Auto Scaling Group: {e}")
|
||||
|
||||
# Usuwanie Load Balancer
|
||||
try:
|
||||
lb = elbv2_client.describe_load_balancers(
|
||||
Names=[f"{PREFIX}-ALB"]
|
||||
)['LoadBalancers']
|
||||
for lb_instance in lb:
|
||||
elbv2_client.delete_load_balancer(
|
||||
LoadBalancerArn=lb_instance['LoadBalancerArn']
|
||||
)
|
||||
print("Usunięto Load Balancer.")
|
||||
except Exception as e:
|
||||
print(f"Nie udało się usunąć Load Balancer: {e}")
|
||||
|
||||
# Usuwanie VPC i Subnetu
|
||||
try:
|
||||
vpcs = ec2_client.describe_vpcs(Filters=[{'Name': 'tag:Name', 'Values': [f"{PREFIX}-vpc"]}])['Vpcs']
|
||||
for vpc in vpcs:
|
||||
ec2_client.delete_vpc(VpcId=vpc['VpcId'])
|
||||
print("Usunięto VPC.")
|
||||
except Exception as e:
|
||||
print(f"Nie udało się usunąć VPC: {e}")
|
||||
|
||||
# Główna funkcja
|
||||
if __name__ == "__main__":
|
||||
cleanup_previous_infrastructure()
|
||||
|
||||
vpc_id = create_vpc()
|
||||
create_internet_gateway(vpc_id)
|
||||
subnet_ids = create_subnets(vpc_id) # Tworzymy dwa subnets w różnych AZ
|
||||
sg_id = create_security_group(vpc_id)
|
||||
alb_dns, tg_arn = create_alb_and_target_group(subnet_ids, vpc_id)
|
||||
lt_id = create_launch_template(sg_id)
|
||||
create_auto_scaling_group(lt_id, subnet_ids, tg_arn)
|
||||
|
||||
print(f"Application Load Balancer dostępny pod: {alb_dns}")
|
198
.ipynb_checkpoints/main2-checkpoint.py
Normal file
198
.ipynb_checkpoints/main2-checkpoint.py
Normal file
@ -0,0 +1,198 @@
|
||||
import boto3
|
||||
import base64
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
|
||||
load_dotenv()
|
||||
|
||||
PREFIX = "464979"
|
||||
REGION = "us-east-1"
|
||||
AMI_ID = "ami-0b5eea76982371e91"
|
||||
REPO_URL = "https://git.wmi.amu.edu.pl/s464979/chmury-aws.git"
|
||||
INSTANCE_TYPE = "t2.micro"
|
||||
|
||||
aws_access_key_id = "ASIAUNU5MU2542JCCSKK"
|
||||
aws_secret_access_key = "uzSGWv+bLCFGU7l0RHsVNMGw6GlCWFdSqCHmLyS+"
|
||||
aws_session_token = "IQoJb3JpZ2luX2VjEAAaCXVzLXdlc3QtMiJGMEQCIAjblub+EcrjBbnzOGqXxlv+to92hc35n/wnAQ0cONTSAiAOcwdqv6wu6k9rFj1PUv09Q4XdcdDH/S9gF9DK5LqmqCq2AgjJ//////////8BEAAaDDMwNDE5OTAxODE3MSIMDEvO7EWHcq0rbT+OKooCRGVhD+L5kky7svHxzS5kBbfk8zw6Or0zl+yYSmo3OKS7PLVSK35r+cvn6AGsljGbP1i5klpvQNYHAkCkdJWr+1sFV2P70aU9pgyxGP9bURONuPnLsCZv7F4wpEvBNa865UEsF28HbnL3lIp0h5fMsXqs/Ll7D7Fog6zs2r+QGC42oyLV42NH8vYzHKYmd9QYhxIOtTgdir9/YCCcD5fZN0W1YR6B6zyRL4bTGsSHnzsYiEh6AzWsGD6QaMih0Zf7Lz8uvVY/q3wSBUsUqslanVS2bs+EcGMUBj+NquPhde/zYI2PwJIpB5+8O5sGLZbU8fKXpd7iLcphooF+FAGLqvVNvvVbDH83GiUwqMKiuwY6ngGoVvsHH3yvPl/CAsEkHnYgqZdxpOR0CMZ1VDz5htERwjC045uyTP/8txLItP5B0b9P63S9cgd4vDGb9bjr1KREJl18A5chhicKJK7HMhWl9wopKwOsCAqMZtyB4+OMfTc+hZjAoRibHiUKAmqrvy7lQHTGKW/xLTk+S2orC6devIUHJ38FNxcvggPQ58yksCgy6/K1nvaEigt/Qnso1A=="
|
||||
|
||||
user_data_script = f"""#!/bin/bash
|
||||
sudo yum update -y
|
||||
sudo yum install -y git
|
||||
cd /home/ec2-user
|
||||
git clone {REPO_URL}
|
||||
cd chmury-aws
|
||||
chmod +x webservice
|
||||
./webservice
|
||||
"""
|
||||
|
||||
ec2_client = boto3.client(
|
||||
'ec2',
|
||||
region_name=REGION,
|
||||
aws_access_key_id=aws_access_key_id,
|
||||
aws_secret_access_key=aws_secret_access_key,
|
||||
aws_session_token=aws_session_token,
|
||||
)
|
||||
|
||||
elbv2 = boto3.client(
|
||||
'elbv2',
|
||||
region_name=REGION,
|
||||
aws_access_key_id=aws_access_key_id,
|
||||
aws_secret_access_key=aws_secret_access_key,
|
||||
aws_session_token=aws_session_token,
|
||||
)
|
||||
|
||||
autoscaling = boto3.client(
|
||||
'autoscaling',
|
||||
region_name=REGION,
|
||||
aws_access_key_id=aws_access_key_id,
|
||||
aws_secret_access_key=aws_secret_access_key,
|
||||
aws_session_token=aws_session_token,
|
||||
)
|
||||
|
||||
cloudwatch = boto3.client(
|
||||
'cloudwatch',
|
||||
region_name=REGION,
|
||||
aws_access_key_id=aws_access_key_id,
|
||||
aws_secret_access_key=aws_secret_access_key,
|
||||
aws_session_token=aws_session_token,
|
||||
)
|
||||
|
||||
vpc_cidr = '10.0.0.0/16'
|
||||
vpc_response = ec2_client.create_vpc(CidrBlock=vpc_cidr)
|
||||
vpc_id = vpc_response['Vpc']['VpcId']
|
||||
ec2_client.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={'Value': True})
|
||||
ec2_client.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={'Value': True})
|
||||
ec2_client.create_tags(Resources=[vpc_id], Tags=[{'Key': 'Name', 'Value': PREFIX + '-vpc'}])
|
||||
|
||||
ig_response = ec2_client.create_internet_gateway()
|
||||
ig_id = ig_response['InternetGateway']['InternetGatewayId']
|
||||
ec2_client.attach_internet_gateway(InternetGatewayId=ig_id, VpcId=vpc_id)
|
||||
|
||||
subnet_cidr = '10.0.1.0/24'
|
||||
subnet_response = ec2_client.create_subnet(CidrBlock=subnet_cidr, VpcId=vpc_id)
|
||||
subnet_id = subnet_response['Subnet']['SubnetId']
|
||||
ec2_client.modify_subnet_attribute(SubnetId=subnet_id, MapPublicIpOnLaunch={'Value': True})
|
||||
ec2_client.create_tags(Resources=[subnet_id], Tags=[{'Key': 'Name', 'Value': PREFIX + '-subnet'}])
|
||||
|
||||
rt_response = ec2_client.create_route_table(VpcId=vpc_id)
|
||||
rt_id = rt_response['RouteTable']['RouteTableId']
|
||||
ec2_client.create_route(RouteTableId=rt_id, DestinationCidrBlock='0.0.0.0/0', GatewayId=ig_id)
|
||||
ec2_client.associate_route_table(RouteTableId=rt_id, SubnetId=subnet_id)
|
||||
|
||||
key_pair = ec2_client.create_key_pair(KeyName=PREFIX + '-key', KeyType='ed25519')
|
||||
|
||||
sg_response = ec2_client.create_security_group(
|
||||
Description=PREFIX + '-sg',
|
||||
GroupName=PREFIX + '-sg',
|
||||
VpcId=vpc_id
|
||||
)
|
||||
sg_id = sg_response['GroupId']
|
||||
|
||||
ec2_client.authorize_security_group_ingress(
|
||||
GroupId=sg_id,
|
||||
IpPermissions=[{
|
||||
'IpProtocol': 'tcp',
|
||||
'FromPort': 8080,
|
||||
'ToPort': 8080,
|
||||
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]
|
||||
}]
|
||||
)
|
||||
|
||||
tg_response = elbv2.create_target_group(
|
||||
Name=PREFIX + '-TargetGroup',
|
||||
Protocol='TCP',
|
||||
Port=8080,
|
||||
VpcId=vpc_id,
|
||||
TargetType='instance',
|
||||
IpAddressType='ipv4',
|
||||
)
|
||||
tg_arn = tg_response['TargetGroups'][0]['TargetGroupArn']
|
||||
|
||||
alloc_response = ec2_client.allocate_address(Domain='vpc')
|
||||
allocation_id = alloc_response['AllocationId']
|
||||
|
||||
nlb_response = elbv2.create_load_balancer(
|
||||
Name=PREFIX + '-LoadBalancer',
|
||||
SubnetMappings=[{'SubnetId': subnet_id, 'AllocationId': allocation_id}],
|
||||
Scheme='internet-facing',
|
||||
Type='network',
|
||||
IpAddressType='ipv4',
|
||||
)
|
||||
lb_arn = nlb_response['LoadBalancers'][0]['LoadBalancerArn']
|
||||
lb_dns = nlb_response['LoadBalancers'][0]['DNSName']
|
||||
|
||||
elbv2.create_listener(
|
||||
LoadBalancerArn=lb_arn,
|
||||
Protocol='TCP',
|
||||
Port=8080,
|
||||
DefaultActions=[{
|
||||
'Type': 'forward',
|
||||
'TargetGroupArn': tg_arn,
|
||||
}],
|
||||
)
|
||||
|
||||
lt_response = ec2_client.create_launch_template(
|
||||
LaunchTemplateName=PREFIX + '-LT',
|
||||
LaunchTemplateData={
|
||||
'ImageId': AMI_ID,
|
||||
'InstanceType': INSTANCE_TYPE,
|
||||
'KeyName': PREFIX + '-key',
|
||||
'SecurityGroupIds': [sg_id],
|
||||
'UserData': base64.b64encode(user_data_script.encode('utf-8')).decode('utf-8'),
|
||||
}
|
||||
)
|
||||
|
||||
asg_name = PREFIX + '-ASG'
|
||||
autoscaling.create_auto_scaling_group(
|
||||
AutoScalingGroupName=asg_name,
|
||||
LaunchTemplate={
|
||||
'LaunchTemplateId': lt_response['LaunchTemplate']['LaunchTemplateId'],
|
||||
'Version': '$Latest'
|
||||
},
|
||||
MinSize=2,
|
||||
MaxSize=5,
|
||||
DesiredCapacity=2,
|
||||
VPCZoneIdentifier=subnet_id,
|
||||
TargetGroupARNs=[tg_arn],
|
||||
HealthCheckType='EC2',
|
||||
HealthCheckGracePeriod=90,
|
||||
Tags=[
|
||||
{
|
||||
'Key': 'Name',
|
||||
'Value': PREFIX + '-instance',
|
||||
'PropagateAtLaunch': True
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
scale_out_response = autoscaling.put_scaling_policy(
|
||||
AutoScalingGroupName=asg_name,
|
||||
PolicyName= PREFIX + '-ScaleOutPolicy',
|
||||
PolicyType='SimpleScaling',
|
||||
AdjustmentType='ChangeInCapacity',
|
||||
ScalingAdjustment=1,
|
||||
Cooldown=180
|
||||
)
|
||||
scale_out_policy_arn = scale_out_response['PolicyARN']
|
||||
|
||||
cloudwatch.put_metric_alarm(
|
||||
AlarmName= PREFIX + '-HighCPU-Alarm',
|
||||
ComparisonOperator='GreaterThanThreshold',
|
||||
EvaluationPeriods=2,
|
||||
MetricName='CPUUtilization',
|
||||
Namespace='AWS/EC2',
|
||||
Period=60,
|
||||
Statistic='Average',
|
||||
Threshold=30.0, # Zmienić jeśli potrzeba późniejszego skalowania
|
||||
ActionsEnabled=True,
|
||||
AlarmActions=[scale_out_policy_arn],
|
||||
Dimensions=[
|
||||
{
|
||||
'Name': 'AutoScalingGroupName',
|
||||
'Value': asg_name
|
||||
},
|
||||
],
|
||||
Unit='Percent'
|
||||
)
|
||||
|
||||
print(f"Load Balancer DNS: {lb_dns}")
|
541
.ipynb_checkpoints/sprawdzarka-checkpoint.ipynb
Normal file
541
.ipynb_checkpoints/sprawdzarka-checkpoint.ipynb
Normal file
@ -0,0 +1,541 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "c67c0078-3051-4383-be30-30d930a48bf5",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Exception in thread Thread-5:\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 174, in _new_conn\n",
|
||||
" conn = connection.create_connection(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 95, in create_connection\n",
|
||||
" raise err\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 85, in create_connection\n",
|
||||
" sock.connect(sa)\n",
|
||||
"TimeoutError: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 703, in urlopen\n",
|
||||
" httplib_response = self._make_request(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 398, in _make_request\n",
|
||||
" conn.request(method, url, **httplib_request_kw)\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 239, in request\n",
|
||||
" super(HTTPConnection, self).request(method, url, body=body, headers=headers)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1259, in request\n",
|
||||
" self._send_request(method, url, body, headers, encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1305, in _send_request\n",
|
||||
" self.endheaders(body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1254, in endheaders\n",
|
||||
" self._send_output(message_body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1014, in _send_output\n",
|
||||
" self.send(msg)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 954, in send\n",
|
||||
" self.connect()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 205, in connect\n",
|
||||
" conn = self._new_conn()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 186, in _new_conn\n",
|
||||
" raise NewConnectionError(\n",
|
||||
"urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fdbeaf438b0>: Failed to establish a new connection: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 667, in send\n",
|
||||
" resp = conn.urlopen(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 787, in urlopen\n",
|
||||
" retries = retries.increment(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/retry.py\", line 592, in increment\n",
|
||||
" raise MaxRetryError(_pool, url, error or ResponseError(cause))\n",
|
||||
"urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/12578151695852263809562421383 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf438b0>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 954, in _bootstrap_inner\n",
|
||||
" self.run()\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 892, in run\n",
|
||||
" self._target(*self._args, **self._kwargs)\n",
|
||||
" File \"/tmp/ipykernel_34689/934420013.py\", line 103, in thread_function\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 73, in get\n",
|
||||
" return request(\"get\", url, params=params, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 59, in request\n",
|
||||
" return session.request(method=method, url=url, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 589, in request\n",
|
||||
" resp = self.send(prep, **send_kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 703, in send\n",
|
||||
" r = adapter.send(request, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 700, in send\n",
|
||||
" raise ConnectionError(e, request=request)\n",
|
||||
"requests.exceptions.ConnectionError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/12578151695852263809562421383 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf438b0>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"Exception in thread Thread-6:\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 174, in _new_conn\n",
|
||||
" conn = connection.create_connection(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 95, in create_connection\n",
|
||||
" raise err\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 85, in create_connection\n",
|
||||
" sock.connect(sa)\n",
|
||||
"TimeoutError: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 703, in urlopen\n",
|
||||
" httplib_response = self._make_request(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 398, in _make_request\n",
|
||||
" conn.request(method, url, **httplib_request_kw)\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 239, in request\n",
|
||||
" super(HTTPConnection, self).request(method, url, body=body, headers=headers)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1259, in request\n",
|
||||
" self._send_request(method, url, body, headers, encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1305, in _send_request\n",
|
||||
" self.endheaders(body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1254, in endheaders\n",
|
||||
" self._send_output(message_body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1014, in _send_output\n",
|
||||
" self.send(msg)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 954, in send\n",
|
||||
" self.connect()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 205, in connect\n",
|
||||
" conn = self._new_conn()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 186, in _new_conn\n",
|
||||
" raise NewConnectionError(\n",
|
||||
"urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fdbeaf5d550>: Failed to establish a new connection: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 667, in send\n",
|
||||
" resp = conn.urlopen(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 787, in urlopen\n",
|
||||
" retries = retries.increment(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/retry.py\", line 592, in increment\n",
|
||||
" raise MaxRetryError(_pool, url, error or ResponseError(cause))\n",
|
||||
"urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/10755062748042505837733273510040277 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf5d550>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 954, in _bootstrap_inner\n",
|
||||
" self.run()\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 892, in run\n",
|
||||
" self._target(*self._args, **self._kwargs)\n",
|
||||
" File \"/tmp/ipykernel_34689/934420013.py\", line 103, in thread_function\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 73, in get\n",
|
||||
" return request(\"get\", url, params=params, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 59, in request\n",
|
||||
" return session.request(method=method, url=url, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 589, in request\n",
|
||||
" resp = self.send(prep, **send_kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 703, in send\n",
|
||||
" r = adapter.send(request, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 700, in send\n",
|
||||
" raise ConnectionError(e, request=request)\n",
|
||||
"requests.exceptions.ConnectionError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/10755062748042505837733273510040277 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf5d550>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"Exception in thread Thread-7:\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 174, in _new_conn\n",
|
||||
" conn = connection.create_connection(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 95, in create_connection\n",
|
||||
" raise err\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 85, in create_connection\n",
|
||||
" sock.connect(sa)\n",
|
||||
"TimeoutError: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 703, in urlopen\n",
|
||||
" httplib_response = self._make_request(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 398, in _make_request\n",
|
||||
" conn.request(method, url, **httplib_request_kw)\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 239, in request\n",
|
||||
" super(HTTPConnection, self).request(method, url, body=body, headers=headers)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1259, in request\n",
|
||||
" self._send_request(method, url, body, headers, encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1305, in _send_request\n",
|
||||
" self.endheaders(body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1254, in endheaders\n",
|
||||
" self._send_output(message_body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1014, in _send_output\n",
|
||||
" self.send(msg)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 954, in send\n",
|
||||
" self.connect()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 205, in connect\n",
|
||||
" conn = self._new_conn()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 186, in _new_conn\n",
|
||||
" raise NewConnectionError(\n",
|
||||
"urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fdbeaf6b190>: Failed to establish a new connection: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 667, in send\n",
|
||||
" resp = conn.urlopen(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 787, in urlopen\n",
|
||||
" retries = retries.increment(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/retry.py\", line 592, in increment\n",
|
||||
" raise MaxRetryError(_pool, url, error or ResponseError(cause))\n",
|
||||
"urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/21712524942360319596925132967051749 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf6b190>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 954, in _bootstrap_inner\n",
|
||||
" self.run()\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 892, in run\n",
|
||||
" self._target(*self._args, **self._kwargs)\n",
|
||||
" File \"/tmp/ipykernel_34689/934420013.py\", line 103, in thread_function\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 73, in get\n",
|
||||
" return request(\"get\", url, params=params, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 59, in request\n",
|
||||
" return session.request(method=method, url=url, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 589, in request\n",
|
||||
" resp = self.send(prep, **send_kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 703, in send\n",
|
||||
" r = adapter.send(request, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 700, in send\n",
|
||||
" raise ConnectionError(e, request=request)\n",
|
||||
"requests.exceptions.ConnectionError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/21712524942360319596925132967051749 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf6b190>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"Exception in thread Thread-8:\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 174, in _new_conn\n",
|
||||
" conn = connection.create_connection(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 95, in create_connection\n",
|
||||
" raise err\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 85, in create_connection\n",
|
||||
" sock.connect(sa)\n",
|
||||
"TimeoutError: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 703, in urlopen\n",
|
||||
" httplib_response = self._make_request(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 398, in _make_request\n",
|
||||
" conn.request(method, url, **httplib_request_kw)\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 239, in request\n",
|
||||
" super(HTTPConnection, self).request(method, url, body=body, headers=headers)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1259, in request\n",
|
||||
" self._send_request(method, url, body, headers, encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1305, in _send_request\n",
|
||||
" self.endheaders(body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1254, in endheaders\n",
|
||||
" self._send_output(message_body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1014, in _send_output\n",
|
||||
" self.send(msg)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 954, in send\n",
|
||||
" self.connect()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 205, in connect\n",
|
||||
" conn = self._new_conn()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 186, in _new_conn\n",
|
||||
" raise NewConnectionError(\n",
|
||||
"urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fdbeaf6bc40>: Failed to establish a new connection: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 667, in send\n",
|
||||
" resp = conn.urlopen(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 787, in urlopen\n",
|
||||
" retries = retries.increment(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/retry.py\", line 592, in increment\n",
|
||||
" raise MaxRetryError(_pool, url, error or ResponseError(cause))\n",
|
||||
"urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/4987140891830491993798117809920291 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf6bc40>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 954, in _bootstrap_inner\n",
|
||||
" self.run()\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 892, in run\n",
|
||||
" self._target(*self._args, **self._kwargs)\n",
|
||||
" File \"/tmp/ipykernel_34689/934420013.py\", line 103, in thread_function\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 73, in get\n",
|
||||
" return request(\"get\", url, params=params, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 59, in request\n",
|
||||
" return session.request(method=method, url=url, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 589, in request\n",
|
||||
" resp = self.send(prep, **send_kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 703, in send\n",
|
||||
" r = adapter.send(request, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 700, in send\n",
|
||||
" raise ConnectionError(e, request=request)\n",
|
||||
"requests.exceptions.ConnectionError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/4987140891830491993798117809920291 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf6bc40>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"Exception in thread Thread-9:\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 174, in _new_conn\n",
|
||||
" conn = connection.create_connection(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 95, in create_connection\n",
|
||||
" raise err\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/connection.py\", line 85, in create_connection\n",
|
||||
" sock.connect(sa)\n",
|
||||
"TimeoutError: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 703, in urlopen\n",
|
||||
" httplib_response = self._make_request(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 398, in _make_request\n",
|
||||
" conn.request(method, url, **httplib_request_kw)\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 239, in request\n",
|
||||
" super(HTTPConnection, self).request(method, url, body=body, headers=headers)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1259, in request\n",
|
||||
" self._send_request(method, url, body, headers, encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1305, in _send_request\n",
|
||||
" self.endheaders(body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1254, in endheaders\n",
|
||||
" self._send_output(message_body, encode_chunked=encode_chunked)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 1014, in _send_output\n",
|
||||
" self.send(msg)\n",
|
||||
" File \"/usr/lib/python3.9/http/client.py\", line 954, in send\n",
|
||||
" self.connect()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 205, in connect\n",
|
||||
" conn = self._new_conn()\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connection.py\", line 186, in _new_conn\n",
|
||||
" raise NewConnectionError(\n",
|
||||
"urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fdbeaf7c700>: Failed to establish a new connection: [Errno 110] Connection timed out\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 667, in send\n",
|
||||
" resp = conn.urlopen(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py\", line 787, in urlopen\n",
|
||||
" retries = retries.increment(\n",
|
||||
" File \"/usr/local/lib/python3.9/dist-packages/urllib3/util/retry.py\", line 592, in increment\n",
|
||||
" raise MaxRetryError(_pool, url, error or ResponseError(cause))\n",
|
||||
"urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/5164540761011900013294631892241683 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf7c700>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n",
|
||||
"\n",
|
||||
"During handling of the above exception, another exception occurred:\n",
|
||||
"\n",
|
||||
"Traceback (most recent call last):\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 954, in _bootstrap_inner\n",
|
||||
" self.run()\n",
|
||||
" File \"/usr/lib/python3.9/threading.py\", line 892, in run\n",
|
||||
" self._target(*self._args, **self._kwargs)\n",
|
||||
" File \"/tmp/ipykernel_34689/934420013.py\", line 103, in thread_function\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 73, in get\n",
|
||||
" return request(\"get\", url, params=params, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/api.py\", line 59, in request\n",
|
||||
" return session.request(method=method, url=url, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 589, in request\n",
|
||||
" resp = self.send(prep, **send_kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/sessions.py\", line 703, in send\n",
|
||||
" r = adapter.send(request, **kwargs)\n",
|
||||
" File \"/home/students/s464953/.local/lib/python3.9/site-packages/requests/adapters.py\", line 700, in send\n",
|
||||
" raise ConnectionError(e, request=request)\n",
|
||||
"requests.exceptions.ConnectionError: HTTPConnectionPool(host='s464953-loadbalancer-905735492.us-east-1.elb.amazonaws.com', port=8080): Max retries exceeded with url: /factors/5164540761011900013294631892241683 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fdbeaf7c700>: Failed to establish a new connection: [Errno 110] Connection timed out'))\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"import random\n",
|
||||
"import math\n",
|
||||
"import time\n",
|
||||
"import threading\n",
|
||||
"import logging\n",
|
||||
"logging.getLogger().setLevel(logging.INFO)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"API_URL=\"http://464953-alb-399012912.us-east-1.elb.amazonaws.com:8080/\"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"UNIT = 30.0 # secs\n",
|
||||
"\n",
|
||||
"# Pre generated primes\n",
|
||||
"first_primes_list = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29,\n",
|
||||
" 31, 37, 41, 43, 47, 53, 59, 61, 67,\n",
|
||||
" 71, 73, 79, 83, 89, 97, 101, 103,\n",
|
||||
" 107, 109, 113, 127, 131, 137, 139,\n",
|
||||
" 149, 151, 157, 163, 167, 173, 179,\n",
|
||||
" 181, 191, 193, 197, 199, 211, 223,\n",
|
||||
" 227, 229, 233, 239, 241, 251, 257,\n",
|
||||
" 263, 269, 271, 277, 281, 283, 293,\n",
|
||||
" 307, 311, 313, 317, 331, 337, 347, 349]\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def nBitRandom(n):\n",
|
||||
" return random.randrange(2**(n-1)+1, 2**n - 1)\n",
|
||||
" \n",
|
||||
"def getLowLevelPrime(n):\n",
|
||||
" '''Generate a prime candidate divisible\n",
|
||||
" by first primes'''\n",
|
||||
" while True:\n",
|
||||
" # Obtain a random number\n",
|
||||
" pc = nBitRandom(n)\n",
|
||||
" \n",
|
||||
" # Test divisibility by pre-generated\n",
|
||||
" # primes\n",
|
||||
" for divisor in first_primes_list:\n",
|
||||
" if pc % divisor == 0 and divisor**2 <= pc:\n",
|
||||
" break\n",
|
||||
" else: return pc\n",
|
||||
"\n",
|
||||
"def isMillerRabinPassed(mrc):\n",
|
||||
" '''Run 20 iterations of Rabin Miller Primality test'''\n",
|
||||
" maxDivisionsByTwo = 0\n",
|
||||
" ec = mrc-1\n",
|
||||
" while ec % 2 == 0:\n",
|
||||
" ec >>= 1\n",
|
||||
" maxDivisionsByTwo += 1\n",
|
||||
" assert(2**maxDivisionsByTwo * ec == mrc-1)\n",
|
||||
" \n",
|
||||
" def trialComposite(round_tester):\n",
|
||||
" if pow(round_tester, ec, mrc) == 1:\n",
|
||||
" return False\n",
|
||||
" for i in range(maxDivisionsByTwo):\n",
|
||||
" if pow(round_tester, 2**i * ec, mrc) == mrc-1:\n",
|
||||
" return False\n",
|
||||
" return True\n",
|
||||
" \n",
|
||||
" # Set number of trials here\n",
|
||||
" numberOfRabinTrials = 20\n",
|
||||
" for i in range(numberOfRabinTrials):\n",
|
||||
" round_tester = random.randrange(2, mrc)\n",
|
||||
" if trialComposite(round_tester):\n",
|
||||
" return False\n",
|
||||
" return True\n",
|
||||
" \n",
|
||||
"def random_large_prime(bits):\n",
|
||||
" while True:\n",
|
||||
" prime_candidate = getLowLevelPrime(bits)\n",
|
||||
" if not isMillerRabinPassed(prime_candidate):\n",
|
||||
" continue\n",
|
||||
" else:\n",
|
||||
" return prime_candidate\n",
|
||||
"\n",
|
||||
"def thread_function(i, fast, timeout):\n",
|
||||
" start = time.time()\n",
|
||||
"\n",
|
||||
" c = 5 # bits: 20: 200ms; 21: 350ms; 22: 700ms 23: 1.5s; 25: 6s; 26: 10s; 27: 24s\n",
|
||||
" bits = 19 if fast else 23\n",
|
||||
" last_report = time.time()\n",
|
||||
" processing_time = 0.0\n",
|
||||
" reqs = 0\n",
|
||||
" while True:\n",
|
||||
" iter_start = time.time()\n",
|
||||
" if iter_start - start > timeout:\n",
|
||||
" logging.info(\"Thread: %d\\treqs: %d\\tmean time: %.3fs\\t%s\"%(i, reqs, processing_time/reqs if reqs>0 else 0.0, \"fast\\t\" if fast else \"\"))\n",
|
||||
" results[i][iter_start] = processing_time/reqs if reqs>0 else 0.0\n",
|
||||
" return\n",
|
||||
" if iter_start - last_report > UNIT/2:\n",
|
||||
" if len(results[i])%2 == 0:\n",
|
||||
" logging.info(\"Thread: %d\\treqs: %d\\tmean time: %.3fs\\t%s\"%(i, reqs, processing_time/reqs if reqs>0 else 0.0, \"fast\\t\" if fast else \"\"))\n",
|
||||
" results[i][iter_start] = processing_time/reqs if reqs>0 else 0.0\n",
|
||||
" processing_time = 0.0\n",
|
||||
" reqs = 0\n",
|
||||
" last_report=iter_start\n",
|
||||
"\n",
|
||||
" factors = [random_large_prime(bits) for i in range(c)]\n",
|
||||
" factors.sort()\n",
|
||||
" n=math.prod(factors)\n",
|
||||
"\n",
|
||||
" r = requests.get(API_URL+'/factors/%d'%(n))\n",
|
||||
" if r.status_code != 200:\n",
|
||||
" logging.error(\"wrong status code from webservice\")\n",
|
||||
" else:\n",
|
||||
" result = r.json()\n",
|
||||
" if result != factors:\n",
|
||||
" logging.error(\"Wrong factors\")\n",
|
||||
"\n",
|
||||
" processing_time+=time.time() - iter_start\n",
|
||||
" reqs+=1\n",
|
||||
" time.sleep(0.5)\n",
|
||||
"\n",
|
||||
"START = time.time()\n",
|
||||
"slow_threads = 4\n",
|
||||
"\n",
|
||||
"results = [ {} for i in range(slow_threads+1)]\n",
|
||||
"\n",
|
||||
"t0 = threading.Thread(target=thread_function, args=(0, True, (5 + slow_threads*3) * UNIT))\n",
|
||||
"t0.start()\n",
|
||||
"time.sleep(2 * UNIT)\n",
|
||||
"for i in range(slow_threads):\n",
|
||||
" t = threading.Thread(target=thread_function, args=(i+1, False, (slow_threads-i) * 3 * UNIT))\n",
|
||||
" t.start()\n",
|
||||
" time.sleep(2 * UNIT)\n",
|
||||
"\n",
|
||||
"t0.join()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "3cd8887b-9fa2-44db-9d05-26b23b9e2609",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import scipy.stats as stats\n",
|
||||
"mu = 0\n",
|
||||
"std = 1\n",
|
||||
"for i, result in enumerate(results):\n",
|
||||
" x = [(x - START)/UNIT for x in result.keys()]\n",
|
||||
" y = result.values()\n",
|
||||
" plt.plot(x, y, label=\"t%d\"%(i,))\n",
|
||||
"\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "619bfa73-05e1-4a10-9853-1e132a0377bf",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Defaulting to user installation because normal site-packages is not writeable\n",
|
||||
"Collecting python-dotenv\n",
|
||||
" Downloading python_dotenv-1.0.1-py3-none-any.whl.metadata (23 kB)\n",
|
||||
"Downloading python_dotenv-1.0.1-py3-none-any.whl (19 kB)\n",
|
||||
"Installing collected packages: python-dotenv\n",
|
||||
"\u001b[33m WARNING: The script dotenv is installed in '/home/students/s464953/.local/bin' which is not on PATH.\n",
|
||||
" Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n",
|
||||
"\u001b[0mSuccessfully installed python-dotenv-1.0.1\n",
|
||||
"\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
1171
.ipynb_checkpoints/tester-checkpoint.ipynb
Normal file
1171
.ipynb_checkpoints/tester-checkpoint.ipynb
Normal file
File diff suppressed because one or more lines are too long
@ -1,5 +0,0 @@
|
||||
FROM ubuntu
|
||||
COPY ./webservice /
|
||||
RUN chmod +x ./webservice
|
||||
EXPOSE 80:8080/tcp
|
||||
CMD ./webservice
|
Binary file not shown.
230
autoscaling3.py
Normal file
230
autoscaling3.py
Normal file
@ -0,0 +1,230 @@
|
||||
import boto3
|
||||
import base64
|
||||
from USER_DATA import user_data
|
||||
import json
|
||||
import time
|
||||
import random
|
||||
import string
|
||||
|
||||
PREFIX = "s464953"
|
||||
AMI_ID = "ami-0b5eea76982371e91"
|
||||
INSTANCE_TYPE = "t2.micro"
|
||||
SECURITY_GROUP_NAME = f"{PREFIX}-sg"
|
||||
REGION = "us-east-1"
|
||||
|
||||
with open("aws_credentials.json", 'r') as file:
|
||||
creds = json.load(file)
|
||||
|
||||
client_ec2 = boto3.client('ec2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
client_elb = boto3.client('elbv2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
autoscaling_client = boto3.client('autoscaling', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
cloudwatch_client = boto3.client('cloudwatch', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
def create_vpc():
|
||||
vpc_id = client_ec2.create_vpc(CidrBlock='10.0.0.0/16')['Vpc']['VpcId']
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={'Value': True})
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={'Value': True})
|
||||
return vpc_id
|
||||
|
||||
def create_subnet(vpc_id, cidr, az):
|
||||
subnet_id = client_ec2.create_subnet(VpcId=vpc_id, CidrBlock=cidr, AvailabilityZone=az)['Subnet']['SubnetId']
|
||||
client_ec2.modify_subnet_attribute(SubnetId=subnet_id, MapPublicIpOnLaunch={'Value': True})
|
||||
return subnet_id
|
||||
|
||||
def create_igw(vpc_id):
|
||||
igw_id = client_ec2.create_internet_gateway()['InternetGateway']['InternetGatewayId']
|
||||
client_ec2.attach_internet_gateway(InternetGatewayId=igw_id, VpcId=vpc_id)
|
||||
return igw_id
|
||||
|
||||
def create_route_table(vpc_id, subnet_id, igw_id):
|
||||
rt_id = client_ec2.create_route_table(VpcId=vpc_id)['RouteTable']['RouteTableId']
|
||||
client_ec2.create_route(
|
||||
RouteTableId=rt_id,
|
||||
DestinationCidrBlock='0.0.0.0/0',
|
||||
GatewayId=igw_id
|
||||
)
|
||||
client_ec2.associate_route_table(RouteTableId=rt_id, SubnetId=subnet_id)
|
||||
return rt_id
|
||||
|
||||
def create_key_pair(name):
|
||||
random_suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
|
||||
unique_name = f"{name}-{random_suffix}"
|
||||
key_material = client_ec2.create_key_pair(KeyName=unique_name)['KeyMaterial']
|
||||
|
||||
with open(f"{unique_name}.pem", 'w') as file:
|
||||
file.write(key_material)
|
||||
return unique_name
|
||||
|
||||
|
||||
def create_sg(vpc_id):
|
||||
sg_id = client_ec2.create_security_group(GroupName=SECURITY_GROUP_NAME, Description="Security group", VpcId=vpc_id)['GroupId']
|
||||
client_ec2.authorize_security_group_ingress(
|
||||
GroupId=sg_id,
|
||||
IpPermissions=[
|
||||
{
|
||||
'IpProtocol': 'tcp',
|
||||
'FromPort': 8080,
|
||||
'ToPort': 8080,
|
||||
'IpRanges': [
|
||||
{
|
||||
'CidrIp': '0.0.0.0/0'
|
||||
}
|
||||
]
|
||||
}
|
||||
])
|
||||
return sg_id
|
||||
|
||||
def create_launch_template(key_name, sg_id):
|
||||
lt_id = client_ec2.create_launch_template(
|
||||
LaunchTemplateName=f"{PREFIX}-lt",
|
||||
LaunchTemplateData=
|
||||
{
|
||||
'ImageId': AMI_ID,
|
||||
'InstanceType': INSTANCE_TYPE,
|
||||
'SecurityGroupIds': [sg_id],
|
||||
'KeyName': key_name,
|
||||
'UserData': base64.b64encode(user_data.encode('utf-8')).decode('utf-8')
|
||||
}
|
||||
)['LaunchTemplate']['LaunchTemplateId']
|
||||
return lt_id
|
||||
|
||||
def create_target_group(vpc_id):
|
||||
tg_arn = client_elb.create_target_group(
|
||||
Name=f"{PREFIX}-tg",
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
VpcId=vpc_id,
|
||||
TargetType='instance',
|
||||
IpAddressType='ipv4',
|
||||
HealthCheckProtocol='HTTP',
|
||||
HealthCheckPort='8080',
|
||||
HealthCheckPath='/factors/6',
|
||||
HealthCheckIntervalSeconds=30,
|
||||
HealthCheckTimeoutSeconds=5,
|
||||
HealthyThresholdCount=3,
|
||||
UnhealthyThresholdCount=3
|
||||
)['TargetGroups'][0]['TargetGroupArn']
|
||||
return tg_arn
|
||||
|
||||
def create_lb(subnets, sg_id):
|
||||
lb_arn = client_elb.create_load_balancer(
|
||||
Name=f"{PREFIX}-lb",
|
||||
Subnets=subnets,
|
||||
SecurityGroups=[sg_id],
|
||||
Scheme='internet-facing',
|
||||
Type='application',
|
||||
IpAddressType='ipv4'
|
||||
)['LoadBalancers'][0]['LoadBalancerArn']
|
||||
return lb_arn
|
||||
|
||||
def create_listener(lb_arn, tg_arn):
|
||||
listener_arn = client_elb.create_listener(
|
||||
LoadBalancerArn=lb_arn,
|
||||
Protocol='HTTP',
|
||||
Port=8080,
|
||||
DefaultActions=[
|
||||
{
|
||||
'Type': 'forward',
|
||||
'TargetGroupArn': tg_arn
|
||||
}
|
||||
]
|
||||
)['Listeners'][0]['ListenerArn']
|
||||
return listener_arn
|
||||
|
||||
def create_auto_scaling_group(launch_template_id, target_group_arn, subnet_id_1, subnet_id_2):
|
||||
autoscaling_client.create_auto_scaling_group(
|
||||
AutoScalingGroupName=f"{PREFIX}-asg",
|
||||
LaunchTemplate={
|
||||
'LaunchTemplateId': launch_template_id,
|
||||
'Version': '$Latest'
|
||||
},
|
||||
MinSize=2,
|
||||
MaxSize=5,
|
||||
DesiredCapacity=2,
|
||||
TargetGroupARNs=[target_group_arn],
|
||||
AvailabilityZones=[f"{REGION}a", f"{REGION}b"],
|
||||
HealthCheckType='EC2',
|
||||
HealthCheckGracePeriod=90,
|
||||
VPCZoneIdentifier=f"{subnet_id_1},{subnet_id_2}",
|
||||
Tags=[
|
||||
{
|
||||
'Key': 'Name',
|
||||
'Value': f"{PREFIX}-asg",
|
||||
'PropagateAtLaunch': True
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
describe_response = autoscaling_client.describe_auto_scaling_groups(
|
||||
AutoScalingGroupNames=[f"{PREFIX}-asg"]
|
||||
)
|
||||
|
||||
asg_arn = describe_response['AutoScalingGroups'][0]['AutoScalingGroupARN']
|
||||
return asg_arn
|
||||
|
||||
def put_scaling_policy():
|
||||
policy = autoscaling_client.put_scaling_policy(
|
||||
AutoScalingGroupName=f"{PREFIX}-asg",
|
||||
PolicyName=f"{PREFIX}-scale-policy-cpu",
|
||||
PolicyType='SimpleScaling',
|
||||
AdjustmentType='ChangeInCapacity',
|
||||
ScalingAdjustment=1,
|
||||
Cooldown=180
|
||||
)
|
||||
return policy['PolicyARN']
|
||||
|
||||
def create_cloudwatch_alarm(sp_arn):
|
||||
cloudwatch_client.put_metric_alarm(
|
||||
AlarmName=f"{PREFIX}-cpu-utilization-alarm",
|
||||
ComparisonOperator='GreaterThanOrEqualToThreshold',
|
||||
EvaluationPeriods=1,
|
||||
MetricName='CPUUtilization',
|
||||
Namespace='AWS/EC2',
|
||||
Period=60,
|
||||
Statistic='Average',
|
||||
Threshold=30.0,
|
||||
ActionsEnabled=True,
|
||||
AlarmActions=[sp_arn],
|
||||
AlarmDescription='Alarm to scale out/in based on CPU utilization',
|
||||
Dimensions=[{
|
||||
'Name': 'AutoScalingGroupName',
|
||||
'Value': f"{PREFIX}-asg"
|
||||
}]
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
vpc = create_vpc()
|
||||
subnet = create_subnet(vpc, '10.0.1.0/24', f"{REGION}a")
|
||||
subnet2 = create_subnet(vpc, '10.0.2.0/24', f"{REGION}b")
|
||||
igw = create_igw(vpc)
|
||||
create_route_table(vpc, subnet, igw)
|
||||
key = create_key_pair(f"{PREFIX}-key")
|
||||
sg = create_sg(vpc)
|
||||
lt = create_launch_template(key, sg)
|
||||
tg = create_target_group(vpc)
|
||||
lb = create_lb([subnet, subnet2], sg)
|
||||
listener = create_listener(lb, tg)
|
||||
asg_arn = create_auto_scaling_group(lt, tg, subnet, subnet2)
|
||||
sp = put_scaling_policy()
|
||||
create_cloudwatch_alarm(sp)
|
||||
dns = client_elb.describe_load_balancers(LoadBalancerArns=[lb])['LoadBalancers'][0]['DNSName']
|
||||
print(dns)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
72
autoscaling_runner.ipynb
Normal file
72
autoscaling_runner.ipynb
Normal file
@ -0,0 +1,72 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "dfd09c32-c2f2-431d-9bef-25616b4195e3",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Defaulting to user installation because normal site-packages is not writeable\n",
|
||||
"Requirement already satisfied: boto3 in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: python-dotenv in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (1.0.1)\n",
|
||||
"Requirement already satisfied: paramiko in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (3.5.0)\n",
|
||||
"Requirement already satisfied: requests in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 4)) (2.32.3)\n",
|
||||
"Requirement already satisfied: botocore<1.36.0,>=1.35.81 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.0.1)\n",
|
||||
"Requirement already satisfied: s3transfer<0.11.0,>=0.10.0 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (0.10.4)\n",
|
||||
"Requirement already satisfied: bcrypt>=3.2 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (4.2.1)\n",
|
||||
"Requirement already satisfied: cryptography>=3.3 in /usr/local/lib/python3.9/dist-packages (from paramiko->-r requirements.txt (line 3)) (38.0.1)\n",
|
||||
"Requirement already satisfied: pynacl>=1.5 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (1.5.0)\n",
|
||||
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2.1.1)\n",
|
||||
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (3.4)\n",
|
||||
"Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (1.26.12)\n",
|
||||
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2022.9.14)\n",
|
||||
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/dist-packages (from botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (2.8.2)\n",
|
||||
"Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (1.15.1)\n",
|
||||
"Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (2.21)\n",
|
||||
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (1.16.0)\n",
|
||||
"\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n",
|
||||
"Auto Scaling Group created with ARN: arn:aws:autoscaling:us-east-1:304199018171:autoScalingGroup:91d82aae-1256-44d9-ac62-f9db2492c65f:autoScalingGroupName/s464953-asg\n",
|
||||
"CPU Utilization alarm created\n",
|
||||
"s464953-lb-500026741.us-east-1.elb.amazonaws.com\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#!/bin/bash\n",
|
||||
"chmod +x autoscaling3.py\n",
|
||||
"pip3 install -r requirements.txt\n",
|
||||
"python3 autoscaling3.py\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "b0e3f3c0-47c6-4676-9ada-72520abc8481",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Bash",
|
||||
"language": "bash",
|
||||
"name": "bash"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "shell",
|
||||
"file_extension": ".sh",
|
||||
"mimetype": "text/x-sh",
|
||||
"name": "bash"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
5
aws_credentials.json
Normal file
5
aws_credentials.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"aws_access_key_id": "ASIAUNU5MU253EUJQDYW",
|
||||
"aws_secret_access_key": "yOppJ2iHk4GHYB8KJrcwjiTlxjP61ztIgh4hOJC3",
|
||||
"aws_session_token": "IQoJb3JpZ2luX2VjEPT//////////wEaCXVzLXdlc3QtMiJHMEUCIQCneq0XwMGXcL+NCQ3KRoe+iV9B5O1/M2VtJhHnVqofRwIgQg4K4ZJYjyw2aMhardcyNGDtmLiJhO6G+POVcuNDBPwqtgII3f//////////ARAAGgwzMDQxOTkwMTgxNzEiDGoylj97jXim8+ZvZSqKAiEwC2U67MbOdAVYSgPmqJXlSk2JeHAhFXmTatMVWEaqxX8iNFH//hQEwueEc8IFkYv71IBygPZPtpG8zN4RPR8xfKwUuqf51wQr0lQ0ii1K2V/7E9+lhGhe0NVhnRtRQMZd2e0I8g575g+SSko0fYPr39PcMA8V+q2pJPwCTNzOn1dzIdQRViK/y1mnZawde8OgUDNmfDkGScassboAwuT9sx2JewZsHY0vADaxZlvj5kKmEzJGHsefQ0SO5V8s0TYmQzoCsaFM4AkJ0j2w5YpeVjfnZNG9au3Rg7USYnjIJqHG1+B9y82JRQgrRCuLfyjVNWhhWv59vNev41zaK25bXzEBKyyJQHVBMNeskLwGOp0B9mey2YLCFsYP4GpCIVKACDOq1B4Pbu7Cv8fyeNlaBnetajBxutdI7rq2fkGFnUjcu2hzsyA4pp6f8u2QgeO8ZHk/tMYabvuUv6aNlDWY/0L+a2q07i1s4owrlclW7jAqgFRmPiG+m95Pce6NlcQ0ff2WRxGdBy0scnvx6knAgJAYyLBiWtuEKxdovVA4Ik/V1gzGiDYbu3semB260g=="
|
||||
}
|
127
lb2.py
Normal file
127
lb2.py
Normal file
@ -0,0 +1,127 @@
|
||||
import boto3
|
||||
import base64
|
||||
from USER_DATA import user_data
|
||||
import json
|
||||
import time
|
||||
import random
|
||||
import string
|
||||
|
||||
PREFIX = "s464953"
|
||||
AMI_ID = "ami-0b5eea76982371e91"
|
||||
INSTANCE_TYPE = "t2.micro"
|
||||
SECURITY_GROUP_NAME = f"{PREFIX}-sg"
|
||||
REGION = "us-east-1"
|
||||
|
||||
with open("aws_credentials.json", 'r') as file:
|
||||
creds = json.load(file)
|
||||
|
||||
client_ec2 = boto3.client('ec2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
client_elb = boto3.client('elbv2', region_name=REGION,
|
||||
aws_access_key_id=creds["aws_access_key_id"],
|
||||
aws_secret_access_key=creds["aws_secret_access_key"],
|
||||
aws_session_token=creds["aws_session_token"])
|
||||
|
||||
def create_vpc():
|
||||
vpc_id = client_ec2.create_vpc(CidrBlock='10.0.0.0/16')['Vpc']['VpcId']
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsSupport={'Value': True})
|
||||
client_ec2.modify_vpc_attribute(VpcId=vpc_id, EnableDnsHostnames={'Value': True})
|
||||
return vpc_id
|
||||
|
||||
def create_subnet(vpc_id, cidr, az):
|
||||
subnet_id = client_ec2.create_subnet(VpcId=vpc_id, CidrBlock=cidr, AvailabilityZone=az)['Subnet']['SubnetId']
|
||||
client_ec2.modify_subnet_attribute(SubnetId=subnet_id, MapPublicIpOnLaunch={'Value': True})
|
||||
return subnet_id
|
||||
|
||||
def create_igw(vpc_id):
|
||||
igw_id = client_ec2.create_internet_gateway()['InternetGateway']['InternetGatewayId']
|
||||
client_ec2.attach_internet_gateway(InternetGatewayId=igw_id, VpcId=vpc_id)
|
||||
return igw_id
|
||||
|
||||
def create_route_table(vpc_id, subnet_id, igw_id):
|
||||
rt_id = client_ec2.create_route_table(VpcId=vpc_id)['RouteTable']['RouteTableId']
|
||||
client_ec2.create_route(RouteTableId=rt_id, DestinationCidrBlock='0.0.0.0/0', GatewayId=igw_id)
|
||||
client_ec2.associate_route_table(RouteTableId=rt_id, SubnetId=subnet_id)
|
||||
return rt_id
|
||||
|
||||
def create_key_pair(name):
|
||||
random_suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
|
||||
unique_name = f"{name}-{random_suffix}"
|
||||
key_material = client_ec2.create_key_pair(KeyName=unique_name)['KeyMaterial']
|
||||
|
||||
with open(f"{unique_name}.pem", 'w') as file:
|
||||
file.write(key_material)
|
||||
return unique_name
|
||||
|
||||
|
||||
def create_sg(vpc_id):
|
||||
sg_id = client_ec2.create_security_group(GroupName=SECURITY_GROUP_NAME, Description="Security group", VpcId=vpc_id)['GroupId']
|
||||
client_ec2.authorize_security_group_ingress(GroupId=sg_id, IpPermissions=[
|
||||
{'IpProtocol': 'tcp', 'FromPort': 22, 'ToPort': 22, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]},
|
||||
{'IpProtocol': 'tcp', 'FromPort': 8080, 'ToPort': 8080, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}
|
||||
])
|
||||
return sg_id
|
||||
|
||||
def create_launch_template(key_name, sg_id):
|
||||
lt_id = client_ec2.create_launch_template(
|
||||
LaunchTemplateName=f"{PREFIX}-lt", LaunchTemplateData={
|
||||
'ImageId': AMI_ID, 'InstanceType': INSTANCE_TYPE,
|
||||
'SecurityGroupIds': [sg_id], 'KeyName': key_name,
|
||||
'UserData': base64.b64encode(user_data.encode('utf-8')).decode('utf-8')
|
||||
})['LaunchTemplate']['LaunchTemplateId']
|
||||
return lt_id
|
||||
|
||||
def create_target_group(vpc_id):
|
||||
tg_arn = client_elb.create_target_group(
|
||||
Name=f"{PREFIX}-tg", Protocol='HTTP', Port=8080, VpcId=vpc_id, TargetType='instance',
|
||||
HealthCheckProtocol='HTTP', HealthCheckPort='8080', HealthCheckPath='/factors/6'
|
||||
)['TargetGroups'][0]['TargetGroupArn']
|
||||
return tg_arn
|
||||
|
||||
def create_lb(subnets, sg_id):
|
||||
lb_arn = client_elb.create_load_balancer(
|
||||
Name=f"{PREFIX}-lb", Subnets=subnets, SecurityGroups=[sg_id], Scheme='internet-facing',
|
||||
Type='application', IpAddressType='ipv4'
|
||||
)['LoadBalancers'][0]['LoadBalancerArn']
|
||||
return lb_arn
|
||||
|
||||
def create_listener(lb_arn, tg_arn):
|
||||
listener_arn = client_elb.create_listener(
|
||||
LoadBalancerArn=lb_arn, Protocol='HTTP', Port=8080,
|
||||
DefaultActions=[{'Type': 'forward', 'TargetGroupArn': tg_arn}]
|
||||
)['Listeners'][0]['ListenerArn']
|
||||
return listener_arn
|
||||
|
||||
def create_instances(lt_id, subnet_id):
|
||||
ids = [i['InstanceId'] for i in client_ec2.run_instances(
|
||||
LaunchTemplate={'LaunchTemplateId': lt_id, 'Version': '$Latest'},
|
||||
MinCount=2, MaxCount=2, SubnetId=subnet_id)['Instances']]
|
||||
while True:
|
||||
states = [r['Instances'][0]['State']['Name'] for r in client_ec2.describe_instances(InstanceIds=ids)['Reservations']]
|
||||
if all(s == 'running' for s in states):
|
||||
break
|
||||
time.sleep(10)
|
||||
return ids
|
||||
|
||||
def main():
|
||||
vpc = create_vpc()
|
||||
subnet1 = create_subnet(vpc, '10.0.1.0/24', 'us-east-1a')
|
||||
subnet2 = create_subnet(vpc, '10.0.2.0/24', 'us-east-1b')
|
||||
igw = create_igw(vpc)
|
||||
create_route_table(vpc, subnet1, igw)
|
||||
key = create_key_pair(f"{PREFIX}-key")
|
||||
sg = create_sg(vpc)
|
||||
lt = create_launch_template(key, sg)
|
||||
tg = create_target_group(vpc)
|
||||
lb = create_lb([subnet1, subnet2], sg)
|
||||
listener = create_listener(lb, tg)
|
||||
instances = create_instances(lt, subnet1)
|
||||
client_elb.register_targets(TargetGroupArn=tg, Targets=[{'Id': i} for i in instances])
|
||||
dns = client_elb.describe_load_balancers(LoadBalancerArns=[lb])['LoadBalancers'][0]['DNSName']
|
||||
print(dns)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
70
load_balancer_runner.ipynb
Normal file
70
load_balancer_runner.ipynb
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "6781ce95-c6ad-42cd-bcb5-ac1cda3a56cc",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Defaulting to user installation because normal site-packages is not writeable\n",
|
||||
"Requirement already satisfied: boto3 in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: python-dotenv in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (1.0.1)\n",
|
||||
"Requirement already satisfied: paramiko in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (3.5.0)\n",
|
||||
"Requirement already satisfied: requests in /home/students/s464953/.local/lib/python3.9/site-packages (from -r requirements.txt (line 4)) (2.32.3)\n",
|
||||
"Requirement already satisfied: botocore<1.36.0,>=1.35.81 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.35.81)\n",
|
||||
"Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (1.0.1)\n",
|
||||
"Requirement already satisfied: s3transfer<0.11.0,>=0.10.0 in /home/students/s464953/.local/lib/python3.9/site-packages (from boto3->-r requirements.txt (line 1)) (0.10.4)\n",
|
||||
"Requirement already satisfied: bcrypt>=3.2 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (4.2.1)\n",
|
||||
"Requirement already satisfied: cryptography>=3.3 in /usr/local/lib/python3.9/dist-packages (from paramiko->-r requirements.txt (line 3)) (38.0.1)\n",
|
||||
"Requirement already satisfied: pynacl>=1.5 in /home/students/s464953/.local/lib/python3.9/site-packages (from paramiko->-r requirements.txt (line 3)) (1.5.0)\n",
|
||||
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2.1.1)\n",
|
||||
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (3.4)\n",
|
||||
"Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (1.26.12)\n",
|
||||
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests->-r requirements.txt (line 4)) (2022.9.14)\n",
|
||||
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/dist-packages (from botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (2.8.2)\n",
|
||||
"Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (1.15.1)\n",
|
||||
"Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=3.3->paramiko->-r requirements.txt (line 3)) (2.21)\n",
|
||||
"Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.36.0,>=1.35.81->boto3->-r requirements.txt (line 1)) (1.16.0)\n",
|
||||
"\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n",
|
||||
"\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3 -m pip install --upgrade pip\u001b[0m\n",
|
||||
"s464953-lb-29746609.us-east-1.elb.amazonaws.com\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#!/bin/bash\n",
|
||||
"chmod +x lb2.py\n",
|
||||
"pip3 install -r requirements.txt\n",
|
||||
"python3 lb2.py\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e807cccb-cb8e-4b25-91f1-43a72cda214f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Bash",
|
||||
"language": "bash",
|
||||
"name": "bash"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": "shell",
|
||||
"file_extension": ".sh",
|
||||
"mimetype": "text/x-sh",
|
||||
"name": "bash"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
249
main.py
249
main.py
@ -1,249 +0,0 @@
|
||||
import boto3
|
||||
import argparse
|
||||
import time
|
||||
import base64
|
||||
from botocore.exceptions import ClientError
|
||||
from user_data import user_data
|
||||
|
||||
# Stałe
|
||||
PREFIX = 's464953'
|
||||
REGION = 'us-east-1'
|
||||
AMI_ID = 'ami-0b5eea76982371e91'
|
||||
INSTANCE_TYPE = 't2.micro'
|
||||
MIN_INSTANCES = 2
|
||||
MAX_INSTANCES = 5
|
||||
LOAD_BALANCER_PORT = 80
|
||||
TARGET_PORT = 8080
|
||||
|
||||
def clean_resources(ec2, prefix, default_vpc):
|
||||
# Usuń security group
|
||||
try:
|
||||
security_groups = ec2.meta.client.describe_security_groups(
|
||||
Filters=[{'Name': 'group-name', 'Values': [f'{prefix}-group']}]
|
||||
)['SecurityGroups']
|
||||
for sg in security_groups:
|
||||
print(f"Usuwam Security Group: {sg['GroupId']}")
|
||||
ec2.meta.client.delete_security_group(GroupId=sg['GroupId'])
|
||||
except ClientError as e:
|
||||
if e.response['Error']['Code'] != 'InvalidGroup.NotFound':
|
||||
raise
|
||||
|
||||
# Usuń key pair
|
||||
try:
|
||||
print(f"Usuwam Key Pair: {prefix}-key")
|
||||
ec2.meta.client.delete_key_pair(KeyName=f'{prefix}-key')
|
||||
except ClientError as e:
|
||||
if e.response['Error']['Code'] != 'InvalidKeyPair.NotFound':
|
||||
raise
|
||||
|
||||
# Usuń Launch Template
|
||||
try:
|
||||
launch_templates = ec2.meta.client.describe_launch_templates(
|
||||
Filters=[{'Name': 'launch-template-name', 'Values': [f'{prefix}-LaunchTemplate']}]
|
||||
)['LaunchTemplates']
|
||||
for lt in launch_templates:
|
||||
print(f"Usuwam Launch Template: {lt['LaunchTemplateId']}")
|
||||
ec2.meta.client.delete_launch_template(LaunchTemplateId=lt['LaunchTemplateId'])
|
||||
except ClientError as e:
|
||||
if e.response['Error']['Code'] != 'InvalidLaunchTemplateName.NotFound':
|
||||
raise
|
||||
|
||||
# Usuń Auto Scaling Group
|
||||
autoscaling = boto3.client('autoscaling', region_name=REGION)
|
||||
try:
|
||||
autoscaling.delete_auto_scaling_group(
|
||||
AutoScalingGroupName=f'{prefix}-AutoScalingGroup',
|
||||
ForceDelete=True
|
||||
)
|
||||
print(f"Usuwam Auto Scaling Group: {prefix}-AutoScalingGroup")
|
||||
except ClientError as e:
|
||||
if e.response['Error']['Code'] != 'ValidationError':
|
||||
raise
|
||||
|
||||
# Usuń Load Balancer i Target Group
|
||||
elbv2 = boto3.client('elbv2', region_name=REGION)
|
||||
try:
|
||||
target_groups = elbv2.describe_target_groups(
|
||||
Names=[f'{prefix}-TargetGroup']
|
||||
)['TargetGroups']
|
||||
for tg in target_groups:
|
||||
print(f"Usuwam Target Group: {tg['TargetGroupArn']}")
|
||||
elbv2.delete_target_group(TargetGroupArn=tg['TargetGroupArn'])
|
||||
except ClientError as e:
|
||||
if e.response['Error']['Code'] != 'TargetGroupNotFound':
|
||||
raise
|
||||
|
||||
try:
|
||||
load_balancers = elbv2.describe_load_balancers(
|
||||
Names=[f'{prefix}-LoadBalancer']
|
||||
)['LoadBalancers']
|
||||
for lb in load_balancers:
|
||||
print(f"Usuwam Load Balancer: {lb['LoadBalancerArn']}")
|
||||
elbv2.delete_load_balancer(LoadBalancerArn=lb['LoadBalancerArn'])
|
||||
except ClientError as e:
|
||||
if e.response['Error']['Code'] != 'LoadBalancerNotFound':
|
||||
raise
|
||||
|
||||
|
||||
def main(aws_access_key_id, aws_secret_access_key, aws_session_token, default_vpc):
|
||||
ec2 = boto3.resource(
|
||||
'ec2',
|
||||
region_name=REGION,
|
||||
aws_access_key_id=aws_access_key_id,
|
||||
aws_secret_access_key=aws_secret_access_key,
|
||||
aws_session_token=aws_session_token,
|
||||
)
|
||||
|
||||
print("Czyszczenie istniejących zasobów...")
|
||||
clean_resources(ec2, PREFIX, default_vpc)
|
||||
|
||||
print("Tworzenie zasobów...")
|
||||
# Tworzenie key pair
|
||||
key_pair = ec2.create_key_pair(
|
||||
KeyName=PREFIX + '-key',
|
||||
KeyType='ed25519',
|
||||
KeyFormat='pem',
|
||||
)
|
||||
|
||||
# Tworzenie security group
|
||||
security_group = ec2.create_security_group(
|
||||
Description=PREFIX + '-group',
|
||||
GroupName=PREFIX + '-group',
|
||||
VpcId=default_vpc,
|
||||
)
|
||||
|
||||
security_group.authorize_ingress(
|
||||
GroupId=security_group.group_id,
|
||||
IpPermissions=[
|
||||
{
|
||||
'IpProtocol': 'tcp',
|
||||
'FromPort': LOAD_BALANCER_PORT,
|
||||
'ToPort': LOAD_BALANCER_PORT,
|
||||
'IpRanges': [{'CidrIp': '0.0.0.0/0'}],
|
||||
},
|
||||
]
|
||||
)
|
||||
|
||||
# Tworzenie Launch Template
|
||||
ec2_client = boto3.client('ec2', region_name=REGION)
|
||||
launch_template = ec2_client.create_launch_template(
|
||||
LaunchTemplateName=PREFIX + '-LaunchTemplate',
|
||||
LaunchTemplateData={
|
||||
'ImageId': AMI_ID,
|
||||
'InstanceType': INSTANCE_TYPE,
|
||||
'KeyName': key_pair.name,
|
||||
'UserData': base64.b64encode(user_data.encode('utf-8')).decode('utf-8'),
|
||||
'SecurityGroupIds': [security_group.group_id],
|
||||
}
|
||||
)
|
||||
|
||||
elbv2 = boto3.client('elbv2', region_name=REGION)
|
||||
target_group = elbv2.create_target_group(
|
||||
Name=PREFIX + '-TargetGroup',
|
||||
Protocol='HTTP',
|
||||
Port=TARGET_PORT,
|
||||
VpcId=default_vpc,
|
||||
TargetType='instance',
|
||||
HealthCheckProtocol='HTTP',
|
||||
HealthCheckPort=str(TARGET_PORT),
|
||||
HealthCheckPath='/factors/2',
|
||||
)
|
||||
target_group_arn = target_group['TargetGroups'][0]['TargetGroupArn']
|
||||
|
||||
# Tworzenie Load Balancer
|
||||
load_balancer = elbv2.create_load_balancer(
|
||||
Name=PREFIX + '-LoadBalancer',
|
||||
Subnets=[default_vpc], # Użyj odpowiednich subnetów
|
||||
Scheme='internet-facing',
|
||||
Type='application',
|
||||
IpAddressType='ipv4',
|
||||
)
|
||||
load_balancer_arn = load_balancer['LoadBalancers'][0]['LoadBalancerArn']
|
||||
|
||||
elbv2.create_listener(
|
||||
LoadBalancerArn=load_balancer_arn,
|
||||
Protocol='HTTP',
|
||||
Port=LOAD_BALANCER_PORT,
|
||||
DefaultActions=[
|
||||
{
|
||||
'Type': 'forward',
|
||||
'TargetGroupArn': target_group_arn,
|
||||
},
|
||||
]
|
||||
)
|
||||
|
||||
# Tworzenie Auto Scaling Group
|
||||
autoscaling = boto3.client('autoscaling', region_name=REGION)
|
||||
autoscaling.create_auto_scaling_group(
|
||||
AutoScalingGroupName=PREFIX + '-AutoScalingGroup',
|
||||
LaunchTemplate={
|
||||
'LaunchTemplateId': launch_template['LaunchTemplate']['LaunchTemplateId'],
|
||||
'Version': '$Latest',
|
||||
},
|
||||
MinSize=MIN_INSTANCES,
|
||||
MaxSize=MAX_INSTANCES,
|
||||
DesiredCapacity=MIN_INSTANCES,
|
||||
VPCZoneIdentifier=default_vpc, # Użyj odpowiednich subnetów
|
||||
TargetGroupARNs=[target_group_arn],
|
||||
)
|
||||
|
||||
# Tworzenie reguł skalowania
|
||||
cloudwatch = boto3.client('cloudwatch', region_name=REGION)
|
||||
|
||||
# Alarm skalowania w górę
|
||||
cloudwatch.put_metric_alarm(
|
||||
AlarmName=PREFIX + '-ScaleUp',
|
||||
MetricName='RequestCountPerTarget',
|
||||
Namespace='AWS/ApplicationELB',
|
||||
Statistic='Sum',
|
||||
Period=60,
|
||||
Threshold=100,
|
||||
ComparisonOperator='GreaterThanThreshold',
|
||||
EvaluationPeriods=2,
|
||||
AlarmActions=[
|
||||
autoscaling.put_scaling_policy(
|
||||
AutoScalingGroupName=PREFIX + '-AutoScalingGroup',
|
||||
PolicyName=PREFIX + '-ScaleUpPolicy',
|
||||
ScalingAdjustment=1,
|
||||
AdjustmentType='ChangeInCapacity',
|
||||
)['PolicyARN']
|
||||
],
|
||||
Dimensions=[
|
||||
{'Name': 'TargetGroup', 'Value': target_group_arn},
|
||||
],
|
||||
)
|
||||
|
||||
# Alarm skalowania w dół
|
||||
cloudwatch.put_metric_alarm(
|
||||
AlarmName=PREFIX + '-ScaleDown',
|
||||
MetricName='RequestCountPerTarget',
|
||||
Namespace='AWS/ApplicationELB',
|
||||
Statistic='Sum',
|
||||
Period=60,
|
||||
Threshold=10,
|
||||
ComparisonOperator='LessThanThreshold',
|
||||
EvaluationPeriods=2,
|
||||
AlarmActions=[
|
||||
autoscaling.put_scaling_policy(
|
||||
AutoScalingGroupName=PREFIX + '-AutoScalingGroup',
|
||||
PolicyName=PREFIX + '-ScaleDownPolicy',
|
||||
ScalingAdjustment=-1,
|
||||
AdjustmentType='ChangeInCapacity',
|
||||
)['PolicyARN']
|
||||
],
|
||||
Dimensions=[
|
||||
{'Name': 'TargetGroup', 'Value': target_group_arn},
|
||||
],
|
||||
)
|
||||
|
||||
print(f'Load Balancer URL: {load_balancer["LoadBalancers"][0]["DNSName"]}')
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description="Create AWS infrastructure")
|
||||
parser.add_argument('--aws_access_key_id', required=True, help='AWS Access Key ID')
|
||||
parser.add_argument('--aws_secret_access_key', required=True, help='AWS Secret Access Key')
|
||||
parser.add_argument('--aws_session_token', required=True, help='AWS Session Token')
|
||||
parser.add_argument('--default_vpc', required=True, help='Default VPC ID')
|
||||
|
||||
args = parser.parse_args()
|
||||
main(args.aws_access_key_id, args.aws_secret_access_key, args.aws_session_token, args.default_vpc)
|
27
s464863-key.pem
Normal file
27
s464863-key.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAxF9IG9Ccrzpy0fBwKlO+4+KU6n9Kf05VUr0yewEtIXWZCTRh
|
||||
7rdcMjMRgGmxL0bVZ4HK/un/ts9cmhCQDODovLnkVVripMlChp5XCgXoh/BVg7P+
|
||||
5d4IJ6YgAiXwbGTPoA7OtjwNDr6En7LdnL8xkdfrcWBS53b4OL9jz1/7uyauiMC/
|
||||
EYbXButwurN8r0I35gFNB6zrmLoAdkCPfpK2vmOvvWgVgk/17QuvtBPc4QexL4t8
|
||||
ywIYD1tDAdbnbMSZ0ggaGuFxDtvjIeHwvoZL8XVpsY8uK7Z47BTM90Ns4r6dsbrc
|
||||
yWXJRyNlXrzKteHi+ziDYEhmzyLKhr59eT9+SQIDAQABAoIBAD0/nsUWLxi0eUWj
|
||||
4chB8KMxc9MkOr80VoaE/m7BMitie4YUcYs8Y6RAq2/LB3nAdSVgpUkXASwqxy5C
|
||||
hjuOFulubZp1y4UsRPSqBGna5+kme/WlOZbGxvJe7VLeNHwKgXvhwnWyizwTDlil
|
||||
OFwAglyD5SqqqZEKWWeRwnbW8DQx0tmZ3XbcLP1sNQCsHXfxDaAwOmVrZKxgEml/
|
||||
SXdJB+t83fcooy+kzg1cyj40ou0CUd+00EPfrGB7Ou4N8qKrGQccAZQ4ghW7Cbgg
|
||||
FZr+JnvfqtWCC078KtHDcXi7zGhXl4McQuRF5syzw95IiUUY19zbzIM/+wCdXue/
|
||||
189PzAECgYEA+HcZknfJRe2sgTSzbyVOPyrjNWiqbXwdjU1d1giQhTU5n1/QHkSM
|
||||
pzD9Sp8MH6mt+KdP1HqYOizZTB+0ACfyMBZJThZeQ9gMEYgvKc+FDMQHvDauTZI6
|
||||
qI0d9CKi79VfKuthO5Lop0tlBdac+TUEEv+LDC6VTppOEHtyVUlA0YECgYEAylPF
|
||||
HjBk9mJOuQ8I4WQ/6/DoyI//DCKWlC2PkQoSYl9P8WGbMU+SaxLvp1vBALYwXlj8
|
||||
Bi8tD3CSE9KIfPvWFhi1m7w/q1OHBkYN1C7RIv+dQmlSTuJanZzXXyJVgaWQCu5H
|
||||
a4docUOpOcv5M06E5/hTUHUPJ3pfCJrPubzbAMkCgYEA24AUJlIOjOl4cTjGoBUb
|
||||
+DACQ4ewsEJqtQ85K8GrMxMfUc3KRUMX4wgjbE3v3vT+zWG546NeYl6GpXqIgW7I
|
||||
xXSa1BJsupDdsItX5x7+kpWHo93GxJ6/lXH9mVUUDr64cWk6H/Ab+tdfavX6/Sm5
|
||||
7LK2+08X9jXZazQzgGbTjYECgYAsrzeXpUSHDcspH+LsNIHRkBE5SmQfv/vVmgJd
|
||||
HAZXZ4l2XAI0b8h8kWAQbDlB+PrRu4FdtEmVYV1Bt3uhbtUnaCmjzX2aTwZBInOn
|
||||
aveRbTbEFhKxjVhJ+vut7R1JVtFrOJjZbLxqV3EmbKAK7sp3mOZ9nHzOUT5v3hEG
|
||||
imkr0QKBgQCzIkh6YedEOwtMC02bzv9hEumKcAzMVv0sBXgHxE5ZyHyWGYUuD0Rt
|
||||
OIJqKgcrReGBwjGGGV9cI5aiCvLMVCUQGuoGjlk/nhLrqFAqtEA/ifWEpvx0uKXj
|
||||
ZFZ9yTIlkdsvI1B58BdbYWS5v5YG5WTqEUynRokvfFMgLtf/Q6x/kQ==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-5tbwjp0h.pem
Normal file
27
s464953-key-5tbwjp0h.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAwGbxWsT4l4GekkwuxAe8SoRXjcGTRL/lNSwL9gWHwoXNIPC4
|
||||
UENmH+D5U6dgq2YQNLb5Rh8UCUGOk+q7O54sISfXSF3dHsKQXXOITXO6R6ctQUyP
|
||||
tiVMgwzjb7ZYzDQ8z2VHXxOqNxM26z5HO+cpaL0iDZPRdlCtGFU0xD7QSkWni+X5
|
||||
nwvHYlY2tVD+54HfTdqt8KjLNt+CVxGXCZzPZMay6EAt7Cz5z5qwQpfXMlYLWxM9
|
||||
k3nudIIltYZ+0wYmycVLhGMmrQtxdDAiII62ILcMSa06qdOsrQ39Mtsx9HKsu4RY
|
||||
oS1IDLP/XzYgGTfXjmYJnPBR6kzALPhiVHyAJwIDAQABAoIBAQC6y3bphDBBj5Nv
|
||||
P81rfoMc6Y3DT7t11MRoMiJOsaHThmnX4D1hl33v11DZGbhtz4JOW5J5tLSUI/ST
|
||||
wSIUSIVZjz+gv5htQ8I7KG6dm4ywAiuaqQUhdubomLu6+pMNdm3PgOmg8guguuPn
|
||||
0igAjXYTfQQxoGCM+NiEtjyrhrxcTb9SYp8cy24FeSauSKIYqCC9XqM2+QIeV8Ew
|
||||
Np0ln6Jt92VJ1lP0Cg/6iK2Xk2ZSTJBQQsj2cRJps9CzU0G0isOLiQYvVUIeCzxa
|
||||
G3IBD11reXqjXmp0pucKhVk1YopGt3A1W+ZU4PtCy5MazvreOtCOnxoBKke8mxZc
|
||||
2cWMDfcJAoGBAPxhPXmXka7f1HCT2L35vRMyWuGqXpIumgOuF+zYW1XoEdZNbWLN
|
||||
BuKfwm9QTB8mBNy0S0fnAf7Rm17Xxlobs5QNoQFH9mlHZeE5ooYmxi/ArftO4Sw7
|
||||
vOd3LCJRTdhI5r/oiPDFdTzV5ceJXA71+u1r43dxoACmGaM1cpuEwHkDAoGBAMMp
|
||||
dZ4ZSmP0MVxVF+YGnNW1mpVuuH467mSbvSii6kEHFe85b/dfxft8sKJglitURd+2
|
||||
TZwVKJQB2I1kA2Mf5/zWCtznySP7Ulc9PNR9tvkCBA+KNnUKL21iinylGMjFyN5b
|
||||
TNNRREniXK9QbQVMwM/piAUtrKLJNSIPkfdPkckNAoGBAInJfQqZWYwj35Pm4/o0
|
||||
EqocX8m8fg1JLAS+U4mXRaZNIQ/jDclXLl8j4b9sE2MeGqF0PXVwBYLdZPoOy9f+
|
||||
L7ixCCnu4/Tuagzgrn6XRLRleZcupXjE1Il6YroJsXpXssMrbTgmVa91CBI8R+pT
|
||||
GT/uGy3m9vfjtzOHxp5ph7uJAoGAE8zMAws70eI/c8eqUgsPtFrlYQ3Hp/7gmtJ2
|
||||
IX5N1+UZI5knM+jClF41KXQ1KBY3tJexTgmTgViimM2xzke5aJxqo7jcXkssMm+j
|
||||
EUfj3WWH9e+m0L8Eyss5k6XIWu4+D9khdTsEe558msjFFsmPskhWJXhZ0HYrbtY3
|
||||
j+jBuK0CgYB9Yxo2ViKTJCQ4OPxfHNEpZXAGeiN3QG30jXqHUjZQNlwortQDvH5x
|
||||
c229h51xN5avZXSLCxnTGoJtCpz5orjz5t9GKEvOVIwzju/je4YCbjnPx940X9To
|
||||
fAuCGSaLBWWuE+MV2E/2OZ+6eTZeLyFlNlNsVMU0rPgckoBVWR1XAg==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-878poos8.pem
Normal file
27
s464953-key-878poos8.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAv/UFeHpu25CyGWfWEAeLvrQqiJdEB710//Xl27Bu5vWBRX8A
|
||||
GyaPGrsrtjlwexBqUPmHNNVcZDNn89f+Unnr9sYZeFboLwOeI30UkAbONjXg0SI0
|
||||
em0VNuRYO+79OwoGLP2qUBMHepPpMFAZW+OgLsx7FUM/ixWGbiP01zveYi+oGLMG
|
||||
e6ux7tr8EHydZEf5NWBQZbZdLBmB/kV5M+MWG6kLNQdWyN2ltUFWdm8c8B0qv1bX
|
||||
mKS/7PZjAfKxbXjXunSb0Lh5YULyx7LQEsLxaiPJP7Z2+l6ZzqD/KhE7Sd4vXAwM
|
||||
Qp0P+i43tIqWY19PRUN7H2ZfH75qLvWrE6QrEQIDAQABAoIBAQC1kufh1q4WMwDE
|
||||
11u9PeYKNhIlsjA/wg5yL/+Fl5bQEVp+imtnQ0oKVxI6BItJXXWzstUaPNhwT8/8
|
||||
8Es5aOqzOx/MnShzkFB98UsKEeXtkXlfWaOaSqTOj6CG0MHonsrItAnuRJHGeTMS
|
||||
6DGUofRbUED9E+d/gJTwikKHdbId3KGDEA8KiL4vdG3hBerlJvsZzpb6ocEM5EVQ
|
||||
bxT5SMmfSZi+XH0j24MsR4+WMKU9nxN6FjbHWRG7E3Rce9cG2gWV7lDED6z+Ssts
|
||||
cQQvuU02B/hOqAie6j+aSg7xMd6KkdmvfT1XvoZlYkmXpYgwy0QljWlsOTOreC7D
|
||||
D2QNnC2hAoGBAPHha3eJM6v4t4FYMs2NuphjXKqfmp/63tRTzLmkIoPbQ9tSfvhv
|
||||
qNs0nzs3ixMHwmcxU2pQNjGgW/M5mRE7N6xe848HtpSRcebHympgq5nnCgtSfUvG
|
||||
RBYcyuDCE17LWtjXwQU9kYHcltxVdeHG32tMwVuACVxjcI8bEXSVOIdPAoGBAMsp
|
||||
kBkP57/0zmvdLKhQUS9DKEgksFrqC+wvQqUp8WMkIsAfXUZDbrVCxw7urVleHKaT
|
||||
sE2tU3Yh5g9ACmPC6ssnwLd5nmqeOsopN9j1ACE8YYmA3LPYz9Mx4Qx8q03bcXKX
|
||||
n7aOIXdN40dxQSxgKR2/jAF0ExvCCVyiL/giHY+fAoGAErzoy2DYnOjuplmDzgK9
|
||||
wtJnulwU6XHQ01gOkw8REW/qCNKSPYLA7QJdl4PNBVNjjwT2NlUybZPDq8r5fak9
|
||||
vd+5NIpfbZD65urxVl5YzNpmH8xrInSgj6n5WYIPaBeO2R+Vt2c2n33MPhNsx2nV
|
||||
owVWMVVw5DRb4uow5vwsXecCgYAFH84/o5QP1mfidpiqwiPaElKQx0QfdunIEkUX
|
||||
D2DERGQP/nqGzCqdrcqBiOmcaHBGj1ESFH4Xa7F2zwG0FHWBnEYTGqExRT5sXO/I
|
||||
rB1NuU0of7SRYLWVORvZCcf0VcWdw09G9nzHmpJR+fxP1zkSRAOPAdN9jr5XtMuK
|
||||
8alXNwKBgQCUqNYlcP1AFGheJvS74m4o3WeBLzIREqUzeKbuPiEl+STqcIX1G995
|
||||
DncOP/zwTd68rWoLVmApwmLiIBCa+NWM/+WYhWhNth9o2QDkvzGo9UjitTCtqoNa
|
||||
XiGA1JYAr3gD6Nj6VQr6lQSTZBa4XzLC8PjVNu5s5mOi4RytiHJv8g==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-9zfwetjt.pem
Normal file
27
s464953-key-9zfwetjt.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAxL2h76HDhVOeSCoc5qrSslBeOFwxmDXf7OjHgjs40+GaX0W7
|
||||
8T+7z9CqAHpibyTBU26Jfdu0o2BqlkJnPEk24kth6kMLWcP1bbqTFXKcGbPFhHIN
|
||||
gM37S3k3rGutIzjUA0Ih/hMuEWJwpu02nBUvMr8I1RdZfaLwZ9WHBikI9TMfcXd9
|
||||
yKx7ctHf4TkPJbeZ+AnllFc3WZ6N3f3wM7sZSHqvt4pBc1EpY8C0LkWnkekQvlYr
|
||||
vChUjzwuX/O5nMppQ+wAWOxf/UNS/zayidqO0UX3rd7v5V0u7+drXv9jH8jitMW3
|
||||
Tt40PkohvGf6dVVJaKGs1H2X/G7/vYETOUTT9QIDAQABAoIBAQCC6pVJemE65Suc
|
||||
ZbmZnO5bjbNE2cR+vsrlQPkRpgroo2UwJJ0tqfV2Eiot60J5JwImXJXNVFfdp5kF
|
||||
p+Y+bZHB/9uGIVr6PrWgcNjTGtLZH5E90w89ONQRovXzHCu4FmauTGGGSokLNHA2
|
||||
A/+k2Uvw/sIH2mPIgJZs4d/Zr5CwaEsIsyY1DCd//BKvIa7dj6VBLj9TR/p2tuAl
|
||||
wq74JbjpFpiAJHvY9K3CAtjALfm8to30YrLDnVf6xI7lbP2RYjEnRbu0JdqYDU0g
|
||||
wmV8+FTR90v2XNgH/7ohdostDhuKFSEq4epe+hTYwr8mrsgESsCIBe+Qt+T1j85E
|
||||
lpCQpTlBAoGBAPC25AN0etph9UBWFC8HRD+QJV51YlrB5t7ufJlQ4OnNI3/51QOa
|
||||
KDrZtdccdflH1WISo13sjiy1WEjBtmpI5U2xg4OvmGbCptzkmPHqKz1AkfOlRJDp
|
||||
LMtCqtadaIWGmdBz2jZPawWWeP3q8nHTIkQqoAGDBePb9lRRtLLBtK5dAoGBANE7
|
||||
5VOnnoS2QG+3u2ZE/c2fHF/CDv9UGLaBIOw4MHuvJGlb1YEcyxwfjZ+7R7EjY/Wc
|
||||
0cq7rZOjq3Zyt+jI3cFKijAgVOKMCBo2F3PGT9jBJ73W76+4FY/NTrpf+Mz/DTdg
|
||||
csgOsrXygAyfWfOMH26/tkZMvUd+8SyiR+EcjXJ5AoGBAKFDxepSpOOdcPMTOB5x
|
||||
ndV/uqlXtvbapNOBrtQADU5Vco0QURdCteUHaf2dQaQp7djwZ6ZLDs0BCQ5lSNJX
|
||||
19d/L36Pq2hcy/F87MJVgXZdxeoXNKJotOvP1ChH+HhMPswacXylJCvwLUrflmGP
|
||||
c4t7iwq4Pr/y40qGGqsPfv65AoGADP9CfJLR9v53PDlWi8DHX0l98rjUQ6oOqu+U
|
||||
gvfukxBLG7xXo+CNAV84Ze61Qlynbe9i3MwRuTUWhpITuIMZu1MNCHZJr5TxP+eS
|
||||
R1/PP/CnrlQ2qVyvAjLHrC4f/2Pshz8XgjPfiAvbRm1zofxXS4LfKLjFnTZWduZR
|
||||
vrsOUkkCgYEAsNBlnYjsrx7ZmNrsuWSXcQIhoUeXIk99GnjxvwWN107cQzZlJ632
|
||||
YMI63V9yV9nX/zdHdTKr6A1rS0oyl1JIHlhVnPg7BLRRWzGmvRCURzyL6tlcAaxp
|
||||
K+EtMOpnG/bSICYAYdk/9Kzpnhqm+tiph+eR2bgwvBmei1pamTzPYqQ=
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-ah39b0g3.pem
Normal file
27
s464953-key-ah39b0g3.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAwbhxawnDT0k6l3giAJvWuexVXw+fAzbN8CHJA4CnO/1GmVZy
|
||||
nZ6S+iawCrawHGcXhNxGEvvnAMRcniAgSqKRuXsTfVdoSPnl4oi+sMzVeZRj96nj
|
||||
7eYw30QJSJOT5YmJ9NZ4w3f+hYMNdUfllVCHLjoHA/qJaNw+sL2IyGbVEdwOwl64
|
||||
QnNBagN+7B2Xv1VbPt6s93LZbfATv08Mh7aQd432jDIsOd2HBmhjwhqEgYzTrKB9
|
||||
4U71NZxTyuk748hVoa5ygKSmgcYNrI6DTxnnn5qheUSyjASjdMjv1nwOSzSRURqG
|
||||
VRa99/91HInPhiA0yPFPNQ8oqA+78f+8i+1PKQIDAQABAoIBAAWN2zqdagsg51wm
|
||||
Zpsr3Kkx/HSgRwfZj2f+H/xIuQLATUDiOKEKRd6EM3HrMPtvfT4i7qNms4XTG3Cx
|
||||
LRvWs2TlAXcLhYLqH0wybX02MjytI3ybU1yjx+zuz3FUQd5H5jut1oKMMzDyw/UD
|
||||
3bI9P9L0ePUFPuFRxz5cAMr2H8/GOaJF6WFoT9SDO4LMXh5PRgNSaPr3xRac6u0F
|
||||
MPOfgSs/RYloGGPOtC0717p0eQHN/TWX0MMOexLpIQ3cljAqRuwQUUHB6UNRLVNW
|
||||
ecWpyMJALVU2fbZWGkBi1h49eDVYDGPl96JbsE732Sso4WwJDEiD6e42/GpU95en
|
||||
kJ823A0CgYEA6AjCb7iywKKERSeiSpWkMIqPJUGUyRwLQW1yibAGj7tEPC89TL3n
|
||||
XJgd6HQNyCaqLkQC7fsZFgOpdXKblJ+bX3iJ1ombuJpLmUbdz0UmGelLWqFnHTOf
|
||||
YhPkPGdcNRKY0jg1wkJL+y9Oeysii7ggfyGa/Q6yZaSYo+iDWqec5+cCgYEA1bqg
|
||||
SBX804Ckaqyn3TcgbuF8UBJpBgyuhghGPT9xOSx98DkJ4dBIdV9wFv1d35qlvmXj
|
||||
Ij3ICuAs6aeCX10uT+XxVpt094vdAb86kN6NJ8OIsQ80PnIrrk5aNavx36Zij45J
|
||||
PY66l+oMpicTiFihP//eOviYn2kvtonw9+zU7m8CgYAWBobWbhThvkuJ+Pop1EyS
|
||||
owR1h+UktfnHiykdMs1cpW0TvXQ3LauhmXr1TtbkEe+Dlsckafp2oYBberaUBBaO
|
||||
mHWVHNjgTB0y/owdmbXFLeUORFXyaq0NdU/r/++7xfkls1o/B2YJAPOVM4IC+0Zy
|
||||
avE4ZkW+6kHnBTI6z8BQLwKBgBOMMCCnsin9+AuxouC+q/64LNB9/pEJE+U6WII9
|
||||
jTN3eEVCUj8O97GUewH/RlivIj2Zv/5fvC4SdskgAvKJ6TRxiXMsYLRLXHlObiLV
|
||||
1/8tCRF4nIShmJEmpWWHRmX4J8eNcfFpXnOKeoGvzT+JK6ZY1pB6MCtUSYLeduWW
|
||||
CZuNAoGBAI7P6bDlJRTjGHj6SVpThkg2+uwMZiM0qDShLtpCv2Fgd9i+3v9B9uyN
|
||||
4cCZ1VVPE/wvFZA8qk9V8jCfpk7JlXYspIrVkqd3uSECOa2lTnCfXI6gmGsbRmXw
|
||||
Z9CirC0AAIJW/MalEE455uhtjZiO7/6oK6ew0rLYc0OcbxnKJpz9
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-dwa56awk.pem
Normal file
27
s464953-key-dwa56awk.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAtCSAbykx1dtMU6QcRWZGs1ePf6odbzHydOKnnpPlaaf7ASM4
|
||||
gbtpc7HbQ0VrKU+4XNFTKxUV32yuqGRb4+GrMhs4xcsZfVGYNx0bZCi0Ka2tBZuL
|
||||
I+Jvn/FvtgBWMbueVmUnkJZhjYxKTg4VpcvuKYjOoon4grLe0P4Jth7arvnI0hBj
|
||||
3OJ77p5paD9Pe6Bdz28AP8s9oPBoQkQ4r6ovYX4S1wROOIIGY2mhldraLt6749+K
|
||||
TbXLJZZOh3hfFCcfDgXnTA3S/WitWyC2gM04ZQeSeK8wjnm1vx21TNLBgQK8Ydt5
|
||||
/CRQcaqwBSrhPoYdGI86S5A848midpwVwQM8ewIDAQABAoIBAQCLxmLNXdZoTF9d
|
||||
6tFw29nx3/fdI/7wv32USiWrOrBgGdH94PlAWE2LUq6B9QQgKtYvVtBEdnjhQnAH
|
||||
As/18q0mFM8pUdy2SzBjWzdcsOSSDktZNYZx0omwPeLjAkHfFufVu2lGnBiXfwpM
|
||||
pEsRuTlTiu5iWdG0f9u5p9ObNzeRWbpQCWxrvo3m7yyhXmKl/W7TCkD7uobCNque
|
||||
GFIdT8FIny5TubTqYgTGB59FRuizjJxpQoQNa5QKCqoHek5j4ZdyNcD+PN+kCQf2
|
||||
RUjsq2kb77FF+8/2UMu3C4tQ6Fg4wKf7l5g1sKfFVQGeS/Mhn2u8F5PHh86xRxHA
|
||||
FswibweJAoGBAOu0CTnxzG7bNtW4V3gfS7zVlB0fxgKcnzPURM8QJjB/Qy2JaJpH
|
||||
U0J/7/vowdqW00Q6h1g457GHSKYuC6ONtHw77babvayIDeviDPO4i6LwwBdwTv1F
|
||||
2xAbTTkRAOX/bH+u5zAkQk8LYWgVMfuoByWl7ZY2PYhx1dv9V07U3xQvAoGBAMOn
|
||||
qE4LMKoMYFWv0elkRjoAcIRb9Niu0Tfeikcx/Vwke/6leNJqFQTXULjBuOspkK4/
|
||||
zjQV0ukaxfUPvu75lnVkWv/kIcjn+4WIal7JLknTtKdZ920pnVU6QjLXVNwZicng
|
||||
B1L+huRgdSfC9SOaTJOKCMy9aS/e+0vh3SeTOW11AoGBAIOjh0ufaee38sYmMGPc
|
||||
RrZuKkyhxDsNMjUGJm/muw125hP2nD8d+rg3L9bnRe1JMzD150U0cuJJhh+Zs9Ji
|
||||
gByqc7b7AFHtoqjNFSLBPOuBvibZCKSXcSNrvBNVFcVehEBDdMcEWSxAVOSGgeXl
|
||||
ECjMpQaxwGgF+8TjlvFmHjjtAoGBALosWclRepAE0NIYSDy2buCYNHit67EXv/tS
|
||||
pe+TEMvR567qk6pcyP1fSO9VXvleBs7X5gXH0nZ/RGio//zzwAiaYsDluoQqwjpR
|
||||
ES56brJPYbJwuDDGjXBgzEcGgTgikOtoYm/FxGOhqTkZmRu0ojMuAKuZfHLR0ftl
|
||||
w4P54oZVAoGALww2BXPo9tge+Rf5+hb7E6EtD18kF9YrZ+yLNYeDcX7JM1JZVEEH
|
||||
BIPI88dgt6fud/otJGp/5H9Pk0/JmkZTGuPGiTeYa1eTKw8mRgvdw4+2506DEjK3
|
||||
kVNGnUwcTYhe9IgqIPwr21Iva0Vg307s/J5mgQn9puKRZriPwlYKd4o=
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-he6jgiep.pem
Normal file
27
s464953-key-he6jgiep.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAqgKQ1pMfAFL2khjyYXfjRVCvCEkaUSUaEZXbKh92Ttv7C+LZ
|
||||
0iDlY+wcwlYH6FgwRbMlpg2iVM2ukTUKX/eOLpnilzfJNYQvQ57eYiAoCQaqLlyc
|
||||
ChbQ0zlXKU9xTI04nCdRHnU86Kn1tvWmgwAvzL+JX47peUa95NiYEW78VlGjI6I6
|
||||
I1FO2IZ2XjldPx5dIzJND1kqt4xtlqRqAmLAV+gcci5V0OHTBlchUuqvZMxLpEtf
|
||||
z8sylwQRQdjGAEC3F7Sf43Xpqh1kNA5WTHPxsnja7eQlQMX5nUG6oLHr8Yl1Ucwb
|
||||
UTiVY6EI/qzBGkyuBavV7cHkOf6a+gdZKlDNNQIDAQABAoIBAFhdnQrqzWJNvPuT
|
||||
G+itd+O/XDriRFuI/VPGoHP0hnnWvVYgQzeFAbY+M3SPYuzRacXQp/D3hTiu791p
|
||||
xEq9UZnHQo92346Bdk+fc9ds/2IxpKMUX8aetUwUsck3EZzIinQfu3opVc9ZB+5h
|
||||
IHtWzYGOzMhub8wpiOo56lClb2MtkqQNCTk9rfFlBkSzbmMvEL5bYLpTzBE7o0os
|
||||
SCVsBxfv9KV5rSdidXw9vEK6IW3XPVyFeF+tNyzZgrJWwJcfX4k8Q6LzsGXk7Hoy
|
||||
hd0WcYH151x9duQk0ttOwOna0vh+52qXY6qcLM6zFJ9qdibeJv73bZsX6dV0+aSP
|
||||
4RRuQsECgYEA2PybW/eXzc/ka2AuSp/ZQqQsOKc9fA+NK5iuTSz6XsJYOjqeYN1v
|
||||
TDBHyRC8oO8xbtth/HX3X1p7uf7p5OZOXQVuwfFIN33DCpyN8+JkvSNEv6OlCkRt
|
||||
vVERQ9Dl7KuwoT3RljIS6pyl9AXlc7LQKz0MEfjzCX7VSQMWboOzRf8CgYEAyJO6
|
||||
5Nt4RxU8f8vy4WR9WSmt8pM951+sIpCK1luRprHi/4QM3vA0JLoE0dJsyvFFZ6N+
|
||||
kwyWsIfM4iy8tybu71mb/EDiKE0jvcMJlSkI9pIIoN0HSWNOUql8m2vn6u02f9Xx
|
||||
CKdikz93Y7aH5E0AEvpqw3TToI16QFZX7GwPtMsCgYAJfguB23P9ofGZLOz5gMKt
|
||||
Yqc4l0BeVAPV+2jsoWIWkSPw8C2LiURcLeSGDEBkPfKIqfpAZBy9RCUTfu5WgCi/
|
||||
cwRkYZzKKKtGpJClMas8hvVz+MG4kEPIu2oo8FOOpfglJaIskuY280FjSnq+M/1d
|
||||
Vt9XTe+745uLBSKPFR3bmwKBgAX68Z2VNZbY+T7OM+Woe1xHM9qBrVzSq200Zg9S
|
||||
F5uiviPkKgYTn1pg+XfQEFJUsz8Nzt5Ph8anpeIwd0f2rzUPtOjmfle5RRGJWSXL
|
||||
XWsMm5lAPdFgVpt8VizEINwOSouxM0iQxQ2i3MpqTM7vxMrMEJbXSuAEl9qHOIPi
|
||||
DO3VAoGBAKgXW9YwBqlQOTKTqzaArtTuaqeCC4tfj1YDLzNLHbsrd8RJISIr5yYm
|
||||
Bxi8GuhJJBUKDLAz1FBjHjgG3tGthvcOqAl+QcKdI366jLWcYJRoQ8dVszyBz3ja
|
||||
x7rRPopS3OWgd3DcXAjjcFLazkme4eqlotMrgd1V/G6kr7NB3g0N
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-j0tb393g.pem
Normal file
27
s464953-key-j0tb393g.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAw0nTNXfCTSf2LYYsDgAlQIKrI4BdZvOtvLhGE1FJtJsbdeQl
|
||||
bqzOP1UWaXSWDbM4EOQDyxL2z0NZjWHHJcDSzSBr8R1lTjWPSxiRoCv/o5wBJjyS
|
||||
iwPt0YJSmgOE+X6yR31pamuxmy6LFAYjO4RNzdZNmP0GdN16RDqIaPpUTjvUWCXZ
|
||||
/q7jufyGNc63KWOFIdhcKBZlxaP6lu/b2oaxYALkZ0QbxYS8YoH9z4+EGTdmXj6g
|
||||
KBaG1go8OROBjE2BowcddV0fPTqHoZdH08bfCjRD9krZkD0k3qUh4WbDt47GxFgJ
|
||||
emldIdhh1crXTiTlcuzG0FNiEkfOMSmdAMafhQIDAQABAoIBAHiWWYkmjiA+kNDD
|
||||
jOiIRnhzN2IQnZw41As4bmz3QN/49xfw7PxOUHzi+ZfcmduT0wb7BSycZTLOj7mx
|
||||
qtsxGfn4Dy8vy6JjiDwCy8lv4ccRSdRmisa0gmFga8kWa0H0bfmfAzzniyAbuV1/
|
||||
/Ll/lNuJfRj/BMGdESaYTiskiHJVgz6hiOX6BRG4NVMy+LPt2dGZ/DicudTYNdix
|
||||
3jJraYkJOoaeDSHntSrPMNKi9ncLdILf0wvgq/0xUD0UiBSilxrgxuZQotDQS1nD
|
||||
Fwt2nlAtYJggUQSyLhfslY0lc2VJ0T+ne0eTQ9VQuW2gN+U9nFuu73XCWdl8D/3S
|
||||
aiIEcQECgYEA4iNf8E3BGgeBlXMghAkW+lFhxB7PEzv6m/NUf9ymsGCeIVXGDzMx
|
||||
i0y9CiUaJLBUujYz+eevwL2MZ5fpplzUQsykt3PXOmC6e2cI3KuncaRkSYGswiBv
|
||||
qmrjPSUAhwOBlEHwrCHHbpm4889RPazR1vEBANQfpxFLdW0JZPmrWTUCgYEA3ROR
|
||||
w7AM0Ql3lMJTB7yiytY1X8Tmv0JEKYU3+PNDMhWeR9bPEuxTZmjqdGAd6lDPKnv5
|
||||
ABuWBGHW5DOeK8vivT8kuLR5tzQvGXMe2S/7VSoFalcOiPgYQlcLuJhMBNCcrg8q
|
||||
PK9OyWg8fJXjKJaWBq4um0SI2v00DoMuQ0kIRxECgYA9KhBC8OTv42PbRl5fGA5M
|
||||
+kIVR7f+ndR05eXPB6FWR2u93HNLnS8jXEgtPEfL8J2aGBsK1u2kliApzN73jlgj
|
||||
ETLkI8LtGUiXJBEzjoIlrK8rapWNlDRfxbVczmtMGVis/wDXrfNBKPbriwGQSvQe
|
||||
zOTWkolVKMpeInXOB/GemQKBgQC7cc9Cm2+SgbNpZwZdZfylfNBOfjWjbr06cyDN
|
||||
LP0JZzkH8kMq6UOhbk10FNboiFHO1MR/6ePdnVNFs9plif6atQIeta8Jve49ZtV+
|
||||
EufIAtQKoPvK+IghH4rpnf++iV5/Wo5WW9GyhXXbsH6lOGDGE0OjFI3xF4Te1S0R
|
||||
kce58QKBgQC7ylE4gWM5GKnKwhiA/lvRG8lWpPGGejAZPe094xsJNktH/JCLCQQD
|
||||
jwXrhnzcM1msk1rSLe+toMLKs9yNfcM7hhE02+0Y4RdEqfl0zHJWdPET9dAPebwB
|
||||
t/tmZXlP9eAgrCAFhN60ZpHrj9zsCEThz8PrKq7aCvrswWsNzYoNIw==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-k0xsnd7v.pem
Normal file
27
s464953-key-k0xsnd7v.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAs0tz+GS/6o4wIyU6FW5A/Vo7WwLwTjZrx/lW/l6jugOWa5Sf
|
||||
tge/7QlzQXROunXyoKQU4LrtJvLqGUvUG5v029m/o/ZcsOtTyv2zlkc35zhisJt5
|
||||
rBpSRagVRjX9EM375l9vOGUFQJaCcNSglxahDtHm3q0szQuIf1bU8ftfP+FqshRJ
|
||||
cZ96S7jAPJ/iqNrWtDVPfZOkO+XlfYFNDjXA5I+6h8CdCeBsuel112f9EIyTVBev
|
||||
9G/WhipcKdDmbkI01b3fKmIRERZqV8HZRvx7e61koBc17J80tyXIjzBG6hJqywlZ
|
||||
Uqk27dBhdPS6WZ/Txbwpxqi645qAYwYvQkxfhwIDAQABAoIBAQCB613okxDiJRBK
|
||||
l1Ikb1UWgMjb5SA+fH7TVCEuh2N6idj4saSdYbY4TA3BU0ctJAShVORwB+OKwqDR
|
||||
nbngG71thbaxV/bImG2KfRYiAg9HM/uHX9Hl3Nja8rYfv0VWZPxwbZ0JL2KD78wr
|
||||
eFe5w8MHGyCBINmC5yWMqF37zpuxjC6jHRcgVy+lmNss8nwincF3CwstGRX1zMsD
|
||||
IISpcM3krSFh1BM1jzOJ7SZ8MHyDyUm+rmdO8q+LXhlevxxOQ4Hisn75uniSXEBr
|
||||
D1hsTls/M2U8nljbpXnISE1fugDEgkLTOpgpO0+yttQi54WEMZSeI7YYpChjb1BH
|
||||
mR3ZWcD5AoGBANifuogF/k0pZd+N7vi26JlGwNMAUKs68oOYDqoohnei7Dne8nKJ
|
||||
bTiZ8kIka/OuJcJXWlHC7wVVwcbiPwZkKY/MQqd9oPH0+t0rnSWOUf/Sav1yxpWK
|
||||
iDy1JQ6Gp5IdRg9Gk+rLXxUFIT19gXBj7dU/rddzo9ubijxsLdb4eA2zAoGBANPi
|
||||
qm6KiG11FFMwEfqPCxMXBHdFM7uX3YTGUaQOcmQI8F5aYlBK7cAYInRzX8hkch4q
|
||||
mQjXFasivVUDIGqVmS+GCYuK3wyX9HxwHcL2eib5rht4OgapT2WEKU9VqZTjuZBK
|
||||
OdMOO6R/wDraBjSTh5umBst7+JIGHBKc1uc0Z0TdAoGAR3PAQje/3tHF4Yxeg7lJ
|
||||
Va2J0s9qzGAgOBnC1IuTdwjNZHVOgUslNKNKzlhXJ0SM/eJ0Tz2+O4NC7IgaA9Cs
|
||||
CNt2LOr6WHTW/nbxWb7s+zX7xmfCavcL4wJZG8Z8pWx0fHtqNOsqDLPpd+/a7yh2
|
||||
/X0IqWViagCPA0kngZ3pc5MCgYA85rif/zeJZo6J/pYcU4MWYJZLBdwBvnvQTwRm
|
||||
SDS+5gbYx9fcRj0h6o30tLjCK4TVgN7tuIyk3N5YkgZ+PDOEgl05+5dy0jZWkg8r
|
||||
25Zun3NYt+zNv1pvzlXlVLTic7YBcCRAsqWX+ZQyFjqUYBcpOMZZNG/U4Oauvt/S
|
||||
IrDQDQKBgQDWgTtNUGF8z+lhidB0uWAWwBykw2e9Dh+ZIkr6GZXnoPkcMUOElJyW
|
||||
HX08CjCk0s6JOR+j4gyWLLZ6CxtOaLmZvUbJ2rTe+7JHV6fHkaCKYK17Vr/jbWvC
|
||||
KmRlIrdsAPk3tOOlGCwC+PkBtLIBS8vdN+JNaWIA4c1VM7nmwTbwVg==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-khqyy6zc.pem
Normal file
27
s464953-key-khqyy6zc.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA1cCCWVWiAYtU8HBVAHe5rtIQWFWhBZ7j8ydfNbQN6Z+QuRRQ
|
||||
AT1EK92QB0brYj3yEwildbILIKXIgBskBihoC6vtaO7U0VS9lXPqe+HthYCW/VNI
|
||||
H+K0f2HZFblYS/5D2rElqsZafNZdbGcvx0wbzttoHTvS73fY1Itu74C1rPnMZ2K3
|
||||
mK8MnKyngF70gCcjIeoH0BKpAT6YZId9YonI3GypVvzu/qZ6qUAFhU4vW0GWdfxz
|
||||
0JAaKbEyo6ZcN8bDl0LhTWLoWMBlFkp0rzLrekwAg3jNLogoCWmhAMTz3wv32CAB
|
||||
WmxaEs3rj4mQTrVAIr2VRfkCxJvyascuThf6fwIDAQABAoIBAQC+uAzV/sUVUaeQ
|
||||
/Pmq+ChyJrY0yvpoVHQZYZjfBu+e8yOjL8+Ou4aXCRLYm1ushY73krBnSlwJXkJ+
|
||||
ozjKUcU8HMQw62ByAoVB03J15IkUpD6Ue3mQEaxxN/IFIyH4dD9A4uyz6lWUq4Qi
|
||||
FBOaZHsvX68O3nD//9Q1GM/73MC9O2ayGsLTiY7J2gVTdIzNc47TYIRGXl9zqJM7
|
||||
Sb8coKeUMrlFbxJpci5UIV7c768NbsSpOGn4F88vDcE6EKlJHUDbK+lJjl+4iQRD
|
||||
FkQZsXqIa6w+jTmg/QkOGWu1pw+yy00Q5uuJRx94oFPtsIp6mV5nGlSVdtHsq5tx
|
||||
GBk8jsBZAoGBAPtrFKwKNlwNGIu9pzT8relWYSEkHkPn+lF/nAy43KjYMNF6FxEF
|
||||
cB+zjop99zFQM8IP0djleI69Y7ZGy6yRGm5bqw8pjV7Va9XSXA9WFUvMhbsyyuE7
|
||||
ISgpm8R/L7t6m9iJ5eLg2bz72/1q+araJuqZz/oE1vO59y4evyrDhh5lAoGBANml
|
||||
tQyyp0c+TG6aLtcNwgeZD1y7aiqpbYEkrzliou/LT3sISUKW4rYdpuzm41y96347
|
||||
h4NQjBxEjR9OV4RkxQrK9nun91jGGFQuI9GuLlDavUnoGNxeZ6/Im5Tg3qeALTXh
|
||||
uEjy5Cq/adSwfNw8GCkPy85GnMnHykfmL1gCwMUTAoGBAKCGeihuTM7xPZ7bdIsM
|
||||
Wi4FjPaQDRLmZpjqlUQ6NAlKH8Ff5qJjindzOauLSe0efC2H1EBcI2Ff4u5avWht
|
||||
LScROGLx8OV/9t4K9eSE3gwLhcdEYuzzx/PQvTf0zREy85aKVVFKpztWw9tGFirU
|
||||
JszbcEL+HBB5yCyWTRCMznFRAoGAPtKzCOBEoq7b1w0QOikRean3ojfCtF/FaQKS
|
||||
xYiwKXFRFt1UcDEnbZPvi/A1bp6va/d47TGBz+MFrSSq5F9F9RCSxyy7m9dKTHop
|
||||
Aqw5WENbYgrpqiph2X6ZUgb6nfTEmAn4bK4XqDMqNCdhUxzRiICzvm3pceEGhWxu
|
||||
/AOHaxsCgYBB6sWdB7c+JwcYCAn7/BZ7Kzz8TV+qkH2VQxJimseK5UODzv1uSpnm
|
||||
LpO7Y7CFP+F1e+8hEW+OA8pbs2F7BWwiEamUbPod1cNeEnyNyq7ABi8tI2o54iqD
|
||||
ymQh82LMDPtS7abSlildUfCq0fuICZ2xAy7CMTkz8jxS+n2Ko3+I4g==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-l8tvp0sn.pem
Normal file
27
s464953-key-l8tvp0sn.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA1VdXrdfb6RTczfV1NBlhbGa0lEnvZLwXdz33nZ9Qr8olJHYi
|
||||
zWJ2NnVTB+EpldK7MQUfWHsB3HIJqCj88URexxKhwU+JwB9VNo8gTapEuuiK/vRv
|
||||
A0Z6mXr80KDu2TPiOcDkmE/w6O7yD6Ch1nMrDr/FSG2dtmBu+BQvjrghBAot7sZB
|
||||
/YSPT8e+sKe92cprscRZZF9sGb/lxIIv52LJnn9TjZQWapM297TYYXpFZjnqMqXM
|
||||
9ci50x8Ur4QhhhTrRQ+fI5mjcI187WLygvYRSLtU4ZYBmQ7/tAYRMbMB+RkpC9I8
|
||||
vdE9p+ceoXXcQZzkQ0Bf/V8+isiPjHnqEF25RQIDAQABAoIBAQDIuhs25+hzTzvJ
|
||||
VO9ni5HMin3RIBdr8kUp3lYCKgmivFFiEvz/vWp4Jr9upH2aB+I0ZxttBp9jqLBJ
|
||||
VfdXkfqS14b1+T4kU9a7NMMyD8gHDBDrfVSOAlwL2FnSefkAx/5MVJ9AZ8bFgzyh
|
||||
U4Ox4D5c7DZUxT4kgGsoYuW0JK57utgwPZZIKzW5levV+9Uz6gJYnz3uNZO2zr9Z
|
||||
BJGCjwHceYd73b+eVq7Gi9QNkYP8BqrTTsZEm0bKwJRrXwIy0Ue0VHxn0GyVYp7E
|
||||
UGrh6pkl3xsL0vUrkFm+KYz9QvHBbIj+OMlEjGzJCqqvARCIZLqqiyvZ7KH2RWWL
|
||||
1lAYfqkBAoGBAPDimBoQZ4EOibe7uPCGk/Z8Gyn/TS1ew2R7V5Hxnw52C2MoIji/
|
||||
7zSsLQX3YrD0tggVi4gAoB0a1wRPRPRwE0t72a6fjRHR6TcXz7FQJSeSGG1YEcFH
|
||||
OIVDhRLX1ma/EeJU/gikcd4R3cR2MXXDKb5rvmNFCKz8yQbtQX3FlCnlAoGBAOK6
|
||||
TVUybouGHrFbrfs39ucv00n+HszMfwQhc7WFK1R7LncajUs+yZXQsmYf+FYWWaYj
|
||||
ihNSqhJpQMTOu7g1gMd6PseN4pXljjGP3SQcTLHQPiXkLj/gn7Ze65yiUR9uR7M1
|
||||
7c4HbioU5ahHoeXWCVFFcc1nNE0bSDJnQaxXNtvhAoGAWU/6izdn2P716uysTmnn
|
||||
dG1hePnSuK65DYl513/ZtHfqEvKvdZEcdNAdxWeK7QdecrLiUCPDOedYr51geK0R
|
||||
Slx6Qnefy2qj6Kxoclq/2+McMXaE5r+sYiS9s1XZhbD0RZGzuqqWGXtQWWZlQj+B
|
||||
O7whFBdldxYmxu2y6ZoXLE0CgYEApFougsrbDXL8vs5ZkRkhdrbZb/KxOv4mOMVT
|
||||
DktpfIUKyrXJpLjwAhTVrWgRab4r4F400gsDU/NOSxwdQcwu/OrlpVx52vUbnVvP
|
||||
D0UgZ2kwE+GTkSRwQhAOtW2IZsNXYFaAevAx8HlTfSfn+SatfGddtmrQo/BZ5oep
|
||||
OJfEIaECgYA+j3A9+xdWfmAP5BcjrgeWVPe6s1wo5cYQAj4sDJ3k/iKxz2X4qcz7
|
||||
Uu2OpAA59y9F45XUlfYHYjqrfHbwUqFU05BCxAEpZc2kxKZN53i2WOlPmbfT6LoY
|
||||
e0TVdqhWnAAnD0EDjBnGwZ0PUc+pY/Oy5ISvSyGfcycPE/0kiCn2/w==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-ledcih7j.pem
Normal file
27
s464953-key-ledcih7j.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAzRHYIyt8Bybm/4fJMI88oP9WIuKYOo4Liw+Bm/SzbhxagUs+
|
||||
JAgOMmxUtq1qdozWQYeEfVFYMW00LvEQYGUrob/PxGNN6HVM/ipGv7BUPEvGeAVl
|
||||
GHsj3LoI8llDpHapuPZBC0CuBNby25qNDfZ3xrDUELDz4BwvVti9XQGQYwkDk4hZ
|
||||
0Dy9RpIEmdJvZJJliEODk8S+8y6VS/lg4XDJfBAXcOFbDCX60BbMFkOHxVrVPoLA
|
||||
e9KuquGb6/y9OeEDaLLwkXFQoXHSbSdZFAAWZn2DhGx23+xflHb64XopdQDlen2e
|
||||
UM6gVvFduNaGbe/BlsHdjFwZJwnhbm+6I3wE7QIDAQABAoIBAHpfH589H7IU4Nuz
|
||||
Z7d2gjOAqyH+HeEzSmgdRLaP+1LF0Kw+/kH6HJ6yTosESPeda22HNOSjWgGErRMl
|
||||
/yPGu5a2I4GJ0L/a36r8B2P0ERA6F6Efdwh40xmwWg5kfhzyQq2BJadVXYK90gaB
|
||||
35JpdWg3tRSQw7cEmqs0gyuw9zxg3yNMVvy0vHBjJqrbLP3A0mAKLrTWqaDxMMhS
|
||||
EivQ0gQjRTQ4M+7KShJ/hpIodCoG4G4cUfFr2oW8PvAdqnVK1NjwRcu6WpVR0xAH
|
||||
6NcYdkipo1bcvenHHQR8HkAiCS9NiHpCp907/otkzbDpByaHYjiLC5Kf9Xqrf3SP
|
||||
94rzqnECgYEA6a9fCAxD0ryPJHjGeOmHRrLrXdgVNtg0hg89ucqPjjbhbyyBG666
|
||||
m560cxCmIjWRxoAgYEPxJhuND9fqVwUMKXUPJRYaFVtn8FUJMm4jBq63LDUuIigq
|
||||
eR+DtNcYEwCHBth+rBFW9pwUrHLwGK1zg/xUdtbzHxen4UR+vXZ5dvMCgYEA4Kby
|
||||
ZZRzSs9ZUJNn6/LZXsTRkgKOeK+GmnksR47jIYZzRsmrQ24VglpMlPjX7cELJ+Zj
|
||||
bEBhBfG2E+sJqcSFL5nLp7A7Mxs5qpJ7XCXrowVpGaSnozNdag9MBOSz4Kob7FrB
|
||||
UlfzR1W3ytE7qCvL6dCywvhCuLAX3C/PcdsZTJ8CgYBf8wblCgwrEgsAIar0aIaH
|
||||
y90CSj/jpgBi7w0cJQSukvAbMr3MPQEX9qEHAdYFA9PYGjGw9RSl3fgcgj4Q/tyQ
|
||||
hSTzyFBrZn2V24SMNVaiXsiNGUTY938A/qSYcxzKaJQIhon0YqY/WbTPXd4hc86T
|
||||
ad7QcM+ge5kN0I7tgiC7awKBgQCnkV91DYoB3zALvifiAz7IRZ7cfjOvKZ4JUyEI
|
||||
LziUJSmPP5YTseUxWhGNfR/zI+8iT+MRN+Qm/uiFaufGTePaYala50UBFemppaGG
|
||||
VnKxIrQGgJ7aSNIA7nARplXV2o0Be6B/v0KjjviMvAz3n9N2EEmGzI9YG2Fwx+jA
|
||||
UGFKmQKBgQDD+JyUTj4dmDRG9pp6w3qL3OmrHaBB26EVavh1QpX7/C/+Yrgzi3j2
|
||||
sH3fpfPrLFtjCXUTswvj2aAAJCAbqJ+vUAGZ2FGTWjpvU4WwnC5NhwOKlvv/xBfz
|
||||
NIFsHTtKdxd0qrqdUdnnNiR+89djaeLXJHHUL5P4jX2wy+jCBKQzRw==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-qepbiky3.pem
Normal file
27
s464953-key-qepbiky3.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAvl9b2EkiWa3DWejmptbjFCkfHYOGxusby5IxKZ6eNcBvRFAg
|
||||
pniappLhh56ZIv8roINt9NbI9ws6XBGdfmswYpClsygYmAWCEN9zPtNLxYRli1v+
|
||||
znClcRGfhuJFIjjnxzP2SGYw8rMSc/2fmEyhRWMEURbyYWwYnRIa0vW1ReIGbxd9
|
||||
dSpWXGFREHD9bVudsGCSO0EfDCYOsQ5B0eR5LiRMR3DqKa9jOvqQHOOOOoPrzZHy
|
||||
wCFD7hA/mal4VDdvRBAtyJOPRtefMMhuoMnn/f111NKj0VYJ5nLuw/hdeLhGIWqH
|
||||
KGgftmWvd9U3iihg1MpUedmE26zsgXLDK4PudwIDAQABAoIBAQCUAAKhRUolOgez
|
||||
cHNQpaLoW4fLJCO1pbZ4LvF1j9EjrLVUAI9BnGVutqYLD2uyX3qFUWg8fnbCSMJY
|
||||
LYGpdJ+rIRUREUz9ctrJT06DOzWfGuzuyNhxmfWkz7Sb4nEox+C5Z1ZCtt+67yib
|
||||
cEOQ3ZJLJU2H1TUeNDF2e0rLUyZYaqYYBtcEHeLf6m4kI00rFdeABmbyC6Zmavtg
|
||||
m1BLUnkYQEzEg6qnV1yS3FawZS06zQs/ZEEi3+znuAe91xZBIHT0Gu0Lbf8H2E6f
|
||||
xspE6/3tVW67fa8S6/zq50BQrXYh2AwQXjaB2LgjB1iSEUNVnNbgMWwGqC0N3kPb
|
||||
icLzs94RAoGBAOlrxvZQjeEaIDxkwtSproybvuv05RDuvGHdWskHsBwTcrkIEqaQ
|
||||
Z0PZWsUlRUn75sp5yEf6/TXaYs6hkLj0LQKPVWoQ2Ww0CIjN/GDUWMKKa/8Xqp6c
|
||||
mUx+lQMCYgBob/TbNpNXmRxKsuBJiFdp7GGfmFNdYvseOSXA62w5D8JNAoGBANDJ
|
||||
kWOvYl6UPO4hLUNpnHkHYJEeis0Y2ob0PxvxfhdzVurce7OzesUzLD2p461ofza/
|
||||
7aPcVrvJbiesAD9ZVZyBrk7Vzwv7RG2Uzd9flEDjhzF/BVaR/L5BY13NrXEyBCza
|
||||
tOhelbQf8O9FPj8++T0N+3yvJfS+B0m7i9bS/G3TAoGAfoVn0+036jKiFHo9TM4o
|
||||
iZiF9RnJ69Krk5RK+DpNj/pOrdKdYWFWR+WRmNip5P9ASrGWCMYX58/WzM+wRUA9
|
||||
AW01zAcUAt11XsngKZAQCGrFPQDT/6M8SMU3+eiZvETfomYL//N0T2yB5qaU22TT
|
||||
ttqt00oEM79fFIKsWP3Y9+UCgYB/vNLWylbExq0AhAvNUrAI3BqYrrb9BFeueYCi
|
||||
9/zNHCPxTTPhnc1fGQ/YKjjBv00VkhcySXxHJ9XdL753A5D9T9n1IZqrGe+jm4bZ
|
||||
QwDRMmNkRPJfJLIdNKQ2n7+doZwsVSKZiETPDzu5KAQNbdnPIN7cScxPEHQlCDlm
|
||||
FW+bQQKBgH3N5ixvDLCNW0ZGRvcll7k79Fk5+mtoQwskVBR7j0XTcM56JcKd3EOS
|
||||
ihWtL9EFNSOB1+zRObNanVyKj8GwK9hk6LQ+FF0vt5D0F0hHPUQzcRvaNkZJSd4B
|
||||
zmuJDtIkalehWZfkinjwyS7EzGyhveZesqnfcudXEmyOxXslaaY8
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-r9idbi5g.pem
Normal file
27
s464953-key-r9idbi5g.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAxmNQ+mVe2VjorQ99KNiTw7cE40EWKXuUN8qumH3HCleQIO/q
|
||||
WAO1uw5betiN0szPVnYYVK+B1AG/JYHqWdnaAhTnvaPpuu+yVEpVF9j5apL9R1Qp
|
||||
g6RpDOKqYf9rEd+o039xo3EEyHroZFtNeJnX0B4x7JmrAp0z2Yikqsvq0VMDUM/3
|
||||
elP2KF0CaIO48M+NqqQctwF5zbl0m1EqtZwWSHT+N4wzYSWPgjnE+JcDvyK0dW+U
|
||||
XCJsMejqMTzBkfZR1jqkx5zj64M12NYg4syUUBJVCAbFHtmAFbfzoL+jsuOhCSDP
|
||||
H+o1ztZY01m9jCOiHQxMgY70XUaI9RqOYFGj6wIDAQABAoIBABJMhOKjyQzpO4UD
|
||||
Abtrxq1ty0Ce90laQcCnrFUafOqCSyQOnSIDLZcUavG42dQQ2isSd4oQKjyA8L2n
|
||||
7xLcmlRI01tVrDB2/Y7y0EiD1fWzmzMiGzYuSxZKLgceBSU/6RWhEr1NpnBLjfX7
|
||||
yfiO0C49KsO1JOX31BmDlhS+/GjUQsVQuHur6yi1FYNn6I3jaapG1Em/DZfPrL09
|
||||
goEKZ+a97k4vrsUWOGbGRg3fP6yvKwsnB+c3cPZrL/X+gd9f3oGoenBViiSVkFwd
|
||||
QcyRQMShT3uqs9JD7WqQczv6pL5QdoDzs8mvTf8sQFBaWVm14JCbU0SRMh3pcW4t
|
||||
hEQzOckCgYEA6qtp1ZzLN2omFTkkVG6AUblo8qfBwQH4qUWAJC8Wz8UekZNtNFD8
|
||||
xqCv5BGEF8x6oqqec9c4zbYem0jQ/mn0VCOuNZo3H4O5IQ4/YJOQ6OvZT3F5BZ1+
|
||||
f5PBpaFtTCz4mqbr1CI9Pijye9kFNW6V5ZhS9PdIE0rBYhsSfNMFQz0CgYEA2Guo
|
||||
CTOc3jllzCyk+Uoyy2RFxR4Of3YG/FYv5e+M0OdJ2D686vUDlOBoryLmeXBa68qk
|
||||
9GGJWiNb7jei3TS5MrI13mTVVjU8rhvJyRVMIQrHOaLTuvmuBQSoLeDrko854vZV
|
||||
z9z6b/EBvbLb+f1Q/wc/l//80vcuaAr9QDCz1kcCgYEArIa1WnzZ0rXRpczK7uAG
|
||||
qw67H5tCEVoXrKsSGIgeJ0ZuwOw4XzwjewxsBCr0iGKmzqzNrbDPbD22pseUD1dq
|
||||
b+mDjJkCacL3+lt1MNWMthGfRI7SQNSXScghmFnj9xsg8uJBg0Zg7DBChdb5w1y4
|
||||
C4I/iyW58aUGI9BveSHTPqkCgYEAgOF7rB8kZ+JekPx1Mk/Rd/Y65mxDzfwHpPXe
|
||||
iFvjy/QwsaqK7pEClQIe1U0/W0phmtGO8kmzdg5gjLhtMLZZI6ulEM+TjEcf37+E
|
||||
p08biwHUKqqg1FQkIbDoRooPP7QzkMmJyMOcEFXB56o//duxBG7YnDhB45B3/lWt
|
||||
AzD9p7kCgYEAgW7edY6H1IDHEE+nsUcPO5kPb9IZdBohiQowMBld4HKaAUpq/+8s
|
||||
Frt2Qh1i/wQSp6f6eWcEO6nP5k5P98zafzvhgEmw43JY3+Ddf50VyxbwAFv1fv9F
|
||||
JpzjKwNnp56rM0gQPKhuK/mBYn8+hoqeY8pWaSkiVIv3g5nvLFw9Gyg=
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-splliwm2.pem
Normal file
27
s464953-key-splliwm2.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAxP2DwG+JTlQK+l10lw2M3+Hi/uTcMG/gjBUUOwdfYOYI/+5s
|
||||
yqaBjQm0F3X68uxicZjPPvLh6Fkz9xWoNQn+TwXmCF26SPV1aEKnuj6sQQ/qUY6l
|
||||
CxlyYJioIu60oIN9VjPW9AeuEvrOFB+0wgJOcWtaUMZMUiOgXzxw7Kgu4eTE0RmL
|
||||
xs6wirlbopmYgvIF84iCNWOxFRCgsIZ0fYJJ9nQFnNUVOMS9ls60Q+ePz22c5keH
|
||||
PHUIF/PpEp981H/a2Uk3epUIGWQ9s2VABG6FfoFBKvGztJoTHLXtNw34S7NqvgTv
|
||||
ZTAnkrNakmwmzO7Xm8XpgXOyVwLYnrMuibs/xQIDAQABAoIBAQCd3SxAgyHeC6vg
|
||||
iBRvGQTURgnLi0yJ5J5mpF3aEEZ3OOHtd/znShh4Flakln/NPXKG5pbvM2Wm9hWW
|
||||
5VwvZRrP6UI3YiVvYoX8T65qqt8QJNj7Ev1gr7vhfXUAyZsnJzjCZDjWx3DQ9P1B
|
||||
U0dgUsjaS9XM9Z0kFjjnGWDFxuILVAoMXXXb+6zDpQZHHPevFWcKdv8xQ3jahvEt
|
||||
GympPqvZLv7LZ96jCwhbzK0Nh8c3Awh7jhkvdctdMpUlhPaHq57mltjVlSNzpjZZ
|
||||
fF5HB0vgaymAZnkmbLF9fc8IErm3L0meiw9JAHwwGRsE4wj25Sat65tii6c7jbth
|
||||
PYn87VQBAoGBAOQz6rV3Lp2fBLkFkQNUZI+z1S2SVyFlhrdlXd7YRt/cVqRsHDCI
|
||||
mqnXr1kHYKjfr/R2s7qkc8QEK4OAiOJtd0Z3ahgSdBKXXnQ7LlNkzZBXu1DZ8Day
|
||||
fu8UiLyRLlc652aYqHlPPZ9OLX5NxssZAgMAH41HXXBiLFAKV0wWVnolAoGBANz8
|
||||
SxjyJchxuLhkKdne5pLpGliw6w31zt/0QdvubGfrRK+2wOCUWl/8oawjveaDcRMr
|
||||
z7/4rX3aUI4B9CauxfHXfY+SpI+cafRdfW2F+2k9bwyb9CUDK1zqHXQAhxBE45Cn
|
||||
gKiuVvUPWOxh+rpfWtimAuNkNLQs91VOedsRmS0hAoGBAKp5Vjblp788Ec0eKWxx
|
||||
WQY482Gt1sUuEOtkIDHfI2MMOPVvhceD5PZIF8fMSRser1VSb4VYYNrnupHsLVXp
|
||||
LJdJkcoVzvwsc/UkWMEXprDTuSz3Agn6YfS8REGJuzKS4Fa2Z/Tni0M8paOa+oyy
|
||||
S9xt9SQXUegojq3ka759WXC5AoGASdCQOSXxTvIFlLoIbLkS5bGtVkDKUyBvWMlb
|
||||
El6ioVep2tO9u4ZyZauaSUirDwuKwq+YtnQXZ3l7/ONULXOltPGZBFMkWsAReEme
|
||||
Mu5VG0MlC94wAAj9/AxLiEsA0oNgTBpXVIDflP3qYxMbUBO34bQaNOBs5l46w6jx
|
||||
9SX8t2ECgYAm47askV3eovPQWzsWObrA4+/V4YoLmzi3cFFc/8g1uJxOkJYdjlYp
|
||||
ZR8C2FChIupkMTCmQXuRVtNTi67mhpq9x4DDGqZwyV9F15q/2kFkuuG1qhlAhCHf
|
||||
YXIk/r0nLoB3a2mtTLBzMaNGZpgZCFHObkNLMBqWG5SG8r4NtOpPkA==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-su5viqwk.pem
Normal file
27
s464953-key-su5viqwk.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAuJHry0bWlAQHXY+Xn/HN/PWmP1bWnII+fEf34TPpL7Fq72CD
|
||||
1CaCKgEL+pTOsgch3TroJFEs3euDG9ly19xL0sZPVjX7At8/T05yHNguOm47zh1U
|
||||
eEpVkhYu29HUfoNyYuyUzqyXexaiia6SCk9XbV+bEkmev1FNp0A7Qu5xAIL8JB0x
|
||||
zI4oR55meOSGBQ890mCkSV071YV2YUHqkEEpTyfeeMr83bkTWLdbhLmYre+khbk2
|
||||
8MVzdrvt5Qk2+OlVxYocO904XgdGlLlRtM0JtiSGw397Mehzjn0xvejg7hlJmXX2
|
||||
ojRaGqirZh4q5CALLBwrZQOAyKVqJJybfDle3QIDAQABAoIBABHN8cMQOE7a/KLn
|
||||
4SaKuuY2BC2EAPvkDIcMojrVOR9irAAffVgPxuqqYy9u/2lpCrk+n3oxYnSd7W3Y
|
||||
Uh3EoIPaoXidiHNEeeT6mkNyDzOPwrElXyqjcRHAlhCaczcpEvW8ALbXK12yV0eU
|
||||
0X2xHavtVxYyh9/IxgbmSVExkzELR7aFPO/9ISSlOwTNpv+v7lriwgxVIiLTnqv5
|
||||
9F5Wd2Lgka3+23NRetd/5jceIHKMVHcI3cpYB7Rsv5Mkj8RVXtIYN+M9XUljSGiL
|
||||
Au5t69/z2xiKMov2QAvZqK65pG7ypOI4bFSZlHTdTzov2wf8/PFZKBo7MnyZA46U
|
||||
8jNv4YECgYEA3/7IqhexYjupKpFKrJ0cj6hXYvH7xgnKF+3QOgJ1idId2NZZ7fqu
|
||||
/Ms8RYlySGyCWSD3X2MhKycqztUPD8FjFlryDdX/C/KCz9fAF7PMreQw4N4PtPg9
|
||||
h+QSqzPS02JlAcS5ReQNTwoGA8AO52bc9ElcoiY2i4/VmtE0ODOZOJECgYEA0vEO
|
||||
F+UMBjKS2S4dDmX3dPRL82M86n/wHJ/2K6RwHmvz49cPu/L0yDLTiQXfv6qY/Im2
|
||||
4BbCkdQf0gxTxNzF21aMUFfjLGO4OQh6GSVUfeu3bqWlv6irKcdXJegEmAJ387tB
|
||||
FPaapmFO1F+4En+cIy6hBrgRCfaA7BezMCpVR40CgYAzTwVgEPVM7yWc3pMgXwy/
|
||||
y2vY+l0VzABC4vKjlxSdcUfs94y5+oZC2bsAoq9O76wcBnUjoG1kmSAxKJS+oymz
|
||||
YTm4+Z/meLKGMYGK7GCiJHcdy0AF0CcoDZJJLSHJ0ewZL5rQ66Awzrb5/PBtCR7r
|
||||
xjI14lL0PQpM4Eb56LfcQQKBgQCopSiLWgge/FgDYqbAWC1bR+VhFToikV66w/jg
|
||||
M3ugFtbKlapyrW+ej2Qn7JZSemYNoVygFBJC3MEEAe8HOSrGjY9ovJtXZfJnRqu3
|
||||
Zu0CL25b+/tkG8mcgU7fc3wYvACC0Hbb97z0wF9x04Uq5PND/YeoA4k72eSA3QHZ
|
||||
xD6iEQKBgFcdZTQBtPDpwxd0/FXg9Ak6tHCYoJ7ygGOOM0hjThxzEe6BeziTUyb4
|
||||
bZBPmS587kPCIhqvX1V5xRU5CsKDXDcsnP/dbvwU2jEUJeDYl04NdRR1D/mTp0XN
|
||||
6D5V3p2lLV/tBhfn3ISnC/H0yjjh7LLCkjs17SGfYdpUYHV3uiqt
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-t90y4hnf.pem
Normal file
27
s464953-key-t90y4hnf.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAm1TeLCK2I+MqTiG0ekJPjY5HISHHqxQZWtL4fB3Lgleyme77
|
||||
RgaUbo4S7juVhYSGhHGLKT30TR54vCatPsaSjzOLZXGezRaYktJiT8oHQHsxGNlW
|
||||
DPX5xWFmDNEwbbtEV11h86/liSUFMvnbYHU5Dxsns8fEFIrLIafTEcL5mAYlySYj
|
||||
QThYpG85dhGmXSreUXmFhmfc+AULFZzNEj22fzjXYoHgXaN7RknB0gXcHv1gZu9Y
|
||||
kX9eHSgDAZccx9SCcqNo7qvHqgJahltAhXCebZ2aSIYPHBOQZSLjXxWc/f5S9JKJ
|
||||
Bw+yb6wuV0HELamqtdvqNEH1s/5/9SOT5fo0CwIDAQABAoIBAEKLPRLTXAxLyVfn
|
||||
gJXPypzuEvLSseNMnQAX2XPyn7ibMVxY0TTSpMwn+VwuEoQ8nhQnQGLOs9ZF85tH
|
||||
RnjaQPcwMcunvUxHHd3oW02rUygAnqvyj7bFudchPsLG62RXEZQL4WawODlkrrGD
|
||||
8MOF9IfQLlYKgqn6O8OTTg0R5jOF48n270s/JWZCJHnNzQ78EnqBmUZEN1hkdxnS
|
||||
RItwMHdGgzqB1yJ6ttGoyrwEREr/jhDG+/rO9hlMXn6VoheO5AiqthZySefflWav
|
||||
Qu2kX7F0T6XCwe+PZhXdsxSMCnZbeQU/PkvzOUdkVlrUh7ujqhTM/eruaiB/4gUA
|
||||
MXSfC4ECgYEAzD8wWSdp+q2yvJ7Kimu6SrK5KNLHy3pPvDIa2g6PVaEhyWiAjbhH
|
||||
4u6GEmh9D0/s2U0N3YhNVRpu9qVq1iu2ZqSK5htUfdk/qCe18fH3BewODPjoqGWj
|
||||
aEb8GmAAG/fqmct1qeSrn1jUKYwzopXIAG5XByAHxGCqyRExmoU3h5ECgYEAwrC0
|
||||
mgv1+GASpadxEBUZd5X1+oTj9x2tlKO9x2oNdoAleY+a91o+g8TbY4F4KnC2Nlkd
|
||||
SdrP6oRuytQhLpmg5wiSjySGcaj98+0siDG8N/u+TLMNoTF74sWr3UqEWk37qDsX
|
||||
XlIxQdwJGD2Wu8wUPJo/PIKXAV/IQeD4hEtGC9sCgYEAgwlvPWOaDKfv6i9+BjyD
|
||||
MnVjcZt5b0Qzb6w9qfR5ZRiRkqQnBcVa6W7aOWksAuzmKavT33MZGiZxVnBeELXO
|
||||
uh+KtYKHPI5q1rlTc7wnHXeKtCvlKFS896PDDjDVIRx3OOBdxvfcW8kjpNw8LG0n
|
||||
+Y7Q6tNT6FuUdpc/WcFqFOECgYBX7fTzahmCPunNFU20JMNmxjzdE23eKvI9oqJQ
|
||||
0S4ZahEC0P/9XS3E14D6dPvvtw4kh6T5uTCUS5G6W4pNAKeyEKYYrjdmWBuyMlkd
|
||||
fdDzO+ibvXaXacD5D6vqewBBxNy3A1EvkVGb3CPjZdWRJb+yCzwqORS4Uykfz9qN
|
||||
7W1KZwKBgQDC4iqQIRHklDHrtD1W1DGbQSDpc/WXzPQPMSNtJWPHmZJiQPdvuHXI
|
||||
RZbM1PX6/odPZCBfWAf3vW0txPLt6LhcS/DqvxD8i7IHF7l28HVH4NASuCrbYgfO
|
||||
ga28YQuqLyzi3yeRGCqxgepChyWrzS2/M7DNMk/DXrfJzpUKc+uDww==
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-tbsg1uv1.pem
Normal file
27
s464953-key-tbsg1uv1.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpgIBAAKCAQEAxta9kSUu71gvcGeahqfwRgca9tlyb1afX0iJI6ZfNgZ8uVGN
|
||||
y/Y1J6O2/fg7hCIaJ9nXA1znk4jY34nP0KZhfjH/pvn0/gmtBDalW+XSxDy3YXmt
|
||||
3ocel2IBdSODupVjIcy+ywToGZfFkgtONFciIMDbknarLQ6eROIAWrfvqvmyy+mO
|
||||
8DHhy/Lgv3DfXp9fJtRxod1kPS7o9+2zU0Hdpvpxw41ShB6FYWI+yNTWNgLx80Rn
|
||||
F4oFeH2Cy4ZD5uDFJU5TI4jh64sD4u1V9xH5tZoVWg+mRsz01deeJSBuPahqNudw
|
||||
1aQYKA+tsfJIvuObHTXEwb8x9dSGmaSFFDF1tQIDAQABAoIBAQCC4Ju8Ks5e6hun
|
||||
j/oNQgMMBOdBrdT95fVW4UarOXoX9GMqE70SkEdihQcQ2dBK46t1qZQ1+XPQD1Y4
|
||||
pNwtySYIy14sCQCyKapBSLrE51w4oIJP3aiM/UEsgWzWLn8pU+UBPWQj+2HOXrDD
|
||||
tT9Pgj7LckXUfNmk+adBTcTP8ZwGW9XHstW04Dl4XfcU2tVgOQGvIpJyN8ZELEtD
|
||||
wEzxStWhuTAYvuxPkwkXjlFFJxGgg2L5Zdy4aGjRcGAA/E9n4Stb4kx8QEW6vXi2
|
||||
/0MXU5DNd25IrhLMCCqFii3ffKU2iq4bxugA8QLjvZ2xIvaks7SPQ7gsUDhslMqp
|
||||
t8599ggNAoGBAOOY8DurUJFgTGt0gU/SEUcTkPs07LKVozDQoBFhxjE1fkEUWHHJ
|
||||
Wp1x5bBkZNnj15KJlzuUhsLxviVuEo7cW+CfQY5lbRiZyA15QjTVzTwyn4D7q6ef
|
||||
uZYa18QVnF/cYN3fXig1aF1NAdRDBitMfi7eRn+bWLc5b3DSsl2+AZVzAoGBAN+n
|
||||
DPjmJBH3qAEi4LwbBLD2CMEYfunOyzRz+wlzYu7LZqkb+zqfpeojv/3sjpFdUIIn
|
||||
tWgOBIRDvTClVe/gGeuiCJCM9zk7zvEXtMRDHApH+1WxZTz4llxaOdqby1yn7+6g
|
||||
tCBxmvB7ZcSA5O98SwGnryyOkVKejG+R+6FDlb43AoGBALpvKTp3lsO/ElpjURnF
|
||||
hgmm6XgdXlbbZJY0Dyqt4N+mZgmBVQHAYs3d4ryfQE2L6aZLtupDPDCsPYoDpIgJ
|
||||
0ekqC1VNmBQyxEDlN2p4SGorPaU2guIIYMmoq14gJbwQlfipZEOjnB3xWrI5RPBq
|
||||
9GIICc+1vPI5xiOxNBK99iYpAoGBAJ/QELbyTKgCHaziLVB8xfdld4/zXwzXVeDf
|
||||
V2zDZNhZw7vnYLfdSINslE5v8NfypAq9MSVvjs6sUM4n9qZ3rk3v9MrF0Aq3sAIa
|
||||
/HKZubmnAfOT1VGiGF9ZoamSVdiZsBsF/nCIfTyGEIw/xldSq449MjFWloVBAfzf
|
||||
hb0QPDo1AoGBAJMEtgOdHKREJH/cWPKL5/JBWVm6PXfg7tuHHoKxRfejWf24cF6W
|
||||
yfK+r8LP1GvlwKw+32G3ZrEASm121wOTTkwZwh9O3AdubKxt/SCZjbfXCz7R5qyy
|
||||
JZfxsivXNRVQTQAFouxXP2gSxDaWDZrZ/6EjXbYjtDJJJTNrDaT4/iFY
|
||||
-----END RSA PRIVATE KEY-----
|
27
s464953-key-vasuwhem.pem
Normal file
27
s464953-key-vasuwhem.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEA13KDw3LQC0RRnmnxLza4vOF6R3jnNj9TRuOeMcZxS/UnfU1A
|
||||
izzmsVhnehU7B2TmsCfgz95TQav0MfRpVP9uiqQ5Y3yDm9yA6D0MptmmrYp53y7y
|
||||
WnElag3Ezfz9z4QgBCO/WHr36DEYWNWtJNtGyGgsnfJi1SOQHkrhZu2qqvbegAqf
|
||||
b7Wx04/A0igXpecIwoMZiY9Nh1GxmM/8/AY0Eevuse+JT6lo9LSM6N5EeYRQ3Egu
|
||||
wKRBWvkEGbZaCS0uQcXSz3j9/38apRsY8q0UQIolirrtCqTD2WbZVLFsNOTfREp9
|
||||
xtMyhI1zmLu2GwHgXrCuh6Dpgvbuv1V40kkbIQIDAQABAoIBACbz3GDU/EpdMsiK
|
||||
bQHVSfdUaPBNKriDIIJbmvly4H8UNuyPsBC8lRURX7wR5JdEpfTJcPsEPldMSJ1T
|
||||
jEvC1vCYGowjMgRXDLNwfj4YcetEcx5n9Ydml5YiISgBCr6fK86zy9+qc/H2FmnR
|
||||
UDmur5CCTTbNYRMaF+9yKGicpdO887cUafJVfenf8/2Fa4k9ZHE/Z+BNSqCbsZGW
|
||||
U4zdCE+RZkuky4a3YbnIBkHLPmgh/Id1V+jwgM6lrK2JI35gotWG3gio/xy3EbKq
|
||||
mAmphu2XYOZZ3JefRP9wNAoeVmo+GLlubRd4/0YHj7/PzxtWX/WpQHEjHxseRBHv
|
||||
w5VqqQECgYEA7A8iI7PyfUWu1cL0Ye0ylSf+LRi5uMyJt5I/3hvP7la2bdXZfGJE
|
||||
ShEi46S7H1ugGMOjx9ReX/sy11+Pq9iJt40IinIds4C9HUnKJkUO2NAeBxnNJ8iI
|
||||
2/hsUyQVidw8yhizrAyfWk8vTOftM1CY2aQJ6ej8hZgpqaSjjznifpECgYEA6aWk
|
||||
xaZ40DCtOEmoI5denvkWpeJuSb15kUyWcq2kq9MRQLaDQtfFKvZ1E6HqJWk97mQt
|
||||
Pc1Y1WbOl/4PaTcNbsB0st3tsVeVaMMJVUdevkydq64er5lwsVqGbdsAQBmwHtwO
|
||||
oWCJ/W8DlkB4HQxyawqQgzDVFUprHQs6rwqUO5ECgYAcEdycZDx0ewHEN2956Yu3
|
||||
Qs8tq6ACAohpxMFFdwctry/4NZKsAL9gE1OTwDXkD7Ak4baq/2zNewBbrehWpeQS
|
||||
aHnYhKNVgfx67BhWnqWaUH0RmRbVITps9chjxomtH/w2h+NtlP6p7XqRaY7CKFZU
|
||||
ovXu056bgDGME6DDWj29kQKBgFr9KOfX5qCc9DhBZvtFTZH3Svya63xID3moK8bJ
|
||||
HKHVdpiO+xsi0CPlCr70hSzAiV+3H2878uZYPQgv5myBBfgldszZZGF1zDeaDJ5r
|
||||
RtgxGg3rpwOXa62FpWhOqxBLcKzz4bay08ogW3M99AjL+hr5aEHO2IyMCJ6s6tOT
|
||||
+RohAoGBAOwC968H3Vd0kY59Dfb10lGFkAsgQEHc9q1daUl3NMKls6/EjeWxBoZc
|
||||
/mtuKogXt2HTDmbOhvZZ9uIQJimUfVUmyQOtjx9JyrLucm3q8jnchx7vLGg3qsXs
|
||||
6zQFFm9//0mGsyO6QC0AUuKLM4yg3TUmvR3o/4DL2yZlEHTM7N5U
|
||||
-----END RSA PRIVATE KEY-----
|
0
s464953-key-yi5mu86o.pem
Normal file
0
s464953-key-yi5mu86o.pem
Normal file
27
s464953-key-yw7re7qc.pem
Normal file
27
s464953-key-yw7re7qc.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAu7oGBhh0Uf9eIhn3ZboPMDxMkka/9sitM8YQinrshuA+WpoA
|
||||
NsQFSJOKgI/hFMg4Z9VExGISFT1vH30F0zkUy5r4YRh8Cxa66E0Y2kh/alQqA88I
|
||||
F6AaJQ6DxNYSaC8G7PUSwGG+uKLKUP50bjrA067Jr8hgPcbSUqz4y7Mg4gkDEnVU
|
||||
UrAgjWTgBevrl3wh9yhwvRvXJnQEyeSDJAY2CUx7GovFFW9ofUgvbu2mlx1hcPxD
|
||||
7PZQNq52V7UXVaxmlihoIjlypjT7gP4DN0mBvhazgwJYTwGyNy4IixYrAF9b+/BC
|
||||
EPVSnVAmz4P49ZiSRspDnA4ExV2I9fhniYgtzQIDAQABAoIBACOLeIKE9NllyfQZ
|
||||
CI/5Z9DRSgpUXRqkKq9n7E/cMJblNMlA6ZN1EC8KyKnJFGwz8QIwDoJEs3nUFQtY
|
||||
R9cTss1OfYMc+Le8yQ0dM/x4x69hWkc4VybqCKlFk0uc4QVbCiupx7Ankc4x/K7T
|
||||
T0Zj14j9SnD/NsHbuI0w9TbUpwBFM2RRIG/qDig15/7gQpy3a8vbLbaWGiI1W5DQ
|
||||
xhoe0KVuCsvKdj6yzMW6u+G+lx5bApUaPSafZvTv5Z2KuJX/KWwc6hAZO8zRtjmG
|
||||
u+uV7Wp6aVIXgK1hjNq0rNpZVwq6hdaHOFzqo/aLsT8D1YtpPvLfpoZ47/zhE8br
|
||||
e1hI270CgYEA6RLqy2NMufc/XpAs2ZMNakfsiTr4jEJy1JbU7pjsoCvMHiwL4HD0
|
||||
GONUrnN5WoSJT2JxUOt5ArcR6QHiQwbcD9d7TBw+QIlBuUGzFTbppNT3f7qiyR/d
|
||||
5vBVxFsStSGqOnChxmPnhl3UhcdVSGTaw51arH5Z64qIupclUacoKz8CgYEAzjE1
|
||||
O/FBZpS+CoLCPMN3o8qRy/OGcm6rrkmfj14LmluJpFYOzDaK4IR8P62GOkUUFQZ1
|
||||
nMZE+Gmfbc2jAYOxtwp27lPFhKH71wxBJEskM00ujic2we/SMmGSEiiqSefVxuTh
|
||||
s87TUFGP5GVDniiAXPdn2ILdSZyDjQjftKi1n/MCgYEAyIanDb/sZl9L3Q8MF1GG
|
||||
jDc/Ub4z03DkHPV8U5+sjg3AewEIYtyrlrIXzFO7R96ZyHv45FcDcQuS1DbztRk0
|
||||
wkhxY0U1Zg7xRfM5oXnyQQedvP4VShcpsqR6FgsJKF/Ddq4q8WZI7vjRfRvHyxZC
|
||||
hWRfe+LleFpjUq3xxLOdQr8CgYAkNaYImcyHbDWXePENZLI89FT4QRLqQ58oo0s/
|
||||
DR/ygoLAdlBw8l8fIIUFVb7NutXU/2ZmGrd//GSADu3CVVM/Nro+Dj4QlbW5RTCn
|
||||
Y/6+d55mXmKSWkBKkrHpOHT3N5xmKkmsnvSjFT+0t0fRnYE1UklNT2X3CGJdwSIw
|
||||
ArSqmwKBgBOWq9Z+06IFSW3Y2ND0iEZCBF1Fo5LtAWB/IwpKsvjirlLqS8KFBtYX
|
||||
nGuMI59FK8sSdDILo/evp1IA8a06nVZm1HZGdGMYv1/EalriBkgi+cSmJp1z2LLo
|
||||
kq7Dq2rKWEH4VO/7VY5n3fZsbSvTebdP8iJLV+eGBuVYME0cP8Xb
|
||||
-----END RSA PRIVATE KEY-----
|
1171
tester.ipynb
Normal file
1171
tester.ipynb
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user