主題
Amazon S3の署名付きURLをChromeの開発者ツールだけで発行した話。環境構築不要(認証情報さえあれば)。
ブラウザでSDKが使えるのを知り、手軽に試せないかと思い。
ブラウザスクリプトの使用開始
https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/getting-started-browser.html
手順
認証情報を拝借するユーザーに必要なポリシーは指定するメソッドだけ(以下の場合はs3:GetObject
権限のみ)。
ブラウザを開き、URLにabout:blank
を入力して画面をまっさらにする(これしないと動かない、なんで)。
以下のどちらかで、SDK読み込み。
(script = document.createElement('script')).src = 'https://sdk.amazonaws.com/js/aws-sdk-2.809.0.min.js'
document.getElementsByTagName('head')[0].appendChild(script)
または
var ele = document.createElement("script");
ele.type = "text/javascript";
ele.src = "https://sdk.amazonaws.com/js/aws-sdk-2.809.0.min.js";
document.body.appendChild(ele);
以下で関数定義。アクセスキー、シークレットアクセスキー、バケット名を適宜変更。
const S3 = new AWS.S3({
accessKeyId: 'xxxxxxxxx',
secretAccessKey: 'yyyyyyyyy',
signatureVersion: 'v4',
region: 'ap-northeast-1'
});
function getSignedUrl(fileName) {
const params = {
Bucket: "YOUR_BUCKET_NAME",
Key: fileName,
Expires: 60
};
S3.getSignedUrl("getObject", params,function(err,url){
console.log(url)
});
return;
}
以降は getSignedUrl("hello.html");
を実行すると、YOUR_BUCKET_NAME/hello.html
に対して60秒GETできるURLが出力される。
参考
コンソールでのライブラリの読み込み
Chromeコンソールでお手軽クローリング
https://qiita.com/cognitom/items/babefa7b85ffc050d4bd
ChromeのJavascriptコンソールで外部ライブラリを使いたいとき
http://duyoji.hatenablog.com/entry/2013/05/01/172731
S3の関数記述部分
getSignedUrl(operation, params, callback) ⇒ String
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property