Неопубликованный пользователь в sns, даже если у него есть полное административное разрешение, лямбда вне vpc - PullRequest
0 голосов
/ 11 ноября 2019

Спокойной ночи У меня серьезная проблема при попытке опубликовать в теме sns, мой пользователь имеет полный доступ и до сих пор не публикует. Я знаю, что если лямбда находится в vpc, то у меня будут проблемы с публикацией в sns, однако я отделил свою vpc lambda от lambdas доступа в Интернет, я использую invoke для доступа к vpc, лямбда, которая публикуется в sns, находится вне vpcи я не могу публиковать в sns. Кто-нибудь с этой проблемой?

сообщение:

{
 "code": 1072,
 "message": "User: arn:aws:iam::{accountID}:user/s3_developer is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:{accountID}:snsMailSend"
}

Пользователь s3_developer имеет полный доступ администратора, но все еще не публикует сообщения для sns.

My iam

iamRoleStatements:
- Effect: Allow
  Action:
    - lambda:InvokeFunction
    - lambda:InvokeAsync
  Resource: "*"
- Effect: Allow
  Action:
    - s3:GetObject
    - s3:ListBucket
    - s3:PutObject
  Resource: "arn:aws:s3:::"
- Effect: Allow
  Action:
    - ses:SendEmail
    - ses:SendRawEmail
  Resource: "arn:aws:ses:::"
- Effect: Allow
  Action:
    - sns:*
  Resource: "*"

SNS Запуск и создание в лямбда-переменной var enviroment = "SNS_TOPIC": "snsMailSend"

sendMail:
  handler: lib/controllers/smtp/send.emailSend
  events:
    - sns: ${self:custom.secrets.SNS_TOPIC}

Тема успешно создана, могупубликовать с помощью простой лямбды, но я не могу опубликовать свое приложение, где находится лямбда, которая имеет триггер, и лямбда, которая публикует. Я не знаю, что не так, кто-нибудь видит свет?

1 Ответ

0 голосов
/ 11 ноября 2019

Наконец-то я решил, что создал конкретного пользователя для SNS, дал надлежащие привилегии и при создании экземпляра sns я передаю вашему пользователю доступ и секреты, разрешенные. Я видел, что другие люди с подобными проблемами надеются, что это поможет.

const aws = require('aws-sdk')
const sns = new aws.SNS({ region: process.env.REGION, accessKeyId: process.env.SNS_KEY, secretAccessKey: process.env.SNS_SECRET })
...