2016-06-28 4 views
0

일부 aws-iot Java 코드를 boto3을 사용하도록 변환 중이며 새 역할을 만들 때 막혔습니다. 이전 코드는 역할에 대한 정책을 지정할 때 정책 이름을 지정하지만 boto3에서이를 지정하는 방법을 모르겠습니다. (: withId (assumePolicyName) 주) 다음은 자바 코드 블록의새 역할을 만들 때 어떻게 정책 이름을 지정합니까?

self.iamClient.create_role(RoleName=role_name, AssumeRolePolicyDocument={ 
      'Statement': [ 
       { 
        'Principal': { 
         'Service': ['iot.amazonaws.com'] 
        }, 
        'Effect': 'Allow', 
        'Action': ['sts:AssumeRole'] 
       }, 
      ] 
     } 

방법 : boto3와 assumePolicyName을 지정 어디 알아낼 수 없습니다

iamClient.createRole(new CreateRoleRequest() 
       .withRoleName(role) 
       .withAssumeRolePolicyDocument(new com.amazonaws.auth.policy.Policy() 
        .withId(assumePolicyName) 
        .withStatements(new Statement(Statement.Effect.Allow) 
         .withActions(() -> "sts:AssumeRole") 
         .withPrincipals(new Principal("Service", "iot.amazonaws.com"))) 
        .toJson() 
       ) 
      ); 

가, 여기에 내가 boto3에있는 무엇 정책 이름을 지정합니까?

답변

0

나는 꽤 가까웠다. 나는 단지 몇 번의 시행 착오를 시도해야만했다. 올바른 해결책은 다음과 같습니다.

self.iamClient.create_role(RoleName=role_name, AssumeRolePolicyDocument={ 
       'Id': 'assume_role_id', 
       'Statement': [ 
       { 
        'Principal': { 
         'Service': ['iot.amazonaws.com'] 
        }, 
        'Effect': 'Allow', 
        'Action': ['sts:AssumeRole'] 
       } 
      ] 
     } 
0

내가 아는 한 IAM은 정책 이름을 AssumedRolePolicyDocument과 연결할 방법이 없습니다. 역할 당 하나의 정책 만있을 수 있고 역할간에 이러한 신뢰 관계를 공유 할 수 없으므로 이름의 용도가 무엇인지 알 수 없습니다.