我正在将AWS Websocket API与无服务器框架1.38.0一起使用,并且我想通过单个serverless.yml和一个现有IAM角色来部署http和websocket事件lamda。因此,为此,我已经在提供程序选项卡中声明了角色arn,但是当我运行sls deploy -v
时,它显示了error - cannot read properties undefined
。
我的理解是,我们只能在功能级别为事件类型http
或wss
定义角色arn,反之亦然。
请帮助我如何在全局级别或功能级别上为这两个API定义现有角色,示例YAML配置将真正有帮助。
我的样本YAML:
hello:
handler: CsharpHandlers::AwsDotnetCsharp.Handler::Hello
role: arn:aws:iam::019095984934:role/LambdaDeployment
name: APITypeHello
events:
- http:
path: api/shipments
method: post
cors: true
chatMessage:
handler: CsharpHandlers::AwsDotnetCsharp.WebsocketHandler::GetWSSRequest
#role: arn:aws:iam::019095984934:role/websocketTesting-dev-ap-southeast-1-lambdaRole - below is the custom admin role
#role: arn:aws:iam::019095984934:role/LambdaDeployment
name: chatMessage
iamRoleStatements:
- Effect: Allow
Action:
- lambda:InvokeFunction,
- lambda:InvokeAsync
Resource: “arn:aws:lambda:::function:*”
谢谢 安库尔
答案 0 :(得分:0)
您可以在role
级别上设置iamRoleStatements
和provider
,以将自定义角色和角色声明应用于服务中的所有功能。
例如
provider:
role: arn:aws:iam::019095984934:role/LambdaDeployment
iamRoleStatements:
- Effect: Allow
Action:
- lambda:InvokeFunction,
- lambda:InvokeAsync
Resource: “arn:aws:lambda:::function:*”
functions:
hello:
# ...
chatMessage:
# ...
提供者设置将同时应用于hello
和chatMessage
函数。
我建议您坚持在iamRoleStatements
级别设置provider
,并且仅在必须在无服务器部署之外使用预先存在的角色时才使用role
。
检查IAM documentation以获得更多详细信息。