我一直在使用Serverless来玩S3存储桶,最近编写了以下代码来创建S3存储桶并将文件放入该存储桶:

const AWS = require("aws-sdk");let regionParams = { 'region': 'us-east-1' }
let s3 = new AWS.S3(regionParams);let s3BucketName = "marks-blog-bucket";console.log("Creating bucket: " + s3BucketName);
let bucketParams = { Bucket: s3BucketName, ACL: "public-read" };s3.createBucket(bucketParams).promise().then(console.log).catch(console.error);var putObjectParams = {Body: "<html><body><h1>Hello blog!</h1></body></html>",Bucket: s3BucketName,Key: "blog.html"};s3.putObject(putObjectParams).promise().then(console.log).catch(console.error);

当我尝试卷曲文件时,出现权限被拒绝的异常:

$ curl --head --silent https://s3.amazonaws.com/marks-blog-bucket/blog.html
HTTP/1.1 403 Forbidden
x-amz-request-id: 512FE36798C0BE4D
x-amz-id-2: O1ELGMJ0jjs11WCrNiVNF2z2ssRgtO4+M4H2QQB5025HjIpC54VId0eKZryYeBYN8Pvb8GsolTQ=
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Fri, 29 Sep 2017 05:42:03 GMT
Server: AmazonS3

我编写了以下代码,以尝试让无服务器创建存储桶策略,以使存储桶中的所有文件可公开访问:

无服务器

service: marks-blogframeworkVersion: ">=1.2.0 <2.0.0"provider:name: awsruntime: python3.6timeout: 180resources:Resources:S3BucketPermissions:Type: AWS::S3::BucketPolicyProperties:Bucket: marks-blog-bucketPolicyDocument:Statement:- Principal: "*"Action:- s3:GetObjectEffect: AllowSid: "AddPerm"Resource: arn:aws:s3:::marks-blog-bucket...

让我们尝试部署它:

