将 ECS 与 Fargate 一起使用时找不到 s3 的访问凭证
Posted
技术标签:
【中文标题】将 ECS 与 Fargate 一起使用时找不到 s3 的访问凭证【英文标题】:Access credentials for s3 not found when using ECS with Fargate 【发布时间】:2021-05-15 04:44:12 【问题描述】:我有一个运行 zeppelin 的 ECS 服务,我已将 zeppelin 配置为访问将笔记本保存在 s3 存储桶中。
我创建了一个存储桶,并确保存储桶和 ECS 具有相同的角色。 s3 存储桶为同一角色启用了读写策略。
当我的应用程序运行时出现以下错误
Caused By Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain - error - when trying to load model from S3
有没有办法通过 Fargate 使用 ECS 中的角色/配置文件来启用 s3 访问
【问题讨论】:
您可以选择AWS PrivateLink 吗?也可以参考thisAWS上的博客 无法将 IAM 角色分配给 S3 存储桶,因此“我已创建存储桶并确保存储桶和 ECS 具有相同角色”的说法毫无意义。 【参考方案1】:创建 ECS 任务时,您指定“任务执行角色”以授予 ECS 部署任务所需的权限,例如访问 ECR 存储库以加载映像的权限。您还可以指定授予任务访问 AWS 资源的权限的“任务角色”。例如,如果您的任务中运行的应用程序需要访问 S3,您可以将其指定为“任务角色”。
听起来您没有为 ECS 任务指定任务角色,这就是应用程序找不到任何 AWS 凭证的原因。
【讨论】:
以上是关于将 ECS 与 Fargate 一起使用时找不到 s3 的访问凭证的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 awsvpc 网络类型与 ECS Fargate 上同一任务中的另一个容器通信