Created
February 5, 2019 09:14
-
-
Save apal21/bc845297cf47337e29f9aca6f726d014 to your computer and use it in GitHub Desktop.
Example to generate Signed URLs in CloudFront using Custom Policy.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const AWS = require('aws-sdk'); | |
// Try to use process.env.PRIVATE_KEY instead of exposing your key | |
const privateKey = `-----BEGIN RSA PRIVATE KEY----- | |
XXXXXXXX | |
XXXXXXXX | |
XXXXXXXX | |
XXXXXXXX | |
-----END RSA PRIVATE KEY-----` | |
const cloudFront = new AWS.CloudFront.Signer('PUBLIC_ACCESS_KEY', privateKey); | |
const policy = JSON.stringify({ | |
"Statement": [ | |
{ | |
"Resource": "https://abcdefghijklmn.cloudfront.net/test/a.txt", | |
"Condition": { | |
"DateLessThan": { | |
"AWS:EpochTime": Math.floor((new Date()).getTime() / 1000) + (60 * 60 * 1) // Current Time in UTC + time in seconds, (60 * 60 * 1 = 1 hour) | |
} | |
} | |
} | |
] | |
}); | |
cloudFront.getSignedUrl({ | |
policy, | |
}, (err, url) => { | |
if (err) throw err; | |
console.log(url); | |
}); |
same issue TypeError: Cannot read property 'split' of undefined
It is caused by this line in the SDK. It seems it is necessary to provide the Resource URL as url
property to the options argument.
// ... same as gist
cloudFront.getSignedUrl({
url: <resource_url_here_as_string>
policy,
}, (err, url) => {
if (err) throw err;
console.log(url);
});
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@immma You have to give a url param to prevent this error.