What is @smithy/signature-v4?
@smithy/signature-v4 is an npm package used for signing AWS requests using the AWS Signature Version 4 signing process. This is essential for securely making authenticated requests to AWS services.
What are @smithy/signature-v4's main functionalities?
Signing HTTP Requests
This feature allows you to sign HTTP requests to AWS services using the AWS Signature Version 4 signing process. The code sample demonstrates how to sign a GET request to an S3 bucket.
const { SignatureV4 } = require('@smithy/signature-v4');
const { Sha256 } = require('@aws-crypto/sha256-js');
const { HttpRequest } = require('@smithy/protocol-http');
const signer = new SignatureV4({
service: 's3',
region: 'us-east-1',
credentials: {
accessKeyId: 'AKID',
secretAccessKey: 'SECRET'
},
sha256: Sha256
});
const request = new HttpRequest({
method: 'GET',
hostname: 'examplebucket.s3.amazonaws.com',
path: '/exampleobject'
});
signer.sign(request).then(signedRequest => {
console.log(signedRequest);
});
Presigning URLs
This feature allows you to generate presigned URLs for AWS services, which can be used to grant temporary access to resources. The code sample demonstrates how to presign a URL for an S3 object with a 1-hour expiration.
const { SignatureV4 } = require('@smithy/signature-v4');
const { Sha256 } = require('@aws-crypto/sha256-js');
const { HttpRequest } = require('@smithy/protocol-http');
const { formatUrl } = require('@smithy/util-format-url');
const signer = new SignatureV4({
service: 's3',
region: 'us-east-1',
credentials: {
accessKeyId: 'AKID',
secretAccessKey: 'SECRET'
},
sha256: Sha256
});
const request = new HttpRequest({
method: 'GET',
hostname: 'examplebucket.s3.amazonaws.com',
path: '/exampleobject'
});
signer.presign(request, { expiresIn: 3600 }).then(presignedUrl => {
console.log(formatUrl(presignedUrl));
});
Other packages similar to @smithy/signature-v4
aws-sdk
The aws-sdk package is the official AWS SDK for JavaScript, which includes a wide range of functionalities for interacting with AWS services, including request signing. It provides a higher-level abstraction compared to @smithy/signature-v4, making it easier to use for common tasks but less flexible for custom signing needs.
aws4
The aws4 package is a lightweight library for signing AWS requests with AWS Signature Version 4. It is similar to @smithy/signature-v4 in that it focuses specifically on request signing, but it is less integrated with the broader AWS SDK ecosystem.