Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 在AmazonS3上为私人组托管_Amazon Web Services_Security_Authentication_Amazon S3_Web - Fatal编程技术网

Amazon web services 在AmazonS3上为私人组托管

Amazon web services 在AmazonS3上为私人组托管,amazon-web-services,security,authentication,amazon-s3,web,Amazon Web Services,Security,Authentication,Amazon S3,Web,我正在研究在AmazonS3上托管一个静态网站,但需要使它只对某些了解证书的人开放 在下面找不到除IP限制以外的任何选项。我不能这样做,因为我不知道每个人谁会访问这个IP { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action":

我正在研究在AmazonS3上托管一个静态网站,但需要使它只对某些了解证书的人开放

在下面找不到除IP限制以外的任何选项。我不能这样做,因为我不知道每个人谁会访问这个IP

{
  "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "PublicReadGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::testfoo/*",
        "Condition": {
          "IpAddress": {
            "aws:SourceIp": "150.101.204.0/24"
          },
          "NotIpAddress": {
            "aws:SourceIp": "150.101.204.188/32"
          }
        }
      }
    ]
}

我正在寻找一个类似于我们在apache中使用.htaccess的选项,在授予访问权限之前,将请求基本的身份验证用户名和密码

我编辑这个答案是为了扩展关于如何使用cloudfront和lambda@edge. 我在使用lambda@Edge作为为s3存储桶实现无服务器基本身份验证的一种方法

简言之,Lambda@Edge允许您将AWS Lambda函数附加到CloudFront行为。CloudFront是Amazon的CDN解决方案,可以坐在S3存储桶前面,提供低延迟响应、高传输速度、使用Amazon提供的免费SSL证书支持自定义域,并与其他AWS服务(现在包括Lambda)集成


S3铲斗设置 我不会详细介绍如何创建S3 bucket,但基本上在创建S3 bucket(例如S3 bucket安全示例)之后,上传文件并在属性中启用静态网站托管。此时无需启用任何权限。如果您尝试使用URL访问s3存储桶,则访问将被拒绝


设置云端 注意:这是将cloudfront用于s3存储桶的最低基本设置

参照此,从创建cloudfront发行版

  • 创建分发
  • 单击“web入门”
  • 在“源域名”下,放置您的S3 bucket静态网站端点
  • 在“原点设置”下,选择“是”以限制铲斗访问。这将防止用户绕过cloudfront发行版直接访问S3 bucket url。然后,您可以在“源访问标识”下创建新标识,或使用现有标识,并让其更新bucket策略以授予此cloudfront发行版的读取权限,或者您可以手动更新它们。
  • 您可以暂时将“默认缓存行为设置”的其余设置保留为默认设置,或者根据需要进行调整
  • 在“分发设置”下,您可以选择所需的价格类别,在“默认根对象”下,您可以放置要从bucket返回的对象(例如index.html)
  • 创建分发。这一过程需要一段时间才能完成。您可以访问Cloudfront发行版主页,然后访问它提供给您的域名(例如d3xxxxxxxx.Cloudfront.net),查看您的s3 bucket静态网站

  • 设置函数 注意:在撰写本文时,此函数使用的此触发器(cloudfront)仅适用于美国东部(北弗吉尼亚州)地区(美国东部-1)

  • 在aws主控台中,转到Compute下的Lambda
  • 单击Createafunction
  • 填写详细信息:根据需要为函数命名,然后选择“从模板创建新角色”。对于角色名称,您也可以输入任何名称,并且可以选择基本边缘lambda权限。
  • 单击createfunction
  • 在函数内部,在函数代码部分下,添加您的身份验证代码(上面引用的函数有一个示例可供使用)。然后点击Save。然后在“操作”下发布新版本。给它一个描述,然后点击发布
  • 从上角复制ARN并返回到cloudfront发行版。单击id,然后转到行为选项卡。选择您的行为并单击编辑。然后在页面底部可以找到Lambda函数关联
  • 选择“查看器请求”作为事件类型,并粘贴到lambda函数ARN中。 然后单击“是,编辑”。给它一些时间更新

    您还可以通过返回到函数并立即查看其关联,检查cloudfront发行版是否已与您的函数关联。


  • 我编辑这个答案是为了扩展关于如何使用cloudfront和lambda@edge. 我在使用lambda@Edge作为为s3存储桶实现无服务器基本身份验证的一种方法

    简言之,Lambda@Edge允许您将AWS Lambda函数附加到CloudFront行为。CloudFront是Amazon的CDN解决方案,可以坐在S3存储桶前面,提供低延迟响应、高传输速度、使用Amazon提供的免费SSL证书支持自定义域,并与其他AWS服务(现在包括Lambda)集成


    S3铲斗设置 我不会详细介绍如何创建S3 bucket,但基本上在创建S3 bucket(例如S3 bucket安全示例)之后,上传文件并在属性中启用静态网站托管。此时无需启用任何权限。如果您尝试使用URL访问s3存储桶,则访问将被拒绝


    设置云端 注意:这是将cloudfront用于s3存储桶的最低基本设置

    参照此,从创建cloudfront发行版

  • 创建分发
  • 单击“web入门”
  • 在“源域名”下,放置您的S3 bucket静态网站端点
  • 在“原点设置”下,选择“是”以限制铲斗访问。这将防止用户绕过cloudfront发行版直接访问S3 bucket url。然后,您可以在“源访问标识”下创建新标识,或使用现有标识,并让其更新bucket策略以授予此cloudfront发行版的读取权限,或者您可以手动更新它们。
  • 您可以暂时将“默认缓存行为设置”的其余设置保留为默认设置,或者根据需要进行调整