gpt4 book ai didi

aws-lambda - 基于资源的AWS lambda :Permission multiple principals in YAML?

转载 作者:行者123 更新时间:2023-12-03 07:30:19 30 4
gpt4 key购买 nike

从事云形成项目,并将基于资源的策略附加到我的 lambda;它类似于 YAML 中的以下内容:

Mapping:
AccMap:
Alpha:
AWSAcc: 1234567 # aws account numbers
Beta:
AWSAcc: 2345678
Prod:
AWSAcc: 3456789

PermissionPolicy:
Type: AWS::Lambda::Permission
Properties:
Resource: !Ref LambdaNameHere
Principal:
Fn::FindInMap:
- AccMap
- !Ref Stage # defined elsewhere
- AWSAcc

我想向多个帐户授予此权限,例如 Beta 中的多个帐户。我将如何在 YAML 中进行处理?我可以像这样将 AWSAcc 制作为一个数组吗?

Mapping:
Beta:
AWSAcc:
- 1234567
- 2345678

最佳答案

您无法传递列表。一个PermissionsPolicy资源的 Principal 属性接受单个字符串值:

{
"Type" : "AWS::Lambda::Permission",
"Properties" : {
"Action" : String,
"EventSourceToken" : String,
"FunctionName" : String,
"FunctionUrlAuthType" : String,
"Principal" : String,
"PrincipalOrgID" : String,
"SourceAccount" : String,
"SourceArn" : String
}
}

解决方法是添加多个 Permission 资源并查找每个资源的主体。 !FindInMap 返回阶段的正确 AWSAcc 列表。 !Select 从列表中选择正确的主要元素:

Principal: !Select [ "0", !FindInMap [ AccMap, !Ref Stage, AWSAcc ] ]

将第二主体的权限“0”更改为“1”,依此类推。请注意,每个阶段必须具有相同数量的主体,否则您将收到越界错误。

编辑:如果阶段的主体数量不等,请定义 Condition并将其应用于“额外”Permission 资源。

关于aws-lambda - 基于资源的AWS lambda :Permission multiple principals in YAML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72399215/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com