./node_modules/serverless/bin/serverless deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (1.3 KB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
........
Serverless: Operation failed!Serverless Error ---------------------------------------An error occurred: S3BucketPermissions - Action does not apply to any resource(s) in statement.

天哪! 那没有达到我的预期。

我了解到此消息的意思是 :

某些服务不允许您为单个资源指定操作; 相反,您在Action或NotAction元素中列出的所有操作都将应用于该服务中的所有资源。 在这些情况下,请在Resource元素中使用通配符*。

要解决此问题,我们需要使用通配符*来指示s3:GetObject权限应应用于存储桶中的所有值,而不是存储桶本身。

拿2!

无服务器

service: marks-blogframeworkVersion: ">=1.2.0 <2.0.0"provider:name: awsruntime: python3.6timeout: 180resources:Resources:S3BucketPermissions:Type: AWS::S3::BucketPolicyProperties:Bucket: marks-blog-bucketPolicyDocument:Statement:- Principal: "*"Action:- s3:GetObjectEffect: AllowSid: "AddPerm"Resource: arn:aws:s3:::marks-blog-bucket/*...

让我们再次部署并尝试访问该文件:

$ curl --head --silent https://s3.amazonaws.com/marks-blog-bucket/blog.html
HTTP/1.1 200 OK
x-amz-id-2: uGwsLLoFHf+slXADGYkqW0bLfQ7EPG/kqzV3l2k7SMex4NlMEpNsNN/cIC9INLPohDtVFwUAa90=
x-amz-request-id: 7869E21760CD50F1
Date: Fri, 29 Sep 2017 06:05:11 GMT
Last-Modified: Fri, 29 Sep 2017 06:01:33 GMT
ETag: "57bac87219812c2f9a581943da34cfde"
Accept-Ranges: bytes
Content-Type: application/octet-stream
Content-Length: 46
Server: AmazonS3

成功! 而且,如果我们在AWS控制台中签入,则可以看到存储桶策略已应用于我们的存储桶:

翻译自: https://www.javacodegeeks.com/2017/09/serverless-s3-s3bucketpermissions-action-not-apply-resources-statement.html

无服务器:S3 – S3BucketPermissions –操作不适用于语句中的任何资源相关推荐

  1. 500 – 内部服务器错误_无服务器:S3 – S3BucketPermissions –操作不适用于语句中的任何资源...

    500 – 内部服务器错误 我一直在使用Serverless来玩S3存储桶,最近编写了以下代码来创建S3存储桶并将文件放入该存储桶: const AWS = require("aws-sdk ...

  2. JAVA碰撞检测无效_碰撞检测不适用于Pygame中的精灵

    我最近尝试通过将我的基本 rect 和图像更改为更高级的 Class 系统来升级我正在处理的游戏的代码 . 但是,我似乎遇到了我的碰撞检测问题,当我告诉我的精灵 hg 在与 floor (或任何输入的 ...

  3. aws lambda_我如何在一天内在Node.js中构建无服务器的AWS Lambda Twitter机器人

    aws lambda Have you ever wanted to create a Twitter Bot? It's been on my list of things to do for qu ...

  4. 天天都在说,无服务器计算到底是什么?

    过去一年,无服务器计算(serverless)已成为构建和运行现代应用程序和服务的普遍架构替代方案.无服务器应用程序允许开发人员专注于代码,而不是基础架构配置和管理.这加快了研发和发布周期,并允许更好 ...

  5. Webtask后端即服务:无服务器快速教程

    查尔斯·厄勒(Charles Ouellet) (By Charles Ouellet) The word serverless is buzzing through dozens of dev ci ...

  6. 测试无服务器应用程序的最佳方法

    Serverless is more than a cloud computing execution model. It changes the way we plan, build, and de ...

  7. 七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...

    七牛服务器入门教程 by Dmitri Zimine 由Dmitri Zimine 使用无服务器,StepFunction和StackStorm Exchange构建社区注册应用 (Building ...

  8. OpenShift 4 之Knative(1) - 创建Knative无服务器架构环境

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 在OpenShift 4中提供了基于Knative的Serverless(无服务器架 ...

  9. 数K8S无服务器风流人物,还得看Kubeless

    Kubernetes在希腊语中的意思为"舵手",用此命名是用来突出其为用户带来的控制力.如今,程序员对于Kubeless新框架以及Kubernetes-native无服务器框架拥有 ...

最新文章

  1. python能实现excel什么功能_Python pandas对excel的操作实现示例
  2. 记录转化为有层次结构的树状列表的通用算法
  3. Conan and Agasa play a Card Game codeforce
  4. 卜晓军:IBM的大数据战略全面升级
  5. fwrite、write、fread、read
  6. c++实现的唯一ID生成器
  7. 工质热物理性质计算程序的编制及应用_新能源动力电池热管理方案设计和热流体仿真...
  8. 修正CS2.0中的日历头显示错误
  9. double和float的误区!
  10. c语言中打印ipv6地址,c-来自任何有效地址的ipv4和ipv6
  11. 【C++】 12_经典问题解析 一
  12. python保留sqrt_python:quot;因式分解quot;引出的知识盲点
  13. 如何做好大型数据中心的运维
  14. 苦逼IT男必然生女?
  15. 最新教师计算机测试题,信息技术教师基本功测试题
  16. asp小偷转html,ASP中实现小偷程序的原理和简单示例
  17. 利用lnmp一键安装的php环境忘记mysql,root用户密码解决方法
  18. 从“阿里月饼门”看安全
  19. 计算机机房空调原理,机房精密空调的工作原理
  20. 【微信小程序】接口生成自定义首页二维码

热门文章

  1. Origin绘图的步骤?
  2. docker之nginx镜像优化4
  3. 树莓派基础实验34:L298N模块驱动直流电机实验
  4. DB2存储过程入门实例
  5. docker desktop 运行mysql
  6. 微信商业闭环谈论之微信开放平台实现微信卡券投放实践(附部分JAVA源码)
  7. 用python做通讯录包括姓名地址qq_我是如何用Python获取整个学校女生电话和QQ?技术撩妹...
  8. SpringCloud Gateway网关统一聚合Swagger接口文档(knife4j),实现通过网关统一文档地址查看所有子服务的接口文档
  9. 【halcon机器视觉教程】黑洞是什么洞?我来给你拍个照,黑洞成像系统
  10. 【转】CMNET和CMWAP区别