Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何授予桶所有者访问Lambda的权限?_Amazon Web Services_Amazon S3_Aws Lambda_Aws Sdk Js - Fatal编程技术网

Amazon web services 如何授予桶所有者访问Lambda的权限?

Amazon web services 如何授予桶所有者访问Lambda的权限?,amazon-web-services,amazon-s3,aws-lambda,aws-sdk-js,Amazon Web Services,Amazon S3,Aws Lambda,Aws Sdk Js,当我尝试在AWS Lambda函数中执行以下代码时,它被成功执行 s3.getBucketAnalyticsConfiguration(params, function(err, data) { if (err) { console.log(err, err.stack); } else { console.log(data); } }); 然而,当我尝试按如下方式获取bucket版本控制时,失败了。它没有打印错误/数据 s3.getBucketVersioning(par

当我尝试在AWS Lambda函数中执行以下代码时,它被成功执行

s3.getBucketAnalyticsConfiguration(params, function(err, data) {
 if (err)  {
  console.log(err, err.stack);
 }
 else {
   console.log(data);
 }
});
然而,当我尝试按如下方式获取bucket版本控制时,失败了。它没有打印错误/数据

s3.getBucketVersioning(params, function(err, data) {
 if (err)  {
  console.log(err, err.stack);
 }
 else {
   console.log(data);
 }
});
我在aws javascript sdk文档中阅读了以下内容:

To retrieve the versioning state of a bucket, you must be the bucket owner.
我可以知道如何授予桶所有者访问Lambda或其执行角色的权限吗

注意:现有设置如下所示:

  • Lambda可以承担Lambda执行角色
  • Lambda执行角色具有完全的s3访问权限(s3:*)
  • Bucket具有授予我的lambda完全访问权限的Bucket策略

  • 我怀疑这意味着Amazon S3存储桶必须属于与您的IAM凭据关联的AWS帐户。例如,我可以对我的帐户中的一个bucket运行版本控制命令,但如果您对我的bucket运行该命令(从您自己的AWS帐户),则该命令将不起作用。您正在引用的bucket是否与您正在使用的凭据属于同一个帐户?是的,bucket属于同一个帐户。这看起来确实很奇怪。你能临时创建一个新的bucket并在该bucket上试用吗?另外,仅供参考,如果您已经通过IAM角色(#2)授予Lambda函数权限,那么您不需要也通过Bucket策略(#3)授予它访问权限。如果我通过VS代码执行代码,getBucketVersioning会起作用。只有当我通过控制台测试Lambda时,它才会失败。VS代码和Lambda函数是否都使用相同的IAM凭据(例如相同的IAM角色)?