Amazon web services CloudFormation YAML-具有条件语句的IAM策略

Amazon web services CloudFormation YAML-具有条件语句的IAM策略,amazon-web-services,yaml,amazon-cloudformation,amazon-iam,Amazon Web Services,Yaml,Amazon Cloudformation,Amazon Iam,我有一个IAM策略,它是在AWS控制台中创建另一个资源时自动创建的。我正试图将其添加到现有的CloudFormation堆栈中 策略具有以下语句,其中包含“条件”属性: { "Sid": "DecryptSecretValue", "Action": [ "kms:Decrypt" ], "Effect": "Allow",

我有一个IAM策略,它是在AWS控制台中创建另一个资源时自动创建的。我正试图将其添加到现有的CloudFormation堆栈中

策略具有以下语句,其中包含“条件”属性:

{
    "Sid": "DecryptSecretValue",
    "Action": [
        "kms:Decrypt"
    ],
    "Effect": "Allow",
    "Resource": [
        "arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602"
    ],
    "Condition": {
        "StringEquals": {
            "kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"
        }
    }
}
这应该如何在CloudFormation YAML模板中结构化?到目前为止,我已经:

Statement:
  - Effect: Allow
    Action: kms:DecryptSecretValue
    Resource: arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602

但是我不知道如何包含“条件”属性。有什么想法吗?

对于json策略的每个级别,您都在yaml上添加一个缩进。
因此,
条件
效果
资源
行动
处于同一水平
StringEquals
条件缩进
kms:ViaService
StringEquals
缩进

由于
kms:ViaService
的名称中有冒号(
),您需要将其添加到引号之间

Statement:
  - Effect: Allow
    Action: "kms:DecryptSecretValue"
    Resource: "arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602"
    Condition:
      StringEquals:
        "kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"

答案很好。但请提供一个解释。你只发布代码,让OP和未来的商业广告复制并粘贴你的答案,而不理解答案背后的逻辑。请提供一个带有解释的答案。非常感谢。太好了,谢谢。我在错误的方向上乱搞
!等于
函数