AWS
aws-cli

aws cliが古くてAWS BatchのジョブでIAMロールの権限がつけられなかった

AWS BatchのジョブでIAM権限のエラーが出てしばらくハマったので内容をメモしておきます。

発生した現象

AWS Batchのジョブ中でaws cliを使ってaws cpしても以下のようにエラーになった。

$ aws s3 cp s3://[バケット名]/test /app --recursive
A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied

ジョブ定義で設定されているジョブロールを以下のようにしてもダメ

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

原因と対応

Batchで使っているaws cliが1.4.2と古すぎてBatchが利用しているECSをサポートしていなかった。
もらったDockerイメージをあまりよく確認せずに使ってapt-get install awscliしていた。
pip install awscliにしたら最新のaws cliが入って正常に動作した。