[Mini Project] ژنراتور وبلاگ بدون سرور با استفاده از AWS Lambda ، API Gateway ، S3 و Amazon Bedrock
![[Mini Project] ژنراتور وبلاگ بدون سرور با استفاده از AWS Lambda ، API Gateway ، S3 و Amazon Bedrock [Mini Project] ژنراتور وبلاگ بدون سرور با استفاده از AWS Lambda ، API Gateway ، S3 و Amazon Bedrock](https://nabfollower.com/blog/wp-content/uploads/2025/05/Mini-Project-ژنراتور-وبلاگ-بدون-سرور-با-استفاده-از-AWS-780x470.png)
قبل از شروع ، این گزینه ها را نیز در نظر بگیرید:
برای مراحل اجرای مستقیم ، به repo github مراجعه کنید:
ژنراتور وبلاگ بدون سرور
در این آموزش ، ما با استفاده از خدمات AWS مانند Lambda ، API Gateway ، Amazon S3 و Amazon Bedrock (یا OpenAI) از طریق ایجاد یک ژنراتور وبلاگ بدون سرور قدم می زنیم. هدف از این پروژه ایجاد یک سیستم مقیاس پذیر و مقرون به صرفه است که محتوای دقیق وبلاگ را از یک موضوع خاص با استفاده از هوش مصنوعی تولید می کند و نتیجه را در یک مکان در دسترس عمومی ذخیره می کند.
این پروژه به گونه ای طراحی شده است که دوستانه مبتدی باشد و شما را گام به گام راهنمایی می کند. شما همچنین می توانید با AWS Bedrock ، Lambda ، API Gateway و S3 تجربه کنید-اجزای اساسی در معماری های مدرن بدون سرور و هوش مصنوعی.
پیش نیازهای
قبل از شروع ، اطمینان حاصل کنید که پیش نیازهای زیر را دارید:
حساب AWS: اگر قبلاً حساب AWS ثبت نام نکرده اید
(در زیر اگر با CLI کار کنید)
AWS CLI: رابط خط فرمان AWS (CLI) به شما امکان می دهد از طریق ترمینال با خدمات AWS ارتباط برقرار کنید. AWS CLI را برای ویندوز نصب کنید
پایتون 3.x: عملکرد لامبدا ما در پایتون نوشته خواهد شد. اطمینان حاصل کنید که Python 3.x از Python.org روی سیستم شما نصب شده است.
پستچی: برای آزمایش API ها ، Postman را در اینجا بارگیری و نصب کنید
اجرای گام به گام
مرحله 1: تنظیم بستر AWS
برای شروع کار با تولید وبلاگ ، اولین قدم درخواست مدل از AWS Bedrock است. Bedrock مدل های مختلفی از پیش آموزش داده شده را ارائه می دهد ، و می توانید مدل مناسب برای منطقه خود را انتخاب کنید. در این حالت ، اگرچه من در ابتدا یک مدل مبتنی بر چت مانند Llama را در نظر گرفتم ، اما من با استفاده از یک مدل موجود در منطقه خود برای تمرین به پایان رسیدم.
- رفتن به کنسول Bedrock AWSبشر
- از داشبورد بستر ، روی کلیک کنید ایجاد مدل جدیدبشر
- مدلی را انتخاب کنید که متناسب با مورد استفاده شما باشد ، با در نظر گرفتن در دسترس بودن منطقه. (می توانید از هر مدلی استفاده کنید که قابلیت تولید متن را فراهم کند).
- پس از انتخاب مدل ، توجه داشته باشید مدل arn (نام منابع آمازون) ، که بعداً در لامبدا برای درخواست مدل استفاده می شود.
مرحله 2: لامبدا را برای ادغام مدل آماده کنید
2.1 یک عملکرد لامبدا ایجاد کنید
اکنون ، ما باید یک عملکرد Lambda AWS را تنظیم کنیم که با مدل بستر تعامل داشته باشد. در اینجا مراحل است:
- رفتن به کنسول Lambda AWSبشر
- روی کلیک کنید ایجاد تابعبشر
- انتخاب کردن نویسنده از ابتدابشر
- برای زمان اجرا ، آخرین نسخه Python را انتخاب کنید (Python 3.12 انتخاب خوبی است).
- مجوزهای نقش لازم را انتخاب کنید (می توانید نقش جدیدی ایجاد کنید یا از یک موجود موجود با مجوزها برای تعامل با AWS Bedrock استفاده کنید).
import boto3
import botocore.config
import json
from datetime import datetime
def blog_generate_using_bedrock(blogtopic:str)->str:
prompt=f""" [INST]Human:Write a 200 words blog on he topic {blogtopic}
Assistant:[/INST]
"""
body={
"prompt":prompt,
"max_gen_len":512,
"temperature":0.5,
"top_p":0.9
}
try:
bedrock=boto3.client("bedrock-runtime",region_name="ap-south-1",config=botocore.config.Config(read_timeout=300,retries={'max_attempts':3}))
response=bedrock.invoke_model(body=json.dumps(body),modelId="meta.llama3-8b-instruct-v1:0")
response_content=response.get('body').read()
response_data=json.loads(response_content)
print(response_data)
blog_details=response_data['generation']
return blog_details
except Exception as e:
print(f"Error generating the blog:{e}")
return ""
def save_blog_details_s3(s3_key,s3_bucket,generate_blog):
s3=boto3.client('s3')
try:
s3.put_object(Bucket = s3_bucket, Key = s3_key, Body =generate_blog )
print("Code saved to s3")
except Exception as e:
print("Error when saving the code to s3")
def lambda_handler(event, context):
# TODO implement
event=json.loads(event['body'])
blogtopic=event['blog_topic']
generate_blog=blog_generate_using_bedrock(blogtopic=blogtopic)
if generate_blog:
curr_time=datetime.now().strftime('%H%M%S')
s3_key=f"blog-output/{curr_time}.txt"
s3_bucket="awsbedrockproject01"
save_blog_details_s3(s3_key,s3_bucket,generate_blog)
else:
print("No blog was generated ")
return{
'statusCode':200,
'body':json.dumps('Blog Generation is Completed')
}
2.2 جدیدترین را وارد کنید boto3
بسته بندی کردن
از آنجا که لامبدا شامل نمی شود boto3
بسته بندی به طور پیش فرض در محیط عملکرد ، ما باید آن را درج کنیم. شما می توانید:
-
گزینه 1: یک فایل زیپ را که حاوی جدیدترین است بارگذاری کنید
boto3
بسته بندی مستقیم به لامبدا. -
گزینه 2: یک لایه لامبدا برای
boto3
کتابخانه و آن را به عملکرد خود وصل کنید. این به شما امکان می دهد اندازه عملکرد را کوچکتر نگه دارید.
نحوه ایجاد و بارگذاری boto3
پرونده پستی
- در دستگاه محلی خود ، یک دایرکتوری جدید ایجاد کرده و نصب کنید
boto3
بسته آنجا:
mkdir my_lambda_package
cd my_lambda_package
pip install boto3 -t .
- دایرکتوری را در یک فایل زیپ فشرده کنید:
zip -r9 boto3-layer.zip .
- به کنسول Lambda خود بروید ، به عملکرد خود بروید و زیر لایه، روی کلیک کنید یک لایه اضافه کنیدبشر
- بارگذاری
boto3-layer.zip
پرونده
مرحله 3: Gateway API را تنظیم کنید
در مرحله بعد ، ما از API Gateway برای افشای API REST برای عملکرد Lambda خود استفاده خواهیم کرد. API Gateway درخواست های دریافتی را انجام می دهد و آنها را به لامبدا هدایت می کند.
3.1 یک API جدید ایجاد کنید
- رفتن به کنسول دروازه API و روی کلیک کنید ایجاد APIبشر
- انتخاب کردن API استراحت و کلیک کنید ساختبشر
- انتخاب کردن API جدید، آن را نامگذاری کنید (به عنوان مثال ،
BlogGenAPI
) ، و کلیک کنید ایجاد APIبشر
مرحله 4: سطل S3 را برای ذخیره وبلاگ پیکربندی کنید
در این مرحله ، ما یک سطل S3 را برای ذخیره وبلاگ های تولید شده تنظیم خواهیم کرد.
4.1 یک سطل S3 ایجاد کنید
- رفتن به کنسول S3بشر
- کلیک کردن ایجاد سطلبشر
- یک نام منحصر به فرد برای سطل خود انتخاب کنید (به عنوان مثال ،
my-blog-storage
). - کلیک کردن ایجاد کردنبشر
4.2 کد لامبدا را برای ادغام S3 به روز کنید
اکنون ، ما باید عملکرد Lambda را تغییر دهیم تا محتوای وبلاگ تولید شده در سطل S3 ذخیره شود. مراحل زیر را به عملکرد Lambda خود اضافه کنید:
- از
boto3
کتابخانه برای تعامل با S3. - پس از تولید محتوای وبلاگ ، آن را به عنوان یک فایل متنی در سطل S3 ذخیره کنید.
در اینجا یک قطعه کد ساده برای عملکرد Lambda برای ذخیره محتوا در S3 وجود دارد:
import boto3
import json
import uuid
s3_client = boto3.client('s3')
def lambda_handler(event, context):
# Generate blog content using Bedrock model
blog_content = generate_blog_content()
# Define the S3 bucket and file name
bucket_name = 'your-bucket-name'
file_name = f"blog-{str(uuid.uuid4())}.txt"
# Upload the blog content to S3
s3_client.put_object(Body=blog_content, Bucket=bucket_name, Key=file_name)
return {
'statusCode': 200,
'body': json.dumps({'message': 'Blog generated successfully!', 'file': file_name})
}
def generate_blog_content():
# Call Bedrock model to generate content (pseudo-code)
content = "Your generated blog content goes here."
return content
مرحله 5: API را با استفاده از reqbin (ابزار آنلاین رایگان) آزمایش کنید
نحوه تست:
به Reqbin بروید.
روش را انتخاب کنید: ارسال کنید.
وارد نقطه پایانی API شوید:
https://iplkor8qad.execute-api.ap-south-1.amazonaws.com/dev/blog_generation
نوع محتوا را انتخاب کنید: برنامه/json.
بدنه درخواست را اضافه کنید:
{
"blog_topic": "Benefits of Rhodendron tea"
}
روی ارسال و تأیید پاسخ کلیک کنید.
خواهید دید:
اکنون می توانید سطل S3 خود را برای وبلاگ تولید شده بررسی کنید:
خروجی
نمودار معماری
پایان
این وبلاگ شما را با استفاده از خدمات AWS مانند Bedrock ، Lambda ، API Gateway و S3 ، از طریق فرآیند کامل راه اندازی سیستم تولید وبلاگ AI-محور با استفاده از AWS راه اندازی می کند. با دنبال کردن این مراحل ، می توانید با استفاده از زیرساخت های قدرتمند AWS به راحتی محتوای وبلاگ را تولید و ذخیره کنید. این فقط یکی از بسیاری از امکانات برای ادغام AWS در برنامه های شما است ، و من شما را تشویق می کنم تا خدمات و قابلیت های AWS بیشتری را کشف کنید.
احساس راحتی کنید که در این پروژه مشارکت کنید و به بهبود آن کمک کنید! می توانید مخزن را در اینجا پیدا کنید.
با من ارتباط برقرار کنید:
مخزن پروژه:
مولد وبلاگ
با تشکر از خواندن – Shambhavi Chaukiyal