I\'m using an AWS Lambda function to create a file and save it to my bucket on S3, it is working fine. After executing the putObject
method, I get a data<
The SDKs do not contain a convenience method to do this. However, when you called PutObject, you provided the bucket and the object's key and that's all you need. You can simply combine those to make the URL of the object, for example:
So, for example, if your bucket is pablo
and the object key is dogs/toto.png
, use:
Note that S3 keys do not begin with a /
prefix. A key is of the form dogs/toto.png
, and not /dogs/toto.png
.
For region-specific buckets, see Working with Amazon S3 Buckets and AWS S3 URL Styles. Replace s3
with s3.<region>.amazonaws.com
or s3-<region>.amazonaws.com
in the above URLs, for example:
If you are using IPv6, then the general URL form will be:
For some buckets, you may use the older path-style URLs. Path-style URLs are deprecated and only work with buckets created on or before September 30, 2020. They are used like this:
Currently there are TLS and SSL certificate issues that may require some buckets with dots (.
) in their name to be accessed via path-style URLs. AWS plans to address this. See the AWS announcement.
Note: General guidance on object keys where certain characters need special handling. For example space is encoded to + (plus sign) and plus sign is encoded to %2B. Also here.
in case you got the s3bucket and filename objects and want to extract the url, here is an option:
function getUrlFromBucket(s3Bucket,fileName){
const {config :{params,region}} = config;
const regionString = region.includes('us-east-1') ?'':('-' + region)
return `https://${params.Bucket}.s3${regionString}.amazonaws.com/${fileName}`
};
You can do an another call with this:
var params = {Bucket: 'bucket', Key: 'key'};
s3.getSignedUrl('putObject', params, function (err, url) {
console.log('The URL is', url);
});