AWS Batch のコンピューティング環境のサービスロールが変更できないときの対処方法
困っていた内容
AWS Batch のマネージドコンピューティング環境(EC2)に設定したサービスロールを変更したいです。
現状、コンピューティング環境には独自に作成した IAM ロールを設定しています。
これをサービスリンクロール(AWSServiceRoleForBatch
)に変更したいのですが、変更できません。
なぜでしょうか。対処方法を教えてください。
どう対応すればいいの?
変更できないため、コンピューティング環境を再作成してください。
コンピューティング環境を更新します。 - AWS Batch
コンピュート環境がサービスにリンクされたロールを使用している場合、通常の IAM ロールを使用するように変更することはできません。コンピューティング環境がサービスにリンクされたロールを使用している場合、通常の IAM ロールを使用するように変更することはできません。
AWS Batch の仕様として、通常の IAM ロールからサービスリンクロール※への変更、もしくはその逆の変更はできません。
※例:arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch
コンピューティング環境のサービスロールとして、サービスリンクロールを使用したい場合は、次のような手順でコンピューティング環境を再作成する必要があります。
- サービスリンクロールを指定した新しいコンピューティング環境を作成
- コンピューティング環境を既存のジョブキューに追加
- 古いコンピューティング環境をジョブキューから削除
- 古いコンピューティング環境を削除
なお、AWS CLI で変更を試みた場合はClientException
となります。
$ aws batch update-compute-environment \
--compute-environment hato-ec2-compute-environments-custom-role \
--service-role "arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch"
An error occurred (ClientException) when calling the UpdateComputeEnvironment operation: A CE using a user-provided role cannot be updated to use Batch Service Linked Role.