AWS Node.js sdk putObjectAcl正确语法

问题描述

我需要分配公共读取访问权限,同时要允许所有者在Sharp()库中处理对象之后以具有完全访问权限的方式操作该对象。因此,我用新对象替换了旧对象,因此需要设置新的ACL。 ACL只允许一种类型的访问,我需要一种组合 “公开阅读”和“存储桶拥有者完全控制”

根据界面和文档,就足够了

await s3Bucket.putObjectAcl({
    Bucket: s3EventMessage.bucket.name,Key: key,AccessControlPolicy: {},GrantFullControl: 'canonical_id',GrantRead: 'http://acs.amazonaws.com/groups/global/AllUsers'
}).promise();

我也尝试过此操作,根据界面,它应该足够了,但出现错误:

    Bucket: s3EventMessage.bucket.name,AccessControlPolicy: {
        Grants: [
            {
                Grantee: {
                    Type: "CanonicalUser"
                },},],GrantRead: 'http://acs.amazonaws.com/groups/global/AllUsers'

我也尝试过这种方式,但是我收到了我的XML格式错误的错误消息

await s3Bucket.putObjectAcl({
    Bucket: s3EventMessage.bucket.name,AccessControlPolicy: {
        Grants: [
            {
                Grantee: {
                    Type: "CanonicalUser",DisplayName: 'Owner',ID: 'canonical_id',Permission: "FULL_CONTROL"
            },{
                Grantee: {
                    Type: "Group",URI: 'http://acs.amazonaws.com/groups/global/AllUsers',Permission: "READ",}
        ],}).promise();

错误:

MalformedACLError:您提供的XML格式不正确或未针对我们发布的架构进行验证

此语法具有确切的所有者:

await s3Bucket.putObjectAcl({
    Bucket: s3EventMessage.bucket.name,AccessControlPolicy: {
        Owner: {
            DisplayName: 'Owner',Grants: [
            {
                Grantee: {
                    Type: "CanonicalUser",}).promise();

出现错误:

AccessDenied:访问被拒绝

另外,我在PHP中找到了一个解决方案,但这对我不起作用-我的访问被拒绝了

这是solution

这是文档Nodejs example

谢谢!

解决方法

经过一番调查和研究,我弄清楚了我需要什么:

  1. lambda必须具有与存储桶相关的权限:s3:PutObject *
  2. 此代码段非常适合我的任务:
    await s3Bucket.putObjectAcl({
        Bucket: bucket.name,Key: key,AccessControlPolicy: {
            Owner: {
                DisplayName: 'Owner',ID: 'canonical_id',},Grants: [
                {
                    Grantee: {
                        Type: "CanonicalUser",DisplayName: 'Owner',Permission: "FULL_CONTROL"
                },{
                    Grantee: {
                        Type: "Group",URI: 'http://acs.amazonaws.com/groups/global/AllUsers',Permission: "READ",}
            ],}).promise();

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...