簡體   English   中英

嘗試使用Boto3創建IAM角色時,總是出現MalformedPolicyDocument錯誤

[英]Always getting MalformedPolicyDocument error while trying to create IAM role using Boto3

我正在使用默認AWS策略AWSLambdaBasicExecutionRole中的json:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "*"
    }
  ]
}

這是我用來創建角色的代碼:

def create_lambda_role():
205     try:
206         iam = boto3.client('iam')
207 
208         lambda_permissions_json = ''
209         with open('lambda/lambda_permissions.json', 'r') as thefile:
210             lambda_permissions_json = thefile.read()
211 
212         iam.create_role(
213             RoleName='lambda_basic_execution',
214             AssumeRolePolicyDocument=str(lambda_permissions_json)
215         )
216     except botocore.exceptions.ClientError as e:
217         print e.response['Error']['Code']
218         return False
219 
220     return True

但是它總是返回MalformattedPolicyDocument錯誤,我一生都看不到為什么。

AssumeRolePolicyDocument參數需要一個JSON信任策略,該策略描述誰可以擔任此角色。 您正在提供一個策略,該策略描述此角色將訪問哪些資源。

有關信任策略的更多信息,請參閱此內容,但是承擔角色策略應類似於以下內容:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}

這可能不是您想要的,但重點是信任策略描述的是允許誰擔任此角色的角色,而不是角色有權訪問的角色。

然后,您可以創建另一個包含您的資源權限的策略,並將該策略附加到新角色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM