Amazon Lex V2에 대한 리소스 기반 정책 예제 - Amazon Lex

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Lex V2에 대한 리소스 기반 정책 예제

A리소스 기반 정책는 봇 또는 봇 별칭과 같은 리소스에 연결됩니다. 리소스 기반 정책을 사용하면 리소스에 액세스할 수 있는 대상 및 이러한 대상이 리소스에 대해 수행할 수 있는 작업을 지정할 수 있습니다. 예를 들어 사용자가 특정 봇을 수정하거나 사용자가 특정 봇 별칭에서 런타임 작업을 사용하도록 허용하는 리소스 기반 정책을 추가할 수 있습니다.

리소스 기반 정책을 사용하는 경우 기타를 허용할 수 있습니다.AWS계정의 리소스에 액세스할 수 있는 서비스 예를 들어 Amazon Connect Lex 봇에 액세스하도록 허용할 수 있습니다.

봇 또는 봇 별칭을 생성하는 방법을 알아보려면 단원을 참조하세요.봇 구축.

콘솔을 사용하여 리소스 기반 정책 지정

Amazon Lex 콘솔을 사용하여 봇 및 봇 별칭에 대한 리소스 기반 정책을 관리할 수 있습니다. 정책의 JSON 구조를 입력하면 콘솔이 이를 리소스와 연결합니다. 리소스와 이미 연결된 정책이 있는 경우 콘솔을 사용하여 정책을 보고 수정할 수 있습니다.

정책 편집기를 사용하여 정책을 저장하면 콘솔에서 정책 구문을 확인합니다. 존재하지 않는 사용자나 리소스에서 지원되지 않는 작업과 같은 오류가 정책에 포함되어 있으면 오류를 반환하고 정책을 저장하지 않습니다.

다음은 콘솔의 봇에 대한 리소스 기반 정책 편집기를 보여 줍니다. 봇 별칭에 대한 정책 편집기는 비슷합니다.


               Amazon Lex 콘솔 리소스 기반 정책 편집기입니다.

봇에 대한 정책 편집기를 열려면

  1. 에 로그인합니다.AWS Management Console에서 Amazon Lex 콘솔을 엽니다.https://console.aws.amazon.com/lex/.

  2. 에서목록에서 정책을 편집할 봇을 선택합니다.

  3. 에서리소스 기반 정책섹션, 선택Edit.

봇 별칭에 대한 정책 편집기를 열려면

  1. 에 로그인합니다.AWS Management Console에서 Amazon Lex 콘솔을 엽니다.https://console.aws.amazon.com/lex/.

  2. 에서목록에서 편집하려는 별칭을 포함하는 봇을 선택합니다.

  3. 왼쪽 메뉴에서 [] 를 선택합니다.별칭을 클릭한 다음 편집할 별칭을 선택합니다.

  4. 에서리소스 기반 정책섹션, 선택Edit.

API를 사용하여 리소스 기반 정책 지정

API 작업을 사용하여 봇 및 봇 별칭에 대한 리소스 기반 정책을 관리할 수 있습니다. 정책을 생성, 업데이트 및 삭제하는 작업이 있습니다.

CreateResourcePolicy

지정된 정책 문이 있는 새 리소스 정책을 봇 또는 봇 별칭에 추가합니다.

CreateResourcePolicyStatement

봇 또는 봇 별칭에 새 리소스 정책 설명을 추가합니다.

DeleteResourcePolicy

봇 또는 봇 별칭에서 리소스 정책을 제거합니다.

DeleteResourcePolicyStatement

봇 또는 봇 별칭에서 리소스 정책 설명을 제거합니다.

DescribeResourcePolicy

리소스 정책 및 정책 개정을 가져옵니다.

UpdateResourcePolicy

봇 또는 봇 별칭에 대한 기존 리소스 정책을 새 것으로 바꿉니다.

Java

다음 예에서는 리소스 기반 정책 작업을 사용하여 리소스 기반 정책을 관리하는 방법을 보여줍니다.

