リリース
今日、Redshiftで実行されているクエリやLoad処理をManagement ConsoleからTerminateすることができるようになりました。
今までは、Redshiftクラスタにログインをして該当クエリを特定してcancel
を実行する必要がありました。詳細は: http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/cancel_query.html
これは非常に面倒で、クエリがつまりに詰まって、SuperUserキューでoperationを実行するしかないような場合は更にめんどくさい状態でした。特に、Redshiftのオペレーションとクエリ実行者が分かれている場合は尚更だったと思います。今までもManagement ConsoleからクエリやLoadの状態を閲覧することは可能でしたが、cancelはクラスタへのログインが必要でした。
試してみる
まずはManagement ConsoleにログインをしてRedshiftの画面をひらき、対象のクラスタを選択します。クラスタ詳細画面のQueriesかLoadsタブを開いてrunningになっていてcancelをしたいクエリを選択します。
クエリを選択したら、画面上部のTerminate Queryを選択すると
確認画面がでるので、よければConfirmをクリックするとcancelが実行されます。クリックしてから実際にクエリがcancelするまで少しラグがありますが、これで操作は完了です。
Terminateが成功すると
のようにStatusがterminatedに変更になります。
Loadsタブ内での操作も同様です。
IAM
AWSのサービスはIAMと呼ばれるアクセス制限の機能によって細かく操作の許可・拒否を選択することが出来ますが、RedshiftもIAMで機能の制限が可能です。
Redshiftクラスタ自体の管理をIAMユーザを作成しオペレーションチームに任せたいという場合などに便利かと思います。
今回のリリースでIAM Policy Actionでredshift:CancelQuerySession
が追加になりました。参考: http://docs.aws.amazon.com/redshift/latest/mgmt/iam-redshift-user-mgmt.html
指定されていないユーザでクエリのTerminateを行おうとすると
の様にエラーが出ます。
Redshiftクラスタの状態管理(主にReadonly)とクエリのTerminate権限をつけたIAM Policyは
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"redshift:Describe*",
"redshift:ViewQueriesInConsole",
"redshift:CancelQuerySession",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"ec2:DescribeInternetGateways",
"sns:Get*",
"sns:List*",
"cloudwatch:Describe*",
"cloudwatch:List*",
"cloudwatch:Get*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
の様になります。
まとめ
今回のリリースでほとんどの操作がManegement Consoleで実行出来るようになり、管理の手間が更に軽減されたと思います。
IAMも追加されていたりするので、新機能のリリースの際は是非一緒に御覧ください。
こちらは個人の意見で会社とは関係ありません。お約束です。