2016-12-06 10 views
5

変更がgithubのマスターブランチにプッシュされたときにビルドを実行するEC2インスタンスにJenkinsをセットアップしました。ジェンキンズのビルドが完了すると、ソースコードを圧縮して特定のS3バケットに入れます。次に、Jenkinsが設定で認識しているCodeDeployアプリケーションをS3からソースコードZIPを取得しようとする展開をトリガーしますが、エラーが発生します。アクセスが拒否されました。 IAMの役割にはS3からZIPをダウンロードするためのアクセス権と権限がないようです。AWSエラー:Jenkinsのビルド後にCodeDeployで「アクセスが拒否されました」

私の問題は、IAMの役割、Jenkinsユーザーとの関係、およびIAMサービスの役割を理解しようとしていますか?パーミッションを設定するにはどうすればいいですか?私に助言してこれを理解するのを助けてください。

答えて

5

CodeDeployの設定で2つのシナリオ...展開(一般的に、あなたのCIサーバー/ビルドエージェント)とターゲット・インスタンス(複数可)上で動作し、実際の処理を行いCodeDeployエージェント「を作成します」という部分は一般的にあります配備最初の半分は本質的にはであり、をCodeDeploymentにプッシュし、後半はから引っ張っています...それは私がそれを視覚化する方法です。

CIサーバ/ビルドエージェントの場合、次のような権限を持つIAMロールが必要です。ビルドエージェントは、(1)デプロイメント用に指定したS3バケットにアクセスし、(2)など、対象のEC2インスタンス上で

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListAllMyBuckets" 
      ], 
      "Resource": "arn:aws:s3:::*" 
     },  { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject" 
      ], 
      "Resource": "arn:aws:s3:::YourDeploymentBucket" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "codedeploy:*" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

を改訂を作成するCodeDeployサービス、彼らはこのような何かを持っている必要があります...これは、リビジョンを引っ張ってCodeDeployエージェントサービスにS3バケットに(1)のアクセスを提供し、 (2)エージェントがそれ自体を更新できるように、すべての汎用コード配布バケットへのアクセス。もちろん、それらのインスタンスは他のすべての基準を満たす必要があります...一般的に、IAMの役割が必要であり、コードデプロイエージェントをインストールする必要があります。あなたはこれらのアクセス許可を割り当てる方法

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:Get*", 
       "s3:List*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::YourDeploymentBucket/*", 
       "arn:aws:s3:::aws-codedeploy-us-east-1/*", 
       "arn:aws:s3:::aws-codedeploy-us-west-1/*", 
       "arn:aws:s3:::aws-codedeploy-us-west-2/*", 
       "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", 
       "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", 
       "arn:aws:s3:::aws-codedeploy-ap-south-1/*", 
       "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", 
       "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", 
       "arn:aws:s3:::aws-codedeploy-eu-central-1/*", 
       "arn:aws:s3:::aws-codedeploy-eu-west-1/*", 
       "arn:aws:s3:::aws-codedeploy-sa-east-1/*" 
      ] 
     } 
    ] 
} 

はあなた次第です...ビルドエージェントは、EC2インスタンスがある場合、それはインスタンス(複数可)に関連付けられているIAMロールに付加されたポリシーとして、これらを割り当てることが最善でしょう。ターゲットデプロイメントマシンでは、同じことを行います。ポリシーを作成し、ターゲットにするインスタンスに関連付けられたIAMロールに割り当てます。

関連する問題