@dgalichet/n8n-nodes-aws-sdk-v3 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 David Galichet
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,162 @@
1
+ # n8n-nodes-aws-sdk-v3
2
+
3
+ This is an n8n community node that allows you to execute custom JavaScript code with pre-configured AWS SDK v3 clients (S3, Bedrock, SSM) in your n8n workflows.
4
+
5
+ **Note:** This node uses external dependencies (AWS SDK v3) and is only compatible with self-hosted n8n installations. It cannot be used on n8n Cloud.
6
+
7
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
8
+
9
+ [Installation](#installation)
10
+ [Operations](#operations)
11
+ [Credentials](#credentials)
12
+ [Compatibility](#compatibility)
13
+ [Usage](#usage)
14
+ [Resources](#resources)
15
+ [Version history](#version-history)
16
+
17
+ ## Installation
18
+
19
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
20
+
21
+ ```bash
22
+ npm install n8n-nodes-aws-sdk-v3
23
+ ```
24
+
25
+ Or install it directly in your n8n instance via the Community Nodes settings.
26
+
27
+ ## Operations
28
+
29
+ The **AWS Code** node provides a code editor where you can write custom JavaScript code with access to:
30
+
31
+ ### Pre-configured AWS Clients
32
+
33
+ - `$s3` - Amazon S3 Client
34
+ - `$bedrock` - Amazon Bedrock Runtime Client
35
+ - `$ssm` - AWS Systems Manager (SSM) Client
36
+
37
+ ### Available AWS SDK Commands
38
+
39
+ **S3 Commands:**
40
+ - `ListBucketsCommand`
41
+ - `GetObjectCommand`
42
+ - `PutObjectCommand`
43
+ - `DeleteObjectCommand`
44
+ - `CopyObjectCommand`
45
+ - `HeadObjectCommand`
46
+ - `ListObjectsV2Command`
47
+ - `CreateBucketCommand`
48
+ - `DeleteBucketCommand`
49
+
50
+ **Bedrock Commands:**
51
+ - `InvokeModelCommand`
52
+ - `InvokeModelWithResponseStreamCommand`
53
+ - `ConverseCommand`
54
+ - `ConverseStreamCommand`
55
+
56
+ **SSM Commands:**
57
+ - `GetParameterCommand`
58
+ - `GetParametersCommand`
59
+ - `GetParametersByPathCommand`
60
+ - `PutParameterCommand`
61
+ - `DeleteParameterCommand`
62
+ - `DeleteParametersCommand`
63
+
64
+ ### Execution Modes
65
+
66
+ - **Run Once for All Items** - Execute the code once with access to all input items via `$items`
67
+ - **Run Once for Each Item** - Execute the code once for each input item via `$item`
68
+
69
+ ## Credentials
70
+
71
+ Create **AWS SDK V3 API** credentials with:
72
+
73
+ | Field | Description |
74
+ |-------|-------------|
75
+ | Access Key ID | Your AWS Access Key ID |
76
+ | Secret Access Key | Your AWS Secret Access Key |
77
+ | Region | AWS region (e.g., `eu-west-1`, `us-east-1`) |
78
+ | Session Token | Optional - for temporary credentials (STS) |
79
+
80
+ ## Compatibility
81
+
82
+ - Requires n8n version 1.0.0 or later
83
+ - **Self-hosted n8n only** - Not compatible with n8n Cloud
84
+
85
+ ## Usage
86
+
87
+ ### Example: List S3 Buckets
88
+
89
+ ```javascript
90
+ const response = await $s3.send(new ListBucketsCommand({}));
91
+ return response.Buckets.map(b => ({ json: { name: b.Name } }));
92
+ ```
93
+
94
+ ### Example: Get SSM Parameter
95
+
96
+ ```javascript
97
+ const response = await $ssm.send(new GetParameterCommand({
98
+ Name: '/my/parameter/path',
99
+ WithDecryption: true
100
+ }));
101
+ return [{ json: { value: response.Parameter.Value } }];
102
+ ```
103
+
104
+ ### Example: Invoke Bedrock Model (Claude)
105
+
106
+ ```javascript
107
+ const response = await $bedrock.send(new ConverseCommand({
108
+ modelId: 'anthropic.claude-3-sonnet-20240229-v1:0',
109
+ messages: [
110
+ {
111
+ role: 'user',
112
+ content: [{ text: $item.json.prompt }]
113
+ }
114
+ ]
115
+ }));
116
+
117
+ return [{
118
+ json: {
119
+ response: response.output.message.content[0].text
120
+ }
121
+ }];
122
+ ```
123
+
124
+ ### Example: Upload to S3
125
+
126
+ ```javascript
127
+ const response = await $s3.send(new PutObjectCommand({
128
+ Bucket: 'my-bucket',
129
+ Key: `files/${$item.json.filename}`,
130
+ Body: $item.json.content,
131
+ ContentType: 'text/plain'
132
+ }));
133
+
134
+ return [{ json: { success: true, etag: response.ETag } }];
135
+ ```
136
+
137
+ ### Available Variables
138
+
139
+ | Variable | Description |
140
+ |----------|-------------|
141
+ | `$s3` | Pre-configured S3Client |
142
+ | `$bedrock` | Pre-configured BedrockRuntimeClient |
143
+ | `$ssm` | Pre-configured SSMClient |
144
+ | `$items` | All input items (array) |
145
+ | `$item` | Current item (in "Run Once for Each Item" mode) |
146
+ | `$itemIndex` | Current item index |
147
+
148
+ ## Resources
149
+
150
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
151
+ - [AWS SDK for JavaScript v3 Documentation](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/)
152
+ - [Amazon S3 Documentation](https://docs.aws.amazon.com/s3/)
153
+ - [Amazon Bedrock Documentation](https://docs.aws.amazon.com/bedrock/)
154
+ - [AWS Systems Manager Documentation](https://docs.aws.amazon.com/systems-manager/)
155
+
156
+ ## Version history
157
+
158
+ ### 0.1.0
159
+
160
+ - Initial release
161
+ - AWS Code node with S3, Bedrock, and SSM support
162
+ - Custom credentials for AWS SDK v3
@@ -0,0 +1,11 @@
1
+ import type { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class AwsSdkV3Api implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ icon: {
7
+ readonly light: "file:aws.svg";
8
+ readonly dark: "file:aws.dark.svg";
9
+ };
10
+ properties: INodeProperties[];
11
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AwsSdkV3Api = void 0;
4
+ class AwsSdkV3Api {
5
+ constructor() {
6
+ this.name = 'awsSdkV3Api';
7
+ this.displayName = 'AWS SDK V3 API';
8
+ this.documentationUrl = 'https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/';
9
+ this.icon = { light: 'file:aws.svg', dark: 'file:aws.dark.svg' };
10
+ this.properties = [
11
+ {
12
+ displayName: 'Access Key ID',
13
+ name: 'accessKeyId',
14
+ type: 'string',
15
+ default: '',
16
+ required: true,
17
+ description: 'The AWS Access Key ID',
18
+ },
19
+ {
20
+ displayName: 'Secret Access Key',
21
+ name: 'secretAccessKey',
22
+ type: 'string',
23
+ typeOptions: {
24
+ password: true,
25
+ },
26
+ default: '',
27
+ required: true,
28
+ description: 'The AWS Secret Access Key',
29
+ },
30
+ {
31
+ displayName: 'Region',
32
+ name: 'region',
33
+ type: 'options',
34
+ options: [
35
+ { name: 'Africa (Cape Town) - af-south-1', value: 'af-south-1' },
36
+ { name: 'Asia Pacific (Hong Kong) - ap-east-1', value: 'ap-east-1' },
37
+ { name: 'Asia Pacific (Mumbai) - ap-south-1', value: 'ap-south-1' },
38
+ { name: 'Asia Pacific (Hyderabad) - ap-south-2', value: 'ap-south-2' },
39
+ { name: 'Asia Pacific (Osaka) - ap-northeast-3', value: 'ap-northeast-3' },
40
+ { name: 'Asia Pacific (Seoul) - ap-northeast-2', value: 'ap-northeast-2' },
41
+ { name: 'Asia Pacific (Singapore) - ap-southeast-1', value: 'ap-southeast-1' },
42
+ { name: 'Asia Pacific (Sydney) - ap-southeast-2', value: 'ap-southeast-2' },
43
+ { name: 'Asia Pacific (Jakarta) - ap-southeast-3', value: 'ap-southeast-3' },
44
+ { name: 'Asia Pacific (Melbourne) - ap-southeast-4', value: 'ap-southeast-4' },
45
+ { name: 'Asia Pacific (Tokyo) - ap-northeast-1', value: 'ap-northeast-1' },
46
+ { name: 'Canada (Central) - ca-central-1', value: 'ca-central-1' },
47
+ { name: 'Canada West (Calgary) - ca-west-1', value: 'ca-west-1' },
48
+ { name: 'Europe (Frankfurt) - eu-central-1', value: 'eu-central-1' },
49
+ { name: 'Europe (Zurich) - eu-central-2', value: 'eu-central-2' },
50
+ { name: 'Europe (Ireland) - eu-west-1', value: 'eu-west-1' },
51
+ { name: 'Europe (London) - eu-west-2', value: 'eu-west-2' },
52
+ { name: 'Europe (Paris) - eu-west-3', value: 'eu-west-3' },
53
+ { name: 'Europe (Milan) - eu-south-1', value: 'eu-south-1' },
54
+ { name: 'Europe (Spain) - eu-south-2', value: 'eu-south-2' },
55
+ { name: 'Europe (Stockholm) - eu-north-1', value: 'eu-north-1' },
56
+ { name: 'Israel (Tel Aviv) - il-central-1', value: 'il-central-1' },
57
+ { name: 'Middle East (Bahrain) - me-south-1', value: 'me-south-1' },
58
+ { name: 'Middle East (UAE) - me-central-1', value: 'me-central-1' },
59
+ { name: 'South America (São Paulo) - sa-east-1', value: 'sa-east-1' },
60
+ { name: 'US East (N. Virginia) - us-east-1', value: 'us-east-1' },
61
+ { name: 'US East (Ohio) - us-east-2', value: 'us-east-2' },
62
+ { name: 'US West (N. California) - us-west-1', value: 'us-west-1' },
63
+ { name: 'US West (Oregon) - us-west-2', value: 'us-west-2' },
64
+ { name: 'AWS GovCloud (US-East) - us-gov-east-1', value: 'us-gov-east-1' },
65
+ { name: 'AWS GovCloud (US-West) - us-gov-west-1', value: 'us-gov-west-1' },
66
+ ],
67
+ default: 'us-east-1',
68
+ required: true,
69
+ description: 'The AWS region',
70
+ },
71
+ {
72
+ displayName: 'Session Token',
73
+ name: 'sessionToken',
74
+ type: 'string',
75
+ typeOptions: {
76
+ password: true,
77
+ },
78
+ default: '',
79
+ description: 'Optional session token for temporary credentials (STS)',
80
+ },
81
+ ];
82
+ }
83
+ }
84
+ exports.AwsSdkV3Api = AwsSdkV3Api;
85
+ //# sourceMappingURL=AwsSdkV3Api.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsSdkV3Api.credentials.js","sourceRoot":"","sources":["../../credentials/AwsSdkV3Api.credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80" height="80">
2
+ <circle cx="40" cy="40" r="40" fill="#1A1A2E"/>
3
+ <!-- Left curly brace { -->
4
+ <path fill="#FF9900" d="M32 18c-4 0-6 2-6 6v8c0 3-2 4-4 4c2 0 4 1 4 4v8c0 4 2 6 6 6h2v-3h-1c-2 0-3-1-3-3v-9c0-2-1-3-3-4c2-1 3-2 3-4v-9c0-2 1-3 3-3h1v-3h-2z"/>
5
+ <!-- Right curly brace } -->
6
+ <path fill="#FF9900" d="M48 18c4 0 6 2 6 6v8c0 3 2 4 4 4c-2 0-4 1-4 4v8c0 4-2 6-6 6h-2v-3h1c2 0 3-1 3-3v-9c0-2 1-3 3-4c-2-1-3-2-3-4v-9c0-2-1-3-3-3h-1v-3h2z"/>
7
+ <!-- Amazon smile -->
8
+ <path fill="none" stroke="#FF9900" stroke-width="5" stroke-linecap="round" d="M18 60 Q40 70 60 60"/>
9
+ <path fill="#FF9900" d="M57 55l8 5l-6 6z"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80" height="80">
2
+ <circle cx="40" cy="40" r="40" fill="#252F3E"/>
3
+ <!-- Left curly brace { -->
4
+ <path fill="#FF9900" d="M32 18c-4 0-6 2-6 6v8c0 3-2 4-4 4c2 0 4 1 4 4v8c0 4 2 6 6 6h2v-3h-1c-2 0-3-1-3-3v-9c0-2-1-3-3-4c2-1 3-2 3-4v-9c0-2 1-3 3-3h1v-3h-2z"/>
5
+ <!-- Right curly brace } -->
6
+ <path fill="#FF9900" d="M48 18c4 0 6 2 6 6v8c0 3 2 4 4 4c-2 0-4 1-4 4v8c0 4-2 6-6 6h-2v-3h1c2 0 3-1 3-3v-9c0-2 1-3 3-4c-2-1-3-2-3-4v-9c0-2-1-3-3-3h-1v-3h2z"/>
7
+ <!-- Amazon smile -->
8
+ <path fill="none" stroke="#FF9900" stroke-width="5" stroke-linecap="round" d="M18 60 Q40 70 60 60"/>
9
+ <path fill="#FF9900" d="M57 55l8 5l-6 6z"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ import type { ICredentialTestFunctions, ICredentialsDecrypted, IExecuteFunctions, INodeCredentialTestResult, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class AwsCode implements INodeType {
3
+ methods: {
4
+ credentialTest: {
5
+ awsCodeCredentialTest(this: ICredentialTestFunctions, credential: ICredentialsDecrypted): Promise<INodeCredentialTestResult>;
6
+ };
7
+ };
8
+ description: INodeTypeDescription;
9
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
10
+ }
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AwsCode = void 0;
37
+ const n8n_workflow_1 = require("n8n-workflow");
38
+ const client_s3_1 = require("@aws-sdk/client-s3");
39
+ const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
40
+ const client_ssm_1 = require("@aws-sdk/client-ssm");
41
+ const S3Commands = __importStar(require("@aws-sdk/client-s3"));
42
+ const BedrockCommands = __importStar(require("@aws-sdk/client-bedrock-runtime"));
43
+ const SSMCommands = __importStar(require("@aws-sdk/client-ssm"));
44
+ async function executeUserCode(code, context) {
45
+ const contextKeys = Object.keys(context);
46
+ const contextValues = Object.values(context);
47
+ const asyncFunction = new Function(...contextKeys, `return (async () => {
48
+ ${code}
49
+ })();`);
50
+ return asyncFunction(...contextValues);
51
+ }
52
+ function normalizeOutput(result) {
53
+ if (result === undefined || result === null) {
54
+ return [];
55
+ }
56
+ if (Array.isArray(result)) {
57
+ return result.map((item) => {
58
+ if (typeof item === 'object' && item !== null && 'json' in item) {
59
+ return item;
60
+ }
61
+ return { json: item };
62
+ });
63
+ }
64
+ if (typeof result === 'object' && result !== null && 'json' in result) {
65
+ return [result];
66
+ }
67
+ if (typeof result === 'object' && result !== null) {
68
+ return [{ json: result }];
69
+ }
70
+ return [{ json: { value: result } }];
71
+ }
72
+ class AwsCode {
73
+ constructor() {
74
+ this.methods = {
75
+ credentialTest: {
76
+ async awsCodeCredentialTest(credential) {
77
+ const credentials = credential.data;
78
+ const awsConfig = {
79
+ region: credentials.region,
80
+ credentials: {
81
+ accessKeyId: credentials.accessKeyId,
82
+ secretAccessKey: credentials.secretAccessKey,
83
+ sessionToken: credentials.sessionToken,
84
+ },
85
+ };
86
+ try {
87
+ const s3Client = new client_s3_1.S3Client(awsConfig);
88
+ await s3Client.send(new S3Commands.ListBucketsCommand({}));
89
+ s3Client.destroy();
90
+ return {
91
+ status: 'OK',
92
+ message: 'Connection successful!',
93
+ };
94
+ }
95
+ catch (error) {
96
+ return {
97
+ status: 'Error',
98
+ message: `Connection failed: ${error.message}`,
99
+ };
100
+ }
101
+ },
102
+ },
103
+ };
104
+ this.description = {
105
+ displayName: 'AWS Code',
106
+ name: 'awsCode',
107
+ icon: { light: 'file:aws.svg', dark: 'file:aws.dark.svg' },
108
+ group: ['transform'],
109
+ version: 1,
110
+ description: 'Execute custom JavaScript code with AWS SDK v3 clients (S3, Bedrock, SSM)',
111
+ defaults: {
112
+ name: 'AWS Code',
113
+ },
114
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
115
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
116
+ usableAsTool: true,
117
+ credentials: [
118
+ {
119
+ name: 'awsSdkV3Api',
120
+ required: true,
121
+ testedBy: 'awsCodeCredentialTest',
122
+ },
123
+ ],
124
+ properties: [
125
+ {
126
+ displayName: 'Available Variables',
127
+ name: 'notice',
128
+ type: 'notice',
129
+ default: '',
130
+ description: '<strong>AWS Clients:</strong> $s3, $bedrock, $ssm<strong>Input Data:</strong> $items, $item, $itemIndex<strong>S3:</strong> ListBucketsCommand, GetObjectCommand, PutObjectCommand, DeleteObjectCommand, ListObjectsV2Command, ...<strong>Bedrock:</strong> InvokeModelCommand, ConverseCommand, ConverseStreamCommand, ...<strong>SSM:</strong> GetParameterCommand, PutParameterCommand, GetParametersByPathCommand, ...<em>Version: 0.1.1</em>',
131
+ },
132
+ {
133
+ displayName: 'Mode',
134
+ name: 'mode',
135
+ type: 'options',
136
+ noDataExpression: true,
137
+ options: [
138
+ {
139
+ name: 'Run Once for All Items',
140
+ value: 'runOnceForAllItems',
141
+ description: 'Run the code once with access to all input items',
142
+ },
143
+ {
144
+ name: 'Run Once for Each Item',
145
+ value: 'runOnceForEachItem',
146
+ description: 'Run the code once for each input item',
147
+ },
148
+ ],
149
+ default: 'runOnceForAllItems',
150
+ },
151
+ {
152
+ displayName: 'JavaScript Code',
153
+ name: 'code',
154
+ type: 'string',
155
+ typeOptions: {
156
+ editor: 'jsEditor',
157
+ rows: 20,
158
+ },
159
+ default: `// Available AWS clients (pre-configured with your credentials):
160
+ // - $s3: S3Client
161
+ // - $bedrock: BedrockRuntimeClient
162
+ // - $ssm: SSMClient
163
+ //
164
+ // Available AWS SDK commands:
165
+ // - S3: ListBucketsCommand, GetObjectCommand, PutObjectCommand, etc.
166
+ // - Bedrock: InvokeModelCommand, ConverseCommand, etc.
167
+ // - SSM: GetParameterCommand, PutParameterCommand, etc.
168
+ //
169
+ // Input data:
170
+ // - $items: All input items (in "Run Once for All Items" mode)
171
+ // - $item: Current item (in "Run Once for Each Item" mode)
172
+ // - $itemIndex: Current item index (in "Run Once for Each Item" mode)
173
+ //
174
+ // Example - List S3 buckets:
175
+ // const response = await $s3.send(new ListBucketsCommand({}));
176
+ // return response.Buckets.map(b => ({ json: { name: b.Name } }));
177
+
178
+ return $items;
179
+ `,
180
+ description: 'JavaScript code to execute with access to AWS SDK v3 clients',
181
+ noDataExpression: true,
182
+ },
183
+ ],
184
+ };
185
+ }
186
+ async execute() {
187
+ const items = this.getInputData();
188
+ const mode = this.getNodeParameter('mode', 0);
189
+ const code = this.getNodeParameter('code', 0);
190
+ const credentials = (await this.getCredentials('awsSdkV3Api'));
191
+ const awsConfig = {
192
+ region: credentials.region,
193
+ credentials: {
194
+ accessKeyId: credentials.accessKeyId,
195
+ secretAccessKey: credentials.secretAccessKey,
196
+ sessionToken: credentials.sessionToken,
197
+ },
198
+ };
199
+ const s3Client = new client_s3_1.S3Client(awsConfig);
200
+ const bedrockClient = new client_bedrock_runtime_1.BedrockRuntimeClient(awsConfig);
201
+ const ssmClient = new client_ssm_1.SSMClient(awsConfig);
202
+ const context = {
203
+ $s3: s3Client,
204
+ $bedrock: bedrockClient,
205
+ $ssm: ssmClient,
206
+ ListBucketsCommand: S3Commands.ListBucketsCommand,
207
+ GetObjectCommand: S3Commands.GetObjectCommand,
208
+ PutObjectCommand: S3Commands.PutObjectCommand,
209
+ DeleteObjectCommand: S3Commands.DeleteObjectCommand,
210
+ CopyObjectCommand: S3Commands.CopyObjectCommand,
211
+ HeadObjectCommand: S3Commands.HeadObjectCommand,
212
+ ListObjectsV2Command: S3Commands.ListObjectsV2Command,
213
+ CreateBucketCommand: S3Commands.CreateBucketCommand,
214
+ DeleteBucketCommand: S3Commands.DeleteBucketCommand,
215
+ InvokeModelCommand: BedrockCommands.InvokeModelCommand,
216
+ InvokeModelWithResponseStreamCommand: BedrockCommands.InvokeModelWithResponseStreamCommand,
217
+ ConverseCommand: BedrockCommands.ConverseCommand,
218
+ ConverseStreamCommand: BedrockCommands.ConverseStreamCommand,
219
+ GetParameterCommand: SSMCommands.GetParameterCommand,
220
+ GetParametersCommand: SSMCommands.GetParametersCommand,
221
+ GetParametersByPathCommand: SSMCommands.GetParametersByPathCommand,
222
+ PutParameterCommand: SSMCommands.PutParameterCommand,
223
+ DeleteParameterCommand: SSMCommands.DeleteParameterCommand,
224
+ DeleteParametersCommand: SSMCommands.DeleteParametersCommand,
225
+ };
226
+ let returnData = [];
227
+ try {
228
+ if (mode === 'runOnceForAllItems') {
229
+ const result = await executeUserCode(code, {
230
+ ...context,
231
+ $items: items,
232
+ $item: items[0],
233
+ $itemIndex: 0,
234
+ });
235
+ returnData = normalizeOutput(result);
236
+ }
237
+ else {
238
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
239
+ try {
240
+ const result = await executeUserCode(code, {
241
+ ...context,
242
+ $items: items,
243
+ $item: items[itemIndex],
244
+ $itemIndex: itemIndex,
245
+ });
246
+ const normalizedResult = normalizeOutput(result);
247
+ returnData.push(...normalizedResult);
248
+ }
249
+ catch (error) {
250
+ if (this.continueOnFail()) {
251
+ returnData.push({
252
+ json: { error: error.message },
253
+ pairedItem: { item: itemIndex },
254
+ });
255
+ }
256
+ else {
257
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
258
+ itemIndex,
259
+ });
260
+ }
261
+ }
262
+ }
263
+ }
264
+ }
265
+ catch (error) {
266
+ if (this.continueOnFail()) {
267
+ returnData.push({
268
+ json: { error: error.message },
269
+ });
270
+ }
271
+ else {
272
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error);
273
+ }
274
+ }
275
+ finally {
276
+ s3Client.destroy();
277
+ bedrockClient.destroy();
278
+ ssmClient.destroy();
279
+ }
280
+ return [returnData];
281
+ }
282
+ }
283
+ exports.AwsCode = AwsCode;
284
+ //# sourceMappingURL=AwsCode.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsCode.node.js","sourceRoot":"","sources":["../../../nodes/AwsCode/AwsCode.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "node": "n8n-nodes-aws-sdk-v3.awsCode",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Development", "Developer Tools"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://docs.n8n.io/integrations/builtin/credentials/aws/"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/"
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80" height="80">
2
+ <circle cx="40" cy="40" r="40" fill="#1A1A2E"/>
3
+ <!-- Left curly brace { -->
4
+ <path fill="#FF9900" d="M32 18c-4 0-6 2-6 6v8c0 3-2 4-4 4c2 0 4 1 4 4v8c0 4 2 6 6 6h2v-3h-1c-2 0-3-1-3-3v-9c0-2-1-3-3-4c2-1 3-2 3-4v-9c0-2 1-3 3-3h1v-3h2z"/>
5
+ <!-- Right curly brace } -->
6
+ <path fill="#FF9900" d="M48 18c4 0 6 2 6 6v8c0 3 2 4 4 4c-2 0-4 1-4 4v8c0 4-2 6-6 6h-2v-3h1c2 0 3-1 3-3v-9c0-2 1-3 3-4c-2-1-3-2-3-4v-9c0-2-1-3-3-3h-1v-3h2z"/>
7
+ <!-- Amazon smile -->
8
+ <path fill="none" stroke="#FF9900" stroke-width="5" stroke-linecap="round" d="M18 60 Q40 70 60 60"/>
9
+ <path fill="#FF9900" d="M57 55l8 5l-6 6z"/>
10
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80" height="80">
2
+ <circle cx="40" cy="40" r="40" fill="#252F3E"/>
3
+ <!-- Left curly brace { -->
4
+ <path fill="#FF9900" d="M32 18c-4 0-6 2-6 6v8c0 3-2 4-4 4c2 0 4 1 4 4v8c0 4 2 6 6 6h2v-3h-1c-2 0-3-1-3-3v-9c0-2-1-3-3-4c2-1 3-2 3-4v-9c0-2 1-3 3-3h1v-3h-2z"/>
5
+ <!-- Right curly brace } -->
6
+ <path fill="#FF9900" d="M48 18c4 0 6 2 6 6v8c0 3 2 4 4 4c-2 0-4 1-4 4v8c0 4-2 6-6 6h-2v-3h1c2 0 3-1 3-3v-9c0-2 1-3 3-4c-2-1-3-2-3-4v-9c0-2-1-3-3-3h-1v-3h2z"/>
7
+ <!-- Amazon smile -->
8
+ <path fill="none" stroke="#FF9900" stroke-width="5" stroke-linecap="round" d="M18 60 Q40 70 60 60"/>
9
+ <path fill="#FF9900" d="M57 55l8 5l-6 6z"/>
10
+ </svg>