Joo*_*uur 4 amazon-s3 amazon-web-services aws-lambda serverless-framework
使用无服务器框架时,我在尝试为 lambda 的 S3 存储桶分配权限时遇到困难。
我有一个 lamba 函数,最终将 JSON 配置文件写入 S3 存储桶,我希望通过网络将其提供给应用程序。我最初单独设置了一个 S3 存储桶(不在 中serverless.yml),并且我的amba成功地在正确的 S3 存储桶中创建了文件,但当我将其部署到 AWS 时,出现“内部服务器错误”。我认为这是因为部署时设置的权限未授予它对存储桶的写入权限。
我有点不同意如何做到这一点。我已阅读此主题,例如,并尝试用serverless.yml以下内容补充我的内容:
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: eu-west-1
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:PutObject"
Resource:
Fn::Join:
- ""
- - "arn:aws:s3:::"
- Ref: arn:aws:s3:::com.joostschuur.quizdata
Run Code Online (Sandbox Code Playgroud)
在本例中,arn:aws:s3:::com.joostschuur.quizdata是我设置的手动创建的 S3 存储桶,并且希望我部署的 lambda 具有写入权限。但是,这会导致部署错误:
CloudFormation 模板无效:模板格式错误:模板的资源块中未解析的资源依赖项 [arn:aws:s3:::com.joostschuur.quizdata]
如果有一种方法可以将所有 S3 设置放入 serverless.yml 中(即指定存储桶,指定其中的文件应可通过网络访问等),我也很乐意这样做。
建议?
小智 6
在iamRoleStatements规范中有错误,应该是:
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:PutObject"
Resource: arn:aws:s3:::com.joostschuur.quizdata/*
Run Code Online (Sandbox Code Playgroud)
或者
iamRoleStatements:
- Effect: "Allow"
Action:
- "s3:PutObject"
Resource:
Fn::Join:
- ":"
- - "arn:aws:s3::"
- "com.joostschuur.quizdata/*"
Run Code Online (Sandbox Code Playgroud)
这个错误:
The CloudFormation template is invalid: Template format error: Unresolved resource dependencies [arn:aws:s3:::com.joostschuur.quizdata] in the Resources block of the template
Run Code Online (Sandbox Code Playgroud)
与以下内容有关:
- Ref: arn:aws:s3:::com.joostschuur.quizdata
Run Code Online (Sandbox Code Playgroud)
因为这不是对参数或变量的引用。
享受!
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |