YAML 中基于资源的 AWS lambda:Permission 多个主体?
Resource based AWS lambda:Permission multiple principals in YAML?
从事云形成项目,并在我的 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
returns 舞台的右侧 AWSAcc
列表。 !Select
从列表中选择正确的主要元素:
Principal: !Select [ "0", !FindInMap [ AccMap, !Ref Stage, AWSAcc ] ]
将第二任校长的Permission
的"0"
改为"1"
,以此类推。请注意,每个阶段必须具有相同数量的委托人,否则会出现越界错误。
编辑: 如果阶段的主体数量不相等,定义一个 Condition 并将其应用于“额外的”Permission
资源。
从事云形成项目,并在我的 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
returns 舞台的右侧 AWSAcc
列表。 !Select
从列表中选择正确的主要元素:
Principal: !Select [ "0", !FindInMap [ AccMap, !Ref Stage, AWSAcc ] ]
将第二任校长的Permission
的"0"
改为"1"
,以此类推。请注意,每个阶段必须具有相同数量的委托人,否则会出现越界错误。
编辑: 如果阶段的主体数量不相等,定义一个 Condition 并将其应用于“额外的”Permission
资源。