AWS::IAM::P具有"own"资源参数的定义



我想定义可重复使用的策略,类似于AWS托管策略,将其目标资源作为参数。

我的目标是学习实现它的一般方法,但让我们考虑StepFunctionsExecutionPolicy,并假设我想定义它的双胞胎StepFunctionsKillingPolicy。我想把我的保单附加到我的Lambda上,就像我对原始保单一样。

myLambdaFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: myLambdaCodeFolder/
Handler: app.lambda_handler
Runtime: python3.8
FunctionName: !Sub "${ProjectName}_DataProcessor_${StageParam}"
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref DynamoDBTable
- StepFunctionsExecutionPolicy:
StateMachineName: !Ref MySampleStateMachine
- StepFunctionsKillingPolicy:
StateMachineName: !Ref MySampleStateMachine

在gitlab上的AWS回购中,我发现了AWS IAM管理政策的定义和StateMachineName似乎是一个策略范围的参数(所有这样的策略都有自己的参数(:如何定义类似的东西?

当然,我可以写一份";普通的";AWS::IAM:我计划通过Lambda杀死每个SFN的策略,并将正确的策略附加到正确的Lambda,但这基本上是(邪恶的(代码复制,我不想这样做。

有什么提示吗?

{
"Version":"0.0.1",
"Templates":{
... other policy definitions omitted ...

"StepFunctionsExecutionPolicy":{
"Description":"Gives permission to start a Step Functions state machine execution",
"Parameters":{
"StateMachineName":{
"Description":"The name of the state machine to execute."
}
},
"Definition":{
"Statement":[
{
"Effect":"Allow",
"Action":[
"states:StartExecution"
],
"Resource":{
"Fn::Sub":[
"arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:stateMachine:${stateMachineName}",
{
"stateMachineName":{
"Ref":"StateMachineName"
}
}
]
}
}
]
}
}
}
}

你必须像AWS在你的链接中那样做在python中开发您自己的json文件解析器,它将采用您的策略并生成有效的模板文件。您还可以查看cloudformation宏,将自定义模板格式解析为要部署的有效模板。

相关内容

  • 没有找到相关文章

最新更新