在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):classmethod/gradle-aws-plugin开源软件地址(OpenSource Url):https://github.com/classmethod/gradle-aws-plugin开源编程语言(OpenSource Language):Java 97.8%开源软件介绍(OpenSource Introduction):Gradle AWS PluginGradle plugin to manage AWS resources. Current Features / Supported AWS Products
Requirements
UsageAdd this to your buildscript {
repositories {
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "jp.classmethod.aws:gradle-aws-plugin:0.30"
}
}
apply plugin: 'jp.classmethod.aws'
aws {
profileName = 'credentials-profile-name-in-your-profile-configuration-file (~/.aws/credentials)'
region = 'ap-northeast-1'
} These credentials are used to make API accesses by default. The format of the credentials file is described in the Amazon AWS Docs. S3 Create bucketapply plugin: 'jp.classmethod.aws.s3'
task createBucket(type: CreateBucketTask) {
bucketName myBucketName
// one of http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region values, us-east-1 by default
region regionName
// create bucket only if it does not exist, otherwise skip
ifNotExists true
} Look at S3 example 1 for more information. S3 files tasksapply plugin: 'jp.classmethod.aws.s3'
task syncObjects(type: jp.classmethod.aws.gradle.s3.SyncTask) {
bucketName 'foobar.example.com'
source file('path/to/objects')
} Look at S3 example 1 and S3 example 2 for more information. EC2 instance tasksapply plugin: 'jp.classmethod.aws.ec2'
// You can overwrite default credentials and region settings like this:
// ec2 {
// profileName 'another-credentials-profile-name' // optional
// region = 'us-east-1'
// }
task stopBastion(type: jp.classmethod.aws.gradle.ec2.AmazonEC2StopInstanceTask) {
instanceIds += 'i-12345678'
}
task startBastion(type: jp.classmethod.aws.gradle.ec2.AmazonEC2StartInstanceTask) {
instanceIds += 'i-12345678'
} Look at EC2 example for more information. RDS DB instance tasksapply plugin: "jp.classmethod.aws.rds"
// You can overwrite default credentials and region settings like this:
// rds {
// profileName 'another-credentials-profile-name' // optional
// region = 'us-east-1'
// }
task migrateDBInstance(type: AmazonRDSMigrateDBInstanceTask) {
dbInstanceIdentifier = "foobar"
allocatedStorage = 5
dbInstanceClass = "db.t2.micro"
engine = "MySQL"
masterUsername = "root"
masterUserPassword = "passW0rd"
vpcSecurityGroupIds = [ "sg-d3958fbf" ]
dbSubnetGroupName = "default"
multiAZ = false
publiclyAccessible = true
}
task rebootDBInstance(type: AmazonRDSRebootDBInstanceTask) {
dbInstanceIdentifier = "foobar"
}
task deleteDBInstance(type: AmazonRDSDeleteDBInstanceTask) {
dbInstanceIdentifier = "foobar"
skipFinalSnapshot = true
} Look at RDS example for more information. Route 53 hosted zone tasksapply plugin: 'jp.classmethod.aws.route53'
task createHostedZone(type: jp.classmethod.aws.gradle.route53.CreateHostedZoneTask) {
hostedZoneName "foobar.example.com"
callerReference '0BF44985-9D79-BF3B-A9B0-5AE24D6E86E1'
}
task deleteHostedZone(type: jp.classmethod.aws.gradle.route53.DeleteHostedZoneTask) {
hostedZoneId "XXXX"
} Look at Route 53 example for more information. Elastic Beanstalk environment tasksapply plugin: 'jp.classmethod.aws.beanstalk'
beanstalk {
String extension = project.war.archiveName.tokenize('.').last()
String timestamp = new Date().format("yyyyMMdd'_'HHmmss", TimeZone.default)
appName 'foobar'
appDesc 'foobar demo application'
version {
label = "foobar-${project.war.version}-${timestamp}"
description = "${artifactId} v${version}"
bucket = 'sample-bucket'
key = "eb-apps/foobar-${project.war.version}-${timestamp}.${extension}"
}
configurationTemplates {
production {
optionSettings = file('src/main/config/production.json')
solutionStackName = '64bit Amazon Linux 2013.09 running Tomcat 7 Java 7'
}
development {
optionSettings = file('src/main/config/development.json')
solutionStackName = '64bit Amazon Linux 2013.09 running Tomcat 7 Java 7'
}
}
environment {
envName = 'foobar'
envDesc = 'foobar demo application development environment'
templateName = 'development'
versionLabel = "foobar-${project.war.version}-${timestamp}"
}
}
// task awsEbMigrateEnvironment, awsEbDeleteApplication and so on are declared Look Elastic Beanstalk example for more information. CloudFormation stack tasksapply plugin: 'jp.classmethod.aws.cloudformation'
cloudFormation {
stackName 'foobar-stack'
stackParams([
Foo: 'bar',
Baz: 'qux'
])
stackTags([
Bar: 'foo',
Baz: 'fox'
})
capabilityIam true
templateFile project.file("foobar.template")
templateBucket 'example-bucket'
templateKeyPrefix 'foobar/'
}
// awsCfnMigrateStack and awsCfnDeleteStack task (and so on) are declared. Look at CloudFormation example for more information. Lambda function tasksapply plugin: "base"
apply plugin: "jp.classmethod.aws.lambda"
aws {
profileName = "default"
region = "ap-northeast-1"
}
lambda {
region = "us-east-1"
}
task zip(type: Zip) {
from "function/"
destinationDir file("build")
}
task migrateFunction(type: AWSLambdaMigrateFunctionTask, dependsOn: zip) {
functionName = "foobar"
role = "arn:aws:iam::${aws.accountId}:role/lambda-poweruser"
zipFile = zip.archivePath
handler = "DecodeBase64.handler"
alias = 'DEV'
environment = [
p1: "Value",
p2: "Value2"
]
tags = [
p1: "Value",
p2: "Value2"
]
}
task invokeFunction(type: AWSLambdaInvokeTask) {
functionName = "foobar"
invocationType = InvocationType.RequestResponse
payload = file("sample-input/input.txt")
doLast {
println "Lambda function result: " + new String(invokeResult.payload.array(), "UTF-8")
}
}
task deleteFunction(type: AWSLambdaDeleteFunctionTask) {
functionName = "foobar"
}
task publishVersionFunction(type: AWSLambdaPublishVersionTask, dependsOn: migrateFunction) {
functionName = "foobar"
}
task createAlias(type: AWSLambdaCreateAliasTask, dependsOn: publishVersionFunction) {
functionName = "foobar"
aliasName = "alias"
functionVersion = "1"
}
task updateAlias(type: AWSLambdaUpdateAliasTask, dependsOn: createAlias) {
functionName = "foobar"
aliasName = "alias"
functionVersion = "1"
routingConfig {
additionalVersionWeight = 0.7
useNextVersion = true
}
}
task updateLambdaFunctionCode(type: AWSLambdaUpdateFunctionCodeTask) {
functionName = "fooBar"
zipFile = zip.archivePath
} Look at Lambda example for more information. SQS tasksapply plugin: "jp.classmethod.aws.sqs"
task sendMessages(type: AmazonSQSSendMessagesTask) {
queueName 'gradle-aws-plugin-sample'
messages Stream.of("Test 1", "Test 2")
}
task deleteMessages(type: AmazonSQSMessageConsumerTask) {
queueName 'gradle-aws-plugin-sample'
showMessages false
}
task viewMessages(type: AmazonSQSMessageConsumerTask) {
queueName 'gradle-aws-plugin-sample'
deleteMessages false
maxNumberOfMessages 50
} Look at SQS example for more information. SNS tasksapply plugin: "jp.classmethod.aws.sns"
task publishMessage(type: AmazonSNSPublishMessageTask) {
topicArn 'arn:aws:sns:us-east-1:000000000000:gradle-aws-plugin-sns-topic'
message 'Test body'
subject 'Optional test subject'
}
task publishJsonMessage(type: AmazonSNSPublishMessageTask) {
topicArn 'arn:aws:sns:us-east-1:000000000000:gradle-aws-plugin-sns-topic'
message JsonOutput.toJson(['default': 'Default message body.',
'email' : 'Email message body.',
'sms': 'SMS message body.'])
messageStructure 'json'
} Look at SNS example for more information. LicenseCopyright (C) 2013-2018 Classmethod, Inc. Distributed under the Apache License v2.0. See the file copyright/LICENSE.txt. Development and ContributionWe are open to contributions. To contribute to the plugin or make your own modifications, including the ability to publish your build artifacts to your own Maven repository see: development. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论