Amazon web services AccessDenied:用户无权执行:cloudfront:CreateInvalization
我正在尝试使用ember cli deploy和ember cli deploy CloudFront将ember应用程序部署到AWS CloudFront 我在AWS中设置了我的bucket和用户,给了我的用户AmazonS3FullAccess策略 将我的Amazon web services AccessDenied:用户无权执行:cloudfront:CreateInvalization,amazon-web-services,amazon-s3,deployment,amazon-cloudfront,amazon-policy,Amazon Web Services,Amazon S3,Deployment,Amazon Cloudfront,Amazon Policy,我正在尝试使用ember cli deploy和ember cli deploy CloudFront将ember应用程序部署到AWS CloudFront 我在AWS中设置了我的bucket和用户,给了我的用户AmazonS3FullAccess策略 将我的.env.deploy.production文件设置为如下所示: AWS_KEY=<my key> AWS_SECRET=<my secret> PRODUCTION_BUCKET=<app.<my do
.env.deploy.production
文件设置为如下所示:
AWS_KEY=<my key>
AWS_SECRET=<my secret>
PRODUCTION_BUCKET=<app.<my domain>.com
PRODUCTION_REGION=us-east-1
PRODUCTION_DISTRIBUTION=<my cloudfront distribution id>
/* jshint node: true */
module.exports = function(deployTarget) {
var ENV = {
build: {},
pipeline: {
activateOnDeploy: true
},
s3: {
accessKeyId: process.env.AWS_KEY,
secretAccessKey: process.env.AWS_SECRET,
filePattern: "*"
},
cloudfront: {
accessKeyId: process.env.AWS_KEY,
secretAccessKey: process.env.AWS_SECRET
}
};
if (deployTarget === 'staging') {
ENV.build.environment = 'production';
ENV.s3.bucket = process.env.STAGING_BUCKET;
ENV.s3.region = process.env.STAGING_REGION;
ENV.cloudfront.distribution = process.env.STAGING_DISTRIBUTION;
}
if (deployTarget === 'production') {
ENV.build.environment = 'production';
ENV.s3.bucket = process.env.PRODUCTION_BUCKET;
ENV.s3.region = process.env.PRODUCTION_REGION;
ENV.cloudfront.distribution = process.env.PRODUCTION_DISTRIBUTION;
}
return ENV;
};
我安装了ember-cli-deploy
,ember-cli-deploy-cloudfront
和ember-install-ember-cli-deploy-aws-pack
当我运行ember部署生产时
我得到这个错误:
AccessDenied:User:arn:aws:iam::299188948670:User/Flybrary无权执行:cloudfront:createinvalization
据我所知,
ember cli deploy cloudfront
为您处理创建失效的操作,但当我看到此错误时,我进入AWS IAM控制台,自己创建了一个失效。当我尝试运行ember部署生产时,仍然会遇到相同的错误 IAM策略不允许限制对特定CloudFront发行版的访问。解决方法是对资源使用通配符,而不是只引用特定的CloudFront资源。将其添加到您的IAM策略将解决您面临的问题
以下是工作IAM策略中的一个示例:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation",
"cloudfront:GetInvalidation",
"cloudfront:ListInvalidations"
],
"Resource": "*"
}
]
}
文件:
只是一个想法:你会因为使云端对象无效而被起诉。也许这是你的帐户有问题?”给了我的用户AmazonS3FullAccess策略。“你也给了它CloudFront权限吗?嗨@michael sqlbot,我确实设置了CloudFront分发和失效访问权限,但从未提示我付款(据我所知,它可能只是自动向我的帐户收费?)。很可能我没有给我的用户cloudfront权限。不过,AWS控制台中的任何内容似乎都不是一种明确的方法。你能给我指一下正确的方向吗?看。一般来说,每个权限在被允许之前都会被拒绝,IAM是权限的集中管理器。此外,几乎所有的AWS服务都会在没有进一步提示的情况下向您的AWS帐户计费(您可以想象,在大型部署中,这可能会多么烦人)。许多服务,如CloudFront,只对实际使用情况免费提供/设置。每月前1000次失效是免费的。类似的:我认为他们现在增加了对它的支持。IAM服务概述显示CloudFront支持基于资源的策略。虽然我不能让它工作。