如何将现有的角色附加到serverless.yml文件?

19

我想将现有的角色附加到我的serverless.yml文件中。我已经在AWS控制台中创建了一个角色,在控制台中测试代码运行良好,但是当我尝试使用HTTP端点进行测试时,它给出以下反馈:

{"message": "Internal server error"}

我认为是因为在serverless.yml文件中没有指定任何角色,原因很简单,我不知道如何做。

以下是我的serverless.yml文件:


Resources: 
  ec2-dev-instance-status: 
    Properties: 
      Path: "arn:aws:iam::119906431229:role/lambda-ec2-describe-status"
      RoleName: lambda-ec2-describe-status
    Type: "AWS::IAM::Role"
functions: 
  instance-status: 
    description: "Status ec2 instances"
    events: 
      - 
        http: 
          method: get
          path: users/create
    handler: handler.instance_status
    role: "arn:aws:iam::119906431229:role/lambda-ec2-describe-status"
provider: 
  name: aws
  region: us-east-1
  runtime: python2.7
  stage: dev
resources: ~
service: ec2

请帮忙。

谢谢。

1个回答

21
根据文档,有几种方法可以将现有角色附加到函数(或整个堆栈)中。

作为Serverless资源定义的角色

resources:
  Resources:
    myCustRole0:
      Type: AWS::IAM::Role
      # etc etc
functions:
  func0:
    role: myCustRole0

角色定义在Serverless堆栈之外

functions:
  func0:
    role: arn:aws:iam::0123456789:role//my/default/path/roleInMyAccount

请注意,您使用的角色必须具有额外的权限才能记录到CloudWatch等日志系统,否则您将无法获得日志记录。


1
你好,我使用以下代码附加了我的现有角色:role: arn:aws:iam::0123456789:role//my/default/path/roleInMyAccount,但是仍然收到相同的错误{"message": "Internal server error"}。 - ner
所以进入管理员控制台并检查角色是否实际附加到 Lambda。如果没有,则附加存在问题。如果是,则是该角色本身的权限问题。 - Trent Bartlem
1
谢谢你的帮助,兄弟。我的代码现在运行良好,我只是调整了 JSON 主体。 - ner
1
我更喜欢第二个选项,它对我来说非常好用。 - Rajitha Warusavitarana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接