You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从R语言访问AWS S3存储桶问题排查

解决R语言连接AWS S3时的InvalidAccessKeyId错误

从你给出的错误信息InvalidAccessKeyId和The AWS Access Key Id you provided does not exist in our records来看,核心问题是你提供的AWS访问密钥无效,以下是具体排查和解决步骤:

1. 检查密钥填写是否正确

你当前代码中的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY是空字符串,这是直接导致错误的原因。必须填入从AWS IAM控制台生成的有效密钥对。

2. 验证密钥的有效性

  • 登录AWS IAM控制台,找到对应的IAM用户,确认该用户的Access Key状态为Active(已删除或禁用的密钥会触发此错误)。
  • 检查密钥是否复制正确:密钥区分大小写,注意不要多带空格、换行符或遗漏字符。

3. 确认用户权限配置

即使密钥有效,IAM用户也需要具备访问目标S3桶的权限:

  • 至少需要s3:ListBucket权限才能使用get_bucket获取桶内容。可以先给用户附加AmazonS3ReadOnlyAccess策略做测试,之后再根据需求配置最小权限策略。

4. 验证环境变量设置

  • 用Sys.getenv("AWS_ACCESS_KEY_ID")和Sys.getenv("AWS_SECRET_ACCESS_KEY")检查环境变量是否正确加载,确保变量名拼写无误(全大写,比如AWS_ACCESS_KEY_ID不能写错)。

修正后的示例代码

library(aws.s3)

# 替换为你的有效AWS密钥
Sys.setenv(
  "AWS_ACCESS_KEY_ID" = "你的Access Key ID",
  "AWS_SECRET_ACCESS_KEY" = "你的Secret Access Key",
  "AWS_DEFAULT_REGION" = "us-west-2"
)

bucket_name <- "datasci-intraday-shiny-app"
bucket_contents <- get_bucket(bucket = bucket_name, region = "us-west-2")

print(bucket_contents)

额外建议

如果你的代码运行在AWS EC2、ECS等服务上,更推荐使用IAM角色而非硬编码密钥——角色会自动注入权限,无需手动设置环境变量,安全性更高。

内容的提问来源于stack exchange,提问作者ATMA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:25:54