Open paul-uz opened 1 month ago
Ideally, could we get https://www.npmjs.com/package/@aws-sdk/credential-provider-node added to the runtime?
I tried to add @aws-sdk/credential-provider-node
but at the end of the dependency I got an error that the http
module could not be resolved.
Optimized: CognitoIdentity
✘ [ERROR] Could not resolve "http"
node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js:3:24:
3 │ import { request } from "http";
╵ ~~~~~~
The package "http" wasn't found on the file system but is built into node. Are you trying to
bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
Optimized: Aws_json1_1
Optimized: Aws_json1_1
Optimized: Aws_json1_1
Optimized: Aws_json1_1
Optimized: Aws_json1_1
Optimized: Aws_json1_1
Optimized: Aws_json1_1
Optimized: Aws_json1_1
1 error
/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:1472
let error = new Error(text);
^
Error: Build failed with 1 error:
node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js:3:24: ERROR: Could not resolve "http"
at failureErrorWithLog (/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:1472:15)
at /Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:945:25
at runOnEndCallbacks (/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:1315:45)
at buildResponseToResult (/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:943:7)
at /Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:970:16
at responseCallbacks.<computed> (/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:622:9)
at handleIncomingPacket (/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:677:12)
at Socket.readFromStdout (/Users/shinya/Workspaces/llrt/node_modules/esbuild/lib/main.js:600:7)
at Socket.emit (node:events:519:28)
at addChunk (node:internal/streams/readable:559:12) {
errors: [Getter/Setter],
warnings: [Getter/Setter]
}
Node.js v20.13.1
Perhaps this is why @aws-sdk/credential-provider-node
cannot be added.
Currently, when building LLRT, the platform is browser
. Would it make any difference if I set the platform of your application's bundler to browser
?
Related to #40
Ha it is because it should be marked as external or whatever terminology your bundler uses so it doesn't try to resolve it at bundling time. It is provided at runtime.
Ha it is because it should be marked as external or whatever terminology your bundler uses so it doesn't try to resolve it at bundling time. It is provided at runtime.
This isn't a helpful comment.
@paul-uz thanks for your comments. fromNodeProviderChain
as the name implies assumes a Node.js environment. We could provide it but we're not supporting the required dependencies. What features are you looking for from fromNodeProviderChain? You should be able to use alternatives such as credential-provider-http
,credential-provider-env
, credential-provider-process
etc
@paul-uz thanks for your comments.
fromNodeProviderChain
as the name implies assumes a Node.js environment. We could provide it but we're not supporting the required dependencies. What features are you looking for from fromNodeProviderChain? You should be able to use alternatives such ascredential-provider-http
,credential-provider-env
,credential-provider-process
etc
I ideally need the default provider from the other package, for signing requests.
Tbh I don't actually know which one I could use in its place as the one I was using tries various methods of finding the credentials and I don't know what lambda actually uses for node projects.
@paul-uz can you share a bit of code? I need some more context to understand what you're after. Usually you don't have to deal with the credential process in the SDK.
@paul-uz can you share a bit of code? I need some more context to understand what you're after. Usually you don't have to deal with the credential process in the SDK.
Sure here you go
const request = new HttpRequest({
headers: {
'Content-Type': 'application/json',
'host': SEARCH_DOMAIN_ENDPOINT!,
},
hostname: SEARCH_DOMAIN_ENDPOINT!,
method: 'GET',
path: SEARCH_INDEX + '/_search',
query: queryParams as any,
});
var signer = new SignatureV4({
credentials: defaultProvider(),
region: REGION,
service: 'es',
sha256: Sha256,
});
const signedRequest = await signer.sign(request);
const { response } = await client.handle(signedRequest as HttpRequest);
Despite this package beig included, I get this error when trying to run my code. Installing the package locally as a dev dependency, I get no errors about
fromNodeProviderChain
being missing, and can indeed see the export.