cloud
aws

test tool:
browser: main purpose of the address bar
is to type https://example.com and send a GET request
curl: curl
curl
--output
<./cv.pdf>
Computing:
AWS Lambda
is used to host and execute a function in response to events, without managing servers.
Lambda 把传统服务的那套“始终运行+监听端口+请求分发”的模型全部外包给了 AWS 平台,而自己只保留“收到事件就执行逻辑并返回结果”这一最小计算单元。
aws配置可以监听SQS,http API等trigger。
配置Lambda Package的时候需要指明handler。
RequestHandler借口不一定要显式实现。只要参数签名是 Lambda 支持的形式,例如:(InputStream, OutputStream[, Context])
,就可以不实现接口,直接生效。
new lambda.Function(this, 'Calculator', {
code: LambdaAsset.fromBrazil({
brazilPackage: BrazilPackage.fromString('OffshoreItemPartnerAdapterHandlerLambda-1.0'),
componentName: 'Calculator',
}),
handler: 'com.amazon.offshoreitempartneradapterhandlerlambda.lambda.calculator.Calculator::add',
memorySize: 512,
timeout: cdk.Duration.seconds(30),
runtime: lambda.Runtime.JAVA_17
});
AWS Batch
:可以控制运行环境和资源细节
不同于Lambda有默认的Queue和Log权限,Batch一定要手动配置Role。
- 每个子任务传不同参数:使用
$AWS_BATCH_JOB_ARRAY_INDEX
+ 外部参数列表(S3、DynamoDB等)
- 所有子任务共享相同参数:
containerOverrides.parameters
Storage:
AWS S3
: object storage service
S3: Object(data & metadata)
in Bucket
- Resource based Policy:
- Access Control List (ACL): XML: Bucket or Object
- Bucket Policy: JSON
- User Policy: JSON
IAM
: Create Users/Groups/Roles & attach access policy(deny by default)
使用 S3 to host 文件/网站
https://aws.amazon.com/getting-started/hands-on/backup-files-to-amazon-s3/?nc1=h_ls
- Create a bucket
- Upload object to the bucket
- Update public access setting
ECR
(Elastic Container Registry):存储容器
ECS
(Elastic Container Service):运行容器
ECS
运行在EC2
或者Fargate
上。
AWS EC2:
一个EC2实例是一个虚拟机
使用EC2 to host 后端
- Create a EC2 Instance
- Upload app code to EC2 instance
- Run app
- Update Security Group inbound rule: ip and port
Elastic Beanstalk
Elastic Beanstalk 是建立在 EC2 之上的封装服务。它抽象了 EC2、负载均衡、自动伸缩等底层基础设施的复杂性。
- Elastic Beanstalk:托管服务,只能部署一个服务,AWS 自动管理环境(如 EC2、负载均衡)。
- EC2:完整虚拟机,可部署多个服务,用户需要自行配置和管理环境。
Connect to an EC2:
- ssh terminal
- EC2 Instance Connect (web browser)- auto config ssh
SSH:在VM预埋公钥,连接时Local出示私钥
✅ 云服务中 SSH 公钥登录的完整流程(简洁版)
- 你本地准备好身份凭证(SSH 密钥对)。
- 创建 VM 时,把你的“身份证副本”(公钥)交给云服务。
- 云服务在创建 VM 的同时,把这个公钥配置进 VM 内部的信任列表。
- 当你用私钥尝试登录 VM,VM 会向你发起一个挑战,让你签名证明身份。
- VM 用它保存的公钥验证你的签名。如果匹配成功,允许登录。
🧱 门卫例子(云服务版)
- 你在盖房子前把身份证复印件交给开发商。
- 开发商在门卫室登记好你的信息。
- 你来访时,门卫核对你持有的真身份证是否和复印件一致。
- 一致 → 放你进门;不一致 → 拒绝进入。
Private Network:
An Amazon EC2 instance is launched within a specific subnet of a Virtual Private Cloud (VPC).
- Virtual Private Cloud (Private Network) (
VPC
) - Subnet (Private/Public)
- Region - Availability Zone
When you create your AWS account, AWS automatically provides you with a default VPC
in each
AWS region
available in your account. This default VPC includes a public subnet with internet access in every
Availability Zone
within the region.
A VPC
cannot span multiple Regions; it can only exist in a single Region
. Therefore, you cannot have the same VPC across Regions; this is not allowed.
Imagine a VPC in the "us-east-1" region. This VPC could have subnets
within availability zones "us-east-1a", "us-east-1b", and "us-east-1c".
默认账户在每个az都有一个subnet。

