2016-12-09 8 views
7

ビルドプロセスで使用するIAMインスタンスロールを付与する方法はありますか?AWS CodeBuildワーカーでIAMロールを使用する

私の特別なケースでは、ビルド時にs3操作を実行する必要があります(アーカイブアーチファクトとは関係ありません)。

私が見つけた唯一の選択肢はawsキーとシークレットをaws codebuild設定ページの環境変数に追加することです。

ビルドを実行するec2インスタンスまたはコンテナにIAMロールを付加する方が安全です。それは現在(2016-12)可能ですか?

答えて

6

ビルドプロジェクト用に作成されたサービスロールに、追加のポリシーアクセス許可を追加できる必要があります。 CodeBuildはビルド時にそのポリシーを使用して、ビルドインスタンス内でアクションを実行します。あなたは、ビルド時にS3からオブジェクトを削除したい場合

たとえば、あなたがあなたのサービスの役割のポリシーに次のステートメントを追加する必要があります。

{ 
    "Effect": "Allow", 
    "Resource": [ 
     "*" 
    ], 
    "Action": [ 
     "s3:DeleteObject" 
    ] 
} 

を:あなたはこれらを制限することを望むかもしれません上記の例では、アカウント内のすべてのものに対してDeleteObjectが許可されています。

CodeBuildコンソールで最初に実行されたウィザードを使用してプロジェクトをセットアップした場合は、s3:GetObjectおよびs3:GetObjectVersionのサービスロールにポリシーが既に存在しているはずです。コンソールを使用して作成する場合のサービスロール名は、デフォルトで 'codebuild- [プロジェクト名] -service-role'です。

+0

サービスの役割はサービスにのみ影響し、ビルドコンテナには影響しないと考えました。これをもう一度試して、buildspec.ymlにs3コマンドラインを追加します。おそらく私のs3クライアントはコンテナアイデンティティプロバイダを使用できませんでした。 –

+0

s3にアクセスするために使用していたmavenライブラリがコンテナの資格情報で動作しなかったため、私は役割を果たさなかった。すべて今良い。 –

+0

@DanielSperryはあなたの正確な解決策が何であるかはわかりませんでしたが、同様の問題があった可能性があり、回避策を投稿しました。http://stackoverflow.com/questions/42794486/use-appropriate-ecs-credentials-on- codebuild-maven-job/42799591#42799591 – Neil

関連する問題