Skip to content

Instantly share code, notes, and snippets.

@dave-malone
Last active August 27, 2018 15:31
Show Gist options
  • Save dave-malone/ddb42d04d46e0a38b9337b32ccdcd3e8 to your computer and use it in GitHub Desktop.
Save dave-malone/ddb42d04d46e0a38b9337b32ccdcd3e8 to your computer and use it in GitHub Desktop.
AWS Lambda Function intended to be used by authorized callers to view a Kinesis Video Stream's HLS session URL.
const AWS = require('aws-sdk')
AWS.config.region = process.env.AWS_REGION
const kinesisvideo = new AWS.KinesisVideo({
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY
})
function getStreamingSessionURL(){
return new Promise((resolve, reject) => {
var getEndpointParams = {
APIName: 'GET_HLS_STREAMING_SESSION_URL',
StreamName: process.env.STREAM_NAME
}
kinesisvideo.getDataEndpoint(getEndpointParams, (err, data) => {
if(err){
console.log(err, err.stack)
reject(`Failed to get KVS data endpoint: ${err.errorMessage}`)
}else{
console.log(`Get data endpoint response: ${JSON.stringify(data)}`)
const kinesisvideoarchivedmedia = new AWS.KinesisVideoArchivedMedia({
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
endpoint: data.DataEndpoint
})
const getStreamingSessionURLParams = {
Expires: 300,
PlaybackMode: 'LIVE',
StreamName: process.env.STREAM_NAME
}
kinesisvideoarchivedmedia.getHLSStreamingSessionURL(getStreamingSessionURLParams, function(err, data) {
if (err){
console.log(err, err.stack)
reject(`Failed to get KVAM HLS streaming session url: ${err.errorMessage}`)
}else{
console.log(`get hls streaming session url response: ${JSON.stringify(data)}`)
resolve(data)
}
})
}
})
})
}
exports.handler = async (event, context, callback) => {
await getStreamingSessionURL()
.then((result) => callback(null, result))
.catch((err) => callback(err))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment