当前位置: 首页 > 知识库问答 >
问题:

如何在没有Aws密钥和秘密的情况下从S3公共桶中读取zip文件

柯学
2023-03-14

我有一个用例,我必须读取一个ZIP文件,并将其作为模板传递给lambda的创建。现在我想从一个S3公共桶中读取zip文件。如何从公共桶中读取文件?

我正在读取的S3 bucket zip文件是https://lambda-template-code.S3.amazonaws.com/lambdatemplate.zip

const zipContents = 'https://lambda-template-code.s3.amazonaws.com/LambdaTemplate.zip';

    var params = {
        Code: { 
               // here at below I have to pass the zip file reading it from the S3 public bucket
               ZipFile: zipContents,
        },
        FunctionName: 'testFunction', /* required */
        Role: 'arn:aws:iam::149727569662:role/ROLE', /* required */
        Description: 'Created with tempalte',
        Handler: 'index.handler',
        MemorySize: 256,
        Publish: true,
        Runtime: 'nodejs12.x',
        Timeout: 15,
        TracingConfig: {
            Mode: "Active"
           }
      };
      lambda.createFunction(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
      });

上面的代码给出错误无法解压缩上载的文件。请检查您的文件,然后尝试重新上载

如何读取URL文件?并在参数中传递

这里有人能帮我吗

共有1个答案

华景焕
2023-03-14

使用createFunction文档,特别是Code文档,您可以看到zipfile期望

部署包的base64编码的内容。AWS SDK和AWS CLI客户端为您处理编码。

而不是其所在位置的URL。相反,您需要使用s3buckets3key

文档中并不清楚是否允许使用公共桶来实现此目的,但文档中确实说过

AmazonS3 bucket位于与您的函数相同的AWS区域。桶可以在不同的AWS帐户中。

 类似资料:
  • 在我开始之前,我已经阅读了和同一个问题相关的帖子。但是,该帖子中的SDK版本很旧。根据AWS nugetpage,新版本3可用,每个服务都有单独的软件包。 用于.NET的AWS SDK的新版本3对每个服务使用单独的包。例如,AmazonS3在AWSSDK.S3包中,AmazonSQS在AWSSDK.SQS中,AmazonDynamoDB在AWSSDK.DynamoDBv2中。 所以我已经安装了包n

  • 是否有一种方法可以在不更改秘密标识符的情况下更改密钥库的秘密值?我在azure portal中尝试了new version按钮,但秘密标识符改变了。 谢了,亚当。

  • 如何在Azure密钥库中设置秘密,而不使用PowerShell。我们正在使用Azure Key Vault来安全地存储连接字符串和一些其他应用程序秘密。我们可以使用PowerShell脚本添加秘密,但我想知道是否有其他方法可以在Azure KeyVault中添加密钥,最好是使用API。我们实际上需要提供一个管理工具,应用程序管理员可以使用该工具在密钥库中添加/修改机密。

  • 在我的响应中,有一个,没有任何。那么,我如何获取该响应呢? 这是我的JSON代码-

  • 我们配置了EC2实例,该实例具有对SQS和EC2的完全权限的IAM角色。有没有什么方法可以在没有AWS的任何SDK/CLI支持的情况下发送消息到队列?仅使用来自EC2实例的简单REST调用?

  • 我正在使用一个PHP库将一个文件上传到我的bucket中。我已经将ACL设置为public read write,它可以正常工作,但文件仍然是私有的。 我发现如果我把被授权人改成所有人,文件就会公开。我想知道的是,如何将bucket中所有对象的默认grante设置为“Everyone”。或者有没有另一种默认公开文件的解决方案? 我使用的代码如下: