{"id":13993561,"url":"https://github.com/pplu/aws-sdk-perl","last_synced_at":"2025-04-05T09:10:23.628Z","repository":{"id":10872784,"uuid":"13160093","full_name":"pplu/aws-sdk-perl","owner":"pplu","description":"A community AWS SDK for Perl Programmers","archived":false,"fork":false,"pushed_at":"2024-04-22T19:28:32.000Z","size":74707,"stargazers_count":171,"open_issues_count":151,"forks_count":95,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-03-29T08:09:28.383Z","etag":null,"topics":["amazon","amazon-web-services","autoscaling","aws","aws-sdk","aws-sdk-perl","cloud-providers","cloudformation","dynamodb","ec2","elb","elbv2","machine-learning","perl","s3","sdk","sns","sqs"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pplu.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-09-27T20:11:04.000Z","updated_at":"2025-03-01T16:38:26.000Z","dependencies_parsed_at":"2024-06-18T12:17:22.989Z","dependency_job_id":"8e01d63a-f5b0-4a28-b10d-50c2c788531a","html_url":"https://github.com/pplu/aws-sdk-perl","commit_stats":{"total_commits":4163,"total_committers":61,"mean_commits":68.24590163934427,"dds":"0.22291616622627908","last_synced_commit":"32162669277ccc789e113361d7802af83ecfeb98"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-sdk-perl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-sdk-perl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-sdk-perl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pplu%2Faws-sdk-perl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pplu","download_url":"https://codeload.github.com/pplu/aws-sdk-perl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312085,"owners_count":20918344,"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":["amazon","amazon-web-services","autoscaling","aws","aws-sdk","aws-sdk-perl","cloud-providers","cloudformation","dynamodb","ec2","elb","elbv2","machine-learning","perl","s3","sdk","sns","sqs"],"created_at":"2024-08-09T14:02:26.344Z","updated_at":"2025-04-05T09:10:18.593Z","avatar_url":"https://github.com/pplu.png","language":"Perl","funding_links":[],"categories":["Perl","SDKs and Samples"],"sub_categories":["Perl SDK"],"readme":"aws-sdk-perl\n============\n\nAttempt to build a complete AWS SDK in Perl\n\nThis project is attempting to build an entire AWS SDK from the information\nthat is stored in other AWS SDKs. Other AWS SDKs have a \"data-driven\" approach,\nmeaning that the definitions for the method calls are stored in a data structure\ndescribing input and output parameters.\n\nThe project is actually generating all of it's classes from botocore\n\nProject info:\n\nGitHub Actions status: ![Build Status](https://github.com/pplu/aws-sdk-perl/actions/workflows/test.yml/badge.svg)\n\nVersion on CPAN: [![CPAN version](https://badge.fury.io/pl/Paws.svg)](https://badge.fury.io/pl/Paws)\n\n\nInstallation\n============\n\nIf you want to install and use Paws then just install it via cpan, cpanm, carton or the likes. If you want to contribute code: read on\n\n```\ncpanm Paws\n```\n\n```\necho \"requires 'Paws';\" \u003e\u003e cpanfile\ncarton install\n\ncarton exec my_script_that_uses_paws\n```\n\nDevelopment setup\n============\n\nIf you want to develop a feature, or contribute code in some way, you need a development setup. This is done by cloning\nthe repo into a local directory.\n\n```\n# Clone the repo. For what it's worth, you can clone from a fork too :)\ngit clone https://github.com/pplu/aws-sdk-perl.git\ncd aws-sdk-perl\n```\n\nWith carton you can install all the dependencies needed in a local environment, so you can play around with dependencies without\naffecting the system libraries. The cpanfile is used to track the dependencies needed.\n\nIt's possible that you need -dev libraries for compiling some of these modules. These packages are:\n\n* In Debian/Ubuntu:\n\n```\nsudo apt-get install libxml2-dev libssl-dev\n```\n\n* In Red Hat/CentOS:\n\n```\nsudo yum install libxml2-devel openssl-devel\n```\n\n* In Mac OS X:\n\n```\nbrew install openssl\n```\n\nIf yo are using Mac OS X - El Capitan(10.11) you will probably need to force the link of the openssl header to /usr/local:\n\n```\nbrew link openssl --force\n```\n\nAnd now tell carton to install the dependecies in a local lib\n\n```\ncarton install\n# drop into a shell so perl can always find the local libraries\ncarton exec $SHELL -l\n```\n\nNow we'll pull the paws-maintained fork of boto (so we can generate the SDK)\n\n```\nmake pull-other-sdks\n```\n\nNow we're ready to code away! Happy hacking.\n\nOrganization\n============\n\nbuilder-lib: Contains classes that convert the botocore definitions into perl classes.\n\nauto-lib: Contains the auto-generated classes. Changes to code in this directory\nwill be overwritten, so only commit autogenerated code; never handwritten code (see \"Generating API\").\n\nChanges that fix something in auto-lib are welcome, but cannot be applied directly, since they will be\noverwritten. Usually, they indicate some kind of general problem with other APIs, so the\nproblem has to be fixed generically.\n\nlib: Contains roles and classes that the auto-generated classes use to call the API,\nsign requests, handle responses, etc.\n\nGenerating API\n============\n\nNote: This step is not necessary if you want to try out the SDK. We commit in \"auto-lib\"\nthe classes generated by the definitions to which the \"botocore\" submodule points to. If you're\nnot developing the SDK, go directly to the \"Trying it out\" step :)\n\nExecute command make pull-other-sdks This will do a git pull of some official AWS sdks\nthat are data-driven, and used to generate the SDK.\n\nIf documentation-1.json is not present in botocore/botocore/data/ for each service,\nwhich it will not when first using this project or when botocore possibly updates,\nthen you need to first run the command to generate links to the AWS docs with:\n```\nmake docu-links\n```\nThis will allow the following two commands to function.\n\nTo generate the API for a given API call:\n```\n./gen_classes.pl --classes botocore/botocore/data/SERVICE/DATE/service-2.json\n```\n\nThis will generate file(s) in auto-lib.\n\nTo generate all the APIs:\n\n```\nmake gen-classes\n```\n\nPerl versions\n============\n\nThe SDK is targeted at modern Perl versions. Since a new perl gets released every year, distributions perl tend to lag behind, so\nsupport for perl versions on any modern, widespread distribution is our target.\nVery old versions may work, but no intention to support them is made. You can always install a modern version of perl with perlbrew or\nplenv in a breeze. We're running the test cases on GitHub Actions for all \"supported\" perl versions. If you want to support a lower version,\nyou can contribute back. Acceptance of patches for older versions of Perl won't mean that the compatibility will be maintained\nlong-term, although it will be tried :).\n\nDependencies\n============\n\nDependencies are versioned in a cpanfile. If you have carton, just execute 'carton install' in the sdk directory, and all dependencies\nwill be pulled in automatically into a local library path. After that use 'carton exec ...' to execute your scripts.\n\nIf you add a dependency, just add it to the cpanfile file. There are three sections:\n\n - the general section is for dependencies that are needed only in runtime\n - the test section is for dependecies needed to run the test suite\n - the develop section is for dependencies needed for developers\n\ncarton install installs all dependencies in all sections (after all, we're in developer mode here)\n\nPackaging\n============\n\nPackaging is managed with Dist::Zilla. To install Dist::Zilla and the necessary plugins, run:\n\n```\nmake dist\n```\n\nAfter this, you will have a tar.gz suitable for uploading to CPAN or to your own mini-CPAN\n\nReleasing\n============\n\nThe release process is as follows:\n\nX.XX will be the version that you are currently working on (the one you want to release)\nY.YY will be the next version (which we start). This assumes `origin` as the main SDK source.\n\n```\ngit checkout release/X.XX\ngit pull origin release/X.XX\n```\n\nEdit README.md to add any relevant contributions.\n\n```\nmake gen-paws\n```\n\nWill copy the contents of the Contributions section of README.md into Paws.pm so that the same\nsection appears in CPAN also.\n\nNow edit the `Changes` file to add the date of release, adjusting the entry for version X.XX to \ntodays date.\n\nCommit everything up till now and push\n\n```\ngit push origin release/X.XX\n```\n\nTake a look at Github Actions to see if the branch you're going to release is green: https://github.com/pplu/aws-sdk-perl/actions/\n\nWe don't want to ship Paws when it's failing it's tests.\n\nIf everything is OK:\n\n```\ngit checkout master\ngit pull origin master\ngit merge release/X.XX\ngit push origin master\ngit tag release-X.XX\ngit push origin release-X.XX\nmake dist\n```\n\nthis will generate Paws-X.XX.tar.gz, which is the artifact that is uploadable to CPAN\n\n```\ngit checkout -b release/Y.YY\ngit push --set-upstream origin release/Y.YY\n```\n\nThis creates the branch for working on the next release.\n\nWe bump the version number in the builder. Edit `builder-lib/Paws/API/Builder/Paws.pm`. Near line 12\nwe will find Paws version number. Replace X.XX for Y.YY\n\nWe add Y.YY to the Changes file. Commit the changes and push:\n\n```\ngit push origin release/Y.YY\n```\n\nWe're ready for developing Y.YY\n\nAfter that: upload Paws-X.XX.tar.gz to CPAN an do a walk around issues and MRs that have\nbeen fixed / merged in the release, notifying that \"Paws X.XX has hit CPAN with this issue fixed\"\n\n\nTrying it out\n============\n\nEach class for each API can be constructed in the following way:\n\nCreate a Perl script (myscript.pl)\n\n```\n#!/usr/bin/env perl\n\nuse Paws;\nuse Data::Printer;\n\nmy $iam = Paws-\u003eservice('IAM');\n\nmy $summary = $iam-\u003eGetAccountSummary;\np $summary-\u003eSummaryMap;\n```\n\nalso take a look at the CLI utility (see below) for fast testing)\n\nCredentials\n============\n\nSee MetaCPAN https://metacpan.org/pod/Paws#AUTHENTICATION\n\nor\n\n```\nperldoc Paws\n```\n\nStatus\n================\n\nDon't consider the SDK as \"stable\" code. There is a lot of experimenting going on. That said,\npeople are using it in production, so changes to the way you call APIs, although not guaranteed, are\nnot prone to change because they are autogenerated. Expect changes around the way you obtain\nservice classes, transmit credentials, etc. Look at the TODO for expected changes to come.\n\nAs of 2015-02 I'm documenting breaking changes in the Changes file. API changes that break stuff\nwill be documented there. Please read the Changes file before updating your git clone.\n\nUsing the SDK in your code\n================\n\nAlthough the code isn't considered stable yet, it works, and more than one person is using it\nalready. I recommend you to using a cpanfile, and bundling Paws with carton bundle\n\nSupported AWS Services\n================\n\nTake a look at https://metacpan.org/pod/Paws#SUPPORTED-SERVICES\n\nIf a service is not supported, it will warn on construction with an explicit \"non supported API\"\nmessage. Basically all query and json services are supported. RestXML and RestJSON services are in the coming.\n\nDocumentation\n================\nAll services get auto-generated POD documentation. perldoc a file to take a look at the documentation.\n\nCLI utility\n================\nPaws comes with a command-line utility to exercise the SDK. Just like Paws is the namespace\nfor the SDK, \"paws\" (in /script) is the cli utility. It's quite rudimentary, but think of it as\na quick way to try out calling services. Just call:\n\n```\npaws\n```\n\nto list all services. If a service isn't supported yet, it will die explicitly advising you that\nPaws doesn't support that service yet.\n\n```\npaws EC2 --region eu-west-1 DescribeInstances\n```\n\nParameters needed in for DescribeInstances can be passed as a list of parameters (see https://metacpan.org/pod/ARGV::Struct) for complete\ndocumentation of how to pass parameters via command line.\n\n```\npaws EC2 --region eu-west-1 DescribeInstances Parameter1: ValueForParameter1 ListParameter: [ V1 V2 ] ComplexParam { Key1 Value1 Key2 Value 2 }\n```\n\nLicense\n================\n\nThis code is distributed under the Apache v2 License\n\nThanks\n================\n\nCAPSiDE (https://www.capside.com) for letting Paws be contributed in an open source model\nand giving me time to build and maintain it regularly.\n\nZipRecruiter (https://www.ziprecruiter.com/) for sponsoring development of Paws. Lots of work\nfrom ZipRecruiter has been done via Shadowcat Systems (https://shadow.cat/).\n\ncastaway for contributing to fixing documentation problems\n - taking the reigns of Paws, become part of the core team that pushes it forward\n - properly providing backlinks between related pages\n - making TOCs render correctly on search.cpan.org\n - generating helpful copy-paste ready scenarios in the synopsis of each method call\n\nLuis Alberto Gimenez (@agimenez) for\n - The git-fu cleaning up the \"pull other sdks\" code\n - Credential Providers code\n - Fixes for users that have no HOME env variable\n - FileCaller to fully mock responses\n\nSrinvas (@kidambisrinivas) for testing, bug reporting and fixing\n\njuair10 for corrections and testing\n\nCHORNY for CPAN and cpanfile packaging corrections\n\nIñigo Tejedor for service endpoint resolution based on rules\n\ncodehead for helping fix SQS Queue Maps\n\nmbartold for helping fix SQS MessageBatch functionality\n\ncoreymayer for reporting bug in RestXmlCaller\n\narc (Aaron Crane) for documentation patches\n\ndtikhonov for LWP Caller and bug reporting/fixing\n\nvivus-ignis for DynamoDB bug reporting and test scripts for DynamoDB\n\nkarenetheridge for bug reporting, pull requests and help\n\nioanrogers for fixing unicode issues in tests\n\nilmari for fixing issues with timestamps in Date and X-Amz-Date headers,\ntest fixes and 5.10 support fixes, documentation issue fixes for S3,\nCloudFront and Route53, help with number stringification\n\nstevecaldwell77 for \n - contributing support for temporary credentials in S3\n - Fixing test suite failure scenarios\n\nRyan Olson (BeerBikesBBQ) for contributing documentation fixes\n\nRoger Pettett for testing and contributing fixes for tests on MacOSX\n\nHenri Yandell for help with licensing issues\n\nOriol Soriano (@ureesoriano) for contributions to API builders and better\ndocumentation generation\n\nH. Daniel Cesario (@maneta) for devel setup instructions on RH and MacOSX\n\nGlen van Ginkel for contributions to get S3 working\n\nJavier Arellano for discovering Tagging bug\n\nIoan Rogers for contributing AssumeRoleWithSAML with ADFS auth example\n\nMiquel Soriano for reporting a bug with DescribeAutoScalingGroups\n\nAlbert Bendicho (wiof) for contributing better retry logic\n\nBrian Hartsock for better handling of XMLResponse exceptions\n\nrpcme for reporting various bugs in the SDK\n\nglenveegee for lots of work sorting out the S3 implementation\n\nGrinzz\n - many bugs, suggestions and fixes\n - Installation speedup with Module::Builder::Tiny\n\nDakkar\n  - solving issues with parameter passing\n  - fixing dns and other tests when a proxy is in use\n\nArthur Axel fREW Schmidt for speeding up credential refreshing\n\nPopeFelix for solving issues around S3 and MojoAsyncCaller\n\nmeis for (between others):\n - contributing Paws::Credential::Explicit\n - enabling unstable warnings to be silenced\n\nsven-schubert for contributing fixes to RestXML services,\nworking on fixing S3 to work correctly.\n\nSeptamusNonovant for fixing paginators in non-callback mode\n\ngadgetjunkie for contributing the ECS credential provider\n\nmla for contributing a fix to correct dependencies\n\nautarch for correcting signature generation for a bunch of services\n\npiratefinn for linking calls to documentation AWS URLs\n\nslobo for fixing S3 behaviour\n\nbork1n for fixes to MojoAsynCaller\n\natoomic for:\n - tweaking CPAN packaging\n - improving paws CLI\n\nleonerd for (between others)\n - documenting retry logic\n - fixing retry sleep of MojoAsyncCaller\n\ncampus-explorer for contributing to test suite\n\nbyterock for:\n - testing and fixing PinPoint\n - standing up as comaint, and releasing 0.43\n - improving S3 support\n\ntorrentale for fixing QueryCaller to correctly signal empty arrays\n\nJess Robinson and shadowcat.co.uk for:\n - doing lots of comaint work\n - working hard on new features\n\nshogo82148 for migrating our Travis pipelines to GitHub Actions (and \nimproving them)\n\naeruder for contributing\n - Fixing DynamoDB retry fixes\n - Completing speedups and benchmarking code\n - Substituting Config::INI for Config::AWS \n - Parrallelizing and fixing generation inconsistencies of the SDK\n\ndheffx for making ContainerProfile credential provider more robust\n\n0leksii for building support for Instance Metadata Service v2 (IMDSv2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpplu%2Faws-sdk-perl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpplu%2Faws-sdk-perl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpplu%2Faws-sdk-perl/lists"}