Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 16 10:43
    clovisj commented #3136
  • Oct 16 10:33
    peterfigueiredo commented #3591
  • Oct 16 10:28
    ReflexFox labeled #3919
  • Oct 16 10:28
    ReflexFox labeled #3919
  • Oct 16 10:28
    ReflexFox opened #3919
  • Oct 16 00:06
    github-actions[bot] labeled #3457
  • Oct 16 00:06
    github-actions[bot] commented #3457
  • Oct 15 19:21
    trivikr edited #3914
  • Oct 15 19:21
    trivikr edited #3914
  • Oct 15 18:54
    trivikr synchronize #3914
  • Oct 15 18:47
    trivikr synchronize #3914
  • Oct 15 18:44

    aws-sdk-js-automation on v2.1009.0

    (compare)

  • Oct 15 18:44

    aws-sdk-js-automation on master

    Updates SDK to v2.1009.0 (compare)

  • Oct 15 17:43
    trivikr synchronize #3914
  • Oct 15 17:40
    trivikr synchronize #3914
  • Oct 15 17:30
    trivikr synchronize #3914
  • Oct 15 15:27
    trivikr synchronize #3914
  • Oct 15 15:08
    trivikr synchronize #3914
  • Oct 15 00:16
    trivikr synchronize #3914
  • Oct 14 22:31
    trivikr synchronize #3914
BertrandMarechal
@BertrandMarechal
yes and no : Yes, that's what AWS SDK is expecting, no in an angular service if you are about to deploy it somewhere
it it is just a local app you are not gonna share, then you should be fine if you are careful (and do not share the credentials on a public github repo for instance)
Jaafar Shhade
@jfrshd
i mean i am trying to access the dynamo db using cognito user pool with identity pool
why should i need accesskey
they didn't mention that in the tutorial
BertrandMarechal
@BertrandMarechal
because they might be expecting you to run this code in Lambda or somewhere else where your credentials are set up
Jaafar Shhade
@jfrshd
Owwwwwwww
are you sure?
BertrandMarechal
@BertrandMarechal
not entirely, that's why I said might
Jaafar Shhade
@jfrshd
mmmmmmm
BertrandMarechal
@BertrandMarechal
but this error message is usually when it's missing the API keys :)
so which tutorial are you following ?
Jaafar Shhade
@jfrshd
i am following the link above
BertrandMarechal
@BertrandMarechal
so try with the following just after you define the region : AWS.config.credentials = new AWS.Credentials('<API KEY ID>', '<API SECRET>');
Jaafar Shhade
@jfrshd
it worked without access keys, there was a problem in matching keys
this took me 4 hours
thank you for your help
Jaafar Shhade
@jfrshd
hello
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::com.mybucket.123.mybucket"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::com.mybucket.123.mybucket/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
this is my policy code

i am creating a folder in s3 like this

region + ":" + session.getIdToken().payload.sub

i think i am facing a problem where "sub" of js isn't matching the one of the policy so it keeps getting denied
i tried putting in statically in the policy and it worked
region + ":" + session.getIdToken().payload.sub isn't the same as cognito-identity.amazonaws.com:sub
am i right?
Ronique Ricketts
@RoniqueRicketts
Is it normal to get calls from +206 922 0130 stating that it's amazon service requesting a pin? I never initiate a pin.
Randy H
@randy-halim
most likely a scammer who is trying to get into your account-even if not, i would avoid giving the pin unless you are in a support session (as in you initiate it)
Ronique Ricketts
@RoniqueRicketts
I didn’t send the pin
kes333
@kes333
Hi, I am trying to access a PNG file from S3 using a presigned URL but I am consistently getting access denied. PDF files work as expected. Anybody has faced this issue? I am generating the pre-signed URL via AWS lambda for an S3 event. Thee are other issues also like when the pdf file is downloaded, it is downloading as response.pdf rather than the actual name which is in the URL. I cannot also download PDF files with multiple white spaces although I am able to do so with single space by replacing the filename with .repalce("+", " "). I am sure this will not work with other file types or special characters as well in the file name. First priority is to make the other file types like PNG work. Then work with multiple spaces in filename . Function to generate the presigned URL is as below ( Removed the API URL)

const AWS = require('aws-sdk');
var querystring = require('querystring');
var https = require('https');

//var fs = require('fs');

// if you are using an eu region, you will have to set the signature
// version to v4 by passing this into the S3 constructor -
// {signatureVersion: 'v4' }
var s3 = new AWS.S3({signatureVersion: 'v4'});

exports.handler = function (event, context,callback) {

const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key. replace("+", " ");
console.log( "File Name" + key. replace("+", " "));

if (!bucket) {
console.log('bucket not set:');
context.done(new Error(S3 bucket not set));
}

if (!key) {
console.log('key missing:');
context.done(new Error('S3 object key missing'));
return;
}

const params = {
'Bucket': bucket,
'Key': key,
Expires: 60 * 5

//ACL: 'public-read'

};

var url = s3.getSignedUrl('getObject', params);
url.replace(/+/g, '%2B');
console.log('The URL is', url);
ResponseContentDisposition: "attachment;filename=key";

//POST to external URL

var post_data = querystring.stringify(
url //TODO here we can get data fro cognito and then instead of obj need to set post_data into call
);

   console.log('post_data='+post_data);

       //TODO need to get data fom cognito
      var obj = {
        "url":url

   };

  console.log(JSON.stringify(obj));

var post_options = {
host:
//host: 'dummy.restapiexample.com',
path:'/v1/documenturl',
//path: '/api/v1/create',
method: 'POST',

};

// Set up the request
var post_req = https.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('Response: ' + chunk);
context.succeed();
});
res.on('error', function (e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});

});
console.log('post_req'+post_req);

// post the data
post_req.write(JSON.stringify(obj));//TODO post_data
post_req.end();

};

BertrandMarechal
@BertrandMarechal
can you please reformat your code ?
kes333
@kes333
JPG files are working now . Would be great if someone can help with multiple spaces file names as well as downloading the file with actual name rather than just "response.pdf"
BertrandMarechal
@BertrandMarechal
you can use a regex instead of a simple string :
.repalce(/\+/g, " ")
kes333
@kes333
@BertrandMarechal Thanks that works ! The other issue is with the file name download, it downloads as response.jpg / pdf and not the actual filename
BertrandMarechal
@BertrandMarechal
where do you download from ? is the S3 key correct ?
yeah, I mean, the file on s3 is not called response.jpg or pdf ?
kes333
@kes333
Nope, it has a specific filename
BertrandMarechal
@BertrandMarechal
so that's your download code then
kes333
@kes333
I upload a file in S3, an event is fired and then a lambda function generated a pre signed URL for the document and posts to an external document management API. I built this API with backend dynamodb and AWS API gateway. I then copy the URL from the DB and then fire a postman GET request which fetches the file from S3 . The URL is valid for 5 mins after which it expires
The issue is with the file name which gets replaced with response everytime
BertrandMarechal
@BertrandMarechal
hum
if you paste this url in the browser, what is the file downloaded as ?
it seems to be a postman thing :)
kes333
@kes333
If I post the file in browser, it is rendered on page
BertrandMarechal
@BertrandMarechal
ok. but yeah, it's a postman thing. if you had a Frontend, you would choose your file name
kes333
@kes333
I added the content dispostion in the code : ResponseContentDisposition: "attachment;filename=key"; as suggested in the post you forwarded
BertrandMarechal
@BertrandMarechal
yeah, does it work ?