【问题标题】:"IAMRoleLambdaExecution - Syntax errors in policy" - Serverless Lambda deployment fails for one account ID but not the other“IAMRoleLambdaExecution - 策略中的语法错误” - 一个账户 ID 而不是另一个账户 ID 的无服务器 Lambda 部署失败
【发布时间】:2021-05-28 00:36:44
【问题描述】:

我有以下 serverless.yml 文件:

provider:
  name: aws
  stackTags:
    Team: Chat
  runtime: go1.x
  stage: ${opt:stage, 'dev'}
  region: ap-southeast-1
  timeout: 200
  environment: ${file(env.yml)}
  iamRoleStatements:
    - ${file(models/chat.yml):cognitoStatement}
    - ${file(models/chat.yml):authStatement}
    - ${file(models/chat.yml):sesStatement}

iamRoleStatements的定义如下:

cognitoStatement:
  Effect: "Allow"
  Action:
    - "cognito-idp:ListUsers"
  Resource:
    - "${file(env.${self:provider.stage}.yml):COMPANY_COGNITO_RESOURCE_ARNS}"
    - "${file(env.${self:provider.stage}.yml):USER_COGNITO_RESOURCE_ARNS}"

authStatement:
  Effect: "Allow"
  Action:
    - "lambda:InvokeFunction"
  Resource:
    - !Sub "arn:aws:lambda:ap-southeast-1:${AWS::AccountId}:function:mhub-cognito-auth-api-${self:provider.stage}-cogtoken"

sesStatement:
  Effect: Allow
  Action:
    - ses:SendEmail
    - ses:SendRawEmail
  Resource: "arn:aws:ses:*:*:*"

我可以成功地将代码部署到staging,但部署到prod 失败。 部署到prod 是由其他人在另一台计算机上完成的。

prodstage, but I never had an issue deploying to produntilauthStatementandsesStatement 有不同的Account ID

收到的错误信息如下:

如有必要,我很乐意提供更多详细信息。谢谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless-framework


    【解决方案1】:

    我怀疑您的生产阶段缺少变量插值。

    我建议运行 serverless package 并检查生成的 cloudformation 模板以识别 Lambda 执行的 IAM 角色策略,验证其完整性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-10
      • 2020-09-13
      • 2022-09-24
      • 2020-10-14
      • 2021-10-11
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      相关资源
      最近更新 更多