- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一个网站上传到 S3,并将其配置为通过 cloudfront 分发进行访问。当我通过浏览器访问分发 URL 时,我得到:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>TKHNQGGSSHY3ZH6T</RequestId>
<HostId>zXD7uBIpJUGHaUl8m5/9xtm2cnvX/Kok6rYp0oz6RFbqJeLreohaOWHx4jHJ/F675UGxo1SfEYs=
</HostId>
</Error>
这是我的 sam cloudformation 模板片段,我猜测 StockMonitorFeBucketPolicy 存在一些问题。
##################### FRONTEND
StockMonitorFeBucket:
Type: 'AWS::S3::Bucket'
DeletionPolicy: Delete
Properties:
BucketName: osotnikov-stock-monitor-front-end-resources-s3-bucket
AccessControl: Private
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
StockMonitorFeBucketDistributionOriginAccessIdentity:
Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'
Properties:
CloudFrontOriginAccessIdentityConfig:
Comment: This is the origin access identity (simply user).
StockMonitorFeBucketDistribution:
Type: 'AWS::CloudFront::Distribution'
DependsOn:
- StockMonitorFeBucket
- StockMonitorFeBucketDistributionOriginAccessIdentity
Properties:
DistributionConfig:
Origins:
- DomainName: !GetAtt
- StockMonitorFeBucket
- DomainName
Id: StockMonitorFeBucketCloudFrontOrigin
S3OriginConfig:
OriginAccessIdentity: !Sub >-
origin-access-identity/cloudfront/${StockMonitorFeBucketDistributionOriginAccessIdentity}
Enabled: 'true'
DefaultCacheBehavior:
TargetOriginId: StockMonitorFeBucketCloudFrontOrigin
ForwardedValues:
QueryString: 'false'
ViewerProtocolPolicy: allow-all
StockMonitorFeBucketPolicy:
Type: 'AWS::S3::BucketPolicy'
DependsOn:
- StockMonitorFeBucket
- StockMonitorFeBucketDistributionOriginAccessIdentity
- StockMonitorFeBucketDistribution
Properties:
Bucket: !Ref StockMonitorFeBucket
PolicyDocument:
Statement:
- Sid: cloudFrontReadAccess
Effect: Allow
Principal:
CanonicalUser: !GetAtt
- StockMonitorFeBucketDistributionOriginAccessIdentity
- S3CanonicalUserId
Action: 's3:GetObject'
Resource: >-
arn:aws:s3:::osotnikov-stock-monitor-front-end-resources-s3-bucket/*
这是部署后添加的存储桶策略:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "cloudFrontReadAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E1V8NTQPK5FD7P"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::osotnikov-stock-monitor-front-end-resources-s3-bucket/*"
}
]
}
或者我尝试:
Properties:
Bucket: !Ref StockMonitorFeBucket
PolicyDocument:
Statement:
- Sid: cloudFrontReadAccess
Effect: Allow
Principal:
AWS: !Join
- ' '
- - 'arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity'
- - !GetAtt [ StockMonitorFeBucketDistributionOriginAccessIdentity, S3CanonicalUserId ]
Action: 's3:GetObject'
Resource: >-
arn:aws:s3:::osotnikov-stock-monitor-front-end-resources-s3-bucket/*
但后来我得到:
a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined.
我尝试将主体更改为
Principal: AWS: !Join [' ', ['arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity', !GetAtt [StockMonitorFeBucketDistributionOriginAccessIdentity, S3CanonicalUserId]]]
但是我在策略错误中收到无效的主体
最佳答案
您的模板没有任何问题(我部署了它)。它按预期工作。在您的情况下获得 AccessDenied
的唯一方法是由于缺少 DefaultRootObject正如 index.html
所定义的。因此,您必须显式地将 index.html
添加到您的 cloudfront url,例如:
http://21342sfssgdf.cloudfront.net/index.html
关于amazon-web-services - 访问 cloudfront 分发 s3 被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75042828/
这个问题在这里已经有了答案: Why don't Java's +=, -=, *=, /= compound assignment operators require casting? (11 个
我搜索了很多,但没有一个链接能帮助我解决这个问题。我得到了 ORA-21500: internal error code, arguments: [%s], [%s], [%s], [%s], [%s
我正在做 RegexOne 正则表达式教程,它有一个 question关于编写正则表达式以删除不必要的空格。 教程中提供的解决方案是 We can just skip all the starting
([\s\S]+|\s?) 中 |\s? 的目的或作用是什么?如果没有它,表达式会不会与 ([\s\S]+) 相同? 最佳答案 这不是完全相同的。 ([\s\S]+|\s?) 会匹配空字符串,而 ([
这个正则表达式有一组还是两组? 我正在尝试使用第二组访问 bookTitle 但出现错误: Pattern pattern = Pattern.compile("^\\s*(.*?)\\s+-\\s+
在 C 中给定一个字符串指针 s,下面的迭代会做什么?即它以什么方式遍历字符串? for (++s ; *s; ++s); 最佳答案 for (++s ; *s;++s) 表示 将指针 s 递增到字符
我正在用一个 node.js 应用程序解析一个大列表并有这段代码 sizeCode = dbfr.CN_DESC.split('\s+-\s*|\s*-\s+') 这似乎不起作用,因为它返回了 [ '
我正在编写一个简单的字符串连接程序。 该程序按照我发布的方式运行。但是,我首先使用以下代码编写它来查找字符串的结尾: while (*s++) ; 但是,这个方法并没有奏效。我传递给它的字符串
这个问题已经有答案了: What does (?和aramchand来自Mohandas Karamchand G 因此,在使用这些匹配来分割字符串后,您最终会得到 {"M", "K", "G"} 注
我正在尝试转换 Map到 List使用 lambda。 本质上,我想将键和值与 '=' 连接起来之间。这看起来微不足道,但我找不到如何去做。 例如 Map map = new HashMap<>();
我正在经历 K & R,并且在递增指针时遇到困难。练习 5.3(第 107 页)要求您使用指针编写一个 strcat 函数。 在伪代码中,该函数执行以下操作: 将 2 个字符串作为输入。 找到字符串
在下面的代码中,pS 和 s.pS 在最后一行是否保证相等?也就是说,在语句S s = S();中,是否可以确定不会构造一个临时的S? #include using namespace std; s
演示示例代码: public void ReverseString(char[] s) { for(int i = 0, j = s.Length-1; i < j; i++, j--){
我一直在寻找类似于 .NET examples 中的示例的 PowerShell 脚本.取一个 New-TimeSpan 并显示为 1 天 2 小时 3 分钟 4 秒。排除其零的地方,在需要的地方添加
def func(s): s = s + " is corrected" return s string_list = ["She", "He"] for s in string_li
我是 python 的新手。当我在互联网上搜索 lambda 时。我在 lambda_functions 中找到了这个声明. processFunc = collapse and (lambda s:
我最近开始学习正则表达式,并试图为上面的问题写一个正则表达式。如果限制只放在一个字母上(例如不超过 2 个“b”),这并不困难。 那么答案就是:a* c*(b|ε)a* c*(b|ε)a* c* 但是
当我运行 npm install 时出现以下错误,但我无法修复它。 我试过:npm install -g windows-build-tools 也没有修复这个错误 ERR! configure
有很多有趣的haskell网上可以找到片段。 This post可以在 this (awesome) Stack Overflow question 下找到. The author写道: discou
我知道以下三行代码旨在将字符串提取到$ value中并将其存储在$ header中。但是我不知道$value =~ s/^\s+//;和$value =~ s/\s+$//;之间有什么区别。 $val
我是一名优秀的程序员,十分优秀!