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

尝试使用AWS-cdk向s3日志交付组授予完全权限

诸嘉澍
2023-03-14

我目前正在使用AWS-cdk创建一个中央日志存储桶,所有现有的s3存储桶都将登录到该存储桶。当我手动给s3LogDeliveryGroup列表对象、写对象、读桶权限和写桶权限时,一切都在工作。然而,我正在使用AWS-cdk,需要以编程方式执行此操作,以便我可以将其部署到任何帐户。这是我的代码:

const s3PublicAccessLambda = new lambda.Function(this, 's3PublicAccessLambda',{
        runtime: lambda.Runtime.PYTHON_3_6,
        handler: 's3PublicAccess.handler',
        role:s3LoggingLambdaRole,
        code: lambda.Code.fromAsset(path.join(__dirname, '../lambda')),
        timeout: cdk.Duration.seconds(300) 

      });

      const centralLoggingBucket = new s3.Bucket(this, 'centralLoggingBucket', {
        accessControl:s3.BucketAccessControl.BUCKET_OWNER_FULL_CONTROL

      });
      centralLoggingBucket.grantReadWrite(s3LoggingLambdaRole);
  
      }
    }

运行此代码时不会发生错误,但是除非我手动授予权限,否则存储桶不会记录。我知道我需要在我指定“accessControl”参数的附近指定它,我只是不知道确切的位置。非常感谢。

共有1个答案

景正文
2023-03-14

如果您正在寻找一种方法,为lambda函数假定的角色提供S3 bucket访问策略s3LoggingLambdaRole,您可以尝试附加一个内联策略,如下所示:

s3LoggingLambdaRole.attachInlinePolicy(
    new Policy(this, 'yourPolicy', {
        policyName: 'yourPolicyName',
            statements: [
                new PolicyStatement({
                    actions: ['s3:ListObjects', 's3:WriteObjects'],
                    resources: [`arn:aws:s3:::`, `arn:aws:s3:::*`, 'arn:aws:s3:::*/*'],
                }),
            ],
        }),
    );

另外,请记住,如果您提供了自己的自定义IAM角色,则不会自动授予其执行lambda的权限,因此您可能还必须添加以下托管策略。

s3LoggingLambdaRole.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole"));
s3LoggingLambdaRole.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaVPCAccessExecutionRole")); // only required if your function lives in a VPC
 类似资料:
  • 我试图创建一个集中的日志存储桶,然后使用lambda和AWS-cdk记录所有其他s3存储桶。已创建了集中式日志存储桶,但在使用lambda对其进行写入时出错。这是我的代码:导入boto3 S3=boto3.resource('s3') 注意:除了这个日志传递权限之外,一切都可以正常工作,因为当我通过aws控制台启用它时,它可以正常工作,但是,我需要以编程方式执行它!先谢谢你。

  • 文档建议将服务帐户添加到GApps的第三方oauth访问列表必须由域管理员手动完成:https://developers.google.com/drive/delegation#delegate_domain-wide_authority_to_your_service_account 有没有一种方法可以通过身份验证页面来实现这一点?

  • 问题内容: 我看过许多类似的问题,因此表明我已经检查了基础知识。当然,这并不意味着我没有错过任何显而易见的东西。:-) 我的问题是:为什么我拒绝具有特权的用户访问权限,而我却已经在其中输入密码并被授予访问权限?(为了完整起见,我尝试输入错误的密码只是为了确保MySQL客户端在程序启动时拒绝我访问。) 背景: 通过ssh登录到运行MySQL服务器的计算机的外壳,我以root用户身份登录: 太棒了 我

  • 我不知道如何(或者在哪里)从AWS向用户授予读写权限,这样用户就可以在生产环境中的sample_app上发布图片。这是第11章的最后一个任务,它没有被教程覆盖,我在任何地方都找不到解决方案。 这是文件: 这是教程中的过程: 1)创建AWS IAM用户并记录访问和密钥-完成 2) 创建S3 bucket-完成 3) 向在上一步中创建的用户授予读写权限-如何授予??? 4) 然后运行以下三个命令: 5

  • 如何使用像CloudTrail或CloudWatch这样的AWS服务来检查哪个用户执行了事件DeleteObject? 我可以使用S3事件向SNS发送删除事件,通知电子邮件地址某个特定文件已从S3 bucket中删除,但消息中不包含删除该文件的用户名。 我可以使用CloudTrail将与S3 bucket相关的所有事件记录到另一个bucket,但我进行了测试,它记录了许多详细信息,只记录了事件,而

  • 我们已经实现了 OAuth2 授权服务器(和身份提供程序)。现在,我们要执行负载测试来衡量系统性能。 我现在遇到的具体问题是,我想对授权代码流进行负载测试。到目前为止我一直在用JMeter。但是我不知道如何为所需的redirect_uri提供一个endpoint来完成这个流程。到底有没有办法做到这一点,还是我运气不好?谷歌帮不上忙。如果JMeter做不到,有没有工具可以?