6

ember-cli-deploy と ember-cli-deploy-cloudfront を使用して、ember アプリを AWS CloudFront にデプロイしようとしています。

AWS でバケットとユーザーをセットアップし、ユーザーに AmazonS3FullAccess ポリシーを付与しました。

.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>

config/default.jsはこのように見えます:

/* 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-deployember-cli-deploy-cloudfrontおよびをインストールしember install ember-cli-deploy-aws-packました。

私が走るときember deploy production

次のエラーが表示されます。

AccessDenied: User: arn:aws:iam::299188948670:user/Flybrary is not authorized to perform: cloudfront:CreateInvalidation

無効化の作成を処理するのは私の理解ember-cli-deploy-cloudfrontですが、このエラーを見たとき、私は AWS IAM コンソールに入り、自分で無効化を作成しました。を実行しようとすると、まだ同じエラーが発生しますember deploy production

4

1 に答える 1

8

IAM ポリシーでは、特定の CloudFront ディストリビューションへのアクセスを制限できません。回避策は、特定の CloudFront リソースのみを参照するのではなく、リソースにワイルドカードを使用することです。それを IAM ポリシーに追加すると、発生している問題を回避できます。

機能する IAM ポリシーの例を次に示します。

{
  "Statement": [  
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudfront:CreateInvalidation",
        "cloudfront:GetInvalidation",
        "cloudfront:ListInvalidations"
      ],
      "Resource": "*"
    }
  ]
}

ドキュメント:

于 2016-08-02T20:51:07.557 に答える