在Lambda函数中从AWS SES发送电子邮件时拒绝访问

Rak*_*lwa 15 javascript email amazon-web-services aws-sdk aws-lambda

我正在尝试使用AWS Lambda函数中的Amazon SES发送电子邮件,为此我遇到以下错误.

AccessDenied:用户arn:aws:sts::XXXXX:assumed-role/lambda_basic_execution/awslambda_XXXX' is not authorized to performses:资源上的SendEmail`arn:aws:ses:us-west-2:XXX:identity /example@example.com'

我已经批准了

用于IAM角色的"ses:SendEmail","ses:SendRawEmail".

mod*_*ron 13

如果您正在为 SAM Lambda 配置策略或使用 YAML 配置文件,则可以使用如下内容:

模板.yaml

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'your-email-lambda'

Resources:
  YourEmailFunction:
    Type: AWS:Serverless::Function
    Properties:
      Policies:
        - Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - 'ses:SendEmail'
                - 'ses:SendRawEmail'
              Resource: '*'
Run Code Online (Sandbox Code Playgroud)


Nis*_*ith 9

因此,我也遇到了与Rakesh解释过的问题相同的问题,但是无法理解他说的要这样做的步骤,这里是一个详细的步骤说明。

您需要执行以下安全性,身份和合规性-> IAM->角色->选择lambda函数->然后编辑策略->在JSON中打开它并添加以下部分

{
  "Effect":"Allow",
  "Action":[
    "ses:SendEmail",
    "ses:SendRawEmail"
  ],
  "Resource":"*"
}
Run Code Online (Sandbox Code Playgroud)

或者您可以根据要求从这些政策示例中进行操作https://docs.aws.amazon.com/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-examples-email-sending-actions 另外,您需要首先验证电子邮件地址,所以不要忘记这一点。希望这对大家有帮助。


Rak*_*lwa 8

经过长时间的调试我遇到了问题,"lambda_basic_execution"角色需要被授予访问"ses:SendEmail","ses:SendRawEmail"的权限.

我试图为我创建的新IAM角色授予权限,但lambda函数映射到"lambda_basic_execution",因此存在不匹配.

参考 - http://docs.aws.amazon.com/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-examples-email-sending-actions

  • 你能粘贴适合你的最终政策吗?我仍然有这个问题.谢谢. (5认同)

Abd*_*bdo 5

正如其他人所说,您应该添加这两个权限: ses:SendEmail,ses:SendRawEmail

我只是想为那些使用 Serverless 框架的人添加解释

在 serverless.yml 中:

provider:
  name: aws
  stage: dev
  runtime: nodejs10.x
  region: us-west-1
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
        - lambda:InvokeFunction
        - ses:SendEmail            # add this
        - ses:SendRawEmail         # add this
      Resource: '*'                # add this
Run Code Online (Sandbox Code Playgroud)