{"id":19495997,"url":"https://github.com/hakobera/frontwalker","last_synced_at":"2026-05-07T16:33:43.561Z","repository":{"id":20257997,"uuid":"23530824","full_name":"hakobera/frontwalker","owner":"hakobera","description":"[WIP] Frontwalker is a tool to manage CloudFront distributions using DSL.","archived":false,"fork":false,"pushed_at":"2014-09-08T16:33:34.000Z","size":140,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-08T09:34:38.683Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hakobera.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-01T04:42:28.000Z","updated_at":"2014-09-18T05:00:19.000Z","dependencies_parsed_at":"2022-07-13T23:10:39.495Z","dependency_job_id":null,"html_url":"https://github.com/hakobera/frontwalker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakobera%2Ffrontwalker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakobera%2Ffrontwalker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakobera%2Ffrontwalker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hakobera%2Ffrontwalker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hakobera","download_url":"https://codeload.github.com/hakobera/frontwalker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240746827,"owners_count":19850991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T21:39:36.263Z","updated_at":"2026-05-07T16:33:38.524Z","avatar_url":"https://github.com/hakobera.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Frontwalker\n\nFrontwalker is a tool to manage CloudFront distributions.\n\nIt defines the state of CloudFront using DSL, and updates CloudFront according to the DSL.\n\n[![Build Status](https://travis-ci.org/hakobera/frontwalker.svg?branch=master)](https://travis-ci.org/hakobera/frontwalker)\n\n### Notice\n\n- Frontwalker is identify distributions by special comments. So do not edit comment manual on AWS Management Console or AWS API.\n- Currently not supported `Restrictions` feature.\n\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```\ngem \"frontwalker\"\n```\n\nOr install it yourself as:\n\n```sh\n$ gem install frontwalker\n```\n\n## Usage\n\n```sh\n# Set AWS credentials\nexport AWS_ACCESS_KEY_ID='...'\nexport AWS_SECRET_ACCESS_KEY='...'\n\n# Export current distibutions to Frontfile\nfrontwork --export --out Frontfile\n\n# Dry run\nfrontwork --apply --dry-run\n\n# Apply\nfrontwork --apply\n```\n\n## Help\n\n```\nUsage: frontwork [options]\n    -a, --apply\n    -f, --file FILE\n        --dry-run\n        --force\n    -e, --export\n    -o, --output FILE\n        --split\n    -t, --test\n        --nameservers SERVERS\n        --no-color\n        --debug\n```\n\n## Frontfile example\n\n```rb\nrequire 'other/frontfile'\n\ndistribution \"www.example.com\" do\n  id \"ABC123456789\" # This ID is important to manage existing distibution. \n  price_class \"PriceClass_All\"\n  enabled true\n\n  aliases(\n    \"static-files-1.example.com\",\n    \"static-files-2.example.com\"    \n  )\n\n  origins do\n    origin do\n      id \"Custom-Origin\"\n      domain_name \"xyz.example.com\"\n      type :custom\n      config({\n        http_port: 80,\n        https_port: 443,\n        origin_protocol_policy: \"match-viewer\"\n      })\n    end\n\n    origin do\n      id \"S3-Origin\"\n      domain_name \"xyz.s3.amazonaws.com\"\n      type :s3\n      config({\n        origin_access_identity: \"access-identity-xyz.s3.amazonaws.com\"\n      })\n    end\n  end\n\n  cache_behaviors do\n    cache_behavior \"/test\" do\n      target_origin_id \"Custom-Origin\"\n      forwarded_values do\n        query_string false,\n        cookies do\n          forward \"none\"\n        end\n        headers do\n          xxx\n        end\n      end\n      trusted_signers do\n        xxxx\n      end\n      viewer_protocol_policy \"allow-all\"\n      min_ttl 0\n      allowed_methods(\"GET\", \"HEAD\")\n      smooth_streaming false\n    end\n\n    # :default is special cache behavior. it is catch all.\n    cache_behavior :default do\n      target_origin_id \"S3-Origin\"\n    end\n  end\n\n  error_responses do\n    error \"403\" do\n      error_caching_min_ttl 300\n      response_page_path \"/404.html\"\n      response_code \"404\"\n    end\n  end\nend\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhakobera%2Ffrontwalker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhakobera%2Ffrontwalker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhakobera%2Ffrontwalker/lists"}