Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joemiller/aws-cf-private-streaming-tools
Ruby CLI tools for creating and modifying Amazon Cloudfront Private Streaming Distrubitions and Origin-Access-IDs
https://github.com/joemiller/aws-cf-private-streaming-tools
Last synced: 13 days ago
JSON representation
Ruby CLI tools for creating and modifying Amazon Cloudfront Private Streaming Distrubitions and Origin-Access-IDs
- Host: GitHub
- URL: https://github.com/joemiller/aws-cf-private-streaming-tools
- Owner: joemiller
- Created: 2011-01-31T23:29:22.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2012-08-09T17:32:39.000Z (over 12 years ago)
- Last Synced: 2023-03-11T06:58:05.879Z (over 1 year ago)
- Language: Ruby
- Homepage: http://www.joeym.net/2011/01/31/amazon-cloudfront-private-streaming-tools/
- Size: 225 KB
- Stars: 15
- Watchers: 0
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
aws-cf-private-streaming-tools
==============================What?
-----------
A set of ruby CLI tools for creating and modifying Amazon Cloudfront
Private Streaming Distributions and Origin Access ID's, using the
RightAWS ruby library.Why?
----
I created these tools a in late 2010 because I needed to setup a
private streaming distribution (RTMP) on Amazon Cloudfront. However,
the Amazon web management console did not support this and I could
not find any cli tools either.Luckily the right_aws ruby libraries (>= 2.0.0) already had support
for Private Streaming distributions, so all I had to do was put together
a few CLI wrappers to make them easy for admins to utilize.Available Commands
------------------
#### cf-streaming-distribution.rb ####
$ ./cf-streaming-distribution.rb --helpSynopsis
--------
cf-streaming-distribution: Manipulate Amazon Cloudfront Streaming
DistributionsUsage
-----
cf-streaming-distribution.rb [OPTIONS] [command] [args]Commands
--------
list
List all Streaming Distributionsget [aws_id]
Get details about the Streaming Distribution identified by [aws_id].create [bucket]
Create new Streaming Distribution using S3 origin bucket [bucket]. CNAMEs
can optionally be specified with multiple --cname options, and a comment can
be applied with --comment optiondelete [aws_id] [e_tag]
Delete the Streaming Distribution identified by [aws_id] and [e_tag]. A
distribution must first be disabled before it can be deleted. Use 'get'
to retrieve a distribution's e_tag.modify [aws_id]
Modify attributes on the Streaming Distribution identified by [aws_id]. Must
be used in conjunction with at least one of the following options:
--comment, --enabled, --oai, --trusted-signer, --cnamewait [aws_id]
Loop until a Streaming Distribution specified by [aws_id] enters the 'deployed'
state. You could use this in scripts if you need to know when a
distribution becomes available for use.#### ./cf-origin-access-id.rb ####
$ ./cf-origin-access-id.rb --help
Synopsis
--------
cf-origin-access-id:List, create, delete CloudFront Origin Access Identities (OAI's), as well
as grant permissions on S3 objects to CloudFront OAI's.Usage
-----
cf-origin-access-id.rb [OPTIONS] [command] [args]commands:
---------
list:
List Origin Access Identitiescreate [comment]
Create a new Origin Access Identity. The AWS_ID and S3 Canonical ID
will be returned if successfulget [aws_id]
Get details about an Origin Access Identity specified by [aws_id]. This
command will display e_tag which is needed to delete an OAIdelete [aws_id] [e_tag]
Delete the Origin Access Identity specified by [aws_id] and [e_tag]. Use
'get' to retrieve the current e_tag.grant [aws_id] [bucket]
grant 'FULL_PERMISSION' access on all objects inside the S3 bucket specified
by [bucket] to the OAI specified by [aws_id]. There is little reason to
create an OAI other than to give it permissions to some objects within S3,
and this command helps simplify that for you.Example Workflow
----------------
In this example we will setup a new Cloudfront Private Streaming distribution
with the following attributes:* S3 origin bucket: my-video-bucket
* CF base URL (CNAME): rtmp://cf.example.com/#### 1. Setup AWS keys ####
$ export AWS_ACCESS_KEY_ID='xxxxx'
$ export AWS_SECRET_ACCESS_KEY='xxxxxx'#### 2. Create a new Cloudfront Streaming Distribution ####
$ ./cf-streaming-distribution.rb create my-video-bucket \
--cname cf.example.com \
-m "private streaming distribution (rtmp) with origin bucket: my-video-bucket"Success!
domain_name: s1loj2pirm00it.cloudfront.net
aws_id: E1UGDLB9XZBD79#### 3. Configure CNAME in your DNS server #####
This part will depend on DNS server or DNS provider. You'll need to create a new CNAME
for cf.example.com --> s1loj2pirm00it.cloudfront.net#### 4. Create a new Origin-Access-ID (OAI) ####
$ ./cf-origin-access-id.rb create "OAI for use on the cf.example.com distribution"
Success!
AWS_ID : E2CWXW7A1B3YIU
Location : https://cloudfront.amazonaws.com/origin-access-identity/cloudfront/E2CWXW7A1B3YIU
S3 Canonical ID: 3b5285f7f1b51ff2e63e8ff8127b7ffb76edee24580cb7fff6ef812aa87b749aaa3ed1aab389aaaab4453499a7ba57e7#### 5. Assign the OAI to the Cloudfront distribution ####
./cf-streaming-distribution.rb modify E1UGDLB9XZBD79 --oai E2CWXW7A1B3YIU
Success!#### 6. Grant the OAI access to the files in the S3 bucket ####
$ ./cf-origin-access-id.rb grant E2CWXW8B1U3YJU my-video-bucket
Applying grant [E2CWXW8B1U3YJU:'FULL_CONTROL'] on: my-video-bucket/flvs/video01.flv
Applying grant [E2CWXW8B1U3YJU:'FULL_CONTROL'] on: my-video-bucket/flvs/video02.flv
...
#### 7. Create RSA Keypair on the Amazon AWS website ####
You cannot create keypairs with the cloudfront API, so you'll need to do this step
on the AWS website.* Goto http://aws.amazon.com then login:
* Account > Security Credentials > Key Pairs
* Click “Create New Key Pair” under the “Cloudfront Key Pairs” section
* A keypair will be created and the private key will automatically begin downloading.You must save this file! it will be in the form “pk-XXXXXX.pem”. If you lose this key,
you can’t get it back because Amazon only stores the public key.
#### 8. Register the account and keypairs on the cloudfront distribution ####
NOTE: the --trusted-signer arguments takes an amazon account ID as an argument.
The special ‘self’ can be used instead.$ ./cf-streaming-distribution.rb modify E1UGDLB9XZBD79 --trusted-signer self
Success!
#### 9. Verify settings on the new private Streaming Distribution ####
$ ./cf-streaming-distribution.rb get E1UGDLB9XZBD79
AWS_ID : E1UGDLB9XZBD79
E_TAG : EQ3HGAPOK1IFN
Status : InProgress
Enabled : true
domain_name : s1loj2pirm00it.cloudfront.net
origin : my-video-bucket.s3.amazonaws.com
CNAMEs : cf.example.com
Comment : private streaming distribution (rtmp) with origin bucket: my-video-bucket
Origin Access ID: origin-access-identity/cloudfront/E2CWXW7A1B3YIU
Trusted Signers : self
Active Signers:
-> aws_account_number: self
-> key_pair_id : APDBDOEHALFXGK5AQU5RNOTE: The distribution will not be usable until Status changes from InProgress to Deployed.
This can take up to 15minutes.You can also use the command `cf-streaming-distribution.rb wait AWS_ID` to
wait for a distribution to change from InProgress to Deployed. The command will
exit as soon as the status changes to Deployed. This is useful for scripts
where you need to control timing.Who?
----
Joe Miller - joeym -at- joeym.net