AWS S3 Proxy: JavaScript iRuleLX
Problem this snippet solves:
Create a secure proxy to AWS S3 via iRule/IRuleLX
Related Article: Creating a Secure AWS S3 Proxy with F5 iRulesLX
How to use this snippet:
- Install iRule via iRulesLX Workspace
- Create iRulesLX plugin
- Create AWS role or IAM credentials
- Create FQDN pool to AWS S3
- Create Virtual Server
- Enable OneConnect and WebAcceleration profiles
- Assign iRule to Virtual Server
Code :
var f5 = require('f5-nodejs'); var ilx = new f5.ILXServer(); var url = require('url'); var URI = require('urijs'); var AWS = require('aws-sdk'); // optionally use config.json with stored credentials or assign Role when running in AWS //AWS.config.loadFromPath('./config.json'); var s3 = new AWS.S3(); ilx.addMethod('aws_s3_rpc_add_creds', function(req, res) { var path = req.params()[0]; var params = {Bucket:"secure-bucket", Key: path }; var signed_url = s3.getSignedUrl('getObject',params); var parsedUrl = new URI(signed_url); var q = parsedUrl.search(true); var expires = parseInt(q['Expires']); var expire_after = Math.round(expires - (new Date() / 1000)); res.reply([parsedUrl.query(),expires, expire_after]); }); ilx.listen();
Tested this on version:
13.0Published Jul 21, 2017
Version 1.0