Erik Robertson
12/21/2021, 9:24 PMa625b40c-04d9-4cbe-90b7-8324e904055a REQUEST DEV-ERIK-dwam-back-my-sta-ApiLambdaGETassets0D68A0-FzosTE9J9tP7 [src/routes/assets_get.main] invoked by API GET /assets
a625b40c-04d9-4cbe-90b7-8324e904055a RESPONSE {"headers":{"Content-Type":"application/json"},"statusCode":200,"body":"{\n \"csvHeader\": \"latitude,longitude\",\n \"csvData\": \"37.65728378,-122.4156265\\r\\n37.65734863,-122.41... 177051 more characters"}
Failed to upload payload to S3. AccessDenied: Access Denied
at Request.extractError (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/services/s3.js:714:35)
at Request.callListeners (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/sequential_executor.js:106:20)
at Request.emit (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/sequential_executor.js:78:10)
at Request.emit (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/request.js:688:14)
at Request.transition (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/request.js:690:12)
at Request.callListeners (/Users/erik/src/dataworks/dwam-back/node_modules/aws-sdk/lib/sequential_executor.js:116:18) {
code: 'AccessDenied',
region: null,
time: 2021-12-21T21:20:09.867Z,
requestId: 'R0H1MF37YG9JSGTQ',
extendedRequestId: 'SXswySS3eGF3DkYb/YjNO8YIw2T911TZViSQZbivYh6VHH71nfQP33L1lTVTA6oixDM5oFvwEuc=',
cfId: undefined,
statusCode: 403,
retryable: false,
retryDelay: 43.50154802428319
}
and when I check the Cloudwatch logs I see this 404 on S3 :
2021-12-21T22:20:05.498+01:00 START RequestId: a625b40c-04d9-4cbe-90b7-8324e904055a Version: $LATEST
2021-12-21T22:20:05.517+01:00 2021-12-21T21:20:05.516Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO connectAndSendMessage()
2021-12-21T22:20:05.641+01:00 2021-12-21T21:20:05.641Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO ws.onopen
2021-12-21T22:20:05.641+01:00 2021-12-21T21:20:05.641Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO sendMessage() - send request
2021-12-21T22:20:05.643+01:00 2021-12-21T21:20:05.642Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO sendMessage() - sending request via WebSocket
2021-12-21T22:20:05.644+01:00 2021-12-21T21:20:05.643Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO sendMessage() - start keep alive timer
2021-12-21T22:20:10.189+01:00 2021-12-21T21:20:10.188Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO ws.onmessage {"action":"client.lambdaResponse","debugRequestId":"a625b40c-04d9-4cbe-90b7-8324e904055a-1640121605516","stubConnectionId":"Kt-45fnPPHcCGBQ=","payloadS3Key":"payloads/a625b40c-04d9-4cbe-90b7-8324e904055a-1640121605516-response"}
2021-12-21T22:20:10.189+01:00 2021-12-21T21:20:10.189Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO receiveMessage()
2021-12-21T22:20:10.189+01:00 2021-12-21T21:20:10.189Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO receiveMessage() - received payloadS3Key
2021-12-21T22:20:10.256+01:00 2021-12-21T21:20:10.256Z a625b40c-04d9-4cbe-90b7-8324e904055a INFO [AWS s3 404 0.065s 0 retries] getObject({ Bucket: 'dev-erik-dwam-back-debug-stack-bucket83908e77-1awrh01i15tnq', Key: 'payloads/a625b40c-04d9-4cbe-90b7-8324e904055a-1640121605516-response' })
2021-12-21T22:20:10.259+01:00 2021-12-21T21:20:10.259Z a625b40c-04d9-4cbe-90b7-8324e904055a ERROR Unhandled Promise Rejection {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"NoSuchKey: The specified key does not exist.","reason":{"errorType":"NoSuchKey","errorMessage":"The specified key does not exist.","code":"NoSuchKey","message":"The specified key does not exist.","region":null,"time":"2021-12-21T21:20:10.253Z","requestId":"0G7QZ64M4EVDDPV5","extendedRequestId":"Zk5DMRznR+DMrIMUD0jYqUlGn2aejxk6E+Gl0WupDfZCynNyUKOzjWUJPK10Pseeu80tzGB6t4o=","statusCode":404,"retryable":false,"retryDelay":8.646154170322662,"stack":["NoSuchKey: The specified key does not exist."," at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:699:35)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:688:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:690:12)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"]},"promise":{},"stack":["Runtime.UnhandledPromiseRejection: NoSuchKey: The specified key does not exist."," at process.<anonymous> (/var/runtime/index.js:35:15)"," at process.emit (events.js:314:20)"," at process.EventEmitter.emit (domain.js:483:12)"," at processPromiseRejections (internal/process/promises.js:209:33)"," at processTicksAndRejections (internal/process/task_queues.js:98:32)"]}
2021-12-21T22:20:10.275+01:00 END RequestId: a625b40c-04d9-4cbe-90b7-8324e904055a
2021-12-21T22:20:10.275+01:00 REPORT RequestId: a625b40c-04d9-4cbe-90b7-8324e904055a Duration: 4775.65 ms Billed Duration: 4776 ms Memory Size: 1024 MB Max Memory Used: 28 MB XRAY TraceId: 1-61c24505-337b01bf10f9f70f44866cac SegmentId: 247605f67fd8dd26 Sampled: true
2021-12-21T22:20:10.275+01:00 Unknown application error occurred
I'm eager to see if any of you have any idea ?Erik Robertson
12/21/2021, 9:38 PMErik Robertson
12/21/2021, 9:50 PMErik Robertson
12/21/2021, 10:03 PMFrank
sst start
uses a websocket to send/receive data between the real Lambda function and ur local machine. Websocket has certain packet size limit 64KB if i call correctly. So for larger payload, SST would first upload the payload to S3, send the S3 file path via websocket. And then download from S3.Frank
Frank
sst start
, you can see the bucket arn printed out in the console. Soemthing like this:
=======================
Deploying debug stack
=======================
Deploying stacks
✅ dev-playground-debug-stack (no changes)
Stack dev-playground-debug-stack
Status: no changes
Outputs:
BucketArn: arn:aws:s3:::dev-playground-debug-stack-bucket83908e77-1c7me5gq0zocj
BucketName: dev-playground-debug-stack-bucket83908e77-1c7me5gq0zocj
Endpoint: <wss://bdw2j75j26.execute-api.us-east-1.amazonaws.com/dev>
Frank
Erik Robertson
12/21/2021, 11:04 PMErik Robertson
12/21/2021, 11:08 PMErik Robertson
12/21/2021, 11:38 PMFrank
Erik Robertson
12/22/2021, 10:11 AM{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudformation:DescribeStacks",
"cloudformation:GetTemplate",
"cloudformation:DeleteChangeSet",
"cloudformation:CreateChangeSet",
"cloudformation:ExecuteChangeSet",
"cloudformation:DescribeChangeSet",
"cloudformation:DescribeStackEvents",
"cloudformation:DeleteStack"
],
"Resource": [
"arn:aws:cloudformation:us-west-2:{AWS_ACCOUNT}:stack/CDK*",
"arn:aws:cloudformation:us-west-2:{AWS_ACCOUNT}:stack/{STAGE-PREFIX}-*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": "arn:aws:iam::{AWS_ACCOUNT}:role/{CLOUDFORMATION-ROLE}"
},
{
"Effect": "Allow",
"Action": [
"s3:*Object",
"s3:ListBucket",
"s3:getBucketLocation"
],
"Resource": "arn:aws:s3:::cdktoolkit-stagingbucket-*"
},
{
"Effect": "Allow",
"Action": [
"s3:*Object"
],
"Resource": "arn:aws:s3:::{LOWERCASE-STAGE-PREFIX}-*"
}
]
}
Frank
Frank
Erik Robertson
12/22/2021, 12:14 PM