この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
サーモン大好き、横山です。
今回は複数のSwitch Roleでのクロスアカウントアクセス用URLを生成するスクリプトの紹介をします。
はじめに
本記事は、「【小ネタ】複数のSwitch Roleでのクロスアカウントアクセスをブラウザのブックマークで管理する」を元にSwitch先のマネジメントコンソールからSwitchRoleするためのURLを生成します。
SwitchRoleを作成した都度、ブックマークを作ればさほど苦労はないのですが、一度にたくさんのSwitchRole用のURLを作成するのは骨が折れそうでした。そこで、少しでも楽をしようとSwitch先の環境でボタンを押したら、そこへSwitchRoleするURLに飛ぶJavaScriptを書きました。
手順
- ブックマーク用のJavaScriptを作成
- chromeのブックマーク作成
- 動作確認
1. ブックマーク用のJavaScriptを作成
今回はマネジメントコンソールの右上の画面の部分から情報を引っ張ってきます。
ソースコードは以下です。
(function(){
function run() {
$=jQuery;
accountId=$('#awsc-role-display-name-account').text().replace(/-/g,'');
roleName=$('#awsc-role-display-name-user').text();
color='';
displayName='';
displayNameSelector=$('#nav-usernameMenu:has(.awsc-switched-role-username-wrapper)');
if (displayNameSelector) {
color=$('.awsc-switched-role-username-wrapper', displayNameSelector).css('background-color')
.toString()
.match(/\d+/g)
.map(function(n){
return ("0"+(n|0).toString(16)).toUpperCase().substr(-2);
})
.join("");
displayName=$('.nav-elt-label', displayNameSelector).text();
}
else {
displayName=$('#nav-usernameMenu>.nav-elt-label:first').text();
}
displayName=$('#nav-usernameMenu>.awsc-switched-role-username-wrapper>.nav-elt-label:first').text();
url='https://signin.aws.amazon.com/switchrole';
url+='?account='+accountId;
url+='&roleName='+roleName;
url+='&displayName='+displayName;
if (color.length > 0) {
url+='&color='+color;
}
window.location.assign(url);
}
if(typeof jQuery !== 'function') {
var d=document;
var s=d.createElement('script');
s.src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js';
s.onload=run;
d.body.appendChild(s);
} else {
run();
}
}
)();
こちらのソースコードをMinifyします。Minifyは複数Webサービスが有り、今回は jscompress を使用しました。
Minifyされたコードが以下になります。
!function(){function e(){$=jQuery,accountId=$("#awsc-role-display-name-account").text().replace(/-/g,""),roleName=$("#awsc-role-display-name-user").text(),color="",displayName="",displayNameSelector=$("#nav-usernameMenu:has(.awsc-switched-role-username-wrapper)"),displayNameSelector?(color=$(".awsc-switched-role-username-wrapper",displayNameSelector).css("background-color").toString().match(/\d+/g).map(function(e){return("0"+(0|e).toString(16)).toUpperCase().substr(-2)}).join(""),displayName=$(".nav-elt-label",displayNameSelector).text()):displayName=$("#nav-usernameMenu>.nav-elt-label:first").text(),displayName=$("#nav-usernameMenu>.awsc-switched-role-username-wrapper>.nav-elt-label:first").text(),url="https://signin.aws.amazon.com/switchrole",url+="?account="+accountId,url+="&roleName="+roleName,url+="&displayName="+displayName,color.length>0&&(url+="&color="+color),window.location.assign(url)}if("function"!=typeof jQuery){var a=document,r=a.createElement("script");r.src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js",r.onload=e,a.body.appendChild(r)}else e()}();
さらに、Chromeのブックマークに貼っつけるために先頭に javascript:
の文字を追加します。
javascript:!function(){function e(){$=jQuery,accountId=$("#awsc-role-display-name-account").text().replace(/-/g,""),roleName=$("#awsc-role-display-name-user").text(),color="",displayName="",displayNameSelector=$("#nav-usernameMenu:has(.awsc-switched-role-username-wrapper)"),displayNameSelector?(color=$(".awsc-switched-role-username-wrapper",displayNameSelector).css("background-color").toString().match(/\d+/g).map(function(e){return("0"+(0|e).toString(16)).toUpperCase().substr(-2)}).join(""),displayName=$(".nav-elt-label",displayNameSelector).text()):displayName=$("#nav-usernameMenu>.nav-elt-label:first").text(),displayName=$("#nav-usernameMenu>.awsc-switched-role-username-wrapper>.nav-elt-label:first").text(),url="https://signin.aws.amazon.com/switchrole",url+="?account="+accountId,url+="&roleName="+roleName,url+="&displayName="+displayName,color.length>0&&(url+="&color="+color),window.location.assign(url)}if("function"!=typeof jQuery){var a=document,r=a.createElement("script");r.src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js",r.onload=e,a.body.appendChild(r)}else e()}();
2. chromeのブックマーク作成
Chromeのブックマークマネージャを開きます。
ブックマークバーの「管理」の画面上で右クリックをし、「ページを追加(G)」を選択します。
名前は任意で結構ですここでは「make_role_url」って名前にします。URLは先程作成した javascript:!function()…
をコピーして貼り付けます。
3. 動作確認
ChromeでSwitchRoleしたマネジメントコンソールの画面を出します。
make_role_url
のブックマークを押します。
現在SwitchRoleしてる環境へのSwitchするためのページが開きます。
まとめ
たくさんのSwitchRole用のブックマークを作成が面倒になった時の参考になれば幸いです。 注意点として、マネジメントコンソールの画面構成が変わると使えなくなる小ネタですので、画面構成が変わった際の動作不良を起こす可能性があります、ご了承ください。(2016/05/19現在)