Contoh kebijakan berbasis sumber daya untuk Amazon Lex V2 - Amazon Lex

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh kebijakan berbasis sumber daya untuk Amazon Lex V2

Kebijakan berbasis sumber daya dilampirkan ke sumber daya, seperti bot atau alias bot. Dengan kebijakan berbasis sumber daya, Anda dapat menentukan siapa yang memiliki akses ke sumber daya dan tindakan yang dapat mereka lakukan di dalamnya. Misalnya, Anda dapat menambahkan kebijakan berbasis sumber daya yang memungkinkan pengguna memodifikasi bot tertentu, atau mengizinkan pengguna menggunakan operasi runtime pada alias bot tertentu.

Bila Anda menggunakan kebijakan berbasis sumber daya, Anda dapat mengizinkan AWS layanan lain mengakses sumber daya di akun Anda. Misalnya, Anda dapat mengizinkan Amazon Connect mengakses bot Amazon Lex.

Untuk mempelajari cara membuat bot atau bot alias, lihatMembangun bot.

Menggunakan konsol untuk menentukan kebijakan berbasis sumber daya

Anda dapat menggunakan konsol Amazon Lex untuk mengelola kebijakan berbasis sumber daya untuk bot dan alias bot Anda. Anda memasukkan struktur JSON kebijakan dan konsol mengaitkannya dengan sumber daya. Jika ada kebijakan yang telah dikaitkan dengan sumber daya, Anda dapat menggunakan konsol untuk melihat dan mengubah kebijakan.

Saat Anda menyimpan kebijakan dengan editor kebijakan, konsol akan memeriksa sintaks kebijakan tersebut. Jika kebijakan berisi kesalahan, seperti pengguna yang tidak ada atau tindakan yang tidak didukung oleh sumber daya, kebijakan akan menampilkan kesalahan dan tidak menyimpan kebijakan.

Berikut ini menunjukkan editor kebijakan berbasis sumber daya untuk bot di konsol. Editor kebijakan untuk alias bot serupa.

Editor kebijakan berbasis sumber daya konsol Amazon Lex.
Untuk membuka editor kebijakan untuk bot
  1. Masuk ke AWS Management Console dan buka konsol Amazon Lex di https://console.aws.amazon.com/lex/.

  2. Dari daftar Bots, pilih bot yang kebijakannya ingin Anda edit.

  3. Di bagian Kebijakan berbasis sumber daya, pilih Edit.

Untuk membuka editor kebijakan untuk alias bot
  1. Masuk ke AWS Management Console dan buka konsol Amazon Lex di https://console.aws.amazon.com/lex/.

  2. Dari daftar Bots, pilih bot yang berisi alias yang ingin Anda edit.

  3. Dari menu sebelah kiri, pilih Alias, lalu pilih alias yang akan diedit.

  4. Di bagian Kebijakan berbasis sumber daya, pilih Edit.

Menggunakan API untuk menentukan kebijakan berbasis sumber daya

Anda dapat menggunakan operasi API untuk mengelola kebijakan berbasis sumber daya untuk bot dan alias bot Anda. Ada operasi untuk membuat, memperbarui, dan menghapus kebijakan.

CreateResourceKebijakan

Menambahkan kebijakan sumber daya baru dengan pernyataan kebijakan yang ditentukan ke bot atau alias bot.

CreateResourcePolicyStatement

Menambahkan pernyataan kebijakan sumber daya baru ke bot atau bot alias.

DeleteResourceKebijakan

Menghapus kebijakan sumber daya dari bot atau bot alias.

DeleteResourcePolicyStatement

Menghapus pernyataan kebijakan sumber daya dari bot atau bot alias.

DescribeResourceKebijakan

Mendapat kebijakan sumber daya dan revisi kebijakan.

UpdateResourceKebijakan

Mengganti kebijakan sumber daya yang ada untuk bot atau bot alias dengan yang baru.

Java

Contoh berikut menunjukkan cara menggunakan operasi kebijakan berbasis sumber daya untuk mengelola kebijakan berbasis sumber daya.

/* * 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);

Izinkan peran IAM untuk memperbarui bot dan daftar alias bot

Contoh berikut memberikan izin untuk peran IAM tertentu untuk memanggil operasi API pembuatan model Amazon Lex V2 untuk memodifikasi bot yang ada. Pengguna dapat membuat daftar alias untuk bot dan memperbarui bot, tetapi tidak dapat menghapus alias bot atau bot.

{ "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" ] } ] }

Memungkinkan pengguna untuk melakukan percakapan dengan bot

Contoh berikut memberikan izin bagi pengguna tertentu untuk memanggil operasi API runtime Amazon Lex V2 pada satu alias bot.

Pengguna secara khusus ditolak izin untuk memperbarui atau menghapus alias bot.

{ "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" ] } ] }

Izinkan AWS layanan menggunakan bot Amazon Lex V2 tertentu

Contoh berikut memberikan izin untuk AWS Lambda dan Amazon Connect untuk memanggil operasi API runtime Amazon Lex V2.

Blok kondisi diperlukan untuk prinsipal layanan, dan harus menggunakan kunci konteks global dan. AWS:SourceAccount AWS:SourceArn

AWS:SourceAccountIni adalah ID akun yang memanggil bot Amazon Lex V2.

AWS:SourceArnIni adalah ARN sumber daya dari instance layanan Amazon Connect atau fungsi Lambda tempat panggilan ke alias bot Amazon Lex V2 berasal.

{ "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" } } } ] }