Tag: 亚马逊

基于Cognito ID的S3文件夹访问的IAM策略

我创build了IAM策略,允许Cognito用户写入我的S3存储桶,但是我想根据他们的Cognito ID将它们限制到文件夹。 我在这里遵循了亚马逊的指示,并创build了如下所示的策略: { "Effect": "Allow", "Action": ["s3:PutObject","s3:GetObject"], "Resource": [ "arn:aws:s3:::mybucket/myappfolder/${cognito-identity.amazonaws.com:sub}*" ] } 但是当我尝试使用AWS iOS SDK的v2进行上传时,我得到一个访问被拒绝的错误。 如果我修改了资源的最后一个path组件,用我从SDK的AWSCognitoCredentialsProvider获得的显式identityId值来replace${cognito-identity.amazonaws.com:sub} 。 { "Effect": "Allow", "Action": ["s3:PutObject","s3:GetObject"], "Resource": [ "arn:aws:s3:::mybucket/myappfolder/us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx*" ] } 我的理解是,这些应该等同于相同的东西。 我是否在我的政策中遗漏了某些内容,或者是否应该在我的上传请求中使用不同的path? ** 更新 ** 我原本在iOS中有这个问题,所以今天晚上我尝试在node.js中做同样的事情,结果是相同的。 以下是我在节点中使用的简单代码: var s3 = new AWS.S3(); AWS.config.region = 'us-east-1'; AWS.config.credentials = new AWS.CognitoIdentityCredentials(AWSParams); AWS.config.credentials.get(function (err) { if (!err) { console.log("Cognito Identity […]

在Amazon ECS上的Docker中运行Node API的最佳方式是什么?

随着Docker和Amazon ECS等调度和编排服务的出现,我试图确定部署Node API的最佳方式。 抛开Docker和ECS,我想通过创build一个主进程和多个工作负载处理器,利用Node集群库在文档中build议的asynchronous错误的情况下正常处理崩溃节点应用程序。 集群方法的好处之一就是为每个可用的CPU创build一个工作者处理器。 但是这在docker世界是否有意义呢? 在单个docker容器中运行多个节点进程是否有意义,这个容器将被缩放到ECS上的EC2实例集群中? 如果没有Node集群方法,我将失去正常处理错误的能力,所以我认为至less应该为每个docker容器运行一个master和一个worker进程。 我仍然对ECS的任务定义中要定义的CPU数量感到困惑。 ECS文档中提到了每个CPU有1024个单元的容器实例; 但这与EC2计算单元不是一回事,是吗? 就这样说,我需要select适当数量的vCPU的EC2实例types来实现这个权利? 据我所知,实现最佳configuration可能需要一定程度的基准testing我的特定节点API应用程序,但是如果能够更好地了解从哪里开始,那将是非常棒的。 也许有一些学习/研究我需要做? 任何指引我的path或build议,将不胜感激! 编辑:回顾我的具体问题: 在Docker容器中运行一个主/从集群来实现优雅的崩溃是否合理? 使用与Cluster文档中描述的几乎相同的代码是否有意义,通过require('os').cpus().length来'缩放'到可用的require('os').cpus().length ? 在ECS任务定义的文档中,Amazon对于cpus设置的含义是什么意思,一个container instance has 1024 units per CPU ? 那么这个环境会是一个好的起点呢? 基于上述情况,针对旨在服务Node API的ECS集群,实例types有什么好的起点? 那么可用的vCPU如何影响以前的问题呢?

是否有node.js的AWS AMI?

是否保留了针对node.js的AWS EC2 AMI?

使用aws-sdk和Node / Express将简单的file upload到S3

我错过了我所做的一切,下面是我所拥有的: HTML <html> <body> <form method="POST" action="/upload" enctype="multipart/form-data"> <div class="field"> <label for="image">Image Upload</label> <input type="file" name="image" id="image"> </div> <input type="submit" class="btn" value="Save"> </form> </body> </html> Port 5000是我的Node.js服务器的端口。 在这个例子中,我正在使用POST /upload ,而且工作正常。 module.exports = function(app, models) { var fs = require('fs'); var AWS = require('aws-sdk'); var accessKeyId = process.env.AWS_ACCESS_KEY || "xxxxxx"; var secretAccessKey = process.env.AWS_SECRET_KEY || "+xxxxxx+B+xxxxxxx"; […]

使用适用于Node.js的AWS开发工具包将二进制file upload到S3

更新:为了将来的参考,亚马逊现在已经更新了在提问时那里的文档。 根据@Loren Segal的评论如下: 我们已在最新的预览版本中更正了文档,以正确logging此参数。 抱歉关于混音! 我正在试用Node.Js的AWS开发工具包预览版,并且希望使用putObject将压缩的tar包上传到S3。 根据文档 , Body参数应该是… 正文 – (Base64编码数据) …因此,我正在尝试下面的代码… var AWS = require('aws-sdk'), fs = require('fs'); // For dev purposes only AWS.config.update({ accessKeyId: 'key', secretAccessKey: 'secret' }); // Read in the file, convert it to base64, store to S3 fs.readFile('myarchive.tgz', function (err, data) { if (err) { throw err; } var […]