我正在尝试使用 Amazon S3/Lambda 自动调整图像大小。问题是我在创建 Lambda 函数时无法连接到 Amazon S3 存储桶。
- 在 AWS Lambda 中创建新的空白函数
- 使用 Python 3.8
- 将权限设置为“使用现有角色”-> S3accessrole
我在 IAM 管理器控制台中检查了 S3 访问角色的策略和权限。我还将 AMAZON S3FULLACCESS 添加到了 S3accessrole。因此,此角色应该有权访问我帐户中的所有 S3 存储桶。
但是在创建函数时,没有与任何 S3 存储桶建立连接。此外,具有相同角色的 Amazon Cloudwatch 日志也不会出现在设计窗格中。例如,观看此 YT 视频:https://youtu.be/EyeduLX17Mc?t=120
在 2 分钟标记处,您可以看到该函数可以访问 CloudWatch Logs 和 Amazon S3。创建函数时会自动显示该信息。尽管此用户为此使用了另一个角色。我的设计页面仅显示橙色函数,并且无权访问 S3。为 S3 添加新触发器时,还会出现一条警告消息,提示未使用其他 S3 存储桶,这可能会导致问题。
所以我的问题是,我遗漏了什么?该函数具有正确的角色,可以访问我帐户中的所有 S3 存储桶。而且我的 S3 存储桶权限没有任何限制。
答案1
- 确保你已经
lambda.amazonaws.com
进入角色信任关系,否则你的 Lambda 无法假设它。 - 查看 Lambda 的CloudWatch 日志并查看会出现什么错误。
- 搜索云Trail查看 lambda 事件并查看它使用的角色,然后您就会获得任何见解。请注意,lambda 调用和日志进入 CloudTrail 之间可能会有长达 10 分钟的延迟。
- 如果是VPC-Lambda确保它确实可以到达 S3 端点。如果它仅用于调整 S3 中的图像大小,则可能根本不需要 lambda 中的 VPC 配置。
希望有帮助:)