Skip to content

Commit

Permalink
feature(aws-s3-connector): AWS s3 connector (#3744)
Browse files Browse the repository at this point in the history
* feature(s3-connector): initial commit

* feature(s3-connector): checkpoint s3 connector

* feature(s3-connector): checkpoint s3 connector

* feature(s3-connector): checkpoint s3 connector

* feature(s3-connector): checkpoint s3 connector 3

* feature(s3-connector): checkpoint s3 connector; pom commit

* feature(s3-connector): checkpoint s3 connector; pom commit

* feature(s3-connector): all features done

* feature(s3-connector): correcting after Jonathan comments

* feature(s3-connector): minor corrections

* feature(s3-connector): minor corrections before rebase

* feature(s3-connector): corrections

* feature(s3-connector): corrections 2
  • Loading branch information
mathias-vandaele authored Dec 19, 2024
1 parent 11b0f42 commit 9b775d1
Show file tree
Hide file tree
Showing 26 changed files with 1,664 additions and 5 deletions.
4 changes: 4 additions & 0 deletions bundle/default-bundle/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
<groupId>io.camunda.connector</groupId>
<artifactId>connector-aws-bedrock</artifactId>
</dependency>
<dependency>
<groupId>io.camunda.connector</groupId>
<artifactId>connector-aws-s3</artifactId>
</dependency>
<dependency>
<groupId>io.camunda.connector</groupId>
<artifactId>connector-aws-textract</artifactId>
Expand Down
5 changes: 5 additions & 0 deletions bundle/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@
<artifactId>connector-aws-sagemaker</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.camunda.connector</groupId>
<artifactId>connector-aws-s3</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.camunda.connector</groupId>
<artifactId>connector-email</artifactId>
Expand Down
369 changes: 369 additions & 0 deletions connectors/aws/aws-s3/element-templates/aws-s3-outbound-connector.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,369 @@
{
"$schema" : "https://unpkg.com/@camunda/zeebe-element-templates-json-schema/resources/schema.json",
"name" : "AWS S3 Outbound Connector",
"id" : "io.camunda.connectors.aws.s3.v1",
"description" : "Execute S3 requests",
"metadata" : {
"keywords" : [ ]
},
"documentationRef" : "https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/aws-s3/",
"version" : 1,
"category" : {
"id" : "connectors",
"name" : "Connectors"
},
"appliesTo" : [ "bpmn:Task" ],
"elementType" : {
"value" : "bpmn:ServiceTask"
},
"groups" : [ {
"id" : "authentication",
"label" : "Authentication"
}, {
"id" : "configuration",
"label" : "Configuration"
}, {
"id" : "action",
"label" : "Action"
}, {
"id" : "deleteObject",
"label" : "Delete an object"
}, {
"id" : "uploadObject",
"label" : "Upload an object"
}, {
"id" : "downloadObject",
"label" : "Download an object"
}, {
"id" : "output",
"label" : "Output mapping"
}, {
"id" : "error",
"label" : "Error handling"
}, {
"id" : "retries",
"label" : "Retries"
} ],
"properties" : [ {
"value" : "io.camunda:aws-s3:1",
"binding" : {
"property" : "type",
"type" : "zeebe:taskDefinition"
},
"type" : "Hidden"
}, {
"id" : "authentication.type",
"label" : "Authentication",
"description" : "Specify AWS authentication strategy. Learn more at the <a href=\"https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/aws-lambda/#aws-authentication-types\" target=\"_blank\">documentation page</a>",
"value" : "credentials",
"group" : "authentication",
"binding" : {
"name" : "authentication.type",
"type" : "zeebe:input"
},
"type" : "Dropdown",
"choices" : [ {
"name" : "Default Credentials Chain (Hybrid/Self-Managed only)",
"value" : "defaultCredentialsChain"
}, {
"name" : "Credentials",
"value" : "credentials"
} ]
}, {
"id" : "authentication.accessKey",
"label" : "Access key",
"description" : "Provide an IAM access key tailored to a user, equipped with the necessary permissions",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "authentication",
"binding" : {
"name" : "authentication.accessKey",
"type" : "zeebe:input"
},
"condition" : {
"property" : "authentication.type",
"equals" : "credentials",
"type" : "simple"
},
"type" : "String"
}, {
"id" : "authentication.secretKey",
"label" : "Secret key",
"description" : "Provide a secret key of a user with permissions to invoke specified AWS Lambda function",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "authentication",
"binding" : {
"name" : "authentication.secretKey",
"type" : "zeebe:input"
},
"condition" : {
"property" : "authentication.type",
"equals" : "credentials",
"type" : "simple"
},
"type" : "String"
}, {
"id" : "configuration.region",
"label" : "Region",
"description" : "Specify the AWS region",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "configuration",
"binding" : {
"name" : "configuration.region",
"type" : "zeebe:input"
},
"type" : "String"
}, {
"id" : "configuration.endpoint",
"label" : "Endpoint",
"description" : "Specify endpoint if need to use custom endpoint",
"optional" : true,
"group" : "configuration",
"binding" : {
"name" : "configuration.endpoint",
"type" : "zeebe:input"
},
"type" : "Hidden"
}, {
"id" : "actionDiscriminator",
"label" : "Action",
"value" : "uploadObject",
"group" : "action",
"binding" : {
"name" : "actionDiscriminator",
"type" : "zeebe:input"
},
"type" : "Dropdown",
"choices" : [ {
"name" : "Delete object",
"value" : "deleteObject"
}, {
"name" : "Download object",
"value" : "downloadObject"
}, {
"name" : "Upload object",
"value" : "uploadObject"
} ]
}, {
"id" : "deleteActionBucket",
"label" : "AWS bucket",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "deleteObject",
"binding" : {
"name" : "action.bucket",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "deleteObject",
"type" : "simple"
},
"tooltip" : "Bucket from where an object should be deleted",
"type" : "String"
}, {
"id" : "deleteActionKey",
"label" : "AWS key",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "deleteObject",
"binding" : {
"name" : "action.key",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "deleteObject",
"type" : "simple"
},
"tooltip" : "Key of the object which should be deleted",
"type" : "String"
}, {
"id" : "uploadActionBucket",
"label" : "AWS bucket",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "uploadObject",
"binding" : {
"name" : "action.bucket",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "uploadObject",
"type" : "simple"
},
"tooltip" : "Bucket from where an object should be uploaded",
"type" : "String"
}, {
"id" : "uploadActionKey",
"label" : "AWS key",
"optional" : true,
"feel" : "optional",
"group" : "uploadObject",
"binding" : {
"name" : "action.key",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "uploadObject",
"type" : "simple"
},
"tooltip" : "Key of the uploaded object, if not given. The file name from the document metadata will be used",
"type" : "String"
}, {
"id" : "uploadActionDocument",
"label" : "Document",
"optional" : false,
"feel" : "required",
"group" : "uploadObject",
"binding" : {
"name" : "action.document",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "uploadObject",
"type" : "simple"
},
"tooltip" : "Document to be uploaded on AWS S3",
"type" : "String"
}, {
"id" : "downloadActionBucket",
"label" : "AWS bucket",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "downloadObject",
"binding" : {
"name" : "action.bucket",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "downloadObject",
"type" : "simple"
},
"tooltip" : "Bucket from where an object should be downloaded",
"type" : "String"
}, {
"id" : "downloadActionKey",
"label" : "AWS key",
"optional" : false,
"constraints" : {
"notEmpty" : true
},
"feel" : "optional",
"group" : "downloadObject",
"binding" : {
"name" : "action.key",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "downloadObject",
"type" : "simple"
},
"tooltip" : "Key of the object which should be download",
"type" : "String"
}, {
"id" : "downloadActionAsFile",
"label" : "Create document",
"optional" : false,
"value" : true,
"feel" : "optional",
"group" : "downloadObject",
"binding" : {
"name" : "action.asFile",
"type" : "zeebe:input"
},
"condition" : {
"property" : "actionDiscriminator",
"equals" : "downloadObject",
"type" : "simple"
},
"tooltip" : "If set to true, a document reference will be created. If set to false, the content will be extracted and provided inside the response.",
"type" : "Boolean"
}, {
"id" : "resultVariable",
"label" : "Result variable",
"description" : "Name of variable to store the response in",
"group" : "output",
"binding" : {
"key" : "resultVariable",
"type" : "zeebe:taskHeader"
},
"type" : "String"
}, {
"id" : "resultExpression",
"label" : "Result expression",
"description" : "Expression to map the response into process variables",
"feel" : "required",
"group" : "output",
"binding" : {
"key" : "resultExpression",
"type" : "zeebe:taskHeader"
},
"type" : "Text"
}, {
"id" : "errorExpression",
"label" : "Error expression",
"description" : "Expression to handle errors. Details in the <a href=\"https://docs.camunda.io/docs/components/connectors/use-connectors/\" target=\"_blank\">documentation</a>.",
"feel" : "required",
"group" : "error",
"binding" : {
"key" : "errorExpression",
"type" : "zeebe:taskHeader"
},
"type" : "Text"
}, {
"id" : "retryCount",
"label" : "Retries",
"description" : "Number of retries",
"value" : "3",
"feel" : "optional",
"group" : "retries",
"binding" : {
"property" : "retries",
"type" : "zeebe:taskDefinition"
},
"type" : "String"
}, {
"id" : "retryBackoff",
"label" : "Retry backoff",
"description" : "ISO-8601 duration to wait between retries",
"value" : "PT0S",
"group" : "retries",
"binding" : {
"key" : "retryBackoff",
"type" : "zeebe:taskHeader"
},
"type" : "String"
} ],
"icon" : {
"contents" : "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjgiIGhlaWdodD0iNTEyIiB2aWV3Qm94PSIwIDAgNDI4IDUxMiI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2UyNTQ0NDsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIsIC5jbHMtMyB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICM3YjFkMTM7CiAgICAgIH0KCiAgICAgIC5jbHMtMyB7CiAgICAgICAgZmlsbDogIzU4MTUwZDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzc4LDk5TDI5NSwyNTdsODMsMTU4LDM0LTE5VjExOFoiLz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNzgsOTlMMjEyLDExOCwxMjcuNSwyNTcsMjEyLDM5NmwxNjYsMTlWOTlaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNDMsOTlMMTYsMTExVjQwM2wyNywxMkwyMTIsMjU3WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQyLjYzNyw5OC42NjdsMTY5LjU4Nyw0Ny4xMTFWMzcyLjQ0NEw0Mi42MzcsNDE1LjExMVY5OC42NjdaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjEyLjMxMywxNzAuNjY3bC03Mi4wMDgtMTEuNTU2LDcyLjAwOC04MS43NzgsNzEuODMsODEuNzc4WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTI4NC4xNDMsMTU5LjExMWwtNzEuOTE5LDExLjczMy03MS45MTktMTEuNzMzVjc3LjMzMyIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTIxMi4zMTMsMzQyLjIyMmwtNzIuMDA4LDEzLjMzNCw3Mi4wMDgsNzAuMjIyLDcxLjgzLTcwLjIyMloiLz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMTIsMTZMMTQwLDU0VjE1OWw3Mi4yMjQtMjAuMzMzWiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTIxMi4yMjQsMTk2LjQ0NGwtNzEuOTE5LDcuODIzVjMwOS4xMDVsNzEuOTE5LDguMjI4VjE5Ni40NDRaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjEyLjIyNCwzNzMuMzMzTDE0MC4zMDUsMzU1LjNWNDU4LjM2M0wyMTIuMjI0LDQ5NlYzNzMuMzMzWiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTI4NC4xNDMsMzU1LjNsLTcxLjkxOSwxOC4wMzhWNDk2bDcxLjkxOS0zNy42MzdWMzU1LjNaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjEyLjIyNCwxOTYuNDQ0bDcxLjkxOSw3LjgyM1YzMDkuMTA1bC03MS45MTksOC4yMjhWMTk2LjQ0NFoiLz4KICA8cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMTIsMTZsNzIsMzhWMTU5bC03Mi0yMFYxNloiLz4KPC9zdmc+Cg=="
}
}
Loading

0 comments on commit 9b775d1

Please sign in to comment.