Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature(aws-s3-connector): AWS s3 connector #3744

Merged
merged 13 commits into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
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",
Copy link
Contributor

@sbuettner sbuettner Dec 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldnt this be part of the action object? Like:

{ "action": {"type":"upload", ...}}

"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
Loading