faktury
This commit is contained in:
parent
dc99e40e48
commit
bd3a1a312a
82
ec2.py
82
ec2.py
@ -1,5 +1,6 @@
|
|||||||
import boto3
|
import boto3
|
||||||
import base64
|
import base64
|
||||||
|
import os
|
||||||
|
|
||||||
REPOZYTORIUM = "https://git.wmi.amu.edu.pl/s464863/aws_faktury.git"
|
REPOZYTORIUM = "https://git.wmi.amu.edu.pl/s464863/aws_faktury.git"
|
||||||
PREFIX = "s464863"
|
PREFIX = "s464863"
|
||||||
@ -252,10 +253,78 @@ def create_js_scripts(ip):
|
|||||||
js_file.write(js_content)
|
js_file.write(js_content)
|
||||||
print(f"Generated scripts.js with ip: {ip}")
|
print(f"Generated scripts.js with ip: {ip}")
|
||||||
|
|
||||||
|
def create_s3_bucket(s3_client, bucket_name):
|
||||||
|
s3_client.create_bucket(
|
||||||
|
Bucket=bucket_name,
|
||||||
|
CreateBucketConfiguration={'LocationConstraint': REGION}
|
||||||
|
)
|
||||||
|
print(f"S3 bucket '{bucket_name}' created.")
|
||||||
|
|
||||||
|
s3_client.put_bucket_website(
|
||||||
|
Bucket=bucket_name,
|
||||||
|
WebsiteConfiguration={
|
||||||
|
'IndexDocument': {'Suffix': 'index.html'},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
print(f"Static website hosting configured for '{bucket_name}'.")
|
||||||
|
|
||||||
|
return bucket_name
|
||||||
|
|
||||||
|
def upload_files_to_s3(s3_client, bucket_name, folder_path):
|
||||||
|
for root, dirs, files in os.walk(folder_path):
|
||||||
|
for file in files:
|
||||||
|
file_path = os.path.join(root, file)
|
||||||
|
s3_key = os.path.relpath(file_path, folder_path) # Using relative path
|
||||||
|
s3_client.upload_file(file_path, bucket_name, s3_key)
|
||||||
|
print(f"Uploaded {file} to S3 bucket '{bucket_name}' at key '{s3_key}'.")
|
||||||
|
|
||||||
|
def create_cloudfront_distribution(cloudfront_client, bucket_name):
|
||||||
|
# Create CloudFront distribution for the S3 static website
|
||||||
|
response = cloudfront_client.create_distribution(
|
||||||
|
DistributionConfig={
|
||||||
|
'CallerReference': str(base64.b64encode(os.urandom(32))),
|
||||||
|
'Origins': {
|
||||||
|
'Items': [
|
||||||
|
{
|
||||||
|
'Id': bucket_name,
|
||||||
|
'DomainName': f'{bucket_name}.s3.amazonaws.com',
|
||||||
|
'S3OriginConfig': {
|
||||||
|
'OriginAccessIdentity': ''
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'Quantity': 1
|
||||||
|
},
|
||||||
|
'Enabled': True,
|
||||||
|
'DefaultCacheBehavior': {
|
||||||
|
'TargetOriginId': bucket_name,
|
||||||
|
'ViewerProtocolPolicy': 'redirect-to-https',
|
||||||
|
'AllowedMethods': {
|
||||||
|
'Items': ['GET', 'HEAD'],
|
||||||
|
'Quantity': 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'DefaultRootObject': 'index.html',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
distribution_id = response['Distribution']['Id']
|
||||||
|
distribution_domain = response['Distribution']['DomainName']
|
||||||
|
|
||||||
|
print(f"CloudFront distribution created with ID: {distribution_id}")
|
||||||
|
print(f"CloudFront URL: http://{distribution_domain}")
|
||||||
|
|
||||||
|
return distribution_domain
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Create EC2 client
|
# Create EC2 client
|
||||||
ec2_client = boto3.client('ec2', region_name=REGION)
|
ec2_client = boto3.client('ec2', region_name=REGION)
|
||||||
|
|
||||||
|
# Create S3 client
|
||||||
|
s3_client = boto3.client('s3', region_name=REGION)
|
||||||
|
|
||||||
|
# Create CloudFront client
|
||||||
|
cloudfront_client = boto3.client('cloudfront', region_name=REGION)
|
||||||
|
|
||||||
# Create VPC
|
# Create VPC
|
||||||
print("Creating VPC...")
|
print("Creating VPC...")
|
||||||
vpc_id = create_vpc(ec2_client)
|
vpc_id = create_vpc(ec2_client)
|
||||||
@ -288,5 +357,18 @@ def main():
|
|||||||
print("Running EC2 instance...")
|
print("Running EC2 instance...")
|
||||||
ec2_id = run_instance(ec2_client, launch_template_id, subnet)
|
ec2_id = run_instance(ec2_client, launch_template_id, subnet)
|
||||||
|
|
||||||
|
# Create S3 bucket
|
||||||
|
print("Creating S3 bucket...")
|
||||||
|
bucket_name = create_s3_bucket(s3_client, f"{PREFIX}-bucket")
|
||||||
|
|
||||||
|
# Upload files to S3
|
||||||
|
print("Uploading files to S3...")
|
||||||
|
upload_files_to_s3(s3_client, bucket_name, 'static')
|
||||||
|
|
||||||
|
# Create CloudFront distribution
|
||||||
|
print("Creating CloudFront distribution...")
|
||||||
|
distribution_domain = create_cloudfront_distribution(cloudfront_client, bucket_name)
|
||||||
|
print(f"Static website URL: http://{distribution_domain}")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
Loading…
Reference in New Issue
Block a user