/* * Create a new policy for the specified bot alias * that allows a role to invoke lex:UpdateBotAlias on it. * The created policy will have revision id 1. */ CreateResourcePolicyRequest createPolicyRequest = CreateResourcePolicyRequest.builder() .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID") .policy("{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"BotAliasEditor\",\"Effect\": \"Allow\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:role/BotAliasEditor\"},\"Action\": [\"lex:UpdateBotAlias\"],\"Resource\":[\"arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID\"]]}") lexmodelsv2Client.createResourcePolicy(createPolicyRequest); /* * Overwrite the policy for the specified bot alias with a new policy. * Since no expectedRevisionId is provided, this request overwrites the current revision. * After this update, the revision id for the policy is 2. */ UpdateResourcePolicyRequest updatePolicyRequest = UpdateResourcePolicyRequest.builder() .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID") .policy("{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"BotAliasEditor\",\"Effect\": \"Deny\",\"Principal\": {\"AWS\": \"arn:aws:iam::123456789012:role/BotAliasEditor\"},\"Action\": [\"lex:UpdateBotAlias\"],\"Resource\":[\"arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID\"]]}") lexmodelsv2Client.updateResourcePolicy(updatePolicyRequest); /* * Creates a statement in an existing policy for the specified bot alias * that allows a role to invoke lex:RecognizeText on it. * This request expects to update revision 2 of the policy. The request will fail * if the current revision of the policy is no longer revision 2. * After this request, the revision id for this policy will be 3. */ CreateResourcePolicyStatementRequest createStatementRequest = CreateResourcePolicyStatementRequest.builder() .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID") .effect("Allow") .principal(Principal.builder().arn("arn:aws:iam::123456789012:role/BotRunner").build()) .action("lex:RecognizeText") .statementId("BotRunnerStatement") .expectedRevisionId(2) .build(); lexmodelsv2Client.createResourcePolicyStatement(createStatementRequest); /* * Deletes a statement from an existing policy for the specified bot alias by statementId. * Since no expectedRevisionId is supplied, the request will remove the statement from * the current revision of the policy for the bot alias. * After this request, the revision id for this policy will be 4. */ DeleteResourcePolicyRequest deleteStatementRequest = DeleteResourcePolicyRequest.builder() .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID") .statementId("BotRunnerStatement") .build(); lexmodelsv2Client.deleteResourcePolicy(deleteStatementRequest); /* * Describe the current policy for the specified bot alias * It always returns the current revision. */ DescribeResourcePolicyRequest describePolicyRequest = DescribeResourcePolicyRequest.builder() .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID") .build(); lexmodelsv2Client.describeResourcePolicy(describePolicyRequest); /* * Delete the current policy for the specified bot alias * This request expects to delete revision 3 of the policy. Since the revision id for * this policy is already at 4, this request will fail. */ DeleteResourcePolicyRequest deletePolicyRequest = DeleteResourcePolicyRequest.builder() .resourceArn("arn:aws:lex:Region:123456789012:bot-alias/MYBOTALIAS/TSTALIASID") .expectedRevisionId(3); .build(); lexmodelsv2Client.deleteResourcePolicy(deletePolicyRequest);

IAM 역할이 봇을 업데이트하고 봇 별칭을 나열하도록 허용

다음 예제에서는 특정 IAM 역할에 대해 Amazon Lex V2 모델 빌드 API 작업을 호출하여 기존 봇을 수정할 수 있는 권한을 부여합니다. 사용자는 봇에 대한 별칭을 나열하고 봇을 업데이트할 수 있지만 봇 또는 봇 별칭은 삭제할 수 없습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "botBuilders", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/BotBuilder" }, "Action": [ "lex:ListBotAliases", "lex:UpdateBot" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot/MYBOT" ] } ] }

사용자가 봇과 대화할 수 있도록 허용

다음 예제에서는 특정 사용자에게 봇의 단일 별칭에서 Amazon Lex V2 런타임 API 작업을 호출할 수 있는 권한을 부여합니다.

사용자에게 봇 별칭을 업데이트하거나 삭제할 수 있는 권한이 특별히 거부되었습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "botRunners", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/botRunner" }, "Action": [ "lex:RecognizeText", "lex:RecognizeUtterance", "lex:StartConversation", "lex:DeleteSession", "lex:GetSession", "lex:PutSession" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ] }, { "Sid": "botRunners", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/botRunner" }, "Action": [ "lex:UpdateBotAlias", "lex:DeleteBotAlias" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ] } ] }

허용AWS특정 Amazon Lex V2 봇을 사용하는 서비스

다음 예에서는 에 대한 권한을 부여합니다.AWS LambdaAmazon Connect Connect를 사용하여 Amazon Lex V2 런타임 API 작업을 호출합니다.

조건 블록은 서비스 주체에 필요하며 전역 컨텍스트 키를 사용해야 합니다.AWS:SourceAccountAWS:SourceArn.

AWS:SourceAccount는 Amazon Lex V2 봇을 호출하는 계정 ID입니다.

AWS:SourceArn는 Amazon Lex V2 봇 별칭에 대한 호출이 시작된 Amazon Connect 서비스 인스턴스 또는 Lambda 함수의 리소스 ARN입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "connect-bot-alias", "Effect": "Allow", "Principal": { "Service": [ "connect.amazonaws.com" ] }, "Action": [ "lex:RecognizeText", "lex:StartConversation" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ], "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:connect:Region:123456789012:instance/instance-id" } } }, { "Sid": "lambda-function", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Action": [ "lex:RecognizeText", "lex:StartConversation" ], "Resource": [ "arn:aws:lex:Region:123456789012:bot-alias/MYBOT/MYBOTALIAS" ], "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:lambda:Region:123456789012:function/function-name" } } } ] }