Public Subnet 是网络结构的设置,是否“对外可见”还取决于 EC2 是否有公网 IP。
一个有公网IP的EC2被外网访问的条件:
- ec2 Security Group Inbound&Outbound Rules允许访问。
- Subnet Route Table正确配置。例如:0.0.0.0/0 → igw-xxxxxxx,表示能访问公网。
VPC通信
不同VPC可以使用peering connection通信。
- 在两个VPC之间建立Peering Connection(两者不能有CIDR重合)
- Subnet Route Table正确配置。(对方IP→Peering Connection)
Subnet通信
Subnet
分类:PRIVATE_WITH_EGRESS
,PRIVATE_ISOLATED
,PUBLIC
访问ECR
要求使用PRIVATE_WITH_EGRESS
若 VPC 仅含 Private Subnet,无法访问公网。
若需访问公网,需新增 Public Subnet 并部署 NAT Gateway。
Private Subnet 通过 VPC 路由访问 Public Subnet 中的 NAT Gateway,由其代理访问公网。
[Private Subnet] --(VPC 内路由)--> [NAT Gateway in Public Subnet] --> [Internet]
IAM
iam.
Role
iam.PolicyStatement
不会生成独立的资源,直接role.addToPolicy
附着在Role上。
AWS::IAM::ManagedPolicy
是独立资源,可以分配给不同role。
root aws account 可以创建iam user用于登陆。
Others
SQS
: Simple Queue Service
SES
: Simple Email Service
一个可以发邮件的aws lambda
https://aws.amazon.com/getting-started/hands-on/send-an-email-with-amazon-ses/?nc1=h_ls
- verify send email and receive email in SES console
- deploy lambda and trigger event
import boto3 import json def lambda_handler(event, context): # SES setting sender_email = "ziao@gmail.com" recipient_email = "ding@gmail.com" subject = "Hello from AWS Lambda via SES" body = "This is a test email sent using AWS Lambda and SES." ses_client = boto3.client('ses', region_name='ap-southeast-2') try: response = ses_client.send_email( Source=sender_email, Destination={'ToAddresses': [recipient_email]}, Message={'Subject': {'Data': subject}, 'Body': {'Text': {'Data': body}}} ) return {'statusCode': 200, 'body': json.dumps(f"Email sent successfully! Message ID: {response['MessageId']}")} except Exception as e: return {'statusCode': 500, 'body': json.dumps(f"Failed to send email: {str(e)}")}
ARN
: Amazon Resource Name
Bedrock
:host了各种模型,提供调用。
Event Bridge
:控制粒度是分钟。
azure
App Service
打包flask app到Azure App Service
- azure container registry
- push docker image to azure container registry
Web Apps 和 Elastic Beanstalk 都支持直接运行 Docker 容器,而无需额外的配置信息。你只需要将容器镜像上传到容器注册表,指定要使用的镜像,平台会自动为你处理基础设施配置、容器部署等任务。
Blob Storage
- create a storage account
- create a container
- upload object
一个上传文件到container的脚本:
from azure.storage.blob import BlobServiceClient import os connection_string = 'DefaultEndpointsProtocol=https;AccountName=ziaotest;AccountKey=[REDACTED];EndpointSuffix=core.windows.net' container_name = 'test' file_path = './requirements.txt' # 本地文件路径 blob_name = os.path.basename(file_path) # Blob 名称(默认与文件名相同) # 创建 BlobServiceClient 实例 blob_service_client = BlobServiceClient.from_connection_string(connection_string) container_client = blob_service_client.get_container_client(container_name) blob_client = container_client.get_blob_client(blob_name) with open(file_path, "rb") as data: blob_client.upload_blob(data, overwrite=True) # overwrite=True 会覆盖已存在的 Blob print(f" {file_path} uploaded to {container_name}!")
可以部署脚本吗
azure