繁体   English   中英

从 VPC 访问 S3 存储桶

[英]Access S3 bucket from VPC

我正在运行 NodeJS 脚本并使用 aws-sdk 包将文件写入 S3 存储桶。 当我在本地运行脚本而不是从 ECS Fargate 服务运行脚本时,这很好用,那是我收到Error: AccessDenied: Access Denied

该服务具有允许的 VPC vpc-05dd973c0e64f7dbc 我已经尝试向该 VPC 添加一个 Internet 网关,以及一个端点(如附图所示) - 但没有解决访问被拒绝错误。 任何想法我在这里失踪?

已解决:问题是我误解了 aws:sourceVpce。 它需要 VPC 终端节点 ID 而不是 VPC ID。 **

端点

端点

互联网网关互联网网关

桶策略:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3MKW5OAU5CHLI"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::mywebsite.com/*"
        },
        {
            "Sid": "Stmt1582486025157",
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::mywebsite.com/*",
            "Principal": "*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpce": "vpc-05dd973c0e64f7dbc"
                }
            }
        }
    ]
}

请添加允许从 VPC 终端节点访问的存储桶策略。

使用条件更新您的存储桶策略,当请求来自您创建的 VPC 终端节点时,该条件允许用户访问 S3 存储桶。 要将这些用户列入白名单以下载对象,您可以使用类似于以下内容的存储桶策略:

注意:对于aws:sourceVpce的值,输入您创建的终端节点的 VPC 终端节点 ID。

{
   "Version": "2012-10-17",
   "Id": "Policy1314555909999",
   "Statement": [
     {
       "Sid": "<<Access-to-specific-VPConly>>",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Effect": "Allow",
       "Resource": ["arn:aws:s3:::awsexamplebucket/*"],
       "Condition": {
         "StringEquals": {
           "aws:sourceVpce": "vpce-1c2g3t4e"
         }
       }
     }
   ]
}

暂无
暂无

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

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