通过 SAM 部署 Lambda 后,当我尝试从 S3 下载时,我在 Lambda 中得到了 403。我在 IAM 管理控制台中检查了 Lambda 的角色,我看到角色只有AWSLambdaBasicExecutionRole
. 但是,它还应该具有来自 SAM 模板的 S3 读/写策略。
这是我的 SAM 模板中的一个片段(部分内容已重命名):
MyFunction:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
Metadata:
DockerTag: my-tag
DockerContext: ./src/stuff
Dockerfile: Dockerfile
Policies:
- Version: '2012-10-17'
- S3ReadPolicy:
BucketName: !Ref MyBucket
- S3WritePolicy:
BucketName: !Ref MyBucket
S3ReadPolicy 和 S3WritePolicy 不应该是 Lambda 角色的一部分吗?
有什么我想念的吗?
我知道我可以手动添加所需的策略,但显然我希望尽可能多地通过 SAM 自动发生。
其他细节:我不确定它是否重要,但为了附加上下文,Lambda 是 Step Function 状态机的一部分。我正在使用 boto3 库发出从 S3 下载的请求。我{'Code': '403', 'Message': 'Forbidden'}
从 boto3 得到一个错误。