困っていた内容
API Gateway のログを CloudWatch Logs へ出力するため IAM ロールを設定したところBadRequestException
が表示されて変更が保存できません。
権限関係のようですが、設定した IAM ロールには AWS 管理ポリシーのAmazonAPIGatewayPushToCloudWatchLogs
を設定済みで過不足はない認識です。
IAM ロールを設定する方法を教えてください。
BadRequestException: The role ARN does not have required permissions configured. Please grant trust permission for API Gateway and add the required role policy.
どう対応すればいいの?
IAM ロールの信頼関係をご確認ください。
API Gateway で CloudWatch Logs を有効にする際に必要な IAM ロールは、権限に加えて、API Gateway(apigateway.amazonaws.com
)への信頼関係が設定されている必要があります。
信頼関係は IAM ロール側で設定し、一例として上記画像の設定の場合は、次のような信頼関係に変更すると API Gateway に変更ができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
そのため、IAM ロールの信頼関係を確認し、API Gateway(apigateway.amazonaws.com
)への信頼関係が不足していないかご確認ください。
ロールの信頼ポリシーを変更するには(コンソール) - AWS Identity and Access Management
なお、信頼関係の設定方法は上記ドキュメント、設定変更ではなく IAM ロールから新規に作成する場合は次のブログの「やってみた」が参考になると思います。
参考資料
アクセス許可をアカウントに付与するには、apigateway.amazonaws.com を信頼できるエンティティとして IAM ロールを作成し、前述のポリシーを IAM ロールにアタッチして、その IAM ロールの ARN をアカウントの cloudWatchRoleArn プロパティに設定します。
多くの AWS サービスを設定するには、そのサービスに IAM ロールを渡す必要があります。