{"id":13734603,"url":"https://github.com/classmethod/gradle-aws-plugin","last_synced_at":"2026-03-04T05:33:52.454Z","repository":{"id":13610852,"uuid":"16303962","full_name":"classmethod/gradle-aws-plugin","owner":"classmethod","description":"Gradle plugin to manage Amazon Web Services","archived":false,"fork":false,"pushed_at":"2023-03-30T04:40:13.000Z","size":1031,"stargazers_count":277,"open_issues_count":57,"forks_count":131,"subscribers_count":30,"default_branch":"master","last_synced_at":"2026-02-13T09:27:56.919Z","etag":null,"topics":["aws","bd","gradle","gradle-plugin","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/classmethod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2014-01-28T06:24:14.000Z","updated_at":"2025-10-03T07:22:23.000Z","dependencies_parsed_at":"2022-08-31T08:41:24.963Z","dependency_job_id":"d1ffedfa-e6cc-42b2-b769-4fc259fe4544","html_url":"https://github.com/classmethod/gradle-aws-plugin","commit_stats":null,"previous_names":["classmethod-aws/gradle-aws-plugin"],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/classmethod/gradle-aws-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/classmethod%2Fgradle-aws-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/classmethod%2Fgradle-aws-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/classmethod%2Fgradle-aws-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/classmethod%2Fgradle-aws-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/classmethod","download_url":"https://codeload.github.com/classmethod/gradle-aws-plugin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/classmethod%2Fgradle-aws-plugin/sbom","scorecard":{"id":285286,"data":{"date":"2025-08-11","repo":{"name":"github.com/classmethod/gradle-aws-plugin","commit":"f027b1fb85e6dd394015d52882a5557eebbe7f42"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":6,"reason":"Found 9/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: copyright/LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: samples/05-beanstalk/src/main/bundle/Dockerfile:1","Warn: containerImage not pinned by hash: samples/06-cloudformation/src/main/bundle/Dockerfile:1","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T17:05:38.403Z","repository_id":13610852,"created_at":"2025-08-17T17:05:38.403Z","updated_at":"2025-08-17T17:05:38.403Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30072567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["aws","bd","gradle","gradle-plugin","java"],"created_at":"2024-08-03T03:00:57.928Z","updated_at":"2026-03-04T05:33:52.437Z","avatar_url":"https://github.com/classmethod.png","language":"Java","readme":"Gradle AWS Plugin\n=================\n\n[![Join the chat at https://gitter.im/gradle-aws-plugin/Lobby](https://badges.gitter.im/gradle-aws-plugin/Lobby.svg)](https://gitter.im/gradle-aws-plugin/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nGradle plugin to manage AWS resources.\n\nCurrent Features / Supported AWS Products\n-----------------------------------------\n\n* S3\n  * Create bucket\n  * Delete bucket\n  * Upload object(s)\n  * Delete object(s)\n  * File sync\n  * Set bucket policy\n  * Set website configuration\n* EC2\n  * Run instance\n  * Start instance\n  * Stop instance\n  * Terminate instance\n  * Import key\n  * Create security group\n  * Delete security group\n  * Authorize security group ingress permissions\n  * Authorize security group egress permissions\n  * Revoke security group ingress permissions\n  * Revoke security group egress permissions\n  * Wait for specific status on instance\n* RDS\n  * Create DB instance\n  * Delete DB instance\n  * Modify DB instance\n  * Migrate (create or modify) DB instance\n  * Reboot DB instance\n  * Wait for specific status on DB instance\n* Route53\n  * Create hosted zone\n  * Delete hosted zone\n  * Change record set\n* Elastic Beanstalk\n  * Create or delete applications\n  * Create or terminate environments\n  * Create or delete configuration templates\n  * Create or delete application versions\n  * Wait for specific status on environment\n* CloudFormation\n  * Migrate (create or update) stack\n  * Delete stack\n  * Wait for specific status on stack\n* Lambda\n  * Create function\n  * Update function code\n  * Update function configuration\n  * Migrate (create or update) function\n  * Invoke function\n  * Delete function\n  * Publish function version\n  * Create alias\n  * Update alias\n* IAM\n  * Create role\n  * Attach role policy\n* ELB\n  * (TBD)\n* SQS\n  * Send messages\n  * Delete messages\n  * Read messages\n* SNS\n  * Publish message\n* SSM\n  * Put parameters\n\nRequirements\n------------\n\n* Java 8+\n* Gradle 2.4+\n\nUsage\n-----\n\nAdd this to your `build.gradle`:\n\n```groovy\nbuildscript {\n  repositories {\n    mavenCentral()\n    maven { url \"https://plugins.gradle.org/m2/\" }\n  }\n  dependencies {\n    classpath \"jp.classmethod.aws:gradle-aws-plugin:0.30\"\n  }\n}\n\napply plugin: 'jp.classmethod.aws'\n\naws {\n  profileName = 'credentials-profile-name-in-your-profile-configuration-file (~/.aws/credentials)'\n  region = 'ap-northeast-1'\n}\n```\n\nThese credentials are used to make API accesses by default. The format of the credentials file is described in the [Amazon AWS Docs](http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html#credentials-file-format).\n\n### S3 Create bucket\n\n```groovy\napply plugin: 'jp.classmethod.aws.s3'\n\ntask createBucket(type: CreateBucketTask) {\n\tbucketName myBucketName\n\n\t// one of http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region values, us-east-1 by default\n\tregion regionName\n\t// create bucket only if it does not exist, otherwise skip\n\tifNotExists true\n}\n```\n\nLook at [S3 example 1](samples/01-s3-upload-simple) for more information.\n\n### S3 files tasks\n\n```groovy\napply plugin: 'jp.classmethod.aws.s3'\n\ntask syncObjects(type: jp.classmethod.aws.gradle.s3.SyncTask) {\n  bucketName 'foobar.example.com'\n  source file('path/to/objects')\n}\n```\n\nLook at [S3 example 1](samples/01-s3-upload-simple) and [S3 example 2](samples/02-s3-sync-contents) for more information.\n\n\n### EC2 instance tasks\n\n```groovy\napply plugin: 'jp.classmethod.aws.ec2'\n\n// You can overwrite default credentials and region settings like this:\n// ec2 {\n//   profileName 'another-credentials-profile-name' // optional\n//   region = 'us-east-1'\n// }\n\ntask stopBastion(type: jp.classmethod.aws.gradle.ec2.AmazonEC2StopInstanceTask) {\n  instanceIds += 'i-12345678'\n}\n\ntask startBastion(type: jp.classmethod.aws.gradle.ec2.AmazonEC2StartInstanceTask) {\n  instanceIds += 'i-12345678'\n}\n```\n\nLook at [EC2 example](samples/03-ec2) for more information.\n\n\n### RDS DB instance tasks\n\n```groovy\napply plugin: \"jp.classmethod.aws.rds\"\n\n// You can overwrite default credentials and region settings like this:\n// rds {\n//   profileName 'another-credentials-profile-name' // optional\n//   region = 'us-east-1'\n// }\n\ntask migrateDBInstance(type: AmazonRDSMigrateDBInstanceTask) {\n\tdbInstanceIdentifier = \"foobar\"\n\tallocatedStorage = 5\n\tdbInstanceClass = \"db.t2.micro\"\n\tengine = \"MySQL\"\n\tmasterUsername = \"root\"\n\tmasterUserPassword = \"passW0rd\"\n\tvpcSecurityGroupIds = [ \"sg-d3958fbf\" ]\n\tdbSubnetGroupName = \"default\"\n\tmultiAZ = false\n\tpubliclyAccessible = true\n}\n\ntask rebootDBInstance(type: AmazonRDSRebootDBInstanceTask) {\n\tdbInstanceIdentifier = \"foobar\"\n}\n\ntask deleteDBInstance(type: AmazonRDSDeleteDBInstanceTask) {\n\tdbInstanceIdentifier = \"foobar\"\n\tskipFinalSnapshot = true\n}\n```\n\nLook at [RDS example](samples/07-rds) for more information.\n\n\n### Route 53 hosted zone tasks\n\n```groovy\napply plugin: 'jp.classmethod.aws.route53'\n\ntask createHostedZone(type: jp.classmethod.aws.gradle.route53.CreateHostedZoneTask) {\n\thostedZoneName \"foobar.example.com\"\n\tcallerReference '0BF44985-9D79-BF3B-A9B0-5AE24D6E86E1'\n}\n\ntask deleteHostedZone(type: jp.classmethod.aws.gradle.route53.DeleteHostedZoneTask) {\n\thostedZoneId \"XXXX\"\n}\n```\n\nLook at [Route 53 example](samples/04-route53) for more information.\n\n\n### Elastic Beanstalk environment tasks\n\n```groovy\napply plugin: 'jp.classmethod.aws.beanstalk'\nbeanstalk {\n  String extension = project.war.archiveName.tokenize('.').last()\n  String timestamp = new Date().format(\"yyyyMMdd'_'HHmmss\", TimeZone.default)\n\n  appName 'foobar'\n  appDesc 'foobar demo application'\n  \n  version {\n    label = \"foobar-${project.war.version}-${timestamp}\"\n    description = \"${artifactId} v${version}\"\n    bucket = 'sample-bucket'\n    key = \"eb-apps/foobar-${project.war.version}-${timestamp}.${extension}\"\n  }\n  \n  configurationTemplates {\n    production {\n      optionSettings = file('src/main/config/production.json')\n      solutionStackName = '64bit Amazon Linux 2013.09 running Tomcat 7 Java 7'\n    }\n    development {\n      optionSettings = file('src/main/config/development.json')\n      solutionStackName = '64bit Amazon Linux 2013.09 running Tomcat 7 Java 7'\n    }\n  }\n  \n  environment {\n    envName = 'foobar'\n    envDesc = 'foobar demo application development environment'\n    templateName = 'development'\n    versionLabel = \"foobar-${project.war.version}-${timestamp}\"\n  }\n}\n\n// task awsEbMigrateEnvironment, awsEbDeleteApplication and so on are declared\n```\n\nLook [Elastic Beanstalk example](samples/05-beanstalk) for more information.\n\n\n### CloudFormation stack tasks\n\n```groovy\napply plugin: 'jp.classmethod.aws.cloudformation'\n\ncloudFormation {\n  stackName 'foobar-stack'\n  stackParams([\n    Foo: 'bar',\n    Baz: 'qux'\n  ])\n  stackTags([\n    Bar: 'foo',\n    Baz: 'fox'\n  })\n  capabilityIam true\n  templateFile project.file(\"foobar.template\")\n  templateBucket 'example-bucket'\n  templateKeyPrefix 'foobar/'\n}\n\n// awsCfnMigrateStack and awsCfnDeleteStack task (and so on) are declared.\n```\n\nLook at [CloudFormation example](samples/06-cloudformation) for more information.\n\n\n### Lambda function tasks\n\n```groovy\napply plugin: \"base\"\napply plugin: \"jp.classmethod.aws.lambda\"\naws {\n\tprofileName = \"default\"\n\tregion = \"ap-northeast-1\"\n}\n\nlambda {\n\tregion = \"us-east-1\"\n}\n\ntask zip(type: Zip) {\n\tfrom \"function/\"\n\tdestinationDir file(\"build\")\n}\n\ntask migrateFunction(type: AWSLambdaMigrateFunctionTask, dependsOn: zip) {\n\tfunctionName = \"foobar\"\n\trole = \"arn:aws:iam::${aws.accountId}:role/lambda-poweruser\"\n\tzipFile = zip.archivePath\n\thandler = \"DecodeBase64.handler\"\n\talias = 'DEV'\n\tenvironment = [\n\t    p1: \"Value\",\n\t    p2: \"Value2\"\n\t]\n\ttags = [\n\t    p1: \"Value\",\n\t    p2: \"Value2\"    \n\t]\n}\n\ntask invokeFunction(type: AWSLambdaInvokeTask) {\n\tfunctionName = \"foobar\"\n\tinvocationType = InvocationType.RequestResponse\n\tpayload = file(\"sample-input/input.txt\")\n\tdoLast {\n\t\tprintln \"Lambda function result: \" + new String(invokeResult.payload.array(), \"UTF-8\")\n\t}\n}\n\ntask deleteFunction(type: AWSLambdaDeleteFunctionTask) {\n\tfunctionName = \"foobar\"\n}\n\ntask publishVersionFunction(type: AWSLambdaPublishVersionTask, dependsOn: migrateFunction) {\n\tfunctionName = \"foobar\"\n}\n\ntask createAlias(type: AWSLambdaCreateAliasTask, dependsOn: publishVersionFunction) {\n\tfunctionName = \"foobar\"\n\taliasName = \"alias\"\n\tfunctionVersion = \"1\"\n}\n\ntask updateAlias(type: AWSLambdaUpdateAliasTask, dependsOn: createAlias) {\n\tfunctionName = \"foobar\"\n    aliasName = \"alias\"\n\tfunctionVersion = \"1\"\n    routingConfig {\n        additionalVersionWeight = 0.7\n\t\tuseNextVersion = true\n    }\n}\n\ntask updateLambdaFunctionCode(type: AWSLambdaUpdateFunctionCodeTask) {\n    functionName = \"fooBar\"\n    zipFile = zip.archivePath\n}\n```\n\nLook at [Lambda example](samples/08-lambda) for more information.\n\n### SQS tasks\n\n```groovy\napply plugin: \"jp.classmethod.aws.sqs\"\n\ntask sendMessages(type: AmazonSQSSendMessagesTask) {\n\tqueueName 'gradle-aws-plugin-sample'\n\tmessages Stream.of(\"Test 1\", \"Test 2\")\n}\n\ntask deleteMessages(type: AmazonSQSMessageConsumerTask) {\n\tqueueName 'gradle-aws-plugin-sample'\n\tshowMessages false\n}\n\ntask viewMessages(type: AmazonSQSMessageConsumerTask) {\n\tqueueName 'gradle-aws-plugin-sample'\n\tdeleteMessages false\n\tmaxNumberOfMessages 50\n}\n```\n\nLook at [SQS example](samples/09-sqs) for more information.\n\n### SNS tasks\n```groovy\napply plugin: \"jp.classmethod.aws.sns\"\n\ntask publishMessage(type: AmazonSNSPublishMessageTask) {\n\ttopicArn 'arn:aws:sns:us-east-1:000000000000:gradle-aws-plugin-sns-topic'\n\tmessage 'Test body'\n\tsubject 'Optional test subject'\n}\n\ntask publishJsonMessage(type: AmazonSNSPublishMessageTask) {\n\ttopicArn 'arn:aws:sns:us-east-1:000000000000:gradle-aws-plugin-sns-topic'\n\tmessage JsonOutput.toJson(['default': 'Default message body.',\n\t\t\t\t\t\t\t   'email'  : 'Email message body.',\n\t\t\t\t\t\t\t   'sms': 'SMS message body.'])\n\tmessageStructure 'json'\n}\n```\nLook at [SNS example](samples/10-sns) for more information.\n\nLicense\n-------\nCopyright (C) 2013-2018 [Classmethod, Inc.](http://classmethod.jp/)\n\nDistributed under the Apache License v2.0.  See the file [copyright/LICENSE.txt](copyright/LICENSE.txt).\n\nDevelopment and Contribution\n----------------------------\nWe are open to contributions.\n\nTo contribute to the plugin or make your own modifications, including the ability\nto publish your build artifacts to your own Maven repository see: [development](docs/development.md).\n","funding_links":[],"categories":["Plugins"],"sub_categories":["Cloud services"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclassmethod%2Fgradle-aws-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclassmethod%2Fgradle-aws-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclassmethod%2Fgradle-aws-plugin/lists"}