我想将3个独立变量(dev_id,prod_id,stage_id)替换为包含所有三个变量的单个列表,并对其进行迭代,然后将其应用于策略。
这是terraform可以做的吗?
data "aws_iam_policy_document" "iam_policy_document_dynamodb" {
statement {
effect = "Allow"
resources = ["arn:aws:dynamodb:${var.region}:${var.account_id}:table:${var.dynamodb_table_name}"]
actions = [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
]
principals {
type = "AWS"
identifiers = [
"arn:aws:iam::${var.dev_id}:root",
"arn:aws:iam::${var.prod_id}:root",
"arn:aws:iam::${var.stage_id}:root"
]
}
}
}Run Code Online (Sandbox Code Playgroud)
我研究了周期和插值,但是似乎99%的时间插值都是通过“计数”完成的,“计数”仅适用于创建多种资源(我希望我不会在说谎)。
例如,我曾经
principals {
count = "${length(var.list)}"
identifiers = ["arn:aws:iam::${var.list[count.index]}"]
}
Run Code Online (Sandbox Code Playgroud)
但这是不成功的。
是否有某种方法可以实现用单个列表(或映射)替换这三个变量并对其进行迭代的最终目标?
我有一组元组,每个元组都有有限数量的元素.
我想检查该集合中是否存在某个元素,该元素具有我正在搜索的特定组件.
set_of_tuples = {(el_11, el_12, el_13), (el_21, el_22, el_23)}
a = (dont_care, el_12, dont_care)
Run Code Online (Sandbox Code Playgroud)
如何在集合中找到包含该特定组件的元组元素?
我可以使用列表理解来做到这一点,但这是一个非常缓慢的过程.
使用集合,在简单的情况下,我可以做这样的事情:
el = (1,2)
set_of_tuples = {(1,2), (2,3) ...}
Run Code Online (Sandbox Code Playgroud)
我可以验证它是否存在,在set_of_tuples中执行:el.
我问的是,有没有办法做同样的事情,但没有关心一些元组元素,例如:
el = (_,2)
el in set_of_tuples
Run Code Online (Sandbox Code Playgroud) 我正在制作一个反应列表,其项目应触发更新状态的操作.然而,触发和状态更新都会发生,而onClick方法每次都使用相同的参数调用该操作.这不应该发生.传递给操作的参数必须取决于单击列表的项目.
我无法找到导致此错误的错误.
这是我的下拉类,其中呈现列表.
class DropDownMenu extends React.Component {
constructor(props){
super(props)
}
render(){
let content = []
var categories = this.props.categories
for (var i=0; i < categories.length; i++) {
var catName = categories[i]
var line = (
<li
key ={i}
onClick = {() => {this.props.onClick(catName)}}
>
<p>{catName}</p>
</li>
)
content.push(line)
}
return (
<div>
<Dropdown ref="dropdown">
<DropdownTrigger>Categories</DropdownTrigger>
<DropdownContent>
<ul>
{ content }
</ul>
</DropdownContent>
</Dropdown>
</div>
)
}
}Run Code Online (Sandbox Code Playgroud)
这是管理状态并调用上述类的容器
class MenuContainer extends React.Component {
constructor(props) {
super(props)
} …Run Code Online (Sandbox Code Playgroud)