繁体   English   中英

限制对 AWS Lambda 函数的 S3 存储桶访问

[英]Restricting S3 bucket access to an AWS Lambda function

我在 S3 存储桶中有一个文件,我想限制其访问,以便只能从特定的 Lambda 函数中访问它。 我尝试编写一个存储桶策略(在我的区域、帐户等信息中添加信息)来实现这一点:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1457474835965",
      "Action": "s3:*",
      "Principal": "*",
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::my-bucket/file.txt",
      "Condition": {
        "ArnNotEquals": {
          "aws:SourceArn": "arn:aws:lambda:region:account:function:FunctionName"
        }
      }
    }
  ]
}

但是,Lambda 函数在调用时仍拒绝访问该文件。 我怎样才能完成我想要做的事情?

您的 lambda 函数将以特定角色运行。 创建授予对 s3 资源的访问权限的策略并将其添加到角色。

例子:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::my-bucket/file.txt"
    }
  ]
}
{
    "Version": "2012-10-17",
    "Id": "Policy1592828725895",
    "Statement": [
        {
            "Sid": "ListRelevantDirectories20150907",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": [
                    "arn:aws:iam::123456789999:role/LamdaRole",
                    "arn:aws:iam::123456789999:root",
                    "arn:aws:iam::123456789999:user/John"
                ]
            },
            "Action": "s3:*",
             "Resource": [
                "arn:aws:s3:::bucket_name",
                "arn:aws:s3:::bucket_name/*"
            ]
        }
    ]
}

你也可以试试。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1457474835965",
      "Action": "s3:*",
      "Effect": "Allow",
      "Principal": {
         "AWS": "arn:aws:iam::${Id}:role/${lambdaName}-${region}-lambdaRole"
       },
      "Resource": "arn:aws:s3:::my-bucket/file.txt"
    }
  ]
}

Principal 元素指定允许或拒绝访问资源的用户、帐户、服务或其他实体。 因此,在“Principal”对象中为 lambda 函数提供 iam 角色。 你可以从

lambda 的控制台 -> 权限 -> 执行角色。

有关更多信息,请查看以下页面: https : //docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM