个人简介:在这里,我们会分享有关云计算、人工智能、IoT、区块链等相关技术和前沿知识,与同行或爱好者们交流探讨,共同成长。 进入《亚马逊云科技中国开发者社区官网》查阅更多技术干货,帮助开发者学习成长、交流,链接全球资源,助力开发者成功。
TA关注的专栏 0
TA关注的收藏夹 0
TA关注的社区 5
TA参与的活动 0
芯创视界・嵌入式视频创作征集大赛
嵌入式工程的价值,藏在每一次硬件调试、代码迭代与项目落地之中。 让我们因热爱相聚,用镜头与一众开发者互通心得、彼此启发,记录下探索的每一步,分享思路与经验。 让更多人看见嵌入式开发的魅力,也让每一次创作成为推动技术传播与社区成长的力量。 
最近
文章
专栏
代码仓
资源
收藏
关注/订阅/互动
社区
帖子
问答
课程
视频
你好,我是亚马逊云开发者。关于区域选择,补充几个我们官方的建议:
1. 延迟优先
如果你的用户主要在中国大陆,建议使用北京区域(cn-north-1)或宁夏区域(cn-northwest-1)。面向海外用户,可以根据用户分布选择对应区域。
2. 服务可用性
并非所有服务在每个区域都可用。在做技术选型前,建议先在区域服务列表页面确认你需要的服务是否在目标区域已上线:
https://aws.amazon.com/cn/about-aws/global-infrastructure/regional-product-services/
3. 合规与数据驻留
中国区域(北京/宁夏)由光环新网和西云数据运营,数据不出境,满足中国数据安全法等法规要求。如果业务涉及欧洲用户数据,需要考虑 GDPR 合规,可选择欧洲区域。
4. 容灾架构
对于生产环境,建议至少使用同一区域内的多个可用区(AZ)来保障高可用。如果需要更高级别的容灾能力,可以考虑跨区域部署,搭配 Amazon Route 53 做全局流量调度。
如果你的场景比较特殊(比如跨国业务、混合云等),欢迎进一步描述需求,我们可以给出更具针对性的建议。
你好,我是亚马逊云开发者。关于亚马逊云科技的账单扣款机制,补充说明一下:
是的,亚马逊云科技采用按需付费、自动扣款模式。具体流程:
为避免意外费用,建议做好以下设置:
1. 设置预算警报
在 AWS Budgets 中设置月度预算上限,超过阈值时自动收到邮件/短信提醒:
2. 启用 AWS Cost Explorer
可视化查看每日/每月费用趋势,快速发现异常支出。
3. 使用免费套餐监控
如果你在免费套餐期内,可以在 Billing Dashboard 查看各服务的免费额度使用进度,避免超量产生费用。
4. 关闭不用的资源
常见的"意外扣费"来源:
有其他问题欢迎继续交流。
你好,我是亚马逊云开发者。关于 aws s3 cp 的分片上传机制,这里给出官方说明:
AWS CLI 的 aws s3 cp 命令会根据文件大小自动启用分片上传。默认阈值是 8MB——当文件超过这个大小时,CLI 会自动切换为 Multipart Upload 模式。
你可以通过 AWS CLI 配置文件(~/.aws/config)或命令行参数来调整:
[default]
s3 =
multipart_threshold = 100MB
multipart_chunksize = 50MB
max_concurrent_requests = 20
max_queue_size = 10000
aws configure set default.s3.multipart_threshold 100MB
aws configure set default.s3.multipart_chunksize 50MB
aws configure set default.s3.max_concurrent_requests 20
| 参数 | 默认值 | 说明 |
|---|---|---|
| multipart_threshold | 8MB | 超过此大小自动启用分片 |
| multipart_chunksize | 8MB | 每个分片的大小 |
| max_concurrent_requests | 10 | 并发上传线程数 |
| max_queue_size | 1000 | 待处理任务队列大小 |
需要注意:**aws s3 cp 本身不支持断点续传**。如果网络中断,重新执行命令会重新开始上传。
如果需要断点续传能力,建议使用 aws s3api 手动管理 Multipart Upload,或者使用我们提供的更高级工具:
网络中断可能产生未完成的分片上传(会持续占用存储空间),建议配置存储桶生命周期规则自动清理:
aws s3api put-bucket-lifecycle-configuration \
--bucket my-bucket \
--lifecycle-configuration '{
"Rules": [{
"ID": "AbortIncompleteMultipart",
"Status": "Enabled",
"Filter": {},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
}]
}'
希望能帮到你,有其他问题欢迎继续交流。
你好,我是亚马逊云开发者。关于 Python 大文件上传到 S3 并支持断点续传,分享一下官方推荐方案:
boto3 内置的 S3Transfer 已经封装了分片上传逻辑,你只需配置参数:
import boto3
from boto3.s3.transfer import TransferConfig
s3 = boto3.client('s3')
config = TransferConfig(
multipart_threshold=100 * 1024 * 1024, # 超过 100MB 自动分片
multipart_chunksize=50 * 1024 * 1024, # 每片 50MB
max_concurrency=10, # 并发数
use_threads=True
)
s3.upload_file(
'large_file.bin',
'my-bucket',
'large_file.bin',
Config=config
)
这种方式自动处理分片、重试、并发,适合大多数场景。
如果需要跨进程/跨会话恢复上传,需要手动管理 Upload ID:
import boto3
import json
import os
s3 = boto3.client('s3')
BUCKET = 'my-bucket'
KEY = 'large_file.bin'
FILE = 'large_file.bin'
PART_SIZE = 50 * 1024 * 1024
STATE_FILE = 'upload_state.json'
def load_state():
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
return json.load(f)
return None
def save_state(state):
with open(STATE_FILE, 'w') as f:
json.dump(state, f)
def upload_with_resume():
state = load_state()
if state:
upload_id = state['upload_id']
parts = state['parts']
start_part = len(parts) + 1
else:
resp = s3.create_multipart_upload(Bucket=BUCKET, Key=KEY)
upload_id = resp['UploadId']
parts = []
start_part = 1
file_size = os.path.getsize(FILE)
with open(FILE, 'rb') as f:
offset = (start_part - 1) * PART_SIZE
f.seek(offset)
part_number = start_part
while offset < file_size:
chunk = f.read(PART_SIZE)
resp = s3.upload_part(
Bucket=BUCKET, Key=KEY,
UploadId=upload_id,
PartNumber=part_number,
Body=chunk
)
parts.append({
'PartNumber': part_number,
'ETag': resp['ETag']
})
save_state({'upload_id': upload_id, 'parts': parts})
offset += PART_SIZE
part_number += 1
s3.complete_multipart_upload(
Bucket=BUCKET, Key=KEY,
UploadId=upload_id,
MultipartUpload={'Parts': parts}
)
os.remove(STATE_FILE)
建议给 S3 存储桶配置生命周期规则,自动清理未完成的分片上传:
{
"Rules": [{
"ID": "AbortIncompleteMultipart",
"Status": "Enabled",
"Filter": {},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
}]
}
有其他问题欢迎继续交流。
补充一个实用建议:如果你在生产环境调用 Claude 模型,可以考虑通过 Amazon Bedrock 来调用,而不是直接走 Anthropic 官方 API。Bedrock 托管了 Claude 全系列模型(Claude 3.5 Sonnet、Claude 3 Opus/Haiku 等),好处是:1)自动多 AZ 容灾,503 概率显著降低;2)按 token 计费无需管理 API Key 额度,用 IAM Role 鉴权更安全;3)支持 Provisioned Throughput 预留吞吐,避免突发流量被限流。调用方式和 Anthropic SDK 类似,Python 示例:client = boto3.client('bedrock-runtime'); response = client.invoke_model(modelId='anthropic.claude-3-5-sonnet-20241022-v2:0', body=json.dumps(payload))。文档参考:https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html
你好,我是亚马逊云开发者。这个问题问得很好,补充一些官方视角的说明。
正如你分析的,InvocationType: 'Event' 触发的异步调用是完全解耦的——Lambda 服务将事件放入内部队列后立即返回,下游函数在独立的执行上下文中运行,不会继承上游的 X-Ray Trace ID。这是 X-Ray 的设计预期行为,不是 Bug。
对于需要端到端追踪异步调用链的场景,我们推荐以下方案(按优先级排序):
方案一:使用 Step Functions(推荐)
Step Functions 原生支持 X-Ray 全链路追踪,即使编排多个异步 Lambda 也能在 Service Map 中看到完整调用链。配置方式:
{
"TracingConfiguration": {
"Enabled": true
}
}
官方文档:https://docs.aws.amazon.com/step-functions/latest/dg/concepts-xray-tracing.html
方案二:手动传播 Trace Context
如果你的场景不适合 Step Functions,可以手动将 Trace Header 注入 Payload,下游解析后恢复。Powertools 文档中有详细示例:
方案三:使用 AWS Distro for OpenTelemetry (ADOT)
对于更复杂的分布式追踪需求,推荐迁移到 OpenTelemetry。ADOT Lambda Layer 支持 W3C TraceContext 标准,配合 SQS/SNS 等消息服务可实现更灵活的上下文传播:
如果你的异步调用链经过 SQS 或 SNS,X-Ray 可以自动透传 Trace Header(通过 AWSTraceHeader 消息属性),无需手动传播。这种「Lambda → SQS → Lambda」的模式比直接异步 Invoke 更适合需要追踪的场景。
相关文档:https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sqs.html
希望对你有帮助!如果有进一步问题,欢迎继续提问。
补充几个我们亚马逊云科技的官方文档链接,帮你更好地排查 Bedrock 403 权限问题:
Bedrock 模型访问权限配置:首先确认你已经在 Bedrock 控制台开启了目标模型的访问权限(Model access),这是很多人忽略的第一步。文档参考:https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html
IAM 策略配置:确保调用方角色的 IAM 策略中包含 bedrock:InvokeModel 权限,并且 Resource 字段精确匹配模型 ARN。策略示例和说明见:https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html
跨账户访问:如果模型在另一个账户,需要配置资源策略。详细步骤见:https://docs.aws.amazon.com/bedrock/latest/userguide/cross-account-access.html
排查技巧:用 aws sts get-caller-identity 确认当前身份,再用 CloudTrail 看具体的 AccessDenied 事件,里面会告诉你是哪个策略拒绝了请求。CloudTrail 排查指南:https://docs.aws.amazon.com/bedrock/latest/userguide/logging-using-cloudtrail.html
常见踩坑点:即使 API 密钥没过期,如果对应 IAM 用户/角色没有显式 Allow bedrock:InvokeModel,或者请求的 Region 和模型所在 Region 不一致,都会报 403。
你好,这是一个在实际生产中很常见的安全问题。我们亚马逊云科技推荐以下分场景的凭证管理方案:
如果你的 Bash 脚本跑在亚马逊云科技的计算服务上,直接给实例/任务/函数绑定 IAM 角色即可,CLI 会自动从实例元数据服务获取临时凭证,无需任何硬编码:
# 无需配置任何凭证,CLI 自动通过 IMDSv2 获取
aws cloudwatch put-metric-data \
--namespace "MyApp/Prod" \
--metric-data MetricName=LatencyMs,Value=42,Unit=Milliseconds
IAM 角色策略只授予所需的最小权限:
{
"Version": "2012年10月17日",
"Statement": [{
"Effect": "Allow",
"Action": ["cloudwatch:PutMetricData"],
"Resource": "*",
"Condition": {
"StringEquals": {"cloudwatch:namespace": "MyApp/Prod"}
}
}]
}
文档参考:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html
# 在子 shell 中获取临时凭证,退出即销毁
(
CREDS=$(aws sts assume-role \
--role-arn "arn:aws:iam::TARGET_ACCOUNT:role/CloudWatchPutRole" \
--role-session-name "cw-script-$(date +%s)" \
--duration-seconds 900 \
--output json)
export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r '.Credentials.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r '.Credentials.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r '.Credentials.SessionToken')
aws cloudwatch put-metric-data --region us-east-1 \
--namespace "MyApp/Prod" \
--metric-data MetricName=LatencyMs,Value=42,Unit=Milliseconds
)
# 子 shell 结束,凭证自动清除
文档参考:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html
GitHub Actions、GitLab CI 等支持 OIDC,可以直接用联合身份换取临时凭证,完全不需要存储长期密钥。
文档参考:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html
set +x 避免 Bash trace 输出敏感信息)文档参考:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html
希望对你有帮助!
你好!我是亚马逊云开发者团队的。
先澄清一下:Kiro 是亚马逊云科技推出的 AI IDE(集成开发环境),基于 VS Code 架构构建,不是嵌入式开发板或单片机系统。看到你截图中的问题,这里提供几个常见的故障排查方向:
1. 提示"Too many requests"或请求过多
Kiro 底层调用 Amazon Bedrock 的 AI 模型服务,有并发请求配额限制。解决方法:
2. 登录/认证问题
~/.kiro 目录后重启3. 连接超时/网络问题
4. 版本问题
可以到 Kiro 官方社区反馈:https://kiro.dev/docs/
欢迎把具体的错误信息贴出来,我可以帮你进一步排查。
你好,我是亚马逊云开发者,来回答一下这个问题。
Amazon EC2 的密钥对(.pem 文件)本身没有密码。它是 SSH 非对称加密的私钥文件,创建实例时选择的密钥对用于免密登录,而非输入密码。
如果你在 SSH 连接时被要求输入密码,大概率是以下原因之一:
方法 A:使用 EC2 Instance Connect(推荐)
无需原始密钥,通过控制台直接连接:
前提是实例安装了 EC2 Instance Connect 组件且安全组放行了 SSH。
方法 B:使用 AWS Systems Manager Session Manager
如果实例安装了 SSM Agent 且配置了 IAM 角色,无需 SSH 密钥和开放 22 端口即可获得 Shell。
方法 C:通过卷挂载替换授权密钥
使用 AWS Systems Manager 的 AWSSupport-ResetAccess 运行手册自动重置。
希望对你有帮助,有更多问题欢迎继续交流。
你好!我是亚马逊云开发者团队的。针对 Remote SSH 端口被拒绝连接这个问题,补充一些我们亚马逊云科技 EC2 环境下的实战排查经验。
在 EC2 上遇到这个问题,除了上面提到的操作系统层面排查,平台侧有几个高频坑:
EC2 安全组默认不开放任何入方向端口。必须手动添加 SSH 规则:
检查路径:EC2 控制台 → 实例 → 安全 → 安全组 → 入站规则
文档:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-security-groups.html
VPC 子网关联的网络 ACL 是无状态的,入站和出站规则要同时配。如果自定义了 NACL,确认没有高优先级的 DENY 规则拦截 22 端口。
文档:https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/vpc-network-acls.html
EC2 新启动实例 cloud-init 初始化需要 30-60 秒,这段时间 sshd 可能还没起来,会报 Connection refused。建议等状态检查 2/2 通过后再连。
如果 SSH 端口始终不通,推荐两个方案绕过:
文档:https://docs.aws.amazon.com/zh_cn/systems-manager/latest/userguide/session-manager.html
sudo systemctl status sshd
sudo ss -tlnp | grep :22
sudo iptables -L INPUT -n | grep 22
如果你用的是 EC2 实例遇到这个问题,可以把安全组 ID 和 VPC ID 贴出来,帮你看看配置。
你好!我是亚马逊云开发者团队的。Kiro 提示"太多请求"这个问题,通常跟以下几个原因有关:
1. Kiro 使用的是 Amazon Bedrock 模型服务,有并发请求配额限制
Kiro IDE 底层调用 Amazon Bedrock 提供的大模型能力。如果你所在区域的服务负载较高,或者账号的免费额度已达上限,就会触发 rate limit 错误。这不是你本地发了太多请求,而是后端服务侧的配额控制。
2. 常见解决方法:
3. 如果持续出现该问题:
可以到 Kiro 官方 GitHub 仓库提 Issue:https://github.com/aws/kiro 或查看官方文档了解使用限制:https://docs.aws.amazon.com/kiro/latest/userguide/
Kiro 目前处于 Preview 阶段,免费使用额度是有上限的。如果频繁遇到限流,建议错峰使用(避开北美工作时间高峰)。
希望对你有帮助,有其他 Kiro 使用问题也欢迎继续交流!
补充几个我们亚马逊云科技官方推荐的优化方案和文档链接:
S3 Transfer Acceleration:利用全球 CloudFront 边缘节点加速跨区域传输,实测长距离场景下提速 50%-300%。启用方式和速度对比工具见:https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html
CLI 并行下载配置:aws s3 cp 默认并发数较低,建议调整为 max_concurrent_requests=50 + multipart_chunksize=64MB,详见:https://docs.aws.amazon.com/cli/latest/topic/s3-config.html
S3 Express One Zone:如果数据和计算在同一可用区,S3 Express One Zone 提供个位数毫秒延迟,适合 AI/ML 训练数据预加载:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html
VPC Gateway Endpoint:走内网直连 S3 避免 NAT 瓶颈,零额外费用:https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html
选对实例规格:网络密集型任务建议用网络优化实例(如 c5n/m5n 系列),基线带宽可达 100 Gbps。
如需针对具体场景(ETL、灾备、AI 预加载)进一步优化,欢迎参考我们的性能优化白皮书:https://docs.aws.amazon.com/whitepapers/latest/s3-optimizing-performance/s3-optimizing-performance.html
补充几个我们亚马逊云科技官方的排查步骤和文档:
回源失败常见原因:源站安全组/NACL 未放行 CloudFront IP 段,可查看最新 IP 列表:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html
检查源站协议配置:如果源站仅支持 HTTPS,需在 CloudFront Origin 设置中选择"HTTPS Only",并确保证书有效:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html
启用 CloudFront 标准日志(Standard Logs)分析具体错误码(502/503/504),定位是 DNS 解析、TCP 连接还是 TLS 握手阶段失败:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html
使用 CloudFront 内置的"Origin Connection Attempts"和"Origin Connection Timeout"配置做容错调整:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginKeepaliveTimeout
补充几个我们亚马逊云科技官方的关键信息:
API Gateway REST API 的硬性超时上限为 29 秒,无法调整。如果后端处理确实需要更长时间,推荐改用异步模式:https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-integration-async.html
常见解决方案对比:
冷启动优化:启用 Provisioned Concurrency 可消除冷启动延迟:https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html
排查工具:启用 X-Ray 追踪可精确定位耗时环节:https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html
补充几个我们亚马逊云科技官方的排查建议和文档:
优先检查设备端 keep-alive 设置,建议 30-1200 秒之间,IoT Core 默认 MQTT 连接空闲超时为 30 分钟:https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html
确认设备证书未过期且策略允许 iot:Connect 操作,可通过 IoT Core 控制台「测试」功能验证连接:https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html
如频繁断连,启用 CloudWatch Logs 查看 IoT Core 端的断连原因码(MQTT DISCONNECT reason code):https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html
对网络不稳定场景,建议实现指数退避重连逻辑,官方 Device SDK 已内置此能力:https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html
如设备量大,注意账户级别的连接速率限制(默认 500 连接/秒),可通过 Service Quotas 申请提升。
你好,我是亚马逊云开发者。这个问题在实际生产环境中确实很常见,分享几个排查思路:
你提到的关键点很对——安全组是有状态的(Stateful),网络 ACL 是无状态的(Stateless)。
第一步:确认 RDS 实例的 "Publicly Accessible" 设置
如果你需要从 VPC 外部连接 RDS,这个选项必须设为 Yes。在 RDS 控制台 → 实例详情 → "连接和安全"里可以看到。
第二步:检查子网路由表
RDS 所在子网的路由表必须有指向 Internet Gateway (IGW) 的路由(0.0.0.0/0 → igw-xxx),否则即使有公网 IP 也无法路由。
第三步:用 VPC Flow Logs 验证流量
开启 VPC Flow Logs 后可以看到实际的数据包是被 ACCEPT 还是 REJECT,以及是在哪一层被拦截的。这比猜测规则有效得多。
第四步:使用 VPC Reachability Analyzer
这个工具可以自动分析从源到目标的网络路径,告诉你具体是哪个组件(安全组、NACL、路由表、IGW)阻断了连接。
如果按上面的步骤排查后还有问题,可以贴一下 VPC Flow Logs 的日志片段,我帮你进一步分析。