【发布时间】:2019-06-28 06:26:11
【问题描述】:
我有 2 个用 NodeJS 和无服务器框架编写的 Lambda 函数 这些函数的 IAM 角色允许放置和获取对象:
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:ListBucket"
- "s3:GetObject"
- "s3:PutObject"
- "s3:GetBucketNotification"
- "s3:PutBucketNotification"
Resource:
- Fn::Join: [
"", [
"arn:aws:s3:::",
{
"Ref": "DataBucket"
},
"/*"
]
]
- Fn::Join: [
"", [
"arn:aws:s3:::",
{
"Ref": "DataBucket"
},
]
]
一个函数将文件放置到 S3 并正常工作,下一个函数被调用(通过 S3 事件)并且由于访问被拒绝而无法读取此文件。
在我更改 dataBucketName 资源名称之前它工作正常:
resources:
Resources:
DataBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: ${self:custom.dataBucketName}
谁能告诉我问题出在哪里以及如何开始调试?
【问题讨论】:
-
仅供参考,避免使用复杂的多行 Fn::Join 语句会更简单,只需使用 "arn:aws:s3:::${self:custom.dataBucketName}/* "
标签: amazon-web-services amazon-s3 permissions aws-lambda serverless-framework