Я хочу плакать, я действительно хочу плакать.У меня была эта проблема в течение 3 дней.У меня есть POST API в AWS Lambda, когда я тестирую его в AWS Lambda или в Cli, он работает нормально.Но не тогда, когда API вызывается из моего клиента.Я получаю следующую ошибку POST https://sdigg5u4xb.execute-api.eu-west-1.amazonaws.com/prod/sites 403
и Uncaught (in promise) Error: Request failed with status code 403
at createError (createError.js:17)
at settle (settle.js:19)
at XMLHttpRequest.handleLoad (xhr.js:78)
Сначала я подумал, что это связано с CORS, но это не так.Так как это ошибка 403, это должно быть связано с правами, верно?Я пытался предоставить своим пользователям aws разные политики и роли, чтобы у них было разрешение на все, но я не могу заставить его работать.Пожалуйста, помогите мне, прежде чем я заплачу.Если кому-то нужна какая-либо моя информация о aws, просто спросите
Лямбда-код: https://pastebin.com/vWNUQH0T
Вызов API:
import {API} из "aws-ampify";
export default (async function submitSite(values) {
console.log(values);
return API.post("sites", "/sites", {
body: values
})
});
Усиление конфигурации в моем index.js
Amplify.configure({
Auth: {
mandatorySignIn: true,
region: config.cognito.REGION,
userPoolId: config.cognito.USER_POOL_ID,
identityPoolId: config.cognito.IDENTITY_POOL_ID,
userPoolWebClientId: config.cognito.APP_CLIENT_ID
},
Storage: {
region: config.s3.REGION,
bucket: config.s3.BUCKET,
identityPoolId: config.cognito.IDENTITY_POOL_ID
},
API: {
endpoints: [
{
name: "sites",
endpoint: config.apiGateway.URL,
region: config.apiGateway.REGION
},
]
}
});
serverless.yml
functions:
# Defines an HTTP API endpoint that calls the main function in create.js
# - path: url path is /notes
# - method: POST request
# - cors: enabled CORS (Cross-Origin Resource Sharing) for browser cross
# domain api call
# - authorizer: authenticate using the AWS IAM role
createSite:
handler: CreateSite.main
events:
- http:
path: sites
method: post
cors: true
authorizer: aws_iam