Loading
Loading
AWS (Amazon Web Services) is the world's largest cloud provider, offering over 200 cloud services.
Never use Root Account in code ā create an IAM User with minimum required permissions.
import json
from typing import List, Dict
# āāā Ł
ŲŲ§ŁŲ§Ų© AWS SDK (boto3) āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
class AWSSession:
"""ŁŁ
Ų«ŁŁ boto3.Session"""
def __init__(self, region: str = "us-east-1"):
self.region = region
self._account_id = "123456789012"
def get_client(self, service: str):
return AWSClient(service, self.region)
def get_identity(self) -> dict:
return {
"Account": self._account_id,
"Arn": "arn:aws:iam::" + self._account_id + ":root",
"UserId": self._account_id,
}
class AWSClient:
_RESOURCES: Dict[str, List[str]] = {
"s3": ["ai-dataset-bucket", "ml-models-prod", "logs-archive"],
"bedrock": ["claude-3-haiku", "claude-3-sonnet", "amazon-titan"],
"lambda": ["chat-handler", "embed-function", "process-doc"],
}
_FREE_TIER = {
"ec2": "750 Ų³Ų§Ų¹Ų©/Ų“ŁŲ± (t2.micro)",
"s3": "5 GB + 20,000 GET + 2,000 PUT",
"lambda": "1,000,000 Ų§Ų³ŲŖŲÆŲ¹Ų§Ų”/Ų“ŁŲ±",
"dynamodb": "25 GB ŲŖŲ®Ų²ŁŁ",
"bedrock": "Ł
ŲÆŁŁŲ¹ ŲØŲ§ŁŲ§Ų³ŲŖŲ®ŲÆŲ§Ł
(pay-per-token)",
}
def __init__(self, service: str, region: str):
self.service = service
self.region = region
def list_resources(self) -> List[str]:
return self._RESOURCES.get(self.service, [])
def get_free_tier(self) -> dict:
return self._FREE_TIER
# āāā Ų§ŁŲ§ŲŖŲµŲ§Ł ŲØŁ AWS āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print("š Ų„ŁŲ“Ų§Ų” Ų¬ŁŲ³Ų© AWS (boto3)...")
session = AWSSession(region="us-east-1")
identity = session.get_identity()
print(f"ā
Ł
تص٠ب٠AWS!")
print(f" Account : {identity['Account']}")
print(f" ARN : {identity['Arn']}")
print(f" Region : {session.region}")
# āāā Ų§Ų³ŲŖŲ¹Ų±Ų§Ų¶ Ų§ŁŲ®ŲÆŁ
Ų§ŲŖ āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print(f"\nš¦ Ų§ŁŲ®ŲÆŁ
Ų§ŲŖ Ų§ŁŁ
ŲŖŲ§ŲŲ©:")
for svc in ["s3", "bedrock", "lambda"]:
client = session.get_client(svc)
resources = client.list_resources()
print(f" {svc.upper():<10} ({len(resources)} Ł
ŁŲ§Ų±ŲÆ)")
for r in resources:
print(f" ⢠{r}")
# āāā Free Tier āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print(f"\nš ŲŲÆŁŲÆ AWS Free Tier:")
any_client = session.get_client("s3")
for svc, limit in any_client.get_free_tier().items():
print(f" {svc:<12} ā {limit}")
# āāā Ų£ŁŲ§Ł
Ų± CLI Ų§ŁŲ£Ų³Ų§Ų³ŁŲ© āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
print(f"\nš» Ų£ŁŲ§Ł
Ų± AWS CLI ŁŁŲØŲÆŲ”:")
commands = [
("ŲŖŲ«ŲØŁŲŖ Ų§ŁŁ
ŁŲŖŲØŲ§ŲŖ", "pip install boto3 awscli"),
("Ų„Ų¹ŲÆŲ§ŲÆ Ų§ŁŁ
ŁŲ§ŲŖŁŲ", "aws configure"),
("Ų§Ų®ŲŖŲØŲ§Ų± Ų§ŁŲ§ŲŖŲµŲ§Ł", "aws sts get-caller-identity"),
("ŁŲ§Ų¦Ł
Ų© S3", "aws s3 ls"),
("ŁŲ§Ų¦Ł
Ų© Lambda", "aws lambda list-functions --region us-east-1"),
]
for desc, cmd in commands:
print(f" # {desc}")
print(f" $ {cmd}")
print()
print("ā
AWS Ų¬Ų§ŁŲ² ŁŁŲ§Ų³ŲŖŲ®ŲÆŲ§Ł